Używanie poleceń z MQTT i NodeRed do obsługi jednostki wieloprzekaźnikowej za pomocą jednego przycisku, artykuł w oryginale został zamieszczony na elektroda.com, jest to tylko tłumaczenie.
Ten przykład wykorzystuje kombinację obsługi zdarzeń w OpenBeken do wysyłania naciśnięć przycisków do NodeRed oraz węzeł NodeRed do śledzenia naciśnięć przycisków i migania pojedynczej diody LED na urządzeniu, aby zapewnić proste "menu" operacji na urządzeniu.
Intencją jest miganie diody LED dla liczby błysków reprezentujących ile razy przycisk został naciśnięty jako informacja zwrotna dla użytkownika, aby wiedzieć, który przekaźnik zostanie przełączony przez podwójne naciśnięcie.
Ponieważ miganie diody LED odbywa się na MQTT przez NodeRed, wynik nie jest doskonały, ale doskonale nadaje się do użytku.
Urządzenie to listwa sieciowa Calex z 5 'przekaźnikami' (4 gniazda zasilające i 1 sterowane wyjście USB). Posiada dwie diody LED i jeden przycisk.
Konfiguracja to:
P6 Rel 5
P7 Rel 2
P8 Rel 3
P9 Rel 1
P10 LED 6
P14 Btn 8
P24 LED 7
P26 Rel 4
Zwróć uwagę, jak oddzieliłem przycisk na kanale 8, aby nie miał domyślnej akcji.
Polecenia do wydania OpenBeken:
Przyciski udostępniają zdarzenia OnClick, OnDblClick, OnToggle, OnHold - ale są one publikowane w oparciu o numery PIN.
W moim przypadku mój pojedynczy przycisk znajduje się na pin 14 i chcę opublikować naciśnięcia przycisków w MQTT. Publikowanie do MQTT można wykonać za pomocą polecenia `publish `, co spowoduje wysłanie `` do tematu `//get`.
Wydałem te polecenia do wiersza poleceń OpenBeken:
Następnie w NodeRed zasubskrybuj aby otrzymać MQTT, który będzie
Musimy również uchwycić aktualne wartości przekaźników, które wyglądają jak
Po przetestowaniu polecenia można uruchamiać podczas rozruchu, dodając następujący wiersz poleceń startowych w `Zmień tekst polecenia startowego`:
Sterowanie diodą LED
Wybrałem użycie diody LED na kanale 6 jako sprzężenia zwrotnego do stanu ,,menu". Aby kontrolować to przez MQTT, wysyłamy
Przepływ NodeRed
Prosty przepływ w NodeRed wygląda tak:
Wstrzyknięcie 200msTick wysyła pusty ładunek na temat ,,tick" co 200 ms, aby obsługiwać naszą logikę błysku LED.
Naciśnięcia przycisków są odbierane i podejmowane. Za każdym razem, gdy odbierane jest zdarzenie OnClick, zmienna context.selected jest zwiększana, mod 6 (więc przyjmuje wartości 0-5). Za każdym razem, gdy odbierany jest tik, zmienna context.counter jest zwiększana mod (7*2) (więc zakres 0-13). Jeśli context.selected jest niezerowe i (context.selected < context.counter/2) dioda jest włączona, jeśli !(context.counter & 1), w przeciwnym razie dioda jest wyłączona. Tak więc dioda LED miga przez czas trwania wybranego kontekstu, z okresem migania 2 x 200 ms i całkowitym okresem 14 x 200 ms.
Pakiety Relay set/get MQTT są używane do poznania aktualnego stanu, a jeśli dblclick zostanie odebrany i context.selected != 0, odpowiedni przekaźnik jest przełączany.
Zawartość węzła funkcji CalexButton:
Ten przykład wykorzystuje kombinację obsługi zdarzeń w OpenBeken do wysyłania naciśnięć przycisków do NodeRed oraz węzeł NodeRed do śledzenia naciśnięć przycisków i migania pojedynczej diody LED na urządzeniu, aby zapewnić proste "menu" operacji na urządzeniu.
Intencją jest miganie diody LED dla liczby błysków reprezentujących ile razy przycisk został naciśnięty jako informacja zwrotna dla użytkownika, aby wiedzieć, który przekaźnik zostanie przełączony przez podwójne naciśnięcie.
Ponieważ miganie diody LED odbywa się na MQTT przez NodeRed, wynik nie jest doskonały, ale doskonale nadaje się do użytku.
Urządzenie to listwa sieciowa Calex z 5 'przekaźnikami' (4 gniazda zasilające i 1 sterowane wyjście USB). Posiada dwie diody LED i jeden przycisk.
Konfiguracja to:
P6 Rel 5
P7 Rel 2
P8 Rel 3
P9 Rel 1
P10 LED 6
P14 Btn 8
P24 LED 7
P26 Rel 4
Zwróć uwagę, jak oddzieliłem przycisk na kanale 8, aby nie miał domyślnej akcji.
Polecenia do wydania OpenBeken:
Przyciski udostępniają zdarzenia OnClick, OnDblClick, OnToggle, OnHold - ale są one publikowane w oparciu o numery PIN.
W moim przypadku mój pojedynczy przycisk znajduje się na pin 14 i chcę opublikować naciśnięcia przycisków w MQTT. Publikowanie do MQTT można wykonać za pomocą polecenia `publish `, co spowoduje wysłanie `` do tematu `//get`.
Wydałem te polecenia do wiersza poleceń OpenBeken:
addEventHandler OnClick 14 publish button click
addEventHandler OnDblClick 14 publish button dblclickNastępnie w NodeRed zasubskrybuj
/#/button/get click
/button/get dblclickMusimy również uchwycić aktualne wartości przekaźników, które wyglądają jak
//get Po przetestowaniu polecenia można uruchamiać podczas rozruchu, dodając następujący wiersz poleceń startowych w `Zmień tekst polecenia startowego`:
backlog addEventHandler OnClick 14 publish button click; addEventHandler OnDblClick 14 publish button dblclickSterowanie diodą LED
Wybrałem użycie diody LED na kanale 6 jako sprzężenia zwrotnego do stanu ,,menu". Aby kontrolować to przez MQTT, wysyłamy
/6/set Przepływ NodeRed
Prosty przepływ w NodeRed wygląda tak:
Wstrzyknięcie 200msTick wysyła pusty ładunek na temat ,,tick" co 200 ms, aby obsługiwać naszą logikę błysku LED.
Naciśnięcia przycisków są odbierane i podejmowane. Za każdym razem, gdy odbierane jest zdarzenie OnClick, zmienna context.selected jest zwiększana, mod 6 (więc przyjmuje wartości 0-5). Za każdym razem, gdy odbierany jest tik, zmienna context.counter jest zwiększana mod (7*2) (więc zakres 0-13). Jeśli context.selected jest niezerowe i (context.selected < context.counter/2) dioda jest włączona, jeśli !(context.counter & 1), w przeciwnym razie dioda jest wyłączona. Tak więc dioda LED miga przez czas trwania wybranego kontekstu, z okresem migania 2 x 200 ms i całkowitym okresem 14 x 200 ms.
Pakiety Relay set/get MQTT są używane do poznania aktualnego stanu, a jeśli dblclick zostanie odebrany i context.selected != 0, odpowiedni przekaźnik jest przełączany.
Zawartość węzła funkcji CalexButton:
Kod: Javascript
Fajne? Ranking DIY