WhatsApp - notifikace zdarma
Rádi byste dostávali notifikace z chytré domácnosti formou zpráv do WhatsApp messengeru? Ačkoliv z tohoto messengeru nejsme nadšení, mnoho lidí jej používá a je zbytečné instalovat jiný pouze kvůli chytrému domu. Pro daný kontakt je pak možné nastavit specifické zvonění, takže budete hned vědět, že zpráva přišla z vašeho domu. Našli jsme možnost, jak toto využívat bez poplatku. Jmenuje se CallMeBot...
Hardware
Pi-Home - pokud nemáte, viz sekci Jak na to
Software
OpenHAB nebo Home Assistant
Úvodem
Pro notifikaci využijeme služby CallMeBot (https://www.callmebot.com). Pak ukážeme jak nasatvit pravidlo v OpenHAB nebo HomeAssistant.
Jak na to
Přidejte si do telefonu nový kontakt, pojmenujte jej jako "Můj domov" nebo "OpenHAB" nebo jakkoliv chcete. Přiřaďte číslo +34 621 062 163 a uložte. Otevřete WhatsApp a odešlete přes něj na toto číslo zprávu "I allow callmebot to send me messages" (bez uvozovek). Měla by vám do 2 minut přijít zpráva, která bude obsahovat více informací včetně API kódu, který náz zajímá dále.
Nyní můžeme přejít do vašeho smarthome a naprogramovat notifikace.
OpenHAB
V OpenHAB přejděte do Settings->Rules. Přidejte nové pravidlo. V tomto příkladě budeme chtít zasílát notifikaci o možném požáru z chytrého Shelly smoke senzoru. Nastavíme podmínku When pokud se náš senzor přepne na ON (nastavení Shelly senzoru v OpenHAB viz Shelly a OpenHAB.
Do Then vyberte Script -> RuleDSL. Vložte zde následující skript:
val original = "Hlasim_pozar_v_dome"
val output = sendHttpGetRequest("https://api.callmebot.com/whatsapp.php?phone=420xxxxxxxxx&apikey=yyyyyyy&text=" + original)
Nahraďte xxx vašim telefonním číslem a vložte místo yyy vaše API. Uložte a zmáčkněte test (ikona Play). Měla by vám přijít zpráva. Jednoduché, nicméně zatím funguje pouze text bez mezer a diakritiky.
Chci diakritiku, české znaky a mezeru!
Ok, musíme ale text dekódovat pro URL, tedy nahradit mezeru znakem %20 atd. Než psát převodovou tabulku manuálně (i to jde) je snažší využít Transformation services. Ujistěte se, že máte v bindings nainstalovaný addon Javascript Transformation. Pokud ano, přejděte do složky openHAB-conf/transform (buď přes terminál nebo přes sambu) a vytvořte soubor urlEncode.js s následujícím obsahem:
(function(input) {
return encodeURIComponent(input);
})(input)Uložte soubor.
Vaše pravidlo v Rules pak upravte do tvaru:
val original = "Hlásím požár v domě!?"
val encoded = transform("JS", "urlEncode.js", original)
val output = sendHttpGetRequest("https://api.callmebot.com/whatsapp.php?phone=420xxxxxxxxx&apikey=yyyyyyy&text=" + encoded)
Nyní se bude jakýkoliv text dekódovat pro URL.
Home Assistant
Vytvořte v configuration.yaml RESTful notifikaci
# Example configuration.yaml entry notify:
- name: WhatsApp
platform: rest
resource: https://api.callmebot.com/whatsapp.php
data:
source: HA
phone: 420xxxxxxxxx #enter your phone number here
apikey: yyyyyyy #enter your apikey here (see Setup above)
Pak použijte v UI:
Na závěr
Takto je možné provádět různé notifikace a přidat zde API na další telefony. Když kliknete ve WhatsApp messengery na název v kontaktu v otevřeném chatu, můžete pro daný chat nastavit custom zvonění, hlasitost, vibrace což se hodí hlavně pokud vám má chodit Alarm z vašeho domu. Viz záložka Notifications