Plugin – Połączenie eWelink razem z Node red daje komunikacje sonoff z Domoticz bez flash

Prezentuje wam współprace pomiędzy eWelink a Domoticzem. Dotychczas taka współpraca była możliwa dzięki flashowaniu sonoffów i zmianie oprogramowania na tasmote, ale teraz dzięki dodatkowi do note reda będziemy mieli możliwość bez zmiany oprogramowania na sonoff sterować nim za pomocą domoticza.

Zanim dodamy dodatek do Note reda musimy go posiadać zainstalowanego na raspberry pi. Nagrałem już wcześniej instrukcje jak zainstalować Note Red:

Po zainstalowaniu musimy dodać nasz dodatek w tym celu wchodzimy w menu >>Manage Palette:

node red menager pallet

W kolejnym kroku w chodzimy w zakładkę install i wyszukujemy eWelink:

Po prawej stronie pod dodatkiem mamy możliwość instalacji. Na zdjęciu powyżej ta opcja jest niedostępna, ponieważ dodatek mam  już zainstalowany. Zainstalowany dodatek od razu jest dostępny blocky z tego modułu pojawiają nam się w menu głównym.

Wszystkie moduły powyżej są opisane po angielsku na stronie Link

Tak wygląda podstawowe połączenie, które pozwoli nam zwrócić id urządzenia. Dla początkujących może być skomplikowane, bo nazwa bloczków jest inna w menu po lewej, a inna, gdy je wyciągniemy na tablice. Najprościej je rozpoznać po znaczkach, które są po lewej stronie. Pierwszy to “Inject” później z ewelinku (dodatku, który zainstalowaliśmy) wybieramy “device” i ostatni to “debug”.

Przechodzimy do konfiguracji blocku device klikając na niego dwa razy lewym przyciskiem myszki.

Tutaj jak możecie zobaczyć mamy dwa pola do uzupełnienia Name- jest to dowolna własna nazwa np eWelink. Natomiast drugie pole edytujemy naciskając ołówek:

UWAGA!!!
NA KONCIE EWELINK MOŻE BYĆ ZALOGOWANA TYLKO JEDNA OSOBA. DO TEGO PROJEKTU NALEŻY STWORZYĆ NOWE KONTO I WSPÓŁDZIELIĆ URZĄDZENIA DLA TEGO KONTA

W tym polu musimy wprowadzić swój adres @ oraz hasło do aplikacji ewelink. Całość następnie zatwierdzamy przyciskiem ADD.

Naciskamy na przycisk przy timestamp (szary kwadrat po lewej stronie). Spowoduje to przesłanie informacji, które wyświetlą się nam w msg.payload odczyt wiadomości pod przyciskiem w node red:

Po naciśnięciu przycisku pojawią nam się tutaj wszystkie urządzenia, które posiadamy w aplikacji ewelink:

Strzałka pozwala nam pokazać więcej informacji. Przykładowo powyżej mamy otwarte dodatkowe możliwości dla urządzenia 11. Najważniejszą informacją jest deviceid.

Na samym początku widzimy dwa przyciski inject ich nazwa jest on/off, bo bezpośrednio w nich skonfigurowałem wiadomość wysyłaną do kolejnego blocku.

Zmieniamy wartość payload na string i wpisujemy wartość on. Jednakowo robimy z drugim injectem, ale wartość zmieniamy na off.

Kolejnym blockiem jest Light, ale  z menu po lewej szukamy kafelka “power state”. Tak wiem, są dwa takie same, ale tylko jeden ma suwak po prawej stronie i to właśnie ten wybierz. Przechodzimy do konfiguracji tego blocku naciskając dwa razy lewy przycisk myszki na ten block.

W blocku powyżej uzupełniamy:

Name – dowolna nazwa.
Device ID – To jest device id, które pokazałem powyżej, gdzie się znajduje.
Channel – liczba kanałów naszego urządzenia.
eWeLink Credentials – tutaj wybieramy dziwny numer (skonfigurowaliśmy już wcześniej te pole danymi do logowania do eWeLink.

Na sam koniec dajemy Done.

Na samym końcu jest kafelek debug, który będzie nam wyświetlał informacje wysłane do sonoffa. Kafelki tutaj stworzyliśmy pozwolą nam za pośrednictwem node reda zmieniać status naszego sonoffa.

Poniższe blocky pozwalają na zmianę statusu w Domoticz na podstawie zmian w eWelink. Nasłuchujemy urządzenie i wysyłamy do domoticza informacje o zmianie statusu urządzenia, żeby w domoticzu status również się zaktualizował.

Blocky od lewej “Event listener” – pozwala nam nasłuchiwać urządzenie:

Tutaj robimy podstawową konfigurację:

Name – dowolna nazwa.
Device ID – To jest device id, które pokazałem powyżej, gdzie się znajduje.
Channel – liczba kanałów naszego urządzenia.
eWeLink Credentials – tutaj wybieramy dziwny numer (skonfigurowaliśmy już wcześniej te pole danymi do logowania do eWeLink.

Kolejnymi blockami jest debug, ale ten akurat ma ustawioną konkretną ścieżkę msg.payload.params.switch Dlatego pod nim wyświetla się tylko status urządzenia on/off. To ten status jest następnie przesyłany do kafelka switch, który zarządza kierowaniem ruchu.

Wprowadzone mamy dwie drogi, jeżeli wykryje z poprzedniego blocka on to wyśle drogą numer 1, a jeżeli off to drogą numer 2.

Na samym końcu mamy http request, który otwiera nam daną stronę. W tym przypadku będzie on wysyłał komunikat do domoticza.

W polu Url mamy link:

Dla włączenia
http://192.168.0.100:8080/json.htm?type=command¶m=switchlight&idx=166&switchcmd=On

Dla wyłączenia

http://192.168.0.100:8080/json.htm?type=command&param=switchlight&idx=166&switchcmd=Off

192.168.0.100:8080 – Adres naszego domoticza
idx=166 – numer idx naszego przełącznika.

Teraz status naszego przełącznika jest aktualizowany razem z Domoticzem. W kolejnym kroku będziemy musieli stworzyć, żeby po nacisnięciu przycisku w Domoticzu status zmieniał się również w sonoffie, bo teraz tylko widzimy aktualny status, ale nie mamy na niego żadnego wpływu.

Widzimy powyżej wykonany schemat. Zaczynając od lewej strony mamy blocky MQTT, które umożliwiają nam odczytywanie informacji bezpośrednio z domoticza kolejno jest block json. W nim nic nie zmieniałem. Następnie blocky function:

Kod:

if (msg.payload.idx == 166)
{
var Newmsg = { "payload" : {"command": "action.devices.commands.OnOff", "params" : {"on" : false } } }
Newmsg.topic = msg.payload.idx
if (msg.payload.nvalue == 1)
{
Newmsg.payload = "on"
}
else if (msg.payload.nvalue === 0)
{
Newmsg.payload = "off"
}
return Newmsg;
}

Kod odpowiada za przesyłanie informacji o statusie z domoticza do naszego sonoffa.

Ostatnim blockiem jest “power state” jest on dokładną kopią blocku, który już stworzyliśmy wcześniej, więc można skopiować lub uzupełnić na nowo.

Po skonfigurowaniu całości należy node reda przeładować, ale podczas tworzenia poszczególnych elementów pewnie nie raz już go przeładowywaliście. Teraz w pełni mamy działanie z Domoticza nad Sonoffem.

Stworzenie schematu blocków w Node Red do przesyłania temperatury oraz wilgotności do Domoticza. Całośc jest oparta o system zigBee, więc może się różnić od normalnych elementów.

Użyłem tutaj “Event listener” – pozwala nam nasłuchiwać urządzenie:

Tutaj robimy podstawową konfigurację:

Name – dowolna nazwa.
Device ID – To jest device id, które pokazałem powyżej, gdzie się znajduje.
Channel – liczba kanałów naszego urządzenia.
eWeLink Credentials – tutaj wybieramy dziwny numer (skonfigurowaliśmy już wcześniej te pole danymi do logowania do eWeLink.

Na dole widzimy dwa “Inject” Wysyłają do naszego pliku Join wiadomości pierwszy wysyła 2020, a drugi 7023. Format tych wiadomości jest identyczny, jak będziemy dostawać z czujnika ZigBee. Ważne jest również, że raporty będą przychodziły w różnych wiadomościach, a skoro nie możemy na zawołanie dostawać tych powiadomień to stworzyłem blocky, które pomogły mi w prawidłowej konfiguracji. Następnie znajduje się block “Join”, który łączy nasze dwie wiadomości, czyli wiadomość z temperaturą oraz wiadomość z wilgotnością.

Po odebraniu od sonoffa wiaodmości z temperaturą i wilgotnością łączy dwie wiadomości w jedną.

Następnie znajduje się function

var temperatura = (msg.payload.params[0].temperature).replace(/(\d\d)(\d\d)/, '$1,$2');
var wilgotnosc = (msg.payload.params[1].humidity).replace(/(\d\d)(\d\d)/, '$1,$2');
var jeden = "1"
msg.payload = [temperatura, wilgotnosc, jeden];
return msg;

 

Ten block ma na zadanie przekształcenie na przykład naszych przykładowych wiadomości z temperaturą 2020 oraz wilgotnością 7023 na wiadomość z temperaturą 20,20 oraz wilgotnością 70,23

W następnym kroku trafia do kolejnego blocku function

msg.payload = (msg.payload[0] +';'+ msg.payload[1]+';'+ msg.payload[2]);

return msg;

 

Ten block ma za zadanie wiadomości z temperaturą 20,20 oraz wilgotnością 70,23 na wypuszczenie wiadomości 20,20;70,23;1

Ostatnia wartość, czyli jedynka to wartość konieczna w domoticzu do ustawienia statusu wilgotności

HUM_STAT can be one of:


0=Normal
1=Comfortable
2=Dry
3=Wet

Wartośc 1 ustawiłem na sztywno i nie zmienia się w zależności od wilgotności, więc zawsze jest komfortowo. Natomiast format wiadomości 20,20;70,23;1 pozwala nam na wstawienie jej w całości do wiadomości url.

Ostatnim blockiem jest http request

Url:

http://192.168.0.100:8080/json.htm?type=command&param=udevice&idx=167&nvalue=0&svalue={{{payload}}}