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.

Home Assistant i czujnik smogu SDS011 wraz z ESPEasy po MQTT

Dobry wieczór.
Mam ja sobie czujnik smogu SDS011. Kiedyś był Ci on połączony z Domoticz i świetnie sobie działał http://blog.asobczak.pl/2017/12/18/czujnk-smogu-sds011-wemos-przelacznik-wszystko-w-dzialaniu/. Z chwilą przejścia na Home Assistant z czystego lenistwa (a może bardziej obawy) nie chciało mi się zmieniać konfiguracji z ESPEasy na Tasmota czy ESPHome. Jak jest, to niech działa. Ale miałem mały zgryz – nie wiedziałem jak wysłać dane do HA. W końcu jeden z kolegów na grupie FB podał przepis – MQTT! Gdzieś tam mi się w głowie kołatało, że próbowałem to zrobić w ten sposób, ale na czymś poległem. Dzięki niemu wiem już dokładnie na czym, co opiszę poniżej.
Nie przedłużając: głównym problemem u mnie była stara wersje ESPEasy – R147, jeszcze jakby 1.0. W niej po prostu nie była dostępna komunikacja przez MQTT. Niestety ESPEasy nie jest dla mnie dość jasne, Wiki nie jest aktualizowana na bieżąco, w sumie ich github jedynie odzwierciedla stan projektu: https://github.com/letscontrolit/ESPEasy/releases. Po pobraniu wersji 2.0 Mega (o wiele mówiącej nazwie ESP_Easy_mega_20200929_normal_alt_wifi_ESP8266_4M1M) i próbie zmiany wersji przez OTA (Over The Air) mój Wemos przestał się odzywać 😀 Ale pierwsze koty za płoty, podłączyłem konwerter UART (jak w cytowanym poście sprzed dwóch lat) i tym razem wszystko poszło bez problemu.
It’s alive! Wszystkie ustawienia i kod zostały zachowane po przejściu na nową wersję.

Kilka ważnych ustawień – zakładka Config i Append Unit Number to hostname.

Na zakładce Controllers dodajemy nowy Protocol – Home Assistant (openHAB) MQTT, podajemy IP brokera, port oraz dane do logowania (podane w konfiguracji Waszego MQTT). Do tego zaznaczamy Enabled.

Na zakładce Devices przy naszym czujniki musimy zaznaczyć wysyłanie danych do drugiego Controller’a – jak widać powyżej – aktualnie na raz do Domoticz oraz Home Assistant.

Tu już dane z zakładki Info.

Co do konfiguracji powyższego, to sensors.yaml wygląda tak:

  – platform: mqtt
    name: „Czujnik smogu PM25”
    state_topic: „CzujnikSmogu_1/CzujnikSmogu/PM25”
    unit_of_measurement: „ug/m3”

  – platform: mqtt
    name: „Czujnik smogu PM10”
    state_topic: „CzujnikSmogu_1/CzujnikSmogu/PM10”
    unit_of_measurement: „ug/m3”
Zwróćcie uwagę na CzujnikSmogu_1 – to jest efekt zaznaczenia Append Unit Number to hostname.
W ui-lovelace.yaml:
          – type: glance
            no_card: true
            title: „Powietrze na zewnątrz”
            show_name: false
            entities:
              – sensor.czujnik_smogu_pm25
              – sensor.czujnik_smogu_pm10
Po pełen kod mojego Home Assistant zapraszam na stronę: https://github.com/CaesarPL/Home-Assistant-Cezar.
Tylko tle i aż tyle 😀 Powodzenia!
P.S. Tak mi właśnie wpadło do głowy, że trzeba to oprogramować tak, aby pokazywał kiedy normy są przekroczone. Ciekawy temat.

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…