🇿 Zibi ZigBee THP Sensor 🌡️💦🕛🔋

Moderator: vajera

User avatar
Zibi_007
Posts: 3985
Joined: Tue Oct 31, 2023 10:06 pm
Has thanked: 10 times
Been thanked: 31 times

Post

Zibi Zigbee THP Sensor

Chciałem się pochwalić projektem, który ostatnio skończyłem.
Zrobiłem własny czujnik temperatury, wilgotności i ciśnienia działający na Zigbee, takie nowe dziecko dla bramki Z2S.

Hardware:
  • ESP32-C6 (Zigbee)
  • BME280 (T/H/P)
  • zasilanie bateryjne/akumulatorowe oraz przez USB
Software / Zigbee:
  • Zigbee Sleepy End Device
  • działa od razu z Suplą oraz Home Assistant (ZHA, Zigbee2MQTT)
  • standardowe klastry:
  • temperatura (0x0402)
  • wilgotność (0x0405)
  • ciśnienie (0x0403)
  • bateria
Fajne rzeczy, które doszły po drodze:
  • konfigurowalny czas deep sleep (ustawiany przez USB/Serial)
  • zapis ustawień we Flash (pamięta po resecie)
  • factory reset z komendy
  • czytelny debug na Serialu (T/H/P + bateria)
  • możliwość wysyłania ciśnienia zredukowanego do poziomu morza (opcja)
W Supli i HA widziany jako jedno urządzenie z encjami:
  • temperatura
  • wilgotność
  • ciśnienie
  • bateria
Projekt stricte DIY, ale działa bardzo stabilnie i w miarę dokładnie – (korzysta z BME280).

Tytułem wstępu
Szukałem przez długi czas termometru, który umieszczę na zewnątrz, w pewnej odległości od domu i będzie mi pokazywać temperaturę, wilgotność i ciśnienie na zewnątrz oraz w innych wolnostojących obiektach (np. w szklarni).
Miało być zasilanie bateryjne (akumulatorowe), długi czas pracy i maksymalny zasięg.
Chciałem również, aby mierzyło również ujemne temperatury (takie, jak tej zimy).
Kupowałem markowe produkty i różne wynalazki. No i nic się nie sprawdzało. Jak było jedno, to brakowało drugiego. Przy okazji polecam fajną, dodatkową obudowę na zewnątrz do Xiaomi https://www.thingiverse.com/thing:4620242/files
No to sobie sam zmajstrowałem coś takiego. Przy okazji dodałem kilka opcji.

Platforma
ESP32-C6 - testowane na Xiao 4MB, na innych modułach (N4, N8, N16, SuperMini) podłączenie akumulatora może wiązać się z koniecznością podłączenia dodatkowego układu (stabilizatora LDO - np. MCP1700-3302E lub gotowej płytki "18650 Battery Shield" integrującej koszyk na baterię, ładowarkę USB oraz stabilizator 5V/3V3), w celu uzyskania funkcjonalności Xiao.
Generalnie działa na każdym C6 (najlepiej na Xiao).
Na Xiao jest domyślnie włączona antena zewnętrzna.
Domyślnie ZZ THP pracuje z Suplą i bramką Z2S (od wersji 1.4.18-10/02/26).

Obsługa ekranu
W tej chwili brak (dla tego urządzenia nie widzę większego sensu), znacznie podnosi zużycie energii.
Jeśli będzie takie zapotrzebowanie, to mogę dodać ekran działający na sterowniku SH1106 lub SD1306

Obsługa wbudowanej diody LED
Wykorzystuje wbudowaną diodę LED (miga – łączy, świeci na stałe – przesyła dane, dioda czerwona miga – ładowanie akumulatora). Dioda RGB w C6, które je posiadają jest obecnie wyłączona.

Pomiar temperatury, wilgotności i ciśnienia
Wykorzystuje układ BME280 - dość precyzyjny, zintegrowany czujnik środowiskowy firmy Bosch Sensortec, zaprojektowany do pomiaru trzech parametrów: temperatury, wilgotności powietrza oraz ciśnienia atmosferycznego.

Zakresy i dokładność Pomiarów
Temperatura:
  • Zakres pracy: -40°C do +85°C
  • Dokładność: ±0,5°C do ±1,0°C (typowa)
Wilgotność (RH):
  • Zakres: 0% do 100% wilgotności względnej
  • Dokładność: ±3% RH (typowa)
  • Czas reakcji (τ63%): 1 s
Ciśnienie (Barometr):
  • Zakres: 300 hPa do 1100 hPa
  • Dokładność absolutna: ±1,0 hPa
  • Dokładność względna: ±0,12 hPa (odpowiednik ±1 m różnicy wysokości)
Uwaga! BME280 pokazuje poprawne ciśnienie, ale jest ono „zaniżone” względem prognoz pogodowych, jeśli nie skompensujemy wysokości. To jest normalne, za to bardzo częste źródło nieporozumień. BME280 zwraca tzw. ciśnienie absolutne (QFE), czyli rzeczywiste ciśnienie w miejscu czujnika zależne od wysokości nad poziomem morza. Siłą rzeczy nie jest to ciśnienie „pogodowe” jakie możemy odczytać z aplikacji pogodowej. Dla większości z Was wydaje się zaniżone. Generalnie im wyżej - tym niższe ciśnienie (w przybliżeniu do -8 do -12 hPa na każde 100 m). Można to „naprawić” stosując tzw. kompensację wysokości. Jeśli zależy nam, aby pokazywało to samo co np. aplikacja pogoda na telefonie, to musimy policzyć QNH (ciśnienie zredukowane do poziomu morza). Aby wyznaczyć wartość ciśnienia zredukowanego do poziomu morza wystarczy rozwiązać prostą całkę równania barometrycznego:
całka.jpg
albo skorzystać z uproszczonego wzoru:
wzór.jpg
W sofcie mam „zaszyty” jeszcze trochę inny wzór:

Code: Select all

float seaLevelPressure(float pressure, float altitude) {
  return pressure / pow(1.0 - (altitude / 44330.0), 5.255);
}
ale jest w tej chwili zakomentowany, w związku z czym zawsze zobaczymy ciśnienie absolutne.

Ustawienia Zigbee
Po wgraniu softu (i ewentualnym resecie, jeśli nie wykonał się samoczynnie) urządzenie jest w trybie parowania i czeka na połączenie z bramką.
Jeśli w bramce włączymy parowanie, to po chwili w cloud i w aplikacji powinniśmy zobaczyć 2 kanały: T/H i Pomiar ciśnienia. Przy kanałach powinna być też widoczna ikona baterii. Domyślna nazwa urządzenia w bramce to: ZIBI::ESP32C6_THP_Sensor.
Zrzut ekranu 2026-02-11 234749.png
Urządzenie będzie od tej pory co 30 sekund wysyłać pomiary do Supli. Dopiero w tym momencie możemy przystąpić do zasadniczej konfiguracji. Opcji nie ma wiele (są dwie): ustawienie odstępu między pomiarami (a właściwie czasu głębokiego uśpienia układu) oraz reset do ustawień fabrycznych. W celu skorzystania z tych opcji wystarczy podłączyć moduł pod komputer (tak, jak wgrywamy soft) i włączyć dowolny serial monitor. Co ok. 30 sekund będziemy mieli okienko z możliwością wpisania odpowiedniego ciągu znaków.
Jeśli wpiszemy liczbę (od 10 do 86400) będzie ona traktowana jako czas (w sekundach), na jaki układ przejdzie w tzw. deep sleep. Wartości w granicach 10-15 sekund można traktować, jako tzw. pomiar ciągły.
Jeśli wpiszemy wyraz factory, to zresetujemy układ do ustawień fabrycznych (po resecie automatycznie przejdzie w tryb parowania).

Inne:
Do testowania załączam binarkę (plik „merged”). Soft wgrywamy standardowo czymkolwiek, co potrafi wgrać do ESP32-C6. Jeśli jest konieczność podania adresu, to wgrywamy od adresu 0x0.
Uwaga! Jeżeli byśmy chcieli wgrać ponownie soft na ESP, to może się to nie udać, gdy układ będzie w deep sleep. Jak to ominąć? Wystarczy podczas podłączania modułu do komputera przytrzymać BOOT. Można go puścić po podłączeniu zasilania i spokojnie flashować.
Czy można wymusić pomiar? Normalnie nie, ponieważ układ jest w deep sleep. Ale można go wybudzić i wtedy wykona pomiar. Najprościej zresetować moduł. Wykona pomiar i przejdzie znowu w deep sleep (ustawiony czas liczy się od nowa).
Ile wytrzyma bateria/akumulator? Trudno powiedzieć. Wszystko zależy od pojemności modułu i ustawionego czasu deep sleep. Układ w uśpieniu pobiera ok. 15μA, podczas przesyłania potrafi dojść do 90-100mA, zazwyczaj ok. 70mA (na tyle, na ile potrafiłem zmierzyć). Co do BME, to patrząc na dane techniczne, wychodzi, że zużywa 0,1 μA w trybie czuwania i parę mA podczas wykonywania pomiaru. Trzeba go wcześniej skonfigurować i ustawić mu tryb „Forced”. Biblioteka pod Arduino robi to automatycznie (sprawdziłem). Dioda (w Xiao) miga i świeci tylko kiedy potrzeba (parowanie i przesyłanie danych), normalnie jest wyłączona. Moje testy na układzie prototypowym pokazują, że przy wykorzystaniu akumulatora o pojemności ok. 3000mAh i pomiarze co 30 minut powinien wytrzymać przynajmniej rok. Będę testował i co pewien czas dzielił się informacjami co do pozostałej pojemności baterii.
Czy można podłączyć urządzenie z innymi bramkami? Tak, ale nie z komercyjnymi (Tuya, eWelink). Pod ZHA i Z2M będzie działać. Wystarczy przypisać, bo wykorzystuje standardowe klastry.
Co daje antena? Dla mnie sporo. Zasięg był dla mnie najbardziej istotny. Testy pokazały, że jeśli bramkę (z anteną zewnętrzną) mam przy oknie, a pokazane tutaj urządzenie posiada bezpośrednią widoczność (ew. jakieś małe krzaczki, czy inne rośliny), to osiągnięcie 60 metrów zasięgu nie jest problemem.
Czy można zrobić podobne urządzenie na WiFi bezpośrednio pod Suplę? Oczywiście! Sam nawet takie zrobiłem (z wykorzystaniem dokładnie tych samych elementów). I nawet działała. Soft można wygenerować bez problemów w nowym GG (link w moim podpisie). Nie trzeba posiadać umiejętności programowania. Są trzy minusy (dla mnie). Supla potrzebuje trochę więcej czasu na nawiązanie połączenia (nie zawsze łączy się za pierwszym razem), szybciej zużywa akumulator i jest… tylko pod Suplę.
Czy nie lepiej kupić gotowe urządzenie Zigbee? Oczywiście, że tak! Jeśli tylko znajdzie się takie, które spełni warunki wymienione na wstępie, to sam chętnie zakupię kilka sztuk. Do tej pory nic takiego nie znalazłem (co nie znaczy, że nie ma).

W planach:
Dodanie korekty pomiaru ciśnienia (pomysłów jest kilka). Najprostszy, to poproszenie kolegi @vajera, aby pomiar ciśnienia z tego czujnika przeniósł na GPM. Wtedy można z nim zrobić co się w zasadzie chce. Do tego jest historia.
Możliwość ustawienia parametru „deep slip time” w cloud, albo przynajmniej w GUI bramki (C&A).
Kolejne urządzenia końcowe współpracujące z bramką Z2S i Suplą.
OTA - jeśli będzie potrzeba, to dorobię. W tej chwili takiej nie widzę.

Informacje dodatkowe (wykonanie):
Jak to poskładać, skąd wziąć części?
Poniżej zdjęcia poglądowe z przykładu wykonania mojego prototypu.
ZZ_THP.jpg
W związku z pierwotnymi założeniami wykorzystałem Xiao C6. Nie jest to najtańszy układ, co prawda pokazują mi się już oferty promocyjne po kilkanaście złotych, ale należy przyjąć, że raczej wydamy na niego w granicach 25-30 zł (z Chin, na polskim portalu widzę w tej chwili za 33zł)). Sam czujnik BME280 to koszt ok. 10 złotych (z Chin), dochodzi jeszcze antenka (też kilka złotych), no i akumulator. Akurat tutaj zastosowałem aku 18650 o pojemności ok. 3000mAh (z demontażu baterii od laptopa). Temat zasilania Xiao był już omawiany na Forum, także w innych moich zabawach (np. tutaj: viewtopic.php?t=17555).
I tutaj ważna uwaga. Aby prawidłowo dokonywać pomiaru napięcia akumulatora należy zastosować dwa rezystory (dzielniki) podłączone pod pin analogowy (A0). Dokładnie, jak tutaj https://wiki.seeedstudio.com/XIAO_ESP32 ... ry-voltage
Image
BME280 podłączamy standardowo do domyślnego I2C (w Xiao jest to GPIO22 /SDA/ i 23 /SCL/). Zasilanie (VIN/VCC) do 3,3V (powinno wystarczyć, chyba, że mamy moduł tylko 5V, który nie chce działać na niższym napięciu) i GND do masy C6.
W każdym razie gotowe urządzenie będzie nas kosztować wyraźnie więcej niż przyzwyczaili nas do tego Chińczycy oferując gotowe rozwiązania (urządzenia Zigbee).
Obudowa to sprawa indywidualna. Ciężko mi było znaleźć gotowy projekt 3d (ale też jakoś specjalnie długo nie szukałem). W prototypie wykorzystałem case na dwa aku 18650, który delikatnie przerobiłem. Może ktoś tutaj podrzuci gotowy projekt, albo jak znajdę trochę czasu, to zaprojektuję coś swojego. W każdym razie jest tutaj pole do popisu.

Uwaga! Projekt powstał jako ciekawostka, w ramach walki z bezsennością (jet lag). Nikogo nie namawiam na budowę i wgrywanie oprogramowania. Nie biorę też odpowiedzialności za sposób działania. Ewentualnej pomocy i wsparcia udzielam tylko w ramach tego tematu (i posiadanego wolnego czasu). Osobiście uważam, że lepiej zakupić gotowe urządzenie, jeśli potrzebujemy je tylko do pomiaru temperatury w pomieszczeniu lub na zewnątrz w niewielkiej odległości od domu. Tutaj wybór jest spory a ceny niewygórowane. Ja potrzebowałem do konkretnych zastosowań i jestem zadowolony z osiągniętego rezultatu.


Aktualna wersja: 0.3b – 11/02/2026
Soft oparty na:
https://docs.espressif.com/projects/ard ... ensor.html
https://docs.espressif.com/projects/ard ... ensor.html
W projekcie wykorzystano kod na licencji Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0). Więcej info w pliku Notice.txt dołączonym do archiwum ze wsadem.
You do not have the required permissions to view the files attached to this post.
Image Wiesz, że Supla obsługuje Zigbee? Wstąp do Klubu Promila: https://forum.supla.org/viewtopic.php?t=18018
Image Szukasz nowego GG? Jest tutaj: https://forum.supla.org/viewtopic.php?t=18036
User avatar
bulek68
Posts: 530
Joined: Thu Feb 08, 2018 6:51 pm
Location: Podkarpackie

Post

Jak sam wspomniałeś przy dzisiejszej dostępności i cenach gotowych rozwiązań budowa tego typu diy mija się z celem ale...
Mnie brakuje czasu na wszystko tym bardziej podziwiam takich ludzi jak Ty za chęci i widzę w tematyce.
Aaa! i jestem pod ogromnym wrażeniem opisu od A do Z a nawet szerzej - strasznie tego było dużo ale przeczytałem z zainteresowaniem.
Powtórzę się świadomie... Brawo TY! 😉


Offtop...
Ps. Nie wiem czy to gdzieś było ale przeszło mi coś przez myśl. Czy w wersji bramki na xiao c6 + awaryjne zasialniem nie można by dodać kanału do pomiaru napicia na aku? Mało przydatne ale fajne jako gadżet...
[email protected]
Posts: 1584
Joined: Mon Feb 06, 2023 8:56 am
Has thanked: 18 times
Been thanked: 26 times

Post

Szacun że Ci się chciało 😁 też myślałem ale potem doszedłem do wniosku że na baterii to długo nie pożyje a jak ma być zasilane po kablu to w sumie będzie po Wi-Fi -akurat mam na myśli moją stację pogodową
User avatar
Robert Błaszczak
Posts: 5222
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Has thanked: 37 times
Been thanked: 27 times

Post

Wow... Super. Szacunek...
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

Wow! Sam nie wiem, czy jestem pod większym wrażeniem samego projektu, czy opisu, który przygotowałeś - niejeden komercyjny produkt mógłby pozazdrościć Twojemu takiej dokumentacji.

Prawda jest taka, że protokół sieciowy Zigbee powstał w dużej mierze, jako odpowiedź na potrzebę rozwiązania low power dla urządzeń bateryjnych. WiFi zjada zbyt dużo prądu a do tego dochodzi czas wymiany danych z serwerem. Tutaj urządzenie budzi się na czas pomiaru, strzela pakietem danych i idzie spać - a dane lecą lokalnie do bramki, która bierze na siebie całą resztę komunikacji.

Oczywiście patrząc tylko pod kątem ceny, to gotowych produktów z Chin nie da się przebić, ale biorąc pod uwagę, że to forum łączy pasjonatów DIY, to Twój projekt może zachęcić innych do wypróbowania wlasnych sił w tym temacie.

Dla mnie osobiście to wyjątkowo ważny moment - pierwszy raz dodawałem do bramki urządzenia Zigbee stworzone przez jednego z nas - mam nadzieję, że nie jest ostatni raz.

Podsumowując - są tutaj prawdziwi pasjonaci, gotowi robić rzeczy nieopłacalne tylko dlatego by móc pokazać, że jest to możliwe i że w życiu liczy się coś więcej niż praca i pieniądze. Zbyszek - jesteś wielki, dziękuję!
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
Robert Błaszczak
Posts: 5222
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Has thanked: 37 times
Been thanked: 27 times

Post

vajera wrote: Thu Feb 12, 2026 6:44 am [...]
Oczywiście patrząc tylko pod kątem ceny, to gotowych produktów z Chin nie da się przebić, ale biorąc pod uwagę, że to forum łączy pasjonatów DIY, to Twój projekt może zachęcić innych do wypróbowania wlasnych sił w tym temacie.
[...]
Co prawda zbyt intensywnie nie szukałem, ale nie znalazłem gotowca THP.
A dodając do projektu Zbyszka mały panel solarny mamy pomiar THP działający praktycznie wiecznie.
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
User avatar
Robert Błaszczak
Posts: 5222
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Has thanked: 37 times
Been thanked: 27 times

Post

bulek68 wrote: Thu Feb 12, 2026 2:31 am [...]
Offtop...
Ps. Nie wiem czy to gdzieś było ale przeszło mi coś przez myśl. Czy w wersji bramki na xiao c6 + awaryjne zasialniem nie można by dodać kanału do pomiaru napicia na aku? Mało przydatne ale fajne jako gadżet...
Przecież taki kanał jest w urządzeniu zaprojektowanym przez Zbyszka. Po to właśnie należy dolutować dzielnik napięcia złożony z dwóch rezystorów 220k. Pomiar realizowany jest na pinie A0.
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

Robert Błaszczak wrote: Thu Feb 12, 2026 7:30 am
vajera wrote: Thu Feb 12, 2026 6:44 am [...]
Oczywiście patrząc tylko pod kątem ceny, to gotowych produktów z Chin nie da się przebić, ale biorąc pod uwagę, że to forum łączy pasjonatów DIY, to Twój projekt może zachęcić innych do wypróbowania wlasnych sił w tym temacie.
[...]
Co prawda zbyt intensywnie nie szukałem, ale nie znalazłem gotowca THP.
Jest jeden produkt firmy Aqara, ale raczej do zastosowania wewnątrz pomieszczenia.
A dodając do projektu Zbyszka mały panel solarny mamy pomiar THP działający praktycznie wiecznie.
Dokładnie!
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
lukasz06
Posts: 2543
Joined: Sun Jul 17, 2022 6:53 pm
Has thanked: 45 times
Been thanked: 21 times

Post

Brawo Zbyszku, to się nazywa pasja :)
Czym nas jeszcze zaskoczysz?
User avatar
bulek68
Posts: 530
Joined: Thu Feb 08, 2018 6:51 pm
Location: Podkarpackie

Post

Robert Błaszczak wrote: Thu Feb 12, 2026 7:54 am
bulek68 wrote: Thu Feb 12, 2026 2:31 am [...]
Offtop...
Ps. Nie wiem czy to gdzieś było ale przeszło mi coś przez myśl. Czy w wersji bramki na xiao c6 + awaryjne zasialniem nie można by dodać kanału do pomiaru napicia na aku? Mało przydatne ale fajne jako gadżet...
Przecież taki kanał jest w urządzeniu zaprojektowanym przez Zbyszka. Po to właśnie należy dolutować dzielnik napięcia złożony z dwóch rezystorów 220k. Pomiar realizowany jest na pinie A0.
Nie zrozumiałeś mnie... Mnie chodzi o samą bramkę Z2S a nie urzadznie pomiarowe Zbyszka.

Return to “Bramka ZigBee”