Dzisiaj na światło dzienne wychodzi nowa wersja AFE Firmware (T6), którą nazwałem "Stacja pogody". Nazwa jakoś mi nie leży, ale nie mogłem wpaść na nic innego, co lepiej opisywałoby możliwości tego softu. Jeśli komuś przyjdzie do głowy pomysł na inną nazwę i będzie to właśnie TO - to chętnie przejmę.
Jakie pomiary wykonuje urządzenie z tym oprogramowaniem:
- pyły zawieszone: PM2.5 oraz PM10
- lotne związki organiczne (VOC)
- temperatura (st.C)
- wilgotność (%)
- ciśnienie atmosferyczne (hPa)
- natężenie światła (lux)
Pominę może co to jest temperatura, wilgotność i ciśnienie atmosferyczne, a krótko przybliżę VOC, PM2.5, PM10.
VOC to substancje, które można znaleźć w powietrzu, a ich duże stężnie nie jest bez wpływu na nasze zdrowie. To samo dotyczy pyłów zawieszonych PM2.5/PM10, o których głośno jest ostatnimy czasy w radio i telewizji, temat szczególnie gorący w okresie grzewczym.
- VOC możemy znaleźć w farbach, klejach, procesie spalania, benzynie, zmywaczach, rozpuszczalnikach, odświeżaczach powietrza, papierosach, itp. Chcesz wiedzieć więcej o lotnych związkach organicznych, to zajrzyj w wikipedię
- PM2,5 to pył zawieszony o średnicy nie większej niż 2,5 μm, który zdaniem WHO, jest najbardziej szkodliwym zanieczyszczeniem atomosferycznym dla zdrowia człowieka spośród innych zanieczyszczeń
- PM10 to również pył zawieszony nie większy niż 10 μm. Wśród nich są takie substancje, jak benzopireny, które są silnymi substancjami rakotwórczymi. Występowanie PM10 jest związane między innymi z procesami spalania paliw stałych i ciekłych
Zakładając, że czytelnicy tej strony to osoby, które śmieci segregują i wyrzucają do kosza, a nie spalają we własnych piecach. To ponad to nie mają na codzień większego wpływu na to co fruwa w powietrzu. No chyba, że używają AFE Frimware :-))
Zbierając na bieżąco dane o jakości powietrza na zewnątrz możemy odkryć trendy kiedy najlepiej wietrzyć mieszkanie / dom tak, aby jak najmniej zatrutego powietrza przeleciało przez nasze cztery ściany. Możemy też automatycznie odpalać flitry powietrza, gdy czujnik wykryją za wysokie stężenie zanieczyszczeń powietrza znajdującego się w naszym lokum.
Czego nie było jeszcze w AFE Firmware to czujnik natężenia światła. Do czego można go wykorzystać? Ot, np. do automatycznego włączania oświetlenia na zewnątrz lub wewnątrz naszego domu w zależności jak jasno / ciemno jest na zewnątrz.
Jest to pierwsza wersja, więc jeszcze się rozwinie o kilka dodatkowch możliwości, np.:
- planuję umożliwić zasialanie bateryjne takiej stacji pogody. A żeby to miało sens, rozsądne wydaje się dodanie funkcjonalności usypiania urządzenia, aby wydłużyć żywotność baterii i ewentualnie umożliwić ładowanie takiej baterii małym solarem. Wtedy urządzenie powinno stać się samowystarczalne.
Dzisiaj udostępniam Wam oprogramowanie, natomiast urządzenie trzeba sobie już samemu zbudować. A ponieważ wszystko można kupić w sklepie, to ktoś, kto kiedyś układał choć raz klocki lego i trzymał lutownicę w ręku powinnien dać sobie radę.
Za jakiś czas pokażę jak taki sprzęt amatorsko można złożyć krok po kroku.
Komponenty:
- Oprogramowanie pracuje na chip'ie ESP8266 lub ESP8285
W zależności od tego na jakich pomiarach nam zależy do wyboru mamy następujące czujniki:
Bosch BME680 | temperatura, wilgotność, ciśnienie atmosferyczne, VOC |
Bosch BME280 | temperatura, wilgotność, ciśnienie atmosferyczne |
Bosch BMP180 | temperatura, ciśnienie atmosferyczne |
Bosch BMO085 | temperatura, ciśnienie atmosferyczne |
BH1750 | natężenie swiatła |
Honeywell HPMA115S0 | pyły zawieszone PM2.5 oraz PM10 |
Podłączenie do ESP8266:
- Czujniki Bosch oraz BH1780 podłączamy pod jedną szynę I2C
- Honeywell pod dwa GPIO skonfigurowane jako port szeregowy UART
Czyli w przypadku takiego ESP jak na zdjęciu poniżej, czujniki podłaczamy w następujący sposób:
- I2C to GPIO5 oraz GPIO4
- a UART możemy zrobć na GPIO 12 oraz GPIO14
Tak są ustawione wartości domyślne w oprogramowaniu
Pozostałe funkcjonalności tego oprogramowania:
- obsługa jednego przekaźnika
- obsługa do 2 przycisków / włączników - z czego jeden może być przyciskiem systemowym
- przyciski mogą być jedno- lub dwu-stanowe (za wyjątkiem przycisku systemowego)
- obsługa 2 diod LED
- częstotliwość pomiarów można zdefiniować
- w przypadku czujnika pyłów zawieszonych możemy go usypiać między odczytami, aby zwiększyć żywotność lasera
- integracja z Domoticz
- integracja za pomocą protokołów wymiany wiadmości MQTT oraz HTTP
- możliwość ustawienia wartości domyślnej przekaźnika podczas uruchomienia urządzenia (power on)
- możliwość ustawienia wartości domyślnej przekaźnika podczas podłączenia się do Brokera MQTT
- przy wykorzystaniu MQTT Brokera, mamy informację, kiedy urządzenie straci połączenie z MQTT Brokerem i/lub siecią WiFi
- konfiguracja oraz aktualizacja oprogramowania odbywa się przez przeglądarkę internetową
Konfiguracja AFE Firmware
Poniżej pokażę specyficzne dla tej wersji AFE Firmware ekrany konfiguracyjne. Pozostałe informacje dot. konfiguracji znajdziesz tutaj.
Konfiguracja sprzętu
Konfiguracja polega na wybraniu ilości diod LED, przekaźników, przycisków oraz czujników, które mamy podłączone do ESP8266.
Konfiguracja UART
UART, układ umożliwiający transmisję danych. Do niego podłączamy czujnik pyłów zawieszonych Honeywell HPMA115S0
To co konfigurujemy to przypisujemy numery GPIO do portu RX oraz UX, które będą wykorzystywane do transmisji danych / podłączenia urządzenia.
Konfiguracja czujnika Honeywell HPMA115S0
Opcje konfiguracyjne to:
- Interwał odczytów: czyli co ile sekund mają zostać dokonane odczyty. Minimalny czas to 5 sekund maksymalny 86400 sekund co odpowiada 24-em godzinom
- Pomiar po czasie:
- jeśli parametr ma wartość inną niż zero to czujnik Honeywell jest usypiany między pomiarami (wiatraczek zasysający powietrze oraz laser są wyłączane)
- ustawiona wartość, definiuje na ile sekund przed odczytem czujnik ma zostać uruchomiony. Czyli jeśli ustawimy np. 10 to 10 sekund przed dokonaniem odczytu czujnik zostanie włączony, a po odczycie zostanie wyłączony na okres równy wartości parametru Interwał Odczytów minus parametr Pomiar po czasie.
- Parametr Pomiar po czasie musi być mniejszy od parametru Interwał odczytów
- Sugeruję, aby wartość tego parametru była nie mniejsza niż 5sek, aby wiatrak mógł zassać powietrze do czujnika i odczyt był bardziej precyzyjny.
Parametry IDX wykorzystywane są do konfiguracji wymiany danych z Domoticz. Opisane w części dotyczącej Integracji z Domoticz
Konfiguracja czujników z serii BMP085, BMP180, BME280, BME680
- Czujniki te pracują na szynie I2C.
- Każdy z tych czujników ma adres I2C, który należy wybrać z listy I2C Adres
- Interwał odczytów definiuje, jak często mają być dokonywane odczyty
Lista z adresami I2C zawiera potencjalne nazwy czujników. Nie jest to gwarantowana nazwa / typ czujnika. Nazwy wyświetlane to standardowe typy czujników dostępnych na rynku, które pracują na takich adresach.
Jeśli na liście nie wyświetla się żaden czujnik, to jest coś nie tak z podłączeniem czujnika do szyny I2C w ESP8266
Czujniki z seri BMx dokonują odczytu bardzo szybko, ale zalecam ustawienie czasu odczytów na nie mniejszy niż 5 sekund. Odczytane dane muszą zostać "przesłane" do systemu automatyki, a to może już chwilkę potrwać w zależności od:
- użytego systemu do automatyki,
- ilości danych,
- odległości urządzenia od routera WiFi.
Parametry IDX wykorzystywane są do konfiguracji wymiany danych z Domoticz. Opisane w części dotyczącej Integracji z Domoticz
Konfiguracja czujnika natężenia światła BH1750
- Podobnie jak w czujnikach BMx, czujnik natężenia światła BH1750 pracuje na szynie I2C
- Konieczne jest wybranie Adresu I2C czujnika oraz
- ustwienie, jak często mają zostać robione pomiary. Parametr: Interwał odczytów
- Parametru Czułość nie można zmienić. W tym momencie czułość czujnika jest ustawiona na maksimum
Parametry IDX wykorzystywane są do konfiguracji wymiany danych z Domoticz. Opisane w części dotyczącej Integracji z Domoticz
Integracja z Domoticz
Integracja z Domoticz polega na:
- utworzeniu wirtualnego sprzętu. Robi to się w Domoticz -> Menu -> Konfiguracja -> Sprzęt
- a następnie dodania do niego następujących czujników (oczywiście dodajemy tylko te, które mamy podłączone do naszego ESP8266)
- Przełącznik
- Temperatura
- Wilgotność
- Barometr
- Custom sensor dla
- PM2.5
- PM10
- VOC
Można też utworzyć jeden wirtualny czujnik dla: temperatury, wilgotności oraz ciśnienia atmosferycznego; nazywa się on:
- Temp + Wilg + Baro
Każdemu z tych czujników Domoticz nadaje identyfikator IDX, który można odszukać w menu: Konfiguracja -> Urządzenia
- Na poniższym ekranie to wartości w zielonej ramce
Odpowiedni IDX należy wprowadzić w konfiguracji AFE Firmware pod odpowiednim elementem/czujnikem urządzenia. Np. tak to wygląda dla czujnika BME680 - zielona ramka.
Jeśli wartość IDX pozostanie z wartością 0 w AFE Firmware to te dane nie będą wysyłane z urządzenia do Domoticz.
Integracja z openHAB
- Przeczytaj instrukcję jak skonfigurować openHAB i AFE Firmware, aby ze sobą "rozmawiały"
- Jeśli chcesz wszystko konfigurować za pomocą Paper UI to tutaj znajdują się opisy, jak skonfigurować openHAB Channels dla poszczególnych elementów
Jeśli jesteś zaawansowanym użytkownikem openHAB to tutaj jest definicja Thing dla urządzenia z AFE Firmware T6
- /t6/ - to MQTT Temat zdefiniowany w konfiguracji MQTT Brokera w AFE Firmware
- switch - to nazwa przekaźnika zdefiniowana w konfiguracji przekaźnika w AFE Firmware
Thing mqtt:topic:T6 "MQTT Device: Development T6" { Channels: Type switch : Relay "Relay: switch" [ stateTopic="/t6/switch/state", commandTopic="/t0/switch/cmd", on="on", off="off" ] Type switch : RelayToggle "Relay: toggle" [ stateTopic="/t6/switch/state", commandTopic="/t0/switch/cmd", on="toggle", off="toggle" ] Type switch : RelayGet "Relay: get " [ commandTopic="/t6/switch/cmd", on="get", off="get" ] Type switch : RelayGetDefault "Relay: get system default " [ stateTopic="/t6/switch/get/state" ] /* BME680, BME280, BMP180,085 */ Type number : Temperature "Temperature" [ stateTopic="/t6/BMx80/all", transformationPattern="JSONPATH:$.temperature" ] /* BME680, BME280 */ Type number : Humidity "Humidity" [ stateTopic="/t6/BMx80/all", transformationPattern="JSONPATH:$.humidity" ] /* BME680, BME280, BMP180,085 */ Type number : Pressure "Pressure" [ stateTopic="/t6/BMx80/all", transformationPattern="JSONPATH:$.pressure" ] /* BME680 */ Type number : GasResistance "Gas Resistance" [ stateTopic="/t6/BMx80/all", transformationPattern="JSONPATH:$.gasResistance" ] /* HPMA115S0 */ Type number : PM25 "PM2.5" [ stateTopic="/t6/HPMA115S0/all", transformationPattern="JSONPATH:$.PM25" ] Type number : PM10 "PM10" [ stateTopic="/t6/HPMA115S0/all", transformationPattern="JSONPATH:$.PM10" ] /* BH1750 */ Type number : Lux "Lux" [ stateTopic="/t6/BH1750/lux" ] Type switch : Connected "Connected" [ stateTopic="/t6/state", on="connected", off="disconnected" ] Type switch : Configuration "Configuration Mode" [ commandTopic="/t6/cmd", on="configurationMode", off="configurationMode" ] Type switch : Reboot "Reboot" [ commandTopic="/t6/cmd", on="reboot", off="reboot" ] Type switch : APIDomoticz "API Domoticz" [ stateTopic="/t6/configuration/api/domoticz/state", commandTopic="/t6/configuration/api/domoticz/cmd", on="on", off="off" ] Type switch : APIHTTP "API HTTP" [ stateTopic="/t6/configuration/api/http/state", commandTopic="/t6/configuration/api/http/cmd", on="on", off="off" ] }
Przykłady items
Number t6_PM25 "PM2.5 [%.2f µg/m3]" {channel="mqtt:topic:T6:PM25"} Number t6_PM10 "PM10 [%.2f µg/m3]" {channel="mqtt:topic:T6:PM10"} Number t6_bme680_temperature "Temperatura[%.2f C]" {channel="mqtt:topic:T6:Temperature"} Number t6_bme680_humidity "Wilgotność [%.2f %%]" {channel="mqtt:topic:T6:Humidity"} Number t6_bme680_pressure "Ciśnienie [%.2f hPa]" {channel="mqtt:topic:T6:Pressure"} Number t6_bme680_gasResistance "VOC [%.2f kOm]" {channel="mqtt:topic:T6:GasResistance"} Number t6_bh1750_lux "Światło lux [%.3f lx]" {channel="mqtt:topic:T6:Lux"} Switch t6_switch "Przełącznik" {channel="mqtt:topic:T6:Relay"} Switch t6_configuration_mode "Konfiguracja" {channel="mqtt:topic:T6:Configuration"} Switch t6_reboot "Reboot" {channel="mqtt:topic:T6:Reboot"} Switch t6_state_connected "Urządzenie podłączone?" {channel="mqtt:topic:T6:Connected"} Switch t6_state_domoticz "Domoticz API" {channel="mqtt:topic:T6:APIDomoticz"} Switch t6_state_http "HTTP API" {channel="mqtt:topic:T6:APIHTTP"}
Wiadomości MQTT
Przykład odczytu pyłów zawieszonych:
- /mqttTopic/ - zdefiniowane w AFE Firmware w konfiguracji MQTT Brokera
Temat | Wiadomość | Działanie | |
---|---|---|---|
/mqttTopic/HPMA115S0/cmd | Wejściowa | get | Żądanie odczytania danych z czujnika HPMA115S0 |
/mqttTopic/HPMA115S0/all | Wyjściowa | String JSON | {PM25: Intiger, PM10: Intiger} |
Wszystkie wiadomości MQTT w AFE Firmware znajdują się tutaj
Integracja z wykorzystaniem HTTP
Przykład: odczyt pyłów zawieszonych
- http://adres-ip-urządzenia/?device=HPMA115S0&name=PM2.5&command=get
- http://adres-ip-urządzenia/?device=HPMA115S0&name=PM10&command=get
Wszystkie komendy HTTP w AFE Firmware znajdują się tutaj