Powiadomienia
Wyczyść wszystko

AFE Firmware T6 Stacja pogody na ESP8266 z AFE Firmware

47 Wpisów
9 Użytkownicy
1 Likes
7,980 Wyświetleń
adrian
Wpisów: 3973
Admin Zasłużony dla Forum, Patron Strony
Autor tematu
(@adrian)
Szefu
Dołączył: 10 lat temu
wpf-cross-image

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

 

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


46 Odpowiedzi
Daro1003
Wpisów: 758
Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
(@daro1003)
Mistrz
Dołączył: 5 lat temu

Jest możliwość złożenia stacji i jej prawidłowo działania tylko na dwóch czujnikach Bosch BME680 i BH1750 na obecną chwile bez czujnika Honeywell HPMA115S0 - zostanie dołożony w późniejszym etapie.

Czy jest możliwość rozbudowy tej stacji o wyświetlacz ? Jeśli tak czy masz w planach taką rozbudowę ?

A co planujesz dalej ? Może jaka mała zapowiedz kolejnych urządzeń ?

Odpowiedz
4 Odpowiedzi
adrian
Admin Zasłużony dla Forum, Patron Strony
(@adrian)
Dołączył: 10 lat temu

Szefu
Wpisów: 3973
  • tak można złożyć na dowolnych z tych czujników np, tylko BME680 i BH1750
  • na razie nie planuję wyświetlacza, może kiedyś. Jej zadanie to wysyłanie danych do Domoticz, openHAB - z tego można dowolnie wyświetlać
  • tutaj jest wątek w kontekście dalszego rozwoju i propozycji co dodawać
  • w najbliższym czasię będę dodawł
    • wejście NO/NC, które pozwoli na dodawani takich dwu stanowych czujników
    • możliwość zasilania bateryjnego + z usypianiem całego urządzenia
Odpowiedz
Daro1003
Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
(@daro1003)
Dołączył: 5 lat temu

Mistrz
Wpisów: 758

A wiatr prędkość siła ? Też byłaby fajna sprawa teraz wstając rano do roboty człowiek spogląda na wiatrak przed domem i myśli czy potrzeba wrzucić kalesony czy nie 🙂

Odpowiedz
adrian
Admin Zasłużony dla Forum, Patron Strony
(@adrian)
Dołączył: 10 lat temu

Szefu
Wpisów: 3973

To mi się podoba. Trzeba jakiś sprzęt wybrać.

Odpowiedz
Daro1003
Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
(@daro1003)
Dołączył: 5 lat temu

Mistrz
Wpisów: 758

Moim zdaniem wiatr powinien w takiej stacji być zerkniesz na temperaturę i na wiatr i odrazu wiesz jak się ubierać.

Czujnik deszczu o którym pisał Isom też spoko jest brama garażowa z napędem i system dzięki czujnikowi wyzwoli przekaźnik który wpięty jest pod zacisk napędu CLOSE i zamknie bramę.

Dodatkowo można wyzwolić jakiś sygnał alarmowy w domu o deszczu żona ciśnie po pranie a ja zasunąć szyby w samochodzie.

Odpowiedz
isom
Wpisów: 5079
 isom
Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
(@isom)
Szef wszystkich szefów
Dołączył: 6 lat temu

Z tym wiatrem i pomiarem napięcia baterii jednocześnie może być kłopot , czujniki wiatru (kierunek prędkość ) przekazują sygnał analogowy czyli kierunek wyznaczany jest przez zmianę rezystancji więc trzeba wykorzystać ADC , które zajmuje już pomiar baterii.

Odpowiedz
Daro1003
Wpisów: 758
Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
(@daro1003)
Mistrz
Dołączył: 5 lat temu

Mim zdaniem pomysł takiej stacji na baterie .... chyba że do tymczasowego podtrzymania z którego i tak chyba niewiele. Na baterie to pilot, latarka, drobne elektronarzędzia czyli urządzenia nie używane ciągle tylko czasowo natomiast taka stacja to tylko zasilana z sieci.

Odpowiedz
1 Reply
adrian
Admin Zasłużony dla Forum, Patron Strony
(@adrian)
Dołączył: 10 lat temu

Szefu
Wpisów: 3973
  • nie każdy na zewnątrz ma zasilanie
  • bateria, solar, usypanie urządzenia między odczytami i będzie się zasilało
Odpowiedz
lukas121
Wpisów: 544
Zasłużony dla Forum Donator 2K19
(@lukas121)
Ekspert
Dołączył: 6 lat temu

@Daro1003 i tu się mylisz, zasilanie bateryjne to podstawa takiej stacji. Jak chcesz jeszcze mierzyć prędkość wiatru. Sens takiej rozbudowanej stacji to umieszczenie je dalej od domu i tu problem z zasilaniem. Nie każdy chce dziurawić okna lub ściany do przeciągnięcia kabla. @adrian prosisz i masz:

https://pl.aliexpress.com/item/Free-Shipping-Spare-part-for-weather-station-to-test-the-wind-speed/32791312886.html?

Ja zamówiłem sobie taki czujnik, sterowany zliczaniem impulsów a tu przykład szkicu od 10min.

https://www.youtube.com/watch?v=slzOhgBeQjc

 

Odpowiedz
Strona 1 / 7
Udostępnij: