Notifikace z ESP na mobilní telefon

Užitečnou funkcí chytrých zařízení, ať už se bavíme o profesionálním či amatérském řešení, je bezpochyby zobrazování notifikací na mobilním telefonu. Můžeme tak být snadno upozorněni třeba na překročení kritické hodnoty nebo informováni o důležité události.

Pro nás, bastlíře, existuje mnoho způsobů, jak ze svých IoT senzorů dostat žádanou notifikaci na telefon. Vyzkoušel jsem více či méňe složité způsoby, abych nakonec zůstal u toho možná nejjednoduššího.

IFTTT s rozšířením Webhooks

Známá aplikace IFTTT slouží pro automatizaci procesů nejen v mobilním telefonu. Za podpory mnoha protokolů různých výrobců umožňuje pomocí jednoduchých podmínek vytvářet velmi kreativní funkce a stejně tak poslouží i našemu účelu.

Služba Webhooks rozšiřuje aplikaci IFTTT o možnost reagovat na webové dotazy (web requests). A právě ty v následujícím návodu navážeme na službu Notifications, která, jak její název napovídá, zobrazuje notifikace v telefonu.

Propojení Webhooks s Notifications může fungovat dvěma způsoby:

1. způsob

Webhooks přijme request a podle jeho názvu se zobrazí konkrétní přednastavená notifikace. Tento princip je vhodný pro přímé vyvolání notifikace ESPéčkem, protože nevyžaduje přenos dalších dat POST metodou.

 

aplikaci IFTTT je ale potřeba pro každou notifikaci vytvořit vlastní podmínkuKonkrétnímu názvu tak bude přiřazena konkrétní notifikace. Z ESP potom stačí dotaz na klienta příslušným řetězcem, který bude vypadat třeba takto:

https://maker.ifttt.com/trigger/název1/with/key/c6kJ_PbFRYKsdXxFlKuQ03

2. způsob

Webhooks přijme request s proměnnou value1 obsahující text notifikace. Tato proměnná je odeslána metodou POST. To vyvolá notifikaci jejíž obsahem bude právě hodnota (řetězec) proměnné value1.

Tímto způsobem odesílá notifikace náš domácí LAMP (Linux, Apache, MySQL, PHP) server, který vyhodnocuje data ze všech IoT senzorů. 

Zprovoznění

V následujícím návodu se budeme zabývat převážně druhým způsobem, protože zároveň obsahuje všechny prvky způsobu prvního.

Předpokladem pro zprovoznění notifikací je registrovaný a přihlášený uživatel v nainstalované aplikaci IFTTT v mobilním telefonu. Dál budeme postupovat podle následujících kroků:

1 – Přihlásíme se do IFTTT ve webovém prostředí (ifttt.com), poté vyhledáme Webhooks a přepneme se do záložky Services:

2 – Zde klikneme na Webhooks:

3 – Službu Webhooks je třeba propojit s naší instalací IFTTT. Zvolíme proto Connect:

4 – Přepneme se do nastavení kliknutím na Settings:

5 – Zde si zkopírujeme náš jedinečný identifikátor. Pomocí tohoto kódu budeme směrovat notifikace do naší služby Webhooks.

6 – Dále je potřeba aplikaci říct, co se má stát po přijetí zprávy. Klikneme na ikonu uživatele a vytvoříme nové pravidlo volbou Create:

7 – Připomínám, že celé kouzlo aplikace IFTTT je v podmínce Pokud tohle, potom tamto (IF This Then That). Nejdřív přidáme podmínku kliknutím na +This:

8 – Znovu vyhledáme Webhooks a zvolíme nalezenou položku. Podmínka bude tak navázána na tuto službu:

9 – A samotnou podmínkou bude přijetí web requestu službou Webhooks:

10 – Zvolíme si název, jakým budeme identifikovat jednotlivé události. V našem příkladu jsem použil název notifikace. Kliknutím na Create trigger dokončíme vytvoření podmínky.

11 – Zbývá určit akci, která bude provedena při splnění podmínky. Klikneme proto na +That:

12 – Vyhledáme notifications a zvolíme nalezenou položku:

13 – Vybereme první možnost:

14 – Celé pole Message vymažeme a po kliknutí na Add ingredient vybereme value1:

15 – Akci dokončíme volbou Create action:

16 – Celý proces dokončíme kliknutím na Finish:

17 – Tím je hotovo. Máte připraveno vše pro příjem a zobrazování notifikací.

Pro zprovoznění prvního způsobu budeme podle počtu možných variant notifikací opakovat kroky 617 s tím, že v kroku 10 zadáme pokaždé jiný jedinečný název a v kroku 14 vypíšeme vždy celý text notifikace bez přidávání dalších proměnných.

Odeslání notifikace PHP scriptem

Odeslání zajistí jednoduchá funkce, která pro sestavení web requestu využívá knihovnu cURL. Sestavený request vypadá takto:

https://maker.ifttt.com/trigger/notifikace/with/key/c6kJ_PbFRYKsdXxFlKuQ03

Jak lze vidět, obsahuje název „notifikace“ i klíč k naší Webhooks instanci.

Do funkce vstupuje ještě proměnná $text, která je odeslána metodou POST a představuje řetězec, který se zobrazí na telefonu.


function odesliNotifikaci($text) {
  $url = "https://maker.ifttt.com/trigger/notifikace/with/key/c6kJ_PbFRYKsdXxFlKuQ03";
  $content = [
    'value1' => $text,
    'value2' => '',
    'value3' => '',
  ];

  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
  return curl_exec($ch);
  curl_close($ch);
}

V kódu se funkce volá zadáním:


odesliNotifikaci("Alarm byl právě zajištěn");

Přímé vyvolání notifikace z ESP (1. způsob)

ESP jednoduše kontaktuje klienta patřičnou síťovou adresou:

https://maker.ifttt.com/trigger/název1/with/key/c6kJ_PbFRYKsdXxFlKuQ03

Ta, stejně jako v předchozím případě, obsahuje název, tentokrát „název1“, a opět stejný klíč k naší Webhooks instanci. Tímto je vyvolána příslušná notifikace.

Závěr

Popsaný způsob mi zatím bez výhrad funguje na Samsungu Galaxy S10+. Nezaznamenal jsem žádné zpožděné nebo ztracené notifikace ani poznatelné zvýšení spotřeby energie.

Prosím berte tento návod pouze jako inspiraci a vezměte přitom v potaz, že nejsem v tomto oboru profesionál a že zveřejněný text může obsahovat chyby.

Děkuji za přečtení a těším se na případné odezvy dole v diskuzi nebo na emailu.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *