Grafické HMI pro automatizaci bazénu pomocí Raspberry Pi

Toto je návod pro zastaralou verzi systému REX. Pro seznámení s aktuální verzí postupujte podle příruček "Začínáme se systémem REXYGEN" uvedených níže:

Co je to řídicí systém REX?
Chci vědět více!

Předchozí článek o tvorbě HMI pro automatizaci bazénu pomocí Raspberry Pi nastínil strukturu komponent RexHMI pro tvorbu uživatelských rozhraní a popsal proces tvorby a nasazení HMI na Vašem Raspberry Pi. Tento článek se zaměří na odlišnou, a pravděpodobně mnohem atraktivnější, možnost tvorby HMI pro řídicí algoritmy systému REX.
RexHMI pro InkscapeRexHMI na chytrém telefonu

Rozšíření RexHMI pro Inkscape

Při tvorbě WebBuDi HMI je potřeba ručně upravovat HTML soubory. To je věc, které se chtějí někteří naši uživatelé vyhnout. Proto jsme vyvinuli RexHMI rozšíření pro Inkscape, což je profesionální open-source vektorový grafický editor.

K jeho využití nepotřebujete žádnou licenci, vše funguje s 2-hodinovou demoverzí jádra RexCore, takže můžete okamžitě začít!

Instalace

STÁHNOUT REXHMI PRO INKSCAPE!

Začněte stažením instalátoru InkscapeRexHMI a spusťte ho na Vašem Windows PC. Jedná se o standardní verzi editoru Inkscape, ve které byl pouze aktualizován Python a doplněno rozšíření RexHMI. Nainstalováním nijak neovlivníte jinou instalaci Inkscape, kterou již možná používáte.

Jakmile je Inkscape s RexHMI nainstalován, můžete vytvářet HMI založené na HTML pomocí pár kliknutí myši.

Jednotlivé komponenty z rodiny RexHMI byly popsány a nainstalovány v předchozím článku. Měli byste tedy vědět, jak probíhá interakce mezi uživatelem a řídicím algoritmem.

Ujistěte se, že na Vašem Raspberry Pi běží Lighttpd webserver a RexWSTcp websocket server. Při problémech se, prosím, vraťte k předchozímu článku o WebBuDi HMI pro řídicí systém REX, kde je popsán postup instalace.
HMI založené na webových technologiích pro řídicí systém REX

Spuštění řídicího algoritmu automatizace bazénu

Řídicí algoritmus je prakticky stejný jako v původním článku o automatizaci bazénu. Byla provedena jediná změna: byl přidán signál s informací, jestli je den nebo noc.

  1. Nejdříve stáhněte soubory projektu z našeho GitHub repozitáře. Doporučujeme stažení celého repozitáře příkladů ve formě standardního .zip archivu. Po rozbalení naleznete soubory ve složce RaspberryPi_examples\04_PoolAutomationInkscape. Pokud znáte systém Git a server GitHub, pravděpodobně využijete přímý odkaz na repozitář příkladů systému REX.
  2. Nainstalujte si nejnovější verzi vývojového prostředí řídicího systému REX na Váš počítač, pokud ji ještě nemáte.
  3. Aktualizujte jádro řídicího systému REX na Vašem Raspberry Pi, pokud jste to ještě neudělali.
    sudo apt-get update
    sudo apt-get upgrade
  4. Měli byste již vědět, jak spustit řídicí algoritmus na Vašem Raspberry Pi. Pokud potřebujete poradit, koukněte na úvodní článek o řídicím systému REX na Raspberry Pi.
  5. Připojte se k Vašemu Raspberry Pi pomocí diagnostického nástroje RexView a zkontrolujte, zda běží řídicí algoritmus. Rozbalte strom algoritmu. Pokud vidíte všechny funkční bloky z projektu, mělo by být vše v pořádku.
    Algoritmus automatizace bazénu v RexView
  6. Když už nám běží řídicí algoritmus, tak se můžeme pustit do tvorby grafického HMI v Inkscape.

Tvorba prvního HMI v Inkscape

  1. Spusťte Inkscape s rozšířením RexHMI z nabídky Start.
    Spouštění Inkscape s RexHMI z nabídky Start
  2. Otevřete soubor 01_pool_plain.svg v adresáři HMIsource, který je součástí ukázkového projektu. Případně projevte své umělecké vlohy a použijte svou vlastní grafiku.
    Jednoduchá grafika pro automatizaci bazénu (REX Control System, RexHMI)
  3. V tomto článku je předpokládána základní znalost Inkscape. Pokud jste s Inkscape nikdy před tím nepracovali, doporučujeme pročíst návody na oficiálních stránkách Inkscape.
  4. V podstatě lze animovat jakoukoli Skupinu objektů na základě hodnot proměnných řídicího systému REX. Pro začátek si ukážeme, jak animovat světla, aby se chovala jako ta reálná, a jak skrývat květiny a měnit barvu trávy v závislosti na denní době.
  5. Nejdříve je potřeba si určit, podle kterých signálů bude kresba animována. Bude potřeba dvou signálů. Podle jednoho se budou rozsvěcet bazénová světla a podle druhého bude poznat, je-li zrovna den nebo noc. Oba tyto signály jsou dostupné v řídicím algoritmu.
  6. Při propojování kresby s řídicím algoritmem se ujistěte, že není vybrán žádný objekt (jednoduše klikněte kamkoliv mimo kresbu) a vyberte v menu Extensions->RexHMI->Edit Element nebo zmáčkněte Ctrl+E.
    Spouštění konfigurace RexHMI v Inkscape
    Objeví se konfigurační okno RexHMI.
  7. Nejdříve je potřeba určit, odkud se budou brát signály. Přepněte se na panel Options a nastavte adresu RexWSTcp websocket serveru, jak je ukázáno níže. Přepište IP adresu adresou Vašeho Raspberry Pi a nezapomeňte na příponu /rex!
    Konfigurační dialog rozšíření RexHMI pro Inkscape
  8. Klikněte na tlačítko Browse a objeví se strom řídicího algoritmu, který běží na Vašem Raspberry Pi. Všimněte si, že je to ten samý strom, který je v diagnostickém nástroji RexView.
    Prohledávání řídicího algoritmu REXu z Inkscape
  9. Přidejte dva aliasy a pojmenujte je LIGHTS a ISDAY. Význam těchto dvou signálů bude popsán níže. Poté přemístěte kurzor na políčko CString (Přípojný bod - Connection String), které je u aliasu LIGHTS.
    Definování aliasů rozšíření RexHMI v Inkscape
  10. Ve stromu nalezněte vstup U funkčního bloku NOT_LIGHTS a dvakrát na něj klikněte. V definici aliasu se objeví přípojný bod. Tento signál obsahuje informaci, zda mají reálná světla svítit, či nikoliv (reléová deska má obrácenou logiku, jak již bylo zmíněno v jednom předchozím článku).
    Párování aliasů rozšíření RexHMI se signály řídicího algoritmu
  11. To samé proveďte s aliasem ISDAY. Pro propojení použijte výstup Y funkčního bloku AND_DAYLIGHT. Tento signál nám řekne, zda je den nebo noc.
    Párování aliasů rozšíření RexHMI se signály řídicího algoritmu
  12. Nyní již můžeme zavřít okno pomocí tlačítka OK. Všimněte si objektu HMI Config, který se objevil v levém horním rohu. Tento objekt uchovává informaci o nastavení Vašeho HMI a při exportu z kresby zmizí. Pokaždé, když budete potřebovat změnit nastavení nebo přidat/odstranit alias, jednoduše vyberte tento objekt a zmáčkněte Ctrl+E.
  13. Nyní, když jsou definovány signály, je čas na animaci jednotlivých prvků kresby. Klikněte na trávu a vyberte z menu Extensions->RexHMI->Group Animation nebo zmáčkněte Ctrl+J.
    Definování animace v rozšíření RexHMI pro Inkscape
  14. Zaškrtněte animaci Change Color (změna barvy) a klidněte na OK.
    Definování animace v rozšíření RexHMI pro Inkscape
  15. Znovu označte trávu a vyberte v menu Extensions->RexHMI->Edit Element nebo zmáčkněte Ctrl+E. Vytvořte vazbu mezi proměnnou COLOR a aliasem ISDAY, jak je ukázáno níže. Pro zobrazení listu všech definovaných aliasů klikněte na tlačítko Browse Aliases (procházení aliasů).
    Provázání skupiny animací s příslušným aliasem v rozšíření RexHMI pro Inkscape
  16. Přepněte se na panel Options a zvolte barvy, které budou použity během celého dne (světle zelená) a během noci (tmavě zelená). Animace je založena na logickém signálu. Z toho důvodu musí být nastaven přiměřený rozsah signálu.
    Nastavování "Změny barvy" skupiny animací
  17. Druhá animace, která symbolizuje střídání dne a noci, je založena na skrývání květin. Klikněte na nějakou z květin a zmáčkněte Ctrl+J. Tentokrát zvolte animaci Opacity (neprůhlednost).
    Definování animace v rozšíření RexHMI pro Inkscape
  18. Klikněte na OK a vyberte opět květiny. Pro změnu nastavení animace zmáčkněte Ctrl+E. Propojte animaci s aliasem ISDAY.
    Propojování skupiny animací s příslušnými aliasy v rozšíření RexHMI pro Inkscape
  19. Naším cílem je v noci skrýt květiny (Opacity=0, ISDAY=0=opacitySignalMin). Během celého dne budou květiny viditelné (Opacity=1, ISDAY=1=opacitySignalMax).
    Nastavování "Opacity" skupiny animací
  20. K animaci nám zbývá poslední prvek, což jsou světla bazénu. Označte světla a zmáčkněte Ctrl+J. Stejně jako u květin zvolte Opacity animaci.
  21. Znovu označte světla a zmáčkněte Ctrl+E. Propojte animaci s aliasem LIGHTS.
    Propojování skupiny animací s příslušným aliasem v rozšíření RexHMI pro Inkscape
  22. Podobně jako u květin upravte nastavení pro skrývání bazénových světel, když jsou reálná světla vypnutá.
    Nastavování "Opacity" skupiny animací
  23. Po zmáčknutí OK se můžeme vrhnout na export HMI a první testování.
  24. Označte objekt HMI Config a stiskněte Ctrl+E. Vyberte panel HTML export a nastavte jméno souboru, do kterého se bude HMI exportovat. Tento soubor vždy dávejte dovnitř nějaké složky. Je to nutné kvůli kopírování HMI do Vašeho Raspberry Pi pomocí programu RexView.
    Nastavování HTML exportu rozšíření RexHMI pro Inkscah=
  25. Zmáčkněte OK a vyberte v menu Extensions->RexHMI->Export HMI.
    Export HMI z Inkscape pomocí rozšíření RexHMI
  26. HMI se vygeneruje do dané složky.

Ověřování vygenerovaného HMI

  1. Nalezněte HMI na vašem disku a otevřete v prohlížeči soubor index.html. V závislosti na denní době byste měli vidět jeden z následujícíh obrázků:
    Bazén ve dneBazén v noci
  2. Doufáme, že s během HMI na Vašem počítači nejsou problémy. Potřebujeme ale nyní uložit soubory HMI na Vaše Raspberry Pi, abyste k nim měli přístup odkudkoliv ve Vašem domě pomocí tabletu nebo chytrého telefonu.
  3. Z tohoto důvodu se vrátíme do Inkscape a otevřeme okno HMI configuration (nastavení HMI). Jakmile přesunete HMI do Raspberry Pi, poběží HMI i řídicí algoritmus na stejném zařízení a nebude tedy potřeba definovat IP adresu websocket serveru. Vymažte tedy adresu z HMI nastavení.
    Okno nastavení rozšíření RexHMI pro Inkscape
  4. Znovu exportujte HMI z Inkscape. Nyní je vše připraveno na zkopírování do Vašeho Raspberry Pi. Po zkopírování bude vše fungovat bez ohledu na aktuální IP adresu Vašeho RPi.
  5. Zkopírujte HMI na cílové zařízení použitím programu RexView.
    Stažení HMI na cílové zařízení s řídicím systémem REX
  6. Nyní můžete zadat IP adresu Vašeho Raspberry Pi do prohlížeče na Vašem tabletu či chytrém telefonu a mělo by se Vám zobrazit HMI.
  7. Jelikož všechny potřebné programy běží na Raspberry Pi, můžete k HMI přistoupit z jakéhokoliv zařízení uvnitř Vaší domácí sítě. Nejsou potřeba žádné cloudové služby ani speciální aplikace.

Řešení problémů

Zasekli jste se v některém bodě? Našli jste chybu? Postrádáte nějakou funkci? Chceme o tom vědět, určitě nám napište.

Tohle je všechno?!

Ne, není. V dalším článku se budeme zabývat začleňováním komponent z knihovny RexHMI do Vašeho HMI. Budete tedy schopni vytvářet detailnější HMI a také ovládat Váš bazén stejně jako tomu bylo v případě WebBuDi HMI.
Kompletní HMI pro projekt automatizace bazénuKompletní HMI pro projekt automatizace bazénu

Konečnou verzi HMI automatizace bazénu si nicméně můžete prohlédnout již nyní! Naleznete ji v našem GitHub repozitáři.

Dodatečné informace

Můžete také:

 


Raspberry Pi je registrovaná obchodní známka Raspberry Pi Foundation.