Programowanie przełączników Sonoff POW

Z uwagi na to, iż coraz częściej dostaje pytania jak wgrać alternatywne oprogramowanie do Sonoff POW, postanowiłem opisać to w jednym miejscu jako przewodnik, oraz ściągę dla siebie na przyszłość. Sprawa jest bardzo łatwa, jednakże zawsze przychodzi chwila zawahania, który kolor kabelka, do którego podłączyć pinu. Oczywiście można zamówić gotowy produkt, z wgranym już wybranym oprogramowaniem np. w sklepie https://www.houseiq.pl , z którym od jakiegoś czasu współpracuje testując różne zabawki. Dla tych, którzy nie chcą iść na na łatwiznę powstał poniższy tekst.

Na początku powstaje problem wybory odpowiedniego programatora. Wersji i możliwości jest kilka. Ja przetestowałem dwa urządzenia:

Znalezione obrazy dla zapytania CP2102

Oba działają bez zarzutu. HW-417-V1.2 oprócz kabelków wymaga także przejściówki mini USB. Poza tym proces flashowania jest taki sam dla obu urządzeń. W instrukcji skupię się na tym pierwszym.

Podłączamy kabelki go odpowiednich pinów. Wykorzystujemy 4 z nich: 5V ( VCC), GND, RX, TX.

Znalezione obrazy dla zapytania hw-417 pin

Analogicznie podpinamy piny do Sonoff POW jak na obrazkach poniżej.

IMG_20181202_105734.jpg

 

W przypadku Sonoff POW nie ma konieczności lutowania. Piny są otwarte. Wystarczy włożyć do nich przewody i podczas wgrywania softu lekko pochylić na zewnątrz aby być pewnym, że dobrze przylegają do krawędzi.

Pobieramy i instalujemy oprogramowanie. Ja stosuje:

Obsługa SonoffPOW w ESPEasy jest jak na razie w wersji eksperymentalnej i sprawia trochę problemów, zwłaszcza z prawidłowym stworzeniem RULES.

Oprogramowanie wgrywam esptool.py.  Tak w Linuxie jak i w Windowsie powinniśmy mieć zainstalowanego Pythona w wersji Python 2.7 lub Python 3.4 lub nowszej. W aktualnych dystrybucjach Linuxa jest już Python w wymaganej wersji, dla Windowsa możemy ściągnąć go  z tej strony. U mnie w najnowszym Mincie:

$ python3 –version
Python 3.6.6

Ostatnią wersję esptool.py można zainstalować poprzez pip ( dla Linuxa wydajemy polecenia w Terminalu dla Windowsa w Powershell-u, w katalogu gdzie zainstalowaliśmy esptools:

$ sudo pip install esptool

W razie trudności może pomóc:

$ sudo python -m pip install esptool 

$ sudo pip2 install esptool

Po zainstalowaniu esptool, przechodzimy do odpowiedniego katalogu ( u mnie linuxie ~/.local/bin ) i wydajemy polecenie, gdzie /dev/ttyUSB0  to port pod który podpięty jest programator a sonoff-PL.bin to ściągnięta binarka najnowszej Tasmoty.

$ sudo python esptool.py -p /dev/ttyUSB0 write_flash 0x000000 „sonoff-PL.bin”

Jeżeli prawidłowo podpięliśmy kabelki, pochylamy je na zewnątrz i wciskamy biały przycisk aby przestawić urządzenie w tryb flashowania. Wymaga to trochę wprawy ale da się zrobić jedna ręką. Następnie podłączamy programator do portu USB, wydajemy jedno z powyższych poleceń i już. Jeżeli widzimy tak jak poniżej to mamy wgrany wybrany soft.

Zrzut ekranu z 2018-12-02 12-54-23

Odpinamy urządzenie od komputera. Podłączamy do prądu i konfigurujemy Tasomotę. Jak to zrobić opisywałem tu.

Czujnik SDS011 i wizualizacja danych na openSenseMap.

Na fali zainteresowania problemem smogu w Polsce i ja postanowiłem sprawdzić jak to jest na prawdę. Mieszkam na prowincji w dolinie Biebrzy, więc uważam się za w miarę bezpiecznego, ale ciekawość wzięła górę. Po lekturze bardzo dobrych wpisów Łukasza  oraz Cezara kupiłem czujnik pyłu zawieszonego Nova Fitness SDS011. Podłączenie i uruchomienie, po zapoznaniu się z instrukcjami z cytowanych powyżej blogów poszło bez problemu. Postanowiłem nie opisywać po raz kolejny tych samych czynności, postarałem się jednak o rozwinięcie tematu. Jako, iż mam pewne doświadczenie w GIS od jakiegoś czasu chodziło mi po głowie aby podzielić się odczytami ze światem. Idealna byłaby interaktywna mapa. Badając problem natknąłem się na openSenseMap.

Znalezione obrazy dla zapytania opensensemap

Jest to platforma wymiany danych z czujników oparta na OpenStreetMap. Projekt powstał w 2015 r. w GI@School lab at the Institute for Geoinformatics w niemieckim  Münster, gdzie wykorzystywany jest głównie w edukacji dzieci i młodzieży.

Szukałem sposobu na zasilenie mapy odczytami ze swoich czujników i okazało się, że powstał projekt luftdaten

FireShot Capture 34 - Home – luftdaten.info – Feinstaub selber_ - https___luftdaten.info_en_home-en_.png

Ma on na celu popularyzacje budowy własnych czujników do pomiaru jakości powietrza i dzielenia się odczytami. Świetna sprawa.

Budowa czujnika jakości powietrza.

Do budowy stacji pomiarowej, zgodnie z założeniami projektu luftdaten, wykorzystałem czujnik pyłu zawieszonego PM10/PM2.5 SDS011, czujnik temperatury i wilgotności DHT22 oraz płytkę NodeMCU V3.

Znalezione obrazy dla zapytania luftdaten

Czujniki podłączamy zgodnie ze schematem. Ważne jest aby zachować poniższe podłączenie ponieważ nie ma możliwości zadeklarowania pinów w oprogramowaniu układowym.

FireShot Capture 9 - fine dust sensor construction_ - https___luftdaten.info_en_construction-manual_.png

Po podłączeniu przewodów całość włożyłem w puszkę montażową i wygląda to tak.

Wgranie oprogramowania projektu LUFTDATEN.

Następnie pobieramy firmware  https://www.madavi.de/sensor/update/data/latest_de.bin. Przenosimy plik latest_de.bin do katalogu, w którym mamy program ESPEASY. Wgrywamy  analogicznie do ESPEASY. Wybieramy FlashESP826 i wgrywamy oprogramowanie.

Screenshot_20180314_172947.png

Screenshot_20180314_173120.png

Konfiguracja stacji pomiarowej.

Po ponownym podłączeniu urządzeniu do zasilania pojawi nan się nowa sieć Feinstaubsensor-6134254. Logujemy się na nią bez hasła. W przeglądarce wpisujemy standardowy adres 192.168.4.1.

Spectacle.Lh9737.png

Wybieramy naszą sieć WIFI, podajemy hasło i zapamiętujemy ID ( przyda się w dalszej części ). Naciskamy Speichern i po chwili urządzenie pojawi się w naszej sieci. Znajdujemy jego adres, na przykład przy pomocy aplikacji mobilej Fing i wpisujemy w przeglądarkę. Otworzy nam się strona konfiguracji.

Spectacle.T11463.png

W zakładce Konfiguration wybieramy podłączone czujniki.

Screenshot_20180314_175825.png

Wracamy na razie do strony głównej przyciskiem Zurück zur Startseite i wybieramy Aktuelle Werte. Jeżeli podłączyliśmy czujnik zgodnie ze schematem to już mamy odczyty.

Screenshot_20180314_180145.png

Już możemy cieszyć się monitoringiem jakości powietrza. Jednak zależało nam na udostępnieniu  odczytów  ma mapie. Wykorzystamy do tego wspomniany serwis openSenseMap.

Udostępnienie danych do openSenseMap.

Screenshot_20180314_180608.png

Oczywiście na początku zakładamy konto. Następnie, z prawej strony, pod profilem, tworzymy New senseBox. Akceptujemy licencję i dodajemy nasz czujnik.

Screenshot_20180314_181054.png

Screenshot_20180314_181454.png
 Poprzez Add sensor dodajemy kolejno podłączone czujniki.
Screenshot_20180314_181901.png
Po podwójnym zatwierdzeniu zmian otrzymujemy adresy naszych czujników. Najważniejszy jest senseBox ID.
Screenshot_20180314_1821521.png
Wracamy ponownie do oprogramowania płytki ( wpisujemy jej adres w przeglądarce ) i zaznaczamy OpenSenseMap oraz podajemy senseBox ID otrzymany powyżej.
Screenshot_20180314_182545.png
Zatwierdzamy i po wszystkim.

Wizualizacja danych na OpenDenseMap.

Znajdujemy lokalizację naszej stacji pomiarowej i po naciśnięciu na nią mamy taki oto obraz.
Screenshot_20180314_184424.png
Mamy również pogląd danych historycznych ( po wybraniu czujnika )
Screenshot_20180314_184518.png
Możemy również przeanalizować dane na wykresach. W przypadku danych z czujnika sds011 w poniższym adresie zamiast xxxxxxx wstawiamy numer naszej stacji pomiarowej z pierwszego zdjęcia.
Screenshot_20180314_184927.png
Analogicznie możemy zrobić dla czyjnika DHT22
Screenshot_20180314_185152.png

 Podsumowanie

Zastanawiające jest że na stronie projektu mamy 1452 czujniki z czego tylko 13 w Polsce, z czego jeden mój. Może to wiele wyjaśnić w temacie świadomości Polaków odnośnie jakości powietrza. W 2016 roku 33 na 50 miast z najgorszą jakością powietrza było w Polsce. Jestem całym sercem, aby i u nas wdrażać takie projekty edukacyjne. Zapraszam do dzielenia się swoimi pomiarami.

 

Czujnik otwarcia bramy garażowej za 11 zł – HC-SR04 i NodeMCU V3

Nastał w końcu czas na wykorzystanie całej masy różnych czujników, na których uczyłem się podstaw Arduino, RaspberryPi, pisania skryptów itp. Wiele wieczorów spędzonych na walce ze złośliwością rzeczy martwych przyniosło w większości wymierne sukcesy. Po tych bojach pozostało mi kilka czujników, które czekają cierpliwie na pomysł jak je wykorzystać w praktyce. Aby zrobić miejsce na następne ( plany zakupowe są szeroko zakrojone ) postanowiłem nie kupować kolejnych dopóki nie wykorzystam już posiadanych. Na pierwszy ogień poszedł  ultradźwiękowy czujnik odległości HC-SR04. Zdecydowałem się wykorzystać go do monitoringu otwarcia bramy garażowej. Ponieważ konstrukcja bramy uniemożliwia montaż kontaktora, trzeba było coś wymyślić. Dedykowane, gotowe rozwiązania, zwłaszcza pod Z-wave potrafią kosztować grubo ponad 100 zł, warto więc podjąć wyzwanie.

Znalezione obrazy dla zapytania hc-sr04

Specyfikacje czujnika łatwo znaleźć w internecie, więc skupię się na kilku, moim zdaniem istotnych szczegółach. Zasięg czujnika mieści się w granicach od 2 do 200 cm. Sprawdzałem go w rożnych warunkach i potrafił zmierzyć nawet do 5 m, jednak nie polegałbym za nadto na tych pomiarach. Drugim, bardzo ważnym szczegółem jest fakt, iż czujnik jest zasilany napięciem 5 V. Jest to istotne w przypadku podłączenia do płytki NodeMCU V3, o czy za chwilę.

Schemat podłączenia czujnika do płytki.

Z uwagi na fakt, iż nie za bardzo ufam jakości czujników z Chin, od jakiegoś czasu najpierw testuje je na Arduino i jeżeli jest w porządku zaczynam zabawę z Domoticzem.

img_20180220_172513-1.jpg

Czujnik podłączamy w następujący sposób.

  • VCC – zasilanie 5V
  • GND – masa
  • ECHO – wyjście sygnału ( u mnie pod pin D7 )
  • TRIG – wejście wyzwalające ( u mnie pod pin D6 )

Na zdjęciu powyżej czujnik podłączony jest do płytki AMICA V2. Idąc po taniości zdecydowałem się na użycie tańszej płytki LOLIN V3. W V2 zasilanie 5V wyprowadzone jest na pin VIN. W naiwności swojej myślałem, iż tak też jest na płytce LOLIN. Już myślałem, że urządzenie jest niesprawne ( dostawałem cały czas odczyty 0 cm ), jednak po zapoznaniu się z poniższym schematem odkryłem, iż na płytce V3 zasilanie 5V jest wyprowadzone na pin VV. Po podłączeniu zasilania VCC czujnika do pinu VV LOLIN płytka ożyła.

Znalezione obrazy dla zapytania nodemcu v3 gpio

Wgranie ESPEASY na płytkę LOLIN V3.

Teraz sprawa była już prosta. Jak to zrobić opisałem tutaj.  Po wgraniu softu dodajemy czujnik.

FireShot Capture 16 - newdevice - http___192.168.2.87_devices_index=4&page=1.png

I oto mamy już odczyty.

 

Screenshot_20180220_173807.png

Możemy dodać wirtualny czujnik do Domoticza i cieszymy się odczytami. Jednak w tym przypadku będziemy chcieli jedynie wiedzieć czy brama jest otwarta czy zamknięta, więc dodamy zwykły przełącznik.

FireShot Capture 18 - Domoticz - http___192.168.2.214_9009_#_Hardware

FireShot Capture 19 - Domoticz - http___192.168.2.214_9009_#_LightSwitches.png

 

Budowa sensora otwarcia bramy garażowej.

W tytule wpisu, napisałem że zrobimy kompletny sensor. Montowanie płytki stykowej na ścianie w garażu jest mało praktyczne.

Lista zakupów ( ceny z chińskich portali ):

  • HC-SR04 – 1,73 zł
  • NodeMCU V3 – 7,32 zł
  • puszka – ok. 2,0 zł
  • przewody, kabel zasilający, klej na gorąco, wkręty – 0 zł ( domowe zapasy )

Razem:  11,05 zł

Składamy wszystko do kupy.

Montujemy czujnik w garażu. U mnie odległość czujnika od bramy wynosi ok. 124 cm. Jeżeli więc odczyt jest większy znaczy, że brama jest otwarta i w Domoticzu zmieni się stan przełącznika.

Piszemy banalne zdarzenie.

fireshot-capture-25-domoticz-http___192-168-2-214_9009__events.png

I działa. Jednego czujnika mniej w pudełku.

Moduł WiFi z ESP8266 (NodeMCU) i ESP Easy. Bezprzewodowe czujniki i przekaźniki w Domoticzu.

W moim systemie od dłuższego czasu prym wiodą czujniki i przełączniki bezprzewodowe.  Na blogu testowałem kilka takich rozwiązań  jak np.  gniazdka Orvibo czy Xiaomi Smart Home Starter Kit. Do odczytu temperatury, wilgotności, natężenia światła czy przełączników stosuje moduły WiFi z ESP8266 (NodeMCU) z oprogramowaniem ESP Easy.  Ich niewątpliwą zaletą jest łatwość programowania, kompletny firmware i nie ukrywam niska cena. Nie do przecenienia jest stabilność odczytów. Pierwsza płytka pracuje u mnie w systemie ponad rok bez przerwy, monitorując pogodę na zewnątrz.

Poradników i przewodników jak zintegrować płytki NodeMCU z Domoticzem jest w sieci dużo, jednak i ja postanowiłem opisać swoje doświadczenia. Myślę, że właśnie to rozwiązanie stanie się u mnie wiodącym.

  • Wybór odpowiedniej płytki.

Nie wdając się w szczegóły na rynku mamy płytki ESP8266 NodeMCU dwóch generacji. Od razu polecam urządzenia drugiej generacji. Jednak i one różnią się między sobą. Na pierwszy rzut oka możemy je rozpoznać po tym, iż wersja V2 jest węższa od V3 i na płytce stykowej pozostawia po jednym rzędzie otworów. Jest jednak i poważniejsza różnica. Leży ona w konwerterze USB-UART. NodeMCU w wersji V3 został wyposażony w układ CH340, natomiast V2 w Silicon Labs CP2102. Ten drugi jest lepiej obsługiwany przez system Windows z uwagi na dostępność sterowników. Ja mam płytki w obu wersjach i nigdy nie miałem z nimi problemów, jednak na początek polecam wersję V2.

IMG_20180120_104432.jpg

  • Programowanie płytki w systemie Windows

W pierwszej kolejności pobieramy najnowsze oprogramowanie ESPEasy_v2.0. Jest to wersja rozwojowa, ale już bardzo stabilna. Wypakowujemy archiwum, podłączamy płytkę do portu USB i uruchamiamy plik ESPEasy_v2.0.

Screenshot_20180120_144640

 

Jeżeli płytka zostanie poprawnie wykryta ( u mnie na porcie COM4) wybieramy firmware ( w zależności od ilości pamięci ). Dla płytki  ESP8266 NodeMCU V2 i V3 tak jak na zdjęciu powyżej. Naciskamy Flash. Kropki świadczą o postępie programowania. Na koniec otrzymujemy komunikat Flash Complete. Jeżeli pojawią się problemy z wykryciem płytki polecam zainstalowanie Arduino IDE.

  • Podłączenie płytki do sieci Wifi

Odłączamy płytkę od komputera i podłączamy do zasilania. W tym momencie urządzenie powinno zostać wykryte  jako dodatkowa sieć ESP_Easy_0. Płytka w tym momencie pracuje w trybie AP. Logujemy się do sieci hasłem configesp. Po wpisaniu w przeglądarkę adresu 192.168.4.1 otrzymamy możliwość dodania urządzenia do naszej sieci.

Screenshot_20180120_144148

Po kilkunastu sekundach urządzenie dostanie adres IP w naszej sieci.

Screenshot_20180120_144306

  • Konfiguracja ESPEasy.

Wpisujemy powyższy adres w przeglądarkę i przechodzimy do podłączenia czujników.

Screenshot_20180120_141633.png

Aby przekazać dane do Domoticza przechodzimy do zakładki Controllers.

Screenshot_20180120_152907.png

Naciskamy EDIT i wprowadzamy dane ( adres IP i port ) Domoticza. Pamiętać należy o zaznaczeniu Enabled.

Screenshot_20180120_153059.png

  • Dodanie czujników do płytki

Jako przykład pokaże jak podłączyć popularny czujnik temperatury i wilgotności DHT11.

Znalezione obrazy dla zapytania nodemcu dht11

Następnie przechodzimy do zakładki Devices. Naciskamy EDIT i wprowadzamy dane.

Screenshot_20180120_153849.png

Pamiętać należy o zaznaczeniu Enabled. Podajemy Pin do którego podłączyliśmy czujnik i IDX czujnika w Domoticzu. Jak dodać wirtualny przełącznik pisałem we wpisie.

Sprawdzamy czy widzimy odczyty.

Screenshot_20180120_155041.png

Jeżeli prawidłowo podaliśmy adres IP, port i IDX Domoticza to musi działać.

Screenshot_20180120_155337

W następnych wpisach pokażę jak podłączyć czujnik odległości HC-SR04 i prosty przekaźnik.