Czujnik smogu SDS011 wraz z ESPHome oraz Home Assistant

Dzień dobry ponownie.

Zostałem trochę na FB 'zjechany’ za to, że się obijam w temacie Smart Home, ale akurat niewiele się w tym kontekście u mnie dzieje. Działa, rozbudowywać mi się nie chce, rozleniwiłem się. Fakt niepodważalny. Pech jednak chciał, że zepsuł mi się ESP8266, który 'siedzi’ obok czujnika smogu SDS011. Kupować nowego nie miałem zamiaru (dopełniłbym pewnie do Smart’a Allegro bzdetami, których nigdy nie użyję), a chciałem żeby działał, bo mierzi mnie, jeżeli jakiś element nie funkcjonuje. Szczęśliwie leżał w pudełku z elektroniczymi gratami Wemos D1 Mini. I to wymusiło pewne zmiany, które tygrysy lubią najbardziej 😀

Historia potoczyła się następująco:

1. LoLin ESP8266 przestał działać, niby dioda świeciła się przy podłączeniu do USB, ale zaprogramować już nie mogłem.

2. Znalazłem Wemos D1 Mini, fajnie.

3. Tutaj jednak problem – w czasach kiedy montowałem czujnik smogu (bagatela – już prawie cztery lata – autentycznie szokuje mnie coraz bardziej upływ czasu) nie było jeszcze funkcji usypiania czujnika przez oprogramowanie.

4. Zrobiłem to za radą jednego blogera na przełączniku Songle.

5. Okazało się, że potrzebowałem 2xGround na płytce Wemos Mini.

6. Jest tylko jeden, nie chciało mi się łączyć kabli 'na krótko’, bo to mało estetyczne

7. Odpiąłem więc przełącznik, podłączyłem Wemos bezpośrednio z czujnikiem SDS011

8. Okazało się, że najnowsza wersja ESP Easy nie ma możliwości uśpienia go na określony czas :/ Nie znalazłem i tyle 🙁

9. Tasmota na mój stan wiedzy również tego nie wspiera

10. Skończyło się na ESPHome, które ma wszystko co potrzeba, działa świetnie i jest banalne w konfiguracji. Sukces!

Wszystko jest praktycznie do wyklikania, Najpierw tworzymy nową konfigurację w ESPHome (oczywiście pod warunkiem, że zainstalowaliście ten dodatek) – Supervisor->ESPHome->Open Web UI->Plus->Create configuration.

Wpisujemy:

esphome:

  name: smog

  platform: ESP8266

  board: d1_mini

 

# Enable logging

logger:

 

# Enable Home Assistant API

api:

 

ota:

  password: „password”

 

wifi:

  ssid: „SSID”

  password: „Hasło”

 

  # Enable fallback hotspot (captive portal) in case wifi connection fails

  ap:

    ssid: „Smog Fallback Hotspot”

    password: „BlaBla”

 

uart:

  tx_pin: D1

  rx_pin: D6

  baud_rate: 9600

 

sensor:

  – platform: sds011

    pm_2_5:

      name: „Particulate Matter <2.5µm Concentration”

    pm_10_0:

      name: „Particulate Matter <10.0µm Concentration”

    update_interval: 30min 

I kompilujemy.

Aktualizacja z ESP Easy do ESPHome to również fraszka – wybieramy Update firmware, wskazujemy skompilowany plik .bin z ESPHome i ładujemy.
Jak widać poniżej – od razu dostępny.

W tx_pin i rx_pin podajecie swoje porty w ESP8266, nazwę jaka Wam się podoba i update_interval. Ostatni parametr jest domyślnie ustawiony na zero (0), co oznacza ciągłą pracę. Jeżeli nie podłączycie nic pod rx_pin to czujnik nie dostanie informacji o zmianie i tak właśnie zostanie zainicjowany. Jednak nie jest to najlepsze podejście, bo raz, że zużywa laser, dwa – tak ciągłe odczyty nie są potrzebne. Ja ustawiłem na 30 minut, przed upływem tego czasu wiatraczek w czujniku włączy się 30 sekund aby się rozgrzać, zrobi pomiar i wyłączy się na kolejne 30 minut. Bajka.

Pomiar jest, wszystko działa. Pora zapakować go znowu przed domu, korzystać i przerażać się jak bardzo ciągle sąsiedzi robią syf za oknem…

Bardzo fajnie opisane wszystko jest na stronie: https://cyan-automation.medium.com/creating-an-air-quality-sensor-using-an-sds011-and-esphome-7305f764f6f5, wraz z template do wrzucenia jako sensor do HA.

Smart home, Domoticz, Raspberry – z czym się to je

Czytając swojego bloga (serio – czytam czasem co naskrobałem dwa lata temu, aby poprawiać 'warsztat’) doszedłem do wniosku, że nie zrobiłem nawet małego wstępu dla amatorów tematów Smart house i Raspberry Pi. Odgórnie przyjąłem, że wszyscy już wiedzą o co chodzi i od razu, 'z grubej rury’ przystąpiłem do opisywania tematów. Czasem dość trudnych.

Przy okazji rozpoczęcia strony na Facebook, dotarło do mnie, że nie mam co wrzucić jako początek, jak zainteresować ludzi, wytłumaczyć podstawy. Temu właśnie posłuży ten wpis.

Zaczynamy!

Designed by Freepik

Smart home, smart home, IoT, IoT. Bardzo głośne ostatnio tematy. Czyli tak zwane 'Inteligentne domy’. Osobiście wolę termin 'Sterowane’, 'Odpowiednio sterowane’ lub 'Automatyczne’. Inteligencję rezerwuję dla tworów żywych.

Dom taki na podstawie czujników czy też informacji z zewnątrz (na przykład pogodowych) potrafi odpowiednio się 'dostosować’ do naszych potrzeb.

Dość często wymienia się tutaj przykłady:
– uruchomienia podlewania gdy prognozowany jest brak opadów przez kilka dni,
– automatyczne otwieranie rolet/markiz o poranku
– czy też domykanie ich, gdy słońce świeci akurat w konkretne okno,
– sterowanie ogrzewaniem w domu gdy nas nie ma
– lub ustawianie zadanej temperatury, bo akurat wcześniej wracamy z pracy/wyjazdu,
– inteligentne monitorowanie posesji – jeżeli kurier dzwoni wideofonem przy bramie – wyślij zdjęcie i jeżeli potrzeba – otwórz mu furtkę aby nie bawił się w ogrodową koszykówkę przesyłką,
– ustawianie natężenia świateł w zależności od potrzeb – czytanie/oglądanie filmu/pełna jasność
– łączenie powyższych elementów w sceny – jeżeli wybieram tryb Kino – rozwiń ekran, włącz amplituner, wyłącz światła
– sterowanie głosowe
– powiadamianie głosowe/sms/e-mail

Wszystkie te elementy można zrealizować 'na bogato’ zlecając je wyspecjalizowanej firmie, lub hobbystycznie. Temu drugiemu podejściu dedykowany jest blog. Niestety, podczas budowy domu popełniłem kilka błędów, jednym z nich było pociągnięcie zbyt małej ilości kabli do przesyłania danych, 'bo przecież teraz wszystko po WiFi’. Wymusiło to (na ponowne kucie ścian i remonty nie mam ochoty) ustawienie zainteresowania na transmisję bezprzewodową.

Nie jestem profesjonalistą w tym temacie. Cały czas mnóstwo się uczę i wiele tematów jeszcze przede mną. Jeżeli coś jednak zaczynam i mnie wciągnie – 'nie ma zmiłuj’ – nie będę spał, ale temat muszę rozgryźć a problemy usunąć. Kropka.

Dlatego zainteresowały mnie platformy Raspberry Pi, Wemos, Arduino. Stąd już krok do komunikacji 433MHz, WiFi, ZigBee, Z-Wave. Czujniki temperatury, wilgotności, zalania, dymu, monitorowanie zużycia energii. Internetowe prognozy pogody, dane w formacie JSON. Temat jest niesamowicie rozległy i ciężko powiedzieć: 'To jest jedyne dobre rozwiązanie’.

Są systemy płatne, kompleksowo zamykające temat przez autoryzowanych instalatorów – Fibaro, Grenton to tylko przykłady polskich rozwiązań, na rynku jest ich mnóstwo. Oferują sterowanie światłem, ogrzewaniem, bezpieczeństwem, czujnikami. Są jednak relatywnie drogie (oczywiście punkt widzenia każdej osoby będzie się różnił) oraz zamknięte, jeżeli chodzi o sposób zaimplementowanych rozwiązań.

Osobiście szukałem systemu darmowego aby sprawdzić, czy Smart home się w ogóle u mnie przyjmie, czy jest sensowny. Patrząc z perspektywy czasu – jak najbardziej tak! Do tego przydałoby się oprogramowanie, które to wszystko zepnie, odczyta dane z czujników, prześle do przekaźników, zapisze do bazy danych, umożliwi analizy, reakcję.

Mój wybór padł na Domoticz. Trzy lata temu 'próg wejścia’ w jego przypadku był niższy niż w Home assistant. Aktualnie coraz częściej rozważam opuszczenie Domoticz, albo chociaż na pewien czas równoległe sprawdzenie Home assistant. Wydaje się platformą stabilniejszą, bardziej rozwojową ze względu na sposób jego budowy. Aktualnie jednak – Domoticz!

Dla osób początkujących ważna jest również kolejna informacja – oba systemy są darmowe, możliwe do zainstalowania na Raspberry Pi, komputerach/serwerach obsługujących Linux, Windows, MacOS. Nie nie ryzykujecie zaczynając przygodę ze Smart home.

Dlaczego akurat on?
– po zainstalowaniu na Raspberry Pi (i nie tylko) można go od razu używać, bez dodatkowych skryptów
– dla początkujących praktycznie wszystko da się wyklikać
– bogaty zbiór urządzeń, które są obsługiwane
– na tamten czas dość ładny interface użytkownika

Porównując koszty, są od 5 do 10 razy mniejsze niż przy rozwiązaniach dedykowanych, nadmieniam jednak, że spędziłem mnóstwo czasu ucząc się, dostrajając elementy do swoich potrzeb, instalując, testując. Nie każdy ma ochotę na takie hobby. Mnie akurat wciągnęło.

Kilka przykładów:

Dashboard (czyli główny pulpit). Z tego miejsca mogę sprawdzić status tego co się dzieje w domu – kamery, gniazdka, włączone urządzenia.

Przełączniki – światła, sterowanie IR (TV, wzmacniacz), gniazdka zdalnie włączane, LEDy, system audio multi room

Sceny – połączenie kilku elementów w łańcuch zdarzeń. Jeżeli oglądamy film, to wyłącz światła, włącz amplituner, subwoofer…

Temperatura – dane z każdego z czujników. Łącznie z wilgotnością.

Elementy użytkowe – status użycia Raspberry Pi, szybkość łącza internetowego, nawodnienie kwiatów, pobór prądu w domu

Domoticz umożliwia również robienie raportów w formie graficznej. Tutaj – wykres temperatury na zewnątrz

Ustawianie warunków włączenia/wyłączenia. Tutaj – Włącz światła przed domem godzinę po zachodzie słońca i wyłącz zawsze o 22:00.

Warunki powiadamiania. Tutaj – Jeżeli włączy się światło przed domem – wyślij e-mail na żądany adres

Jeżeli prezentacja danych w Domoticz nam nie odpowiada, zawsze można doinstalować dodatkowe systemy zbierające i prezentujące dane. Na przykład InfluxDB i Grafana.

Zachęcam do przeczytania poprzednich wpisów, postarałem się ułożyć opisane już tematy w pewne pakiety tematyczne:

– Przede wszystkim – Domoticz
– Systemy audio multi-room – Logitech media server, Max2Play
– Zdalny dostęp do Raspberry i Domoticz – Dataplicity
– Czujniki otwarcia/zamknięcia drzwi – Kerui
– Centralki obsługujące różne transmisje: RFLink, Xiaomi Mijia Smart Home
– Prezentacja danych/sterowania elementami domu: Dashticz, aplikacja Pilot, aplikacja MiHome
– Monitorowania zużycia energii: Owl Micro +
– Sterowanie głosem – Amazon Alexa – Echo Dot, Skille, Kalendarze
– Chipy ESP8266 – Wemos D1 Mini
– Instalacja, konfiguracja: Raspberry, Domoticz
– BLE – Bluetooth Low Energy – Mi flora
– Przełączniki Sonoff – Basic, POW, S20
– Sterowanie oświetleniem – włączniki Xiaomi, Milight
– Piloty uniwersalne IR – Broadlink
czujnik smogu
– Zdarzenia, powiadamianie – bezpośrednio w interface Domoticz, skrypty
pourlopowe wnioski

Nie twierdzę, że moja ścieżka jest jedyną dobrą. Ile osób, tyle możliwych rozwiązań, pomysłów, różnorakich podejść. Eksperymentujcie, sprawdzajcie!

Pozdrawiam, życząc miłej i przyjemnej lektury
Cezar

P.S. Życzę również dużo myślenia, potu, zastanawiania się czemu nie działa, szukania rozwiązań problemów.

Czujnk smogu SDS011, Wemos, przełącznik – wszystko w działaniu

Dobry wieczór!

Aktualizacja! Zapraszam do lektury świetnego wpisu o udostępnianiu danych z czujnika na blogu https://raspberrywpraktyce.wordpress.com/2018/03/14/czujnik-sds011-i-wizualizacja-danych-na-opensensemap/

Rozszerzając opis podłączenia czujnika SDS011 – tym razem dodałem element, który opisywał Łukasz Jokiel na swoim blogu – przełącznik, który włącza SDS011 co pewien określony czas.

Nie opisywałbym tego oczywiście mając tą samą konfigurację, ale akurat nie dość, że miałem LoLin (jakaś tam iteracja Wemos z Chin) a nie Wemos Mini, to jeszcze kupiłem inny przełącznik.

No i zaczęło się – musiałem się trochę nauczyć. Same plusy 🙂 Bardzo pomocna była strona: https://blog.siliconstraits.vn/relay-what-is-it-and-how-to-use-it/, gdzie autor świetnie opisał wszelkie możliwe informacje.

Podłączenie wtyczek dostarczonych wraz z SDS011 do samego czujnika było proste. 

Później do samego Wemos

Poniżej już całość, czyli:
1. Wemos (czy LoLin jak kto woli) (kilka PLN z Chin)
2. Przełącznik Songle SRD-05VDC-SL-C (10 PLN w Polsce)
3. Czujnik SDS011 (63 PLN z Chin)

Połączenia:
Z Wemos 5V -> do przełącznika DC+
Z Wemos GND -> do przełącznika DC-
Z Wemos GPIO 5 (D1) Output Low -> do przełącznika IN

Z Wemos 5V -> do przełącznika NO

Z przełącznika COM -> SDS 5V

W SDS:
GPIO 12 (D6) -> TX
GND -> GND
5V -> COM

I po kolei każda zakładka w Wemos i ESPEasy.
Main to tylko info

Na zakładce Config jest SSID sieci WiFi i hasło. Ale to już skonfigurowane zostało wcześniej. Tutaj z tą różnicą, że wgrywamy wersję developerską beta (na moment pisania 147 RC8).

Zwróćcie uwagę na Pin Mode 5 (D1) – Output Low – tym pinem będziemy sterować przełącznikiem

Na Devices dodajemy czujnik smogu – tak jak opisane na blogu Łukasza, ale tutaj akurat nie ma wielkiej filozofii… 

Ta zakładka pojawi się, gdy włączymy Rules w Advanced configuration na następnej 😉 Tutaj esencja – dwa liczniki, które odliczają czas i w odpowiednim czasie włączają/wyłączają SDS. Łukasz dokładnie to opisał, ale:
1. Włączamy SDS na 120 sekund, aby się rozpędził, pobrał dane, wysłał do Domoticz, po tym wyłączył. Hint: w nawiasach kwadratowych składnia: [NazwaSDS#NazwaZmiennej].
2. Ja czekam 30 minut aby ponownie go włączyć
Wszystko po to, aby oszczędzić czujnik oraz laser, ma skończoną żywotność. 

Kod:
On System#Boot do
timerSet,1,30
endon

On Rules#Timer=1 do
GPIO,5,1
timerSet,2,120
endon

On Rules#Timer=2 do
SendToHTTP 192.168.1.200,80,/json.htm?type=command&param=udevice&idx=243&nvalue=0&svalue=[CzujnikSmogu#PM25]
SendToHTTP 192.168.1.200,80,/json.htm?type=command&param=udevice&idx=242&nvalue=0&svalue=[CzujnikSmogu#PM10]
GPIO,5,0
timerSet,1,1800
endon

W Domoticz dodajemy dummy Hardware i do niego dwa Custom sensors, których IDX wpisujemy w skrypcie w Rules.
Tadam! Odczyty mam chyba trochę zawyżone przez to, że aktualnie zapakowałem czujnik w pudło, gdzie brak wentylacji. Albo faktycznie jest tak źle…

ESPEasy, Wemos i Domoticz – ABC podłączenia

W sumie (no, jeżeli chodzi o temperaturę) brakowało mi monitorowania garażu. Termometry na 433MHz nie sięgają tak daleko, jak się okazało i Xiaomi nie podołało z zasięgiem. W garażu mam jednak jakieś resztki zasięgu Wifi.

Jest przecież esp8266! Do tego są różne wersje – na przykład Wemos D1 mini, a na 'znanym chińskim portalu’ znalazłem jego alternatywy wraz z 'shield’em’, który zawiera DHT11. Nie jest to może i najlepszy termometr na rynku (delikatnie mówiąc), ale na moje potrzeby wystarczy, Do tego – łatwo się go łączy. Zestaw za kilkanaście złotych zawiera wszystkie potrzebne elementy. Przy okazji zakupiłem też Battery shield, ale to będę testował innym razem.

Jako że (jak pisałem) nie mam talentu do lutowania, muszę zaufać koledze, który mówił, że lutowanie było fraszką.

Skoro sprawy techniczne mamy za sobą, pora na oprogramowanie. Najwięcej słyszałem o ESPEasy, dlatego na nim się oparłem.

Zanim zaczniemy możemy w Domoticz stworzyć nowy element Hardware i Virtual sensor (to taka trochę pętla, bo tutaj musimy podać IP Wemos’a, które skonfigurujemy dopiero za chwilę, czyli możemy założyć, ale później i tak będziemy edytować). ZAPISUJEMY ID czujnika.

Na stronie https://www.letscontrolit.com/wiki/index.php/Main_Page jest odnośnik do ESPEasy. Przechodząc do niego skupmy się na sekcji Loading firmware – na czas pisania posta aktualna wersja to R120. Zostanie ona wkrótce zastąpiona przez wersję 2.0. Ale to przyszłość. Na razie jest R120.

Możemy doczytać więcej na https://www.letscontrolit.com/wiki/index.php/Tutorial_ESPEasy_Firmware_Upload, aby dowiedzieć się, że Wemos D1, Wemos D1 Mini oraz NodeMCU mają 4096k, Całkiem dużo. Do tego – są świetne dla początkujących, ponieważ mają konwerter USB do Serial. Czyli nie potrzebujemy żadnych programatorów – możemy podłączyć kablem USB Micro do komputera i zaprogramować flash.

Bezpośredni link do softu to: http://www.letscontrolit.com/downloads/ESPEasy_R120.zip

Jako że wszystkie moje komputery pracują na Windows, skupię się na tym systemie. Aby dowiedzieć się po podłączeniu na jakim porcie znalazł się nasz Wemos, musimy przejść do linii poleceń cmd i wpisać mode.

TU UWAGA. Zmarnowałem prawie godzinę, zanim okazało się, że kabel, który teoretycznie działał i ładował, praktycznie nie umożliwiał rozpoznania sprzętu. Zmiana kabla i wszystko ruszyło.

Kroków jest sześć:

1. Znajdź odpowiedni plik do Twojego modułu. To już mamy za sobą. Wiemy, że to Wemos D1 Mini

2. Ściągnij plik zip i wypakuj go do wybranego folderu. Link podałem powyżej, także to też mamy już za sobą

3. Uruchom 'flash.cmd’. Otworzy się okno z trzema pytaniami

4. Wpisz port na którym zainstalował się Wemos. Tu – 3
5. Wpisz wielkość flash – tu 4096
6. Wpisz numer wersji – tu 120

Programowanie rozpocznie się

Po zakończeniu otrzymamy stosowany komunikat

Teraz pora na wyszukanie sieci ESP_0, która pojawi nam się jako nowa sieć w domu do wybrania.
Hasło to configesp

Później będziemy mieli możliwość wejścia na stronę ESP Easy, gdzie możemy już wybrać do jakiej sieci ma się podłączyć nasz moduł.

Po tym kroku nastąpi restart

Tadam! Jesteśmy już prawie, prawie w domu 😀

Po wejściu na adres podany powyżej uruchomimy stronę ESP Easy.

Zaczynamy konfigurację! Ohoho!

Tutaj można (idąc po linii najmniejszego oporu) wypełnić tylko Name (nazwa naszego modułu), SSID i hasło musi już być wypełnione. Domoticz HTTP również ustawia się domyślnie, Controler IP i Port ustawiamy na nasz Domoticz. Tyle tutaj.

Teraz Devices oraz Edit, przy Task = 1.

W zależności od tego, czego używamy (no, ja shield z DHT) ustawiamy Device na wybrany czujnik.

I kolejno Name (Nazwa dla czujnika, mało ważne), Delay to interwał wysyłania danych do Domoticz i IDX czujnika Domoticz (jak to zrobić opisałem wcześniej), GPIO w tym przypadku ustawiamy na 2, Typ DHT w zależności od tego co mamy.

Jako że DHT 11 znane są ze swojej słabej jakości i różnego skalibrowania, przyda się czasem korekta. U mnie aż o 4 stopnie 😉 Możemy to zrobić w polu Formula Temperature. Możemy tam wpisać '%value% -4′. Jest co prawda pole do tego celu przeznaczone w Domoticz, ale ono działa tylko dla natywnych czujników temperatury.

Po wybraniu Submit pokaże się nam temperatura.

I od razu, jeżeli dobrze skonfigurowaliśmy czujnik, dane w Domoticz.

Hura, hura, koniec! Mam temperaturę w garażu! Zapewne do czegoś się ta informacja przyda 🙂