Push notifikace jsou webovou službou umožňující vzdálenému serveru posílat krátké informační zprávy všem registrovaným odběratelům. Zprávy se na koncovém zařízení (mobilní telefon, PC apod.) zobrazí ve formě vyskakovacího (pop-up) okna. Jedinou nutnou podmínkou pro přihlášení k odběru notifikací je nainstalovaný internetový prohlížeč, pomocí něhož uživatel načte web stránky serveru a registruje odběr.

Tato služba, určená především pro web servery, byla využita i u systému Foxtrot, a to především za účelem rozesílání libovolných informací o stavu systému. Velkou výhodou tohoto řešení je, že k příjmu notifikačních zpráv není nutná žádná podpůrná aplikace, stačí pouze vhodný internetový prohlížeč. Web Push notifikační službu dnes podporuje již většina známých prohlížečů (Chrome, Firefox, Opera) na všech platformách. Služba však není podporovaná na systémech iOS společnosti Apple. K registraci odběru notifikací je nutné načíst k tomuto účelu vygenerovanou stránku web serveru PLC do internetového prohlížeče. Skript obsažený ve stránce zajistí instalaci klienta nutného k příjmu zpráv. Druhým omezujícím faktorem zde však může být skutečnost, že internetový prohlížeč povolí instalaci klienta pouze z oveřeného zdroje, jímž může být pouze HTTPS server s certifikátem ověřeným certifikační autoritou. Foxtrot 1 nedisponuje serverem umožnujícím HTTPS komunikaci. Foxtrot 2 server s HTTPS komunikací již nabízí, avšak standardně je systém vybaven samopodepsaným certifikátem, který pro ověření bezpečnosti nestačí. Jednoduchým řešením pro oba systémy je využití služby TecoRoute. Ta umožní šifrované spojení s web serverem PLC, přičemž komunikace prochází přes doménu route.tecomat.com, jejíž identita je ověřená.

Primární částí celé implementace je notifikační server zajišťující rozesílání informačních zpráv. Tento server je pro PLC řadu Foxtrot 2 distribuován jako volitelně instalovatelný SW balíček. Instalaci lze učinit z konfiguračních webových stránek systému. Pro systém Foxtrot 1 je nutné využít externí HW (např. modul FoxBerry), na kterém je server následně spuštěn. PLC program je se serverem spojen definovaným protokolem a dává mu pokyny k odeslání notifikačních zpráv.

Pojďme si nyní ukázát jednoduchou realizaci notifikačního systému s PLC Foxtrot 2.

Nejprve je nutné nainstalovat sw balíček teco-notifications z webového konfiguračního rozhraní:

Balíček obsahuje notifikační server, který je možné nakonfigurovat:

Přístup k serveru lze zabezpečit použitím hesla, které je použito k šifrování komunikace. Další restrikcí může být omezení přístupu k serveru pouze z definované IP adresy. Jelikož používáme Foxtrot 2, kdy PLC klient běží na stejném stroji jako server, můžeme nastavit akceptování spojení pouze z localhost (127.0.0.1). Tlačítkem Submit je nutné provedené změny uložit a restartovat server.

Do projektu v prostředí Mosaic vložíme knihovnu NotifyLib:

 

V nástroji WebMaker pak definujeme webovou stránku, ve které se bude generovat tlačítko pro registraci odběru notifikací:

 

Použití knihovny lze demonstrovat na následujícím jednoduchém programu:

PROGRAM prgMain
  VAR_INPUT
  END_VAR
  VAR_OUTPUT
  END_VAR
  VAR
     init : BOOL;
     sendRqst : BOOL;
     notification : TWebPushNotif;
     webPush : fbWebPushService;
  END_VAR
  VAR_TEMP
  END_VAR

  IF NOT init THEN
     notification.title := 'Upozornění';
     notification.body  := 'Konec servisního intervalu se blíží';
     notification.image := 'https://bit.ly/2Lurtu7';
     notification.icon  := 'https://bit.ly/2Lkb3DH';      
     init := TRUE;
  END_IF;

  webPush(init := (NOT webPush.ready) AND System_S.R_EDGE_10SEC, send := sendRqst, serverPort := 5000, chanCode := ETH1_uni, notification := notification);

  sendRqst := FALSE;
END_PROGRAM

Základem je funkční blok fbWebPushService, který zajišťuje komunikaci s naším notifikačním serverem. Parametry pro připojení musí odpovídat konfiguraci serveru (127.0.0.1:5000). Pokus o navázání spojení se serverem se v našem případě provádí v pravidelných 10s intervalech dokud není úspěšně navázáno, což je signalizováno výstupní proměnnou webPush.ready. Obsah notifikační zprávy je dán strukturou typu TWebPushNotif. Ta je v ukázkovém příkladu po spuštění programu inicializována na výchozí hodnoty. Obrázky, které chceme zobrazit v notifikační zprávě, je nutné definovat pomocí url adresy. K zobrazení obrázku na zařízení přijímající notifikační zprávu je tedy nutné, aby byl obrázek veřejně dostupný. Samotný pokyn k odeslání notifikační zprávy je řízen proměnnou sendRqst, kterou je v reálné situaci možné řídit například tlačítkem ve webové stránce nebo událostí v aplikačním programu.

 

Pokud PLC program běží a funkční blok je úspěšně spojen s notifikačním serverem, můžeme nyní připojit klienty pro příjem notifikací. Klientem může být mobilní telefon nebo PC, respektive internetový prohlížeč nainstalovaný na takovém zařízení. Pro registraci odběru je nutné navštívit stránku PLC web serveru, kterou jsme v předešlých krocích nastavili k tomuto účelu. Důležitou podmínkou je, aby tato stránka byla hostována serverem ověřeným certifikační autoritou. Pokud tato podmínka splněna není, prohlížeč nedovolí registrovat odběr notifikací (registrační tlačítko nebude ve stránce zobrazeno). Tento problém v našem případě vyřešíme přístupem k PLC pomocí služby TecoRoute.

Lze si všimnout, že v naší načtené PLC web stránce se zobrazuje v pravém dolním rohu tlačítko se symbolem zvonečku. Stiskem tohoto tlačítka dojde k registraci prohlížeče k odběru notifikací. Pokud pro dané doménové jméno serveru (route.tecomat.com) se příjem notifikací registruje poprvé, prohlížeč sám zobrazí oznámení, které je nutné potvrdit. Pokud se symbol registračního tlačítka změní, registrace proběhla úspěšně a je možné příjem notifikačních zpráv vyzkoušet. V našem případě ovládáme proměnnou sendRqst tlačítkem z webové stránky.

Na mobilním telefonu se systémem Android bude stejná situace vypadat následovně:

Pokud si uživatel přeje zrušit odběr notifikačních zpráv na daném zařízení (prohlížeči), lze tak učinit opětovným stiskem registračního tlačítka se symbolem zvonečku.

  Odběr notifikací povolen   

   Odběr notifikací zakázán