Dokončení HMI pro automatizaci bazénu

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!

Tento článek je psán jako pokračování k úvodnímu článku o rozšíření RexHMI pro Inkscape. Začneme přesně tam, kde jsme naposledy skončili. Pokud jste tedy předchozí článek propásli, doporučujeme se k němu vrátit.

Na konci tohoto dílu budete schopni generovat grafické HMI přístupné z jakéhokoliv zařízení ve vaší domácí síti (chytrý telefon, tablet, notebook).
HMI pro automatizaci bazénu (RexHMI na chytrém telefonu)HMI pro automatizaci bazénu (RexHMI na notebooku)

Rozšíření RexHMI pro Inkscape

Rozšíření RexHMI pro Inkscape je odpovědí na otázku, 'Mohu vyvíjet profesionální HMI bez nutnosti ručního psaní kódu?' Ano, můžete!

Díky RexHMI pro Inkscape můžete generovat plně funkční HMI založené na webových technologiích pro algoritmy řídicího systému REX. Předchozí článek představil různé typy animací v kresbách v programu Inkscape. Tento článek se zaměří na vkládání grafických elementů z knihovny RexHMI do Vašeho uživatelského rozhraní.

Než začneme

Před tím, než budeme pokračovat, ujistěte se, že:

  1. Máte na Vašem PC nainstalovaný Inkscape s rozšířením RexHMI.
  2. Na Vašem Raspberry Pi běží RexCore, Lighttpd a RexWSTcp.
    ps -A | grep RexCore
    ps -A | grep lighttpd
    ps -A | grep RexWSTcp

    Kontrola, že všechny RexHMI komponenty běží
  3. Na Vašem Raspberry Pi běží algoritmus automatizace bazénu.Algoritmus automazizace bazénu v RexView
  4. Pokud potřebujete pomoci s jakýmkoli z předchozích předpokladů, koukněte prosím na předchozí článek o rozšíření RexHMI pro Inkscape.

Tvorba HMI s využitím prvků z knihovny RexHMI

  1. Spusťte Inkscape s rozšířením RexHMI a otevřete soubor 02_pool_daynight.svg z adresáře HMI_sourceSVG, který je součástí ukázkového projektu. Tato kresba je konečným výsledkem předchozího článku a my ji nyní použijeme jako výchozí bod pro tento článek.
    Animované HMI pro automatizaci bazénu

  2. Do HMI přidáme filtrační pumpu a prvky pro její ovládání. K tomu se nám výborně hodí nevyužité místo v pravém dolním rohu kresby. Nejdříve si ale musíme připravit několik dalších signálů z řídicího algoritmu, které budeme potřebovat. Označte prvek HMI Config a vyberte v horním menu Edit Element nebo stiskněte Ctrl+E. V objektu HMI Config jsou uloženy veškeré informace o Vašem HMI projektu. Vždy, když budete potřebovat změnit něco v nastavení projektu, označte objekt HMI Config a vyberte nástroj Edit Element. Tento objekt je viditelný pouze v Inkscape. Při exportu je z HMI odstraněn. Otevření konfiguračního okna rozšíření RexHMI

  3. Přepněte se do panelu Options a do řádku ws_ip zadejte IP adresu Vašeho Raspberry Pi s příponou /rex. Tím dovolíte Inkscape se připojit k RexWSTcp serveru, který běží na Raspberry Pi, a budete moci procházet stromem signálů Vašeho řídicího algoritmu.
    Konfigurační okno rozšíření RexHMI pro Inkscape

  4. Klikněte na tlačítko Browse a přepnete se do panelu Connections. Všimněte si stromu signálů, který se objeví v pravé části. Přidejte nové aliasy, které budou mít názvy: BUTTON_FILT, FILTRATION a FILTRATION_MODE. Tyto signály budou použity pro animaci prvků z knihovny RexHMI v závislosti na stavu řídicího algoritmu.
    Definování aliasů rozšíření RexHMI pro Inkscape

  5. Klikněte na políčko CString (Connection String - Přípojný bod), které je vedle aliasu BUTTON_FILT, rozbalte strom řídicího algoritmu a najděte funkční blok MP_BUTTON. Rozbalte strom tohoto bloku a uvidíte parametr BSTATE. Dvakrát na něj klikněte. V definici aliasu se Vám objeví plná cesta k tomuto parametru. Tento signál bude ovládat blok MP_BUTTON. Z toho důvodu mu musíme přidělit zápisová práva. To provedeme tak, že ve sloupci Type vybereme možnost 'W' (Write).
    Definování aliasu, který má možnost zápisu, do rozšíření RexHMI

  6. Nyní připojte alias FILTRATION na vstup U bloku NOT_PUMP a alias FILTRATION_MODE na vstup SW bloku ISSW_FMODE. Tyto signály budou využity ke sledování aktuálního režimu filtrace a stavu filtrační pumpy.
    Párování aliasů rozšíření RexHMI se signály řídicího algoritmu

  7. Dále vyberte z horního menu Browse Elements Library nebo stiskněte Ctrl+L. Otevře se Vám složka prvků z knihovny RexHMI.
    Otevírání knihovny RexHMI a jejích bloků

  8. Jednoduše přetáhněte nějakou připravenou komponentu do Vašeho budoucího HMI v Inkscape. V současné době se knihovna skládá ze tří skupin: skupina GENERAL obsahuje základní vstupy a měřidla, ve skupině HOME můžete nalézt užitečné prvky pro domácí automatizaci, skupina HVAC je pak zaměřena na HMI pro topení, ventilaci a klimatizaci. Nezapomeňte, že si vždy můžete vytvořit a animovat Váš vlastní objekt pomocí základních animačních prvků popsaných v úvodním článku o používání rozšíření RexHMI pro Inkscape.
    Prvky z knihovny rozšíření RexHMI pro Inkscape

  9. Přetáhněte z knihovny GENERAL soubor ‘Led.svg’ do Vaší kresby. Jelikož ho budeme potřebovat dvakrát, zkopírujte ho pomocí kláves Ctrl+D nebo Ctrl+C a Ctrl+V. První LEDka bude indikovat naplánovanou filtraci a druhá bude svítit, když bude filtrace zakázána.
    Přidání LED diod do HMI

  10. Přidejte nápisy pomocí nástroje Text v Inkscape. Najdete ho v levém menu nebo stačí zmáčknout klávesu F8. Klikněte do kresby a můžete vkládat různé nápisy.
    Přidání nápisu do vizualizace RexHMI

  11. Dále do kresby vložte tlačítko Button z knihovny GENERAL.
    Přidání tlačítka do HMI

  12. Další prvky, které budeme potřebovat k vizualizaci filtračního systému, jsou umístěny v knihovně HOME. Jsou to Pipe (trubka), Pipe ending (zakončení trubky), Filter a Motor. Přetáhněte tyto komponenty a umístěte je do pravého dolního rohu kresby.
    Přidání filtrace do HMI

  13. Jakmile jsou komponenty na svém místě, je na čase je propojit s příslušnými aliasy a nastavit animace. Vyberte LED, která signalizuje naplánovanou filtraci a otevřete okno Edit Element. Klikněte na tlačítko Browse Aliases, vyberte políčko vedle nápisu POWER a dvakrát klikněte na alias FILTRATION_MODE. Filtrace je naplánována, když hodnota signálu FILTRATION_MODE je 0 (jedná se o vstup SW funkčního bloku ISSW_FMODE, jak bylo vysvětleno v jednom z předchozích článků). To je důvod, proč barvu 'runColor' vybereme jako šedivou a barvu 'stopColor' jako zelenou. To znamená, že LED bude šedivá pro FILTRATION_MODE=1 a zelená pro FILTRATION_MODE=0. Jak je vidět, význam signálů je obrácený. Dejte si tedy pozor, ať neprohodíte hodnoty.
    Animace LED diod z knihovny RexHMI

  14. Druhá LED bude signalizovat, je-li filtrace zakázána. Dokud bude FILTRATION_MODE=0, bude LED šedá. Proměnnou 'stopColor' tedy nastavíme na šedou. Dioda se rozsvítí červeně, jakmile FILTRATION_MODE=1. Z toho důvodu bude mít 'runColor' hodnotu odpovídající červené barvě. Všimněte si, že tentokrát je logika významů signálů zachována.
    Animace LED z knihovny RexHMI

  15. Nyní změníme vlastnosti filtračního systému, který se skládá z motoru, trubek a filtru. Všechny tyto prvky by měly značit, zda filtrace běží nebo je vypnutá. Otevřete dialog Edit Element a přidejte alias FILTRATION do panelu Connections pro každý prvek filtračního systému.
    Animace prvků filtračního systému

  16. Změňte barvy všech trubek podle následující tabulky. Výsledkem bude to, že se trubky obarví modře, když filtrace poběží. Pokud bude vypnutá, trubky budou šedé.
    Animace elementů trubek v HMI

  17. Abychom získali podobné chování u vodního filtru, změníme opět proměnnou 'onColor' na modrou a 'offColor' na šedivou.
    Animace elementů filtru v HMI

  18. Nastavení barev motoru bude odlišné. Když bude filtrace aktivní, motor by měl být zelený.
    Animace motoru v HMI

  19. Poslední komponenta, která nám zbývá nastavit, je tlačítko Button. Otevřeme opět dialog Edit Element a spojíme prvek s aliasem BUTTON_FILT. Přepněte se do panelu Options a změňte parametr text na Filtration Mode. Tím jste nastavili popisek tlačítka.
    Nastavení tlačítka v knihovně RexHMI

  20. Nyní z kresby vygenerujeme HTML5 stránku, abychom ověřili funkčnost HMI. Označte prvek HMI Configuration a vyberte Edit Element. Přepněte se na panel HTML export a vložte jméno hlavního HTML souboru Vašeho HMI. Exportujte HMI do prázdné složky, pokud je to možné, protože při generování vznikne velké množství souborů. Mít všechny soubory v samostatném adresáři je také nutné kvůli přesunu HMI do Vašeho Raspberry Pi.
    Nastavení HTML exportu rozšíření RexHMI pro Inkscape

  21. Stiskněte v menu Export HMI nebo použijte zkratku Ctrl+H. Kresba z Inkscape se přegeneruje do HTML podoby a ve vybrané složce vzniknou všechny potřebné soubory.
    Export HTML kódu vizualizace RexHMI

  22. Najděte a otevřete vygenerovaný HTML soubor ve vašem prohlížeči. Tlačítko přepíná režim filtrace. Aktuální režim je indikován příslušnou LED. Jakmile začne běžet filtrace, trubky zmodrají a motor zezelená. Níže je k prohlédnutí několik možných stavů uživatelského rozhraní pro automatizaci bazénu:
    Konečné HMI pro automatizaci bazénu - rozšíření RexHMI pro Inkscape

Přesun HMI do Vašeho Raspberry Pi

Jakmile máte HMI uložené ve Vašem počítači a HTML5 stránka komunikuje s Vaším Raspberry Pi pomocí websocket protokolu, můžeme se pustit k přesunu HMI do Raspberry Pi. Díky tomu budete moci přistupovat k HMI z jakéhokoliv zařízení ve Vaší domácí síti.

  1. Vraťte se do Inkscape, otevřete dialog HMI Configuration a přepněte se na panel Options. Na řádku ws_ip smažte adresu websocket serveru. Řídicí algoritmus, websocket server a webový server odteď poběží na stejném zařízení a není tedy potřeba určovat konkrétní IP adresu.
    Příprava HMI pro finální export

  2. Opět vygenerujte HMI pomocí Export HMI. Poté již bude vše připravené ke zkopírování HMI do Vašeho Raspberry Pi.

  3. V této chvíli byste měli mít to samé HMI, které je součástí našeho GitHub repozitáře. Pro kontrolu si můžete zkusit vygenerovat HMI ze zdrojového SVG souboru 03_pool_final.svg v adresáři HMIsource.
  4. Zkopírujte HMI do Raspberry Pi pomocí programu RexView.
    Nahrání HMI do cílového zařízení s řídicím systémem REX

  5. Otevřete webový prohlížeč a zadejte IP adresu Vašeho Raspberry Pi. Mělo by se objevit HMI. Stejného výsledku byste měli dosáhnout na Vašem notebooku, tabletu i chytrém telefonu!
    HMI pro automatizaci bazénu (RexHMI na chytrém telefonu)HMI pro automatizaci bazénu (RexHMI na notebooku)

Řešení problémů

Zasekli jste se v některém bodě? Našli jste chybu? Chybí Vám nějaká vlastnost? Chceme o tom vědět, určitě nám napište.

Dodatečné informace

Můžete také:

 


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