Node-red vs Hapcan

Post Reply
Bartek
Posts: 326
Joined: 14 Jul 2011, 19:36
Location: Wrocław
Contact:

Node-red vs Hapcan

Post by Bartek »

Witajcie.

Jako, że już w jednym wątku zagaiłem o moim nowym projekcie, tak skoro wszedł w bardziej zaawansowaną fazę i stał się używalny postanowiłem założyć ten wątek.

Chodzi mianowicie o integrację Hapcana z systemem node-red. Node-red jest to system działający na środowisku uruchomieniowym Node.js, które z kolei jest oparte na silniku JavaScriptowym. W skrócie jest to taki JavaScript uruchamiany lokalnie na serwerze, nie w przeglądarce. Na podanych stronach można przeczytać jak to zainstalować. A działa generalnie na wszystkim, Windows czy Linux (Raspberry Pi).
Dodać muszę, że JavaScriptem zajmuję się raczej dorywczo. Ostatnio w pracy byłem zmuszony trochę porzeźbić w JS, więc odkopałem przy okazji dawną znajomość z Node-redem.

Node-red-contrib-hapcan - bo tak nazywa się paczka o której mowa, obecnie dostępna jest na githubie. Gdy projekt trochę dojrzeje przeniosę go na platformę npm - która będzie umożliwiać instalację Hapcana wprost z panelu zarządzania node-reda. Póki co, trzeba to robić ręcznie.

INSTALACJA

Zakładam, że środowisko node.js oraz node-red już są zainstalowane. Na początek trzeba odnaleźć folder, w którym są zainstalowane paczki node.js.
W przypadku Windowsa u mnie jest to:
c:\Users\Bartosz\AppData\Roaming\npm\node_modules\node-red\node_modules\

W tej lokalizacji należy umieścić folder pobrany z githuba, node-red-contrib-hapcan - jest to standardowe nazewnictwo zalecane dla paczek node-red.

Jeśli masz zainstalowanego gita, można wejść do powyższego folderu i zaciągnąć repo.

Code: Select all

git clone https://github.com/Onixarts/node-red-contrib-hapcan
A żeby zaciągnąć nową wersję (z folderu node-red-contrib-hapcan):

Code: Select all

git pull
URUCHOMIENIE

Aby Hapcan pojawił się w node-redzie należy go teraz zrestartować. Jeśli odpalacie go z konsoli, wystarcz zatrzymać Ctrl+C, a następnie uruchomić wpisując:

Code: Select all

node-red
Standardowy adres panelu zarządzania node-redem to:

Code: Select all

http://127.0.0.1:1880
Na samym końcu powinny być widoczne nody Hapcana.
node-red-contrib-hapcan-nodes.png
node-red-contrib-hapcan-nodes.png (4.98 KiB) Viewed 19608 times
KONFIGURACJA

Standardowo noda przeciągamy na flow i dwukrotnie klikając wchodzimy w opcje. Weźmy na początek bloczek relay output - umożliwia on sterowanie modułem przekaźnika.

Każdy nod (bloczek) musi mieć ustawioną bramkę (Gateway). Jest nią moduł Ethernet, który należy wskazać w dodatkowych opcjach, na zdjęciu poniżej jest to ten przycisk wskazany strzałką. Użytkownikom Hapcana konfiguracja obca raczej nie będzie - wystarczy wskazać IP, port, moduł oraz grupę. Podobnie z pozostałymi bloczkami.
node-red-contrib-hapcan-relay-output.png
Po każdej zmianie należy wcisnąć przycisk DEPLOY, aby node-red przeładował przepływy. Jeśli Konfiguracja się powiodła, przy każdym bloczku będzie wyświetlony aktualny stan połączenia z modułem Ethernet.

Na rysunku powyżej skonfigurowałem domyślną akcję jako TOGGLE kanału 4 modułu (2,1) - jest to jedno ze świateł w pokoju. Domyślna akcja będzie wywoływana za każdym razem jeśli jakakolwiek wiadomość nadejdzie na wejście bloczka. Tutaj dodałem bloczek inject, który wysyła timestampa powodując wysłanie na magistralę Hapcana ramkę sterującą modułem wybranym w konfiguracji (2,1).

Jak widzicie, prócz nazwy na bloczku pojawia się też adres (2,1)[4] - 4 oznacza wybrany kanał.

Po wybraniu bloczka, po prawej stronie w zakładce info pojawi się opis bloczka, jego parametrów i możliwości, więc póki co nie będę ich tutaj opisywał.

Tak więc życzę miłej zabawy, błędy i sugestie zgłaszajcie na githubie - będzie mi łatwiej tym zarządzać, lub jeśli ktoś ma ochotę to podeślę zaproszenie na slacka, onixarts.slack.com (podeślijcie na priva email, na który mam wysłać zaproszenie).

Smacznego :)
Last edited by Bartek on 25 Feb 2018, 22:49, edited 2 times in total.
Bartek
Posts: 326
Joined: 14 Jul 2011, 19:36
Location: Wrocław
Contact:

Re: Node-red vs Hapcan

Post by Bartek »

Poniżej jeszcze dwa screeny jak to wygląda u mnie podczas implementacji/testów.

Jako UI skorzystałem z paczki node-red-ui - można doinstalować wprost z pulpitu node-reda, opcja Manage palette.
nod-red-ui.png
A tak wygląda nabazgrany blat roboczy :).
node-red-contrib-hapcan-testflow.png
qumi
Posts: 61
Joined: 24 Jul 2011, 21:54

Re: Node-red vs Hapcan

Post by qumi »

Hmm...
Wygląda nieźle, zobaczymy czy projekt się rozwinie.
Liczyłem że połączenie hapcan z domoticzem z innego tematu będzie rozwijane, ale niestety, miejmy nadzieje że w tym przypadku będzie inaczej.

Przydał by się w końcu jakiś system do wizualizacji hapcan.
Bartek
Posts: 326
Joined: 14 Jul 2011, 19:36
Location: Wrocław
Contact:

Re: Node-red vs Hapcan

Post by Bartek »

Większość systemów da się spiąć ze sobą, chociażby przez MQTT. Na node-redzie można stworzyć też UI. Ja nie widzę na razie potrzeby spinania tego z czymkolwiek, bo tutaj w zasadzie jest wszystko co potrzebuję. No prawie wszystko, ale to później ;).

Jeśli byście czegoś konkretnego potrzebowali to piszcie, jakieś rozszerzenia czy inne możliwości sterowania. W najbliższym czasie będę dorabiał bloczki do modułu RGB i do rolet. Później coś, co potrafi wyszukiwać urządzenia, nazywać je automatycznie i pobierać statusy.
qumi
Posts: 61
Joined: 24 Jul 2011, 21:54

Re: Node-red vs Hapcan

Post by qumi »

Widziałem że można stworzyć UI, ale trzeba to zrobić :D
Domoticz na sprarcie dla androida, ipada itd.

Co do potrzeb to przede wszystkim obsługa modułów rgb, ale w dwojaki sposób,
albo jaki zwykłe rgb, albo jaki oddzielne włączniki światła z funkcją ściemniania dla poszczególnych kolorów.
Mam u siebie w domu trochę oświetlenia - zwykłe ledy podłączone do poszczególnych linii rgb, które mogę niezależnie sterować.

Czyli master ustawiony na 100%, a poszczególne kanały włączane i ustawiane na żądaną wartość.

Super by było gdyby była taka możliwość konfiguracji.
kompio
Posts: 98
Joined: 22 Jul 2016, 14:38

Re: Node-red vs Hapcan

Post by kompio »

Załączam mój kawałek kodu załączający 3 kanały naraz, nie dostaje zwrotki z relay input, co mogłem skopać ? ;]

[{"id":"2d39ad22.9cc592","type":"relay-output","z":"a3d4b485.50da18","gateway":"74cd1737.1c81b8","name":"Gabinet_kinkiet","group":"2","node":"8","channel":"1","defaultAction":"-1","x":978.8986511230469,"y":99.98445320129395,"wires":[]},{"id":"fcf3119e.134b1","type":"inject","z":"a3d4b485.50da18","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":475.8829879760742,"y":114.83205318450928,"wires":[["8247a268.3c95e"]]},{"id":"8247a268.3c95e","type":"function","z":"a3d4b485.50da18","name":"1 2 3","func":"msg.topic = \"control\";\nmsg.payload = {};\nmsg.payload.channels = [1,2,3];\nmsg.payload.action = \"toggle\";\nreturn msg;","outputs":1,"noerr":0,"x":694.8909225463867,"y":116.28518676757812,"wires":[["3290e74c.f13318","2d39ad22.9cc592"]]},{"id":"3290e74c.f13318","type":"debug","z":"a3d4b485.50da18","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":922.8906555175781,"y":229.04689025878906,"wires":[]},{"id":"63750754.122ab8","type":"relay-input","z":"a3d4b485.50da18","gateway":"74cd1737.1c81b8","name":"","group":"2","node":"8","channelFilter":1,"x":572.8945617675781,"y":221.4609432220459,"wires":[["3290e74c.f13318"]]},{"id":"74cd1737.1c81b8","type":"hapcan-gateway","z":"","host":"192.168.1.219","port":"1005","group":"4","node":"2"}]
Bartek
Posts: 326
Joined: 14 Jul 2011, 19:36
Location: Wrocław
Contact:

Re: Node-red vs Hapcan

Post by Bartek »

A odpalasz node-reda z konsoli? Widzisz tam przychodzące wiadomości? Czy zaczynają się one od bajtu 0xAA?

Edit: Dobra, mój błąd, przedobrzyłem trochę, zaraz pójdzie poprawka na githuba :D. Sorry. Niestety JavaScript ma to do siebie, że nie krzyczy nawet jak palniesz w kodzie jakieś bzdury. Muszę się na TypeScripta przerzucić :).
kompio
Posts: 98
Joined: 22 Jul 2016, 14:38

Re: Node-red vs Hapcan

Post by kompio »

uaktualniłem.
25 Feb 21:20:26 - [info] [hapcan-gateway:74cd1737.1c81b8] sending: >> AA 10 A0 F0 F0 02 01 08 02 00 FF FF FF 9A A5
25 Feb 21:20:26 - [info] [hapcan-gateway:74cd1737.1c81b8] received: << AA 30 20 08 02 FF FF 01 00 FF FF 01 00 58 A5

chyba są ale w debug przez www cisza .... działało mi 2 dni temu :) .... termometrów też nie odbieram ... może problem mam gdzie indziej
Bartek
Posts: 326
Joined: 14 Jul 2011, 19:36
Location: Wrocław
Contact:

Re: Node-red vs Hapcan

Post by Bartek »

Z tą poprawką ostatnią też Ci nie pobiera?
kompio
Posts: 98
Joined: 22 Jul 2016, 14:38

Re: Node-red vs Hapcan

Post by kompio »

Aktualizowałem: git fetch origin
i też cisza :(
Bartek
Posts: 326
Joined: 14 Jul 2011, 19:36
Location: Wrocław
Contact:

Re: Node-red vs Hapcan

Post by Bartek »

Spróbuj jeszcze > git pull.
kompio
Posts: 98
Joined: 22 Jul 2016, 14:38

Re: Node-red vs Hapcan

Post by kompio »

Wszystko działa
skasowałem stare/pobrałem na nowo
Dobra robota :)
Bartek
Posts: 326
Joined: 14 Jul 2011, 19:36
Location: Wrocław
Contact:

Re: Node-red vs Hapcan

Post by Bartek »

Żeby za bardzo tutaj Jackowi nie spamować założyłem Slacka, na którego zapraszam zainteresowanych. Podeślijcie do mnie maila, na którego wyślę zaproszenie. Tam można swobodnie dyskutować na chacie itd. Slack jest również podłączony do githuba więc wszelkie aktualizacje będą notyfikowane na odpowiednim kanale Slacka.

Adres workspejsa: onixarts.slack.com
Grzegorz
Posts: 12
Joined: 04 Jul 2016, 19:09

Re: Node-red vs Hapcan

Post by Grzegorz »

Jak zrealizowales wezly wejsciowe?
Jak patrzylem na NR (fred, nie Twoja paczka) to nalezaloby uzyc TCP IN w celu podlaczenia sie do modulu ethernetowego a nastepnie parsowac msg/robic switche i juz z gorki (tylko bylby jeden skomplikowany flow). Natomiast jak widze rozne wezly wejsciowe to przeciez one nie tworza kazdy oddzielnego polaczenia do modulu eth. Masz to jakos pod spodem (jeden flow z tcp in) i potem w zaleznosci od konfiguracji info z ukrytego flow leci jakos do odpowiedniego inputa?
Bartek
Posts: 326
Joined: 14 Jul 2011, 19:36
Location: Wrocław
Contact:

Re: Node-red vs Hapcan

Post by Bartek »

Jest osobny węzeł komunikacyjny, który odpalany jest w tle. Implementuje on łączność przez tcp dla wszystkich nodów hapcana. Węzły wejściowe subskrybują się pod konkretne typy ramek i dostają notyfikację gdy przyjdzie określona ramka.
Nie piszę programow od wczoraj więc architektura pod spodem jest w miarę racjonalna :)
Post Reply