🇿 Zibi Zigbee CO Sensor 💨☠ [bramka ZigBee]

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 CO Sensor

Zastrzeżenie dotyczące bezpieczeństwa i odpowiedzialności

UWAGA: Projekt ma charakter wyłącznie edukacyjny i hobbystyczny.
1. Brak atestu: Opisane urządzenie oparte na czujniku serii MQ (np. MQ-7) nie posiada certyfikatów bezpieczeństwa (np. PN-EN 50291) i nie zostało przetestowane pod kątem niezawodności w sytuacjach zagrożenia życia.
2. Ryzyko błędu: Czujniki półprzewodnikowe (MQ) są podatne na błędy pomiarowe wynikające z temperatury, wilgotności, starzenia się sensora oraz obecności innych gazów. Mogą one wykazać fałszywie ujemny wynik (brak alarmu mimo obecności gazu) lub fałszywie dodatni.
3. Własna odpowiedzialność: Budujesz i użytkujesz to urządzenie wyłącznie na własną odpowiedzialność. Autor projektu nie ponosi żadnej odpowiedzialności za jakiekolwiek szkody materialne, uszczerbek na zdrowiu lub utratę życia wynikającą z wadliwego działania urządzenia, błędnej interpretacji wyników lub niezadziałania alarmu.
4. Zalecenie: W pomieszczeniach, w których istnieje ryzyko emisji tlenku węgla (kotłownie, łazienki z piecykami gazowymi, kominki), bezwzględnie należy stosować certyfikowane, profesjonalne detektory czadu (np. marek Kidde, FireAngel, Honeywell). Własne urządzenie może służyć jedynie jako dodatkowy system monitorujący, a nie jako jedyne zabezpieczenie.

Jeżeli przeczytałeś powyższe informacje i jesteś świadomy zawartych tam treści, to zapraszam do dalszej lektury.

Zibi Zigbee CO Sensor

Zigbee CO Sensor DIY z ESP32-C6 - pomiar analogowy tlenku węgla i alarm D0

Chciałem się podzielić projektem mojego Zigbee CO Sensora opartego na ESP32-C6 i czujniku MQ-7.

Tym razem zacznę trochę inaczej. Od konkretów. Marudzenie będzie później 😉

Funkcje urządzenia:
• W miarę (o czym później, w sekcji marudzę) precyzyjny pomiar CO w ppm dzięki MQ-7 i filtrowaniu sygnału.
• Alarm binarny D0 - niezależny endpoint Zigbee, raportuje natychmiastowo przy wykryciu niebezpiecznego stężenia (próg zadziałania ustawiany samodzielnie przez użytkownika).
• Wbudowana dioda RGB - informuje o stanie wygrzewania i poziomie CO (gradient LED po wygrzewaniu).
• Wygrzewanie MQ-7 wstępne 3 minuty - zapewnia dokładność pomiaru od pierwszego uruchomienia.
• Zigbee End Device - widoczne w sieci jako ZIBI - ESP32C6_CO_Sensor z dwoma endpointami:
1. CO Sensor (ppm)
2. D0 Alarm (ON/OFF)

Dlaczego warto?
• Można łatwo podłączyć do systemu Supla (bramka Z2S), Zigbee2MQTT, deCONZ / Phoscon lub dowolnego HUBa Zigbee.
• Raportowanie ppm co 30 s lub zmianę stanu o 1 ppm, możliwość natychmiastowego raportu przy alarmie.
• Idealne dla inteligentnych domów, gdzie użytkownik chce jakiś element systemu wykonać samodzielnie (DIY).
• Prosta konfiguracja, pełna kontrola nad alarmami i wizualizacją stanu na LED.

Hardware:
• ESP32-C6 (Zigbee)
• MQ-7 (CO)
• Buzzer (opcjonalnie)
• Zasilanie - stabilne zasilanie USB (najlepiej >=1mA - czujnik MQ-7 podczas wygrzewania i pomiarów pobiera sporo)
Software / Zigbee:
• Zigbee End Device
• działa od razu z Suplą oraz Home Assistant (ZHA, Zigbee2MQTT)
• standardowe klastry:
o pomiar CO w ppm (0x840C)
o alarm (IAS Zone) (0x0500)
Fajne rzeczy, które doszły po drodze:
• informacja o wygrzewaniu (dioda RGB świeci na pomarańczowo)
• gradientowa praca diody RGB w zależności od mierzonych wielkości stężenia CO (od koloru zielonego do czerwonego)
• opcjonalny buzzer (działa niezależenie od połączenia z siecią - aktywowany pow. 50 ppm CO oraz zawsze powyżej progu ustawionego na D0)
• czytelny debug na Serialu (wygrzewanie, kalibracja, pomiary, alarmy)
• autokalibracja na starcie (po wygrzewaniu)
• możliwość wywołania autokalibracji podczas normalnej pracy urządzenia
W Supli widziany jako jedno urządzenie z encjami:
• pomiar CO (na ogólnym kanale pomiarowym) w ppm
• alarm (czujnik binarny)

Projekt stricte DIY, działa bardzo stabilnie i (u mnie) w miarę dokładnie, ale odradzam stosowanie go jako główne zabezpieczenie w domu lub innych obiektach. Może pełnić rolę pomocniczą jako np. wskaźnik wzrostu stężenia tlenku węgla w powietrzu. Nie zastąpi profesjonalnych, certyfikowanych urządzeń, może je co najwyżej uzupełniać.

Marudzę…
W dziale bramki Zigbee pojawiło się ostatnio kilka postów z zapytaniem o sprawdzony czujnik tlenku węgla/dymu/gazów wybuchowych. Nie zabierałem specjalnie głosu, ponieważ na taki, który mógłbym z czystym sumieniem polecić i działałby po Zigbee nie trafiłem. Mam kilka różnych, włączają się i coś nawet pokazują, ale daleko im do doskonałości. Są za to przystępne cenowo (poniżej 50 zł z Chin), działają pod Tuya lub eWelink i tutaj chyba kończą się ich zalety. Nie posiadają żadnych certyfikatów, trudno w opisie znaleźć cokolwiek na temat zastosowanych podzespołów i sposobu działania.
No i narodził się pomysł wykonania takiego czujnika samodzielnie, za relatywnie niewielkie pieniądze, za to ze świadomością zasad jego działania i wszystkich ograniczeń, którym podlega.
Pamiętam, jak przez wiele lat Włodarze Supli i osoby odpowiedzialne za GG wzbraniali się przed dodawaniem czujników tlenku węgla (a generalnie to wszystkich czujników gazu) do bazy obsługiwanych urządzeń z możliwością automatycznego generowania softów z ich obsługą. I mieli sporo racji! Dlatego ja zacznę od odrobiny edukacji w tym temacie. Postaram się pisać prostym językiem, aby także osoby mniej obeznanie w tematach technicznych nie miały problemu ze zrozumieniem. Dlatego proszę z góry wybaczyć pewne skróty myślowe i uproszczenia.
Można w zasadzie zacząć i skończyć jednym zdaniem. Tanie czujniki CO są do niczego! I nic (albo prawie nic) się na to nie poradzi. Najpopularniejszym na rynku (i chyba najtańszym, bo kosztuje przysłowiowe kilka złotych) jest MQ-7. I w przedstawionym tutaj projekcie, właśnie taki, z pełną premedytacją został wykorzystany. Ale zacznijmy od początku. Jakie są problemy z pomiarem czujnikiem MQ-7?
Pomiar MQ-7 wiąże się z kilkoma istotnymi wyzwaniami technicznymi, które mogą znacząco wpłynąć na dokładność wyników.
Główne problemy, z jakimi możemy się spotkać to:
Skomplikowany cykl zasilania grzałki
W przeciwieństwie do prostych czujników gazu, MQ-7 wymaga zmiennego napięcia grzania, aby pomiar był wiarygodny:
• faza wysokiego napięcia (5V przez ok. 60s) - służy do oczyszczenia (wypalenia) powierzchni czujnika z zanieczyszczeń,
• faza niskiego napięcia (1,4V - 1,5V przez ok. 90s) - dopiero w tej fazie następuje właściwy pomiar CO.
Wiele dostępnych (np. na chińskich portalach aukcyjnych) modułów, tzw. "gotowych do użycia" zasila grzałkę stałym napięciem 5V, co prowadzi do bardzo niedokładnych odczytów i szybkiego zużycia sensora.
Czułość skrośna (brak selektywności)
MQ-7 nie reaguje wyłącznie na tlenek węgla. Jest on czuły także na inne gazy, co może powodować fałszywe alarmy:
• wodór (H2): Sensor jest na niego bardzo czuły,
• opary alkoholu, LPG (propan, butan), metan (CH4) - mogą znacząco zawyżać wynik pomiaru.
Doskonale to widać, jeśli pod czujnik podsuniemy zapalniczkę (bez płomienia, ale tak, aby ulatniał się gaz). Czujnik dosłownie wariuje.
Wpływ warunków środowiskowych
Dokładność czujnika silnie zależy od temperatury i wilgotności otoczenia:
• zmiana wilgotności może spowodować błąd pomiaru, dlatego w bardziej zaawansowanych projektach stosuje się kompensację programową na podstawie danych z dodatkowego czujnika (np. DHT11/22, BME280).
Długi czas stabilizacji i "wygrzewania"
Uwaga! Tutaj jest rzecz, o której często zapomina poinformować sprzedawca, a związana jest z wygrzewaniem:
• wstępne wygrzewanie - po pierwszym wyjęciu z pudełka czujnik powinien być zasilany przez minimum 48 godzin (tzw. burn-in), aby jego odczyty się ustabilizowały,
• stabilizacja po włączeniu -przy każdym uruchomieniu urządzenia sensor potrzebuje od kilku do kilkunastu minut, aby osiągnąć stabilną temperaturę pracy.
Dryft i konieczność kalibracji
Czułość sensora spada z czasem (nawet o 10-15% rocznie). Kalibracja "domowa" jest trudna, ponieważ wymaga dostępu do gazu wzorcowego o znanym stężeniu CO.
I podsumowując ważna uwaga, o której wspominałem już wcześniej. Ze względu na powyższe ograniczenia, czujnik MQ-7 (a mówiąc ogólniej, wszystkie z serii MQ /półprzewodnikowe/) nie powinny być stosowane jako jedyne zabezpieczenie w systemach bezpieczeństwa domowego. Do tego celu służą certyfikowane czujniki elektrochemiczne.

Co robić, jak żyć?
Osobiście proponuję zaopatrzyć się w pierwszej kolejności w profesjonalny czujnik tlenku węgla, na którym, w odróżnieniu od amatorskiego sensora MQ-7, będziemy mogli polegać.
Takie czujniki wykorzystują technologię elektrochemiczną i muszą posiadać certyfikat zgodności z normą PN-EN 50291, co potwierdza ich niezawodność i dokładność.
Czy mogę coś polecić? Pewnie, czemu nie. Wybór na rynku jest spory. Zakładam, że szukamy certyfikowanego czujnika autonomicznego. Te urządzenia są gotowymi, samodzielnymi alarmami, często polecanymi przez straż pożarną do użytku domowego. Wiele z nich oferuje długą, nawet 10-letnią żywotność sensora i wbudowanej baterii litowej. Poniżej kilka (przykładowych, bo nikt mi nie płaci za polecenie) modeli (kolejność przypadkowa):
• FireAngel FA3322-INT
  • Częsty lider testów ze względu na zintegrowaną 10-letnią baterię i dodatkowe sensory temperatury i wilgotności.
  • Posiada wyświetlacz LCD pokazujący aktualne stężenie CO w ppm oraz funkcję pre-alarmu.
• GARVAN MTG-3000H
  • Jest to model często wymieniany w rankingach jako solidny, certyfikowany czujnik gazu i czadu.
  • Charakteryzuje się wysoką czułością i niezawodnością działania, co jest kluczowe w profesjonalnych zastosowaniach.
  • Uwaga! Nie posiada wyświetlacza.
• Modele firmy Kidde
  • Urządzenia Kidde charakteryzują się kilkoma istotnymi cechami, które odróżniają je od amatorskich sensorów typu MQ-7
  • Sensor elektrochemiczny: Kidde stosuje opatentowany sensor elektrochemiczny Nighthawk, który jest bardzo dokładny, stabilny w zmiennych warunkach temperatury i wilgotności oraz odporny na fałszywe alarmy wywoływane przez inne domowe opary chemiczne.
  • Certyfikaty: Wszystkie czujniki Kidde, przeznaczone na rynek europejski, posiadają certyfikat zgodności z normą PN-EN 50291 (oraz brytyjskim BSI Kitemark).
  • Długa żywotność: Wiele modeli oferuje 10-letnią gwarancję i zasilanie z niewymiennej baterii litowej o takiej samej żywotności, co eliminuje konieczność jej okresowej wymiany i zapewnia ochronę nawet w przypadku przerw w dostawie prądu.
  • Dodatkowe funkcje: Modele z wyświetlaczem LCD pokazują aktualne stężenie CO w czasie rzeczywistym (w ppm) oraz posiadają pamięć poziomu szczytowego (peak level memory).
  • Osobiście używam ich od kilkunastu lat i ani razu się nie zawiodłem, za to wielokrotnie ostrzegły mnie przed niebezpieczeństwem.
• Modele firm Virone i Orno
  • Są to sprawdzone, certyfikowane urządzenia, które można znaleźć w ofercie sklepów specjalistycznych.
  • Oferują stabilne działanie i powtarzalność pomiarów, co jest dużą przewagą nad sensorami półprzewodnikowymi typu MQ-7.
• Zamel CTW-10 WiFi
  • Polski producent, spełnia wymagania norm.
  • Ma dobre opinie użytkowników.
  • Możliwość połączenia po WiFi .
  • Niewykluczone, że będzie pod Suplę - więcej info tutaj: viewtopic.php?t=18214&start=10
Jeśli zaś chodzi o profesjonalne moduły do integracji systemów, to tutaj mam stosunkowo skromne doświadczenie i pewnie na Forum znajdzie się wiele osób, które mają większe i będą mogły coś polecić. Mogę tylko ogólnie napisać, że jeśli potrzebujesz sensora do wpięcia w profesjonalny system automatyki budynkowej, szukaj dedykowanych modułów z sensorem elektrochemicznym. Do tej pory większą styczność w tym temacie miałem tylko z sensorami Winsen. Firma Winsen Sensor produkuje zaawansowane sensory elektrochemiczne, które są wykorzystywane w profesjonalnych detektorach. Ich moduły charakteryzują się dużą dokładnością i selektywnością (mniej fałszywych alarmów). Ale tak jak wspomniałem, coś konkretnego ciężko mi tutaj polecić.
Generalnie, przy wyborze profesjonalnego czujnika zawsze upewnij się, że spełnia odpowiednie normy i posiada niezależny certyfikat (np. BSI, TUV, CNBOP), który często jest ważniejszy niż deklaracje producenta.

No to, jeśli nie zamęczyłem Was jeszcze marudzeniem, jesteście świadomi zagrożeń, to może będziecie zainteresowani wykonaniem takiego urządzenia samodzielnie? Poniżej instrukcja.

Platforma
ESP32-C6 - testowane na modułach N4, N8, N16, SuperMini oraz Xiao 4MB.
Generalnie działa na każdym C6 (powinno też na H2).
Na Xiao jest domyślnie włączona antena zewnętrzna.
Domyślnie ZZ CO pracuje z Suplą i bramką Z2S (od wersji 1.4.50-25/02/26).
Obsługa ekranu
W tej chwili brak (ale jest w planach).
Jeśli będzie takie zapotrzebowanie, to mogę dodać ekran działający na sterowniku SH1106 lub SD1306.
Obsługa wbudowanej diody LED
W pełni wykorzystuje diodę RGB w C6 (wygrzewanie, pomiary, przekroczenie progu alarmowego). W modułach wyposażonych tylko w LED dioda nie jest wykorzystywana do sygnalizacji stanu pracy (pomiarów). Muszę przemyśleć jakby to miało wyglądać. Czekam na pomysły.
Pomiar tlenku węgla (CO)
Wykorzystuje czujnik MQ-7. Najlepiej wyposażyć się w taki zasilany na 5V oraz z pinami A0 i D0 (ten opcjonalnie). Jeśli będziemy mieli czujnik z D0, to zapewne na płytce znajdzie się też potencjometr do ustawienia progu zadziałania alarmu. Możemy go ustawić wg własnych preferencji.
Główne parametry techniczne
• Wykrywany gaz: Tlenek węgla (CO)
• Zakres wykrywania: 10 - 10 000 ppm (części na milion)
• Napięcie zasilania: 5 V DC
• Pobór prądu: < 150 mA
• Moc grzałki (Ph): ≤ 350 mW
• Temperatura pracy: -10°C do 50°C (niektóre źródła podają -20°C do 50°C)
• Typ wyjścia: Analogowe (napięciowe) oraz Cyfrowe (TTL - regulowany próg alarmowy)
• Czas rozgrzewania: Zalecane min. 48 godzin przed pierwszym użyciem
Charakterystyka pracy
• Zasada działania: Sensor działa w cyklach wysokiego i niskiego napięcia grzania (High: 5V, Low: 1.5V) w celu optymalnego wykrywania CO.
• Czułość: Wysoka czułość na tlenek węgla, reaguje również na inne gazy (wodór, LPG), ale jest zoptymalizowany pod CO.
• Rezystancja sensora (Rs): 2 kΩ - 20 kΩ (w 100 ppm CO)
Uwaga! Szczegółowe dane techniczne można znaleźć tutaj: https://cdn.sparkfun.com/assets/b/b/b/3/4/MQ-7.pdf. Widać tam różne wykresy, z których jeden nazwijmy w uproszczeniu krzywą pomiarowa. Cóż to takiego? Krzywa pomiarowa dla sensora MQ-7 to wykres logarytmiczny przedstawiający zależność między zmianą rezystancji czujnika a stężeniem gazu w powietrzu. Jest ona niezbędna, aby przeliczyć surowe dane z mikrokontrolera (napięcie) na konkretną wartość ppm (części na milion).
Oto najważniejsze cechy tej krzywej:
1. Relacja Rs/R0
Na osi pionowej (Y) wykresu znajduje się stosunek Rs (rezystancja czujnika w obecnym gazie) do R0 (rezystancja czujnika w czystym powietrzu).
• Wraz ze wzrostem stężenia tlenku węgla (CO), rezystancja czujnika Rs spada.
• Krzywa ma nachylenie ujemne - im więcej gazu, tym niższa wartość stosunku Rs/R0
2. Skala logarytmiczna
Charakterystyka czujnika nie jest liniowa. Według dokumentacji technicznej MQ-7, zależność tę opisuje wzór potęgowy:
ppm=a(Rs/R0)^b
gdzie:
• a i b to stałe wyznaczone z wykresu (współczynnik nachylenia i przesunięcia).
• dla tlenku węgla w MQ-7, współczynnik nachylenia (b) wynosi zazwyczaj około 1,5 (przynajmniej takie informacje znalazłem w sieci, ale potwierdziły też je i moje doświadczenia.
3. Czułość na inne gazy
Na tym samym wykresie w dokumentacji można zobaczyć kilka linii. Obok głównej linii dla CO, znajdują się krzywe dla:
• H2 (Wodoru) - często przebiega bardzo blisko linii CO, co potwierdza wysoką czułość skrośną (o której pisałem wcześniej.
• LPG, CH4, Alkoholu - znajdują się znacznie wyżej, co oznacza, że sensor reaguje na nie słabiej, ale wciąż mogą one wpływać na błąd pomiaru przy wysokich stężeniach.
Dlaczego to jest problematyczne? Ano dlatego, że jak pisałem oprogramowanie na potrzeby tego projektu, to aby wyniki (wyrzucane początkowo na serial) pokazywały prawdę, musiałem najpierw wyznaczyć wartość w warunkach idealnie czystego powietrza. Dodatkowo, każdy egzemplarz MQ-7 ma nieco inną charakterystykę, więc "sztywne" wpisanie wartości (znalezionej np. w sieci) zawsze obarczone będzie dużym błędem.
Miałem pod ręką 3 takie czujniki. Wszystkie nowe, nieużywane. Na początku poddałem je procesowi 48 godzinnego wygrzewania, co wszystkim polecam jako pierwszy krok w realizacji tego projektu. Wystarczy podłączyć je pod 5V i zostawić samym sobie.
Akurat w moim przypadku charakterystyka każdego z nich była bardzo podobna, do tego stopnia, że różnice w wynikach mieściły się w granicach błędu pomiarowego.
W sofcie umieściłem także kilka dodatkowych funkcji z tym związanych. Po pierwsze przy każdym uruchomieniu (podłączeniu zasilania) zaczyna się 3 minutowe wygrzewanie (początkowo było 5 minut, ale nie dawało to nic więcej), po drugie przeprowadzana jest później kalibracja. I tutaj kolejna uwaga. Zakładam, że urządzenie uruchamiamy w czystym powietrzy (<5 ppm CO). Wtedy powinno być OK.
Podczas zabawy z tym projektem wykonałem sporo testów. Miałem do dyspozycji gazy wzorcowe i profesjonalne (z aktualnym certyfikatem i kalibracją) detektory i mierniki. Wykorzystałem tutaj Dräger X-am 5000, jego większego brata X-am 7000 oraz GasAlert Quattro QT-XWHM-R-Y-EU. Do porównania użyłem jeszcze zamontowanego u mnie w kotłowni KIDDE K10LLDCO oraz kuchennych JKD_513COM (jest to OEM oferowany przez wielu dystrybutorów - dostałem kiedyś od jednego karton takich czujników, które rozdałem, dwa mi zostały).
Daleko moim testom do warunków laboratoryjnych, starałem się jednak jak mogłem, aby warunki były powtarzalne. Nie będę tutaj nikogo zanudzał opisem metodyki, przejdę bezpośrednio do wniosków.
Po 48 godzinnym wygrzewaniu MQ-7 (wszystkie 3 sztuki) bardzo dobrze pokazywały niskie stężenia CO (do ok. 50 ppm). Błąd względny (procentowy) nie przekraczał 10% mierzonej wartości. W dokumentacji technicznej profesjonalnych detektorów i normie PN-EN 50291, termin ten odnosi się do dokładności pomiaru (accuracy) lub niepewności pomiarowej. Uważam, że osiągnięty wynik jest całkiem OK, szczególnie, że KIDDE i JKD pokazywały podobne wartości (JKD reagował z wyraźnym opóźnieniem). Przy stężeniach wyższych 50 - 100 ppm zaczynały czasem dziać się dziwne rzeczy. KIDDE i JKD pokazywały dosyć dokładnie (błąd <20% mierzonej wartości) natomiast MQ-7 mocno przekłamywało (raz w górę, raz w dół) mierzone stężenie CO (w granicach 40-50% mierzonych wartości). Co ciekawe z czasem pomiary zdawały się stabilizować. Prawdopodobnie jest to spowodowane tym, że nie potrafiłem do końca prawidłowo przeprowadzić opisanej tutaj procedury wygrzewania/przepłukiwania czujnika. Powyżej 100 ppm wszystkie czujniki pokazywały w zasadzie co chciały. Najdłużej trzymał się KIDDY, który do 150 ppm pokazywał zbliżone wartości do tych mierzonych przez profesjonalne mierniki.
Czy jestem zadowolony z przeprowadzonych testów? I tak i nie. Okazuje się, że przy małych i średnich stężeniach pomiary są OK, natomiast przy wyższych MQ-7 pokazuje co chce. Proszę też pamiętać, że wyniki takich testów wcale nie muszą być powtarzalne i Wasze MQ-7 mogą zachowywać się całkowicie inaczej.

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: Pomiar CO i alarm (czujnik binarny). Domyślna nazwa urządzenia w bramce to: ZIBI::ESP32C6_CO_Sensor.
Urządzenie po uruchomieniu wykonuje tzw. wygrzewanie. Trwa ono ok. 3 minut (dioda świeci na pomarańczowo) i będzie się rozpoczynać za każdym razem, kiedy podłączymy je do zasilania. W tym czasie nie będą widoczne pomiary w Supli. Później następuje automatyczna kalibracja, która tra ok. 45s (dioda świeci na niebiesko). Następnie będzie co ok. 20-30 sekund wysyłać pomiary CO do Supli (częściej, jeśli zmieni się odczyt). Kanał alarmu (próg zadziałania) ustawiamy sobie indywidualnie potencjometrem na płytce czujnika. Alarm włączy się też automatycznie (niezależnie od ustawienia potencjometru) jeśli odczyt przekroczy 50 PPM. O testowaniu urządzenia jest jeszcze na samym końcu.

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! Przywrócenie ustawień fabrycznych najlepiej wykonać wgrywając na nowo soft do C6. Można też przytrzymać dłużej (>5s) BOOT. Spowoduje to tzw. Zigbee factory reset.
Jeśli czujnik bibarny reaguje nieprawidłowo na alarm to w cloud należy zaznaczyć odwróconą logikę.
Czy można zmienić częstotliwość pomiaru? Nie przewidziałem takiej opcji. Stężenia gazów najlepiej jest mierzyć w sposób ciągły. Jeśli jednak ktoś znajdzie odpowiednie argumenty i mnie przekona, to mogę dodać taką opcję.
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ć, klaster 0x840C jako pomiarowy (jednostka ppm) oraz klaster 0x0500 jako alarm.
Czy można zrobić podobne urządzenie na WiFi bezpośrednio pod Suplę? Oczywiście, że tak! Nawet nie trzeba instalować żadnych dodatkowych bibliotek, bo wartości mierzone są analogowo. Tutaj jednak nie obędzie bez podstawowych umiejętności programowania, ponieważ przesłane analogowo wartości trzeba jeszcze odpowiednio zinterpretować i wyświetlić w Supli.
Czy nie lepiej kupić gotowe urządzenie Zigbee? Oczywiście, że tak! To projekt dla pasjonatów, którzy chcą zrobić coś samemu.

Informacje dodatkowe (wykonanie):
Jak to poskładać, skąd wziąć części?
Poniżej zdjęcia poglądowe z przykładu wykonania mojego prototypu.

W związku z pierwotnymi założeniami wykorzystałem ESP32-C6. Wersja dowolna (kilkanaście złotych z Chin). Sam czujnik MQ-7 to koszt kilku złotych (5-10), buzzer (opcjonalnie, 1-2 zł), kilka przewodów (koszt pomijalny).
Połączenia fizyczne:
MQ-7 => ESP32-C6
VCC - 5V Zasilanie modułu
GND - GND Masa wspólna
AO - GPIO0 Odczyt analogowy (ADC)
DO - GPIO1 (opcjonalnie) wyjście progowe
Buzzer (aktywny lub pasywny)
Buzzer => ESP32-C6
(+) - GPIO6 (lub + zasilania a GPIO6 na DATA/uruchomienie buzzera - w zależności od wykorzystanego buzzera)
(-) - GND
Gotowe urządzenie będzie nas kosztować ok. 20 zł. Nie jest to duży wydatek.
Obudowa to sprawa indywidualna. Nie musi być duża, ale należy pamiętać, aby czujnik miał swobodny przepływ powietrza dookoła. Ja wykorzystałem tę https://makerworld.com/pl/models/140019 ... lity-meter ponieważ mam zamiar użyć jej w kolejnym projekcie. Sam czujnik fajnie wygląda i mieści się w tej https://makerworld.com/pl/models/108245 ... ensor-case
Poniżej przykład, jak to może wyglądać (tutaj w fazie prototypu, połączenia tymczasowe, bez lutowania):
ZIBI_CO_Sensor.jpg
Aktualna wersja: 0.9b - 24/02/2026
Soft pierwotnie oparty na:
https://docs.espressif.com/projects/ard ... ensor.html
później przepisany całkowicie na nowo z dodaniem własnego klastra (0x840C).
W projekcie wykorzystano kod na licencji Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Zasady bezpiecznego testowania układu
Jeśli decydujesz się na sprawdzenie reakcji czujnika MQ-7 na tlenek węgla, musisz przestrzegać poniższych zasad, aby uniknąć zatrucia lub pożaru:
1. Testuj wyłącznie w wentylowanych pomieszczeniach: Nigdy nie przeprowadzaj testów w szczelnie zamkniętych pokojach, sypialniach czy łazienkach. Najlepiej robić to na zewnątrz lub w warsztacie z otwartym oknem i sprawną wentylacją wymuszoną.
2. Używaj kontrolowanych źródeł gazu: Nie generuj czadu poprzez rozpalanie ogniska czy uruchamianie silnika spalinowego w zamkniętym garażu. Do testów reakcji czujnika wystarczy np. dym z tlącego się kadzidełka lub zgaszonej zapałki (zawierają śladowe ilości CO), przybliżony do sensora w bezpiecznej odległości.
3. Obecność drugiej osoby: Podczas testów z wyższymi stężeniami gazu zawsze powinna towarzyszyć Ci druga osoba, która w razie Twojego zasłabnięcia wyniesie Cię na świeże powietrze i wezwie pomoc.
4. Nigdy nie ufaj wynikom testu jako gwarancji bezpieczeństwa: To, że czujnik zareagował na dym papierosowy lub zapałkę, nie oznacza, że poprawnie wykryje wolno rosnące, zabójcze stężenie czadu pochodzące z nieszczelnego pieca.
5. Zakaz testowania "na sobie": Pod żadnym pozorem nie wdychaj gazów testowych ani nie przebywaj w oparach w celu sprawdzenia "czy już czuć czad" - tlenek węgla jest bezwonny, a pierwsze objawy zatrucia (ból głowy, zawroty) często pojawiają się zbyt późno, by móc bezpiecznie zareagować.

Wskazówka techniczna do testów:

Zamiast narażać się na czad, możesz sprawdzić poprawność działania Twojego kodu i elektroniki, używając oparów alkoholu izopropylowego (nasączony wacik). Choć MQ-7 jest dedykowany do CO, posiada czułość skrośną na alkohol. Jeśli odczyt na porcie szeregowym (Serial Monitor) gwałtownie wzrośnie po zbliżeniu wacika, oznacza to, że warstwa programowa i przetwornik ADC działają poprawnie. Tak samo można użyć gazu do zapalniczki.

Na koniec...

Urządzenie ma jeszcze jednego ojca. Jest nim @vajera. Bardzo aktywnie włączył się w pisanie kodu, służył radą i podsuwał nowe pomysły.
Z tego miejsca mu bardzo dziękuję.
W trakcie prac nad softem został on przepisany na nowo kilka razy. Na początku korzystał z klastra i funkcji dla dwutlenku węgla (0x040D) oraz zwykłego klastra binarnego, jako alarm (0x000F). Za namową Łukasza postanowiłem zmienić na klaster 0x040C dedykowany dla tlenku węgla. Szkoda tylko, że dedykowanego na papierze, bo w praktyce nie do wykorzystania. Stworzyłem więc z pomocą Łukasza swój własny klaster (0x840C), który jest pełnoprawnym klastrem CO ze wszystkimi potrzebnymi funkcjami. Czujnik binarny został natomiast zmieniony na IAS Zone (0x0500), co wbrew pozorom wcale nie było takie proste. Ostatecznie wszystko w bramce (i w Supli) działa jak powinno.
I tak z prostego szkicu, który miał 50 linii kodu, zrobił się soft liczący prawie 500 linii. Zachęcam do testowania.
A jeśli ktoś doczytał do końca, to będzie nagroda ;) Za niedługo pokażę, jak zrobić taki czujnik z wykorzystaniem bardziej wiarygodnego sensora elektrochemicznego w wersji niskobudżetowej (koszt całkowity urządzenia <40 zł) :)
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
Zibi_007
Posts: 3985
Joined: Tue Oct 31, 2023 10:06 pm
Has thanked: 10 times
Been thanked: 31 times

Post

Rezerwacja...
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
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 290 times
Been thanked: 161 times

Post

Zibi_007 wrote: Wed Feb 25, 2026 3:28 pm ...
Ojciec jest tylko jeden i jesteś nim Ty, Zbyszku - ja co najwyżej mogę się zadowolić tytułem ojca chrzestnego 😉

Gratuluję - pomysłu, realizacji i jak zawsze profesjonalnej dokumentacji projektu.
Przy tej okazji pozwolę sobie podzielić się z Wami następującą historią:

Zbyszek zrobił ten czujnik na klastrze CO2 measurement, ale trochę Mu marudziłem, że to może być mylące a skoro jest klaster CO measurement, to wykorzystajmy go.
W bibliotece Zigbee nie ma wsparcia dla tego klastra, ale Zbyszek napisał własną implementację odpowiedniej klasy, która....nie chciała działać. Poprosiłem Go wiec o przesłanie kodu, wychodząc z założenia, że moje doświadczenie z Zigbee może pomóc w wyłapaniu błędu.
Pierwsze wrażenie po otwarciu plików - szok! Nie żebym kiedykolwiek w Niego wątpił, ale tak profesjonalnego kodu nie powstydziłby się żaden zawodowiec.
Siedziałem nad nim kilka godzin, testując intensywnie Xiao C6, ale wszystko, co Zbyszek napisał było po prostu perfekcyjnie prawidłowe.
Błąd okazał się banalny...otóż biblioteka Espressif i ZBOSS nie zaimplementowały tego klastra - o tym wiedzieliśmy od początku, ale...uniemożliwiają również dodanie takiego klastra (o id < 0x8000) - oczywiście bez żadnego sensownego komunikatu o błędzie...
Poszedł issue do Espressif, ale jakoś nie liczę na efekt. Ostatecznie Zbyszek wykorzystał swój kod robiąc custom cluster z id 0x840C i wszystko od razu zagrało!

Kolejna historia - Zbyszek zrobił najpierw raportowanie alarmu na klastrze binary input, ale znowu Mu marudziłem (gorzej niż żona :lol:), więc pokazał, na co go stać i przerobił to na klaster IAS ZONE.
Niestety Jego klaster IAS ZONE nie potrafił przeprowadzić prawidłowej procedury IAS ZONE ENROLLMENT z bramką, więc znowu usiadłem nad kodem i oczywiście znalazłem błąd...tylko, że w bramce. Kolejna lekcja pokory zaliczona.

Ostatecznie bramka zyskała nowe dziecko a przy okazji udało się wyeliminować kolejny złośliwy błąd.
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
Zibi_007
Posts: 3985
Joined: Tue Oct 31, 2023 10:06 pm
Has thanked: 10 times
Been thanked: 31 times

Post

vajera wrote: Wed Feb 25, 2026 6:00 pm
Zibi_007 wrote: Wed Feb 25, 2026 3:28 pm ...
Ojciec jest tylko jeden i jesteś nim Ty, Zbyszku - ja co najwyżej mogę się zadowolić tytułem ojca chrzestnego 😉

Gratuluję - pomysłu, realizacji i jak zawsze profesjonalnej dokumentacji projektu.
Przy tej okazji pozwolę sobie podzielić się z Wami następującą historią:

Zbyszek zrobił ten czujnik na klastrze CO2 measurement, ale trochę Mu marudziłem, że to może być mylące a skoro jest klaster CO measurement, to wykorzystajmy go.
W bibliotece Zigbee nie ma wsparcia dla tego klastra, ale Zbyszek napisał własną implementację odpowiedniej klasy, która....nie chciała działać. Poprosiłem Go wiec o przesłanie kodu, wychodząc z założenia, że moje doświadczenie z Zigbee może pomóc w wyłapaniu błędu.
Pierwsze wrażenie po otwarciu plików - szok! Nie żebym kiedykolwiek w Niego wątpił, ale tak profesjonalnego kodu nie powstydziłby się żaden zawodowiec.
Siedziałem nad nim kilka godzin, testując intensywnie Xiao C6, ale wszystko, co Zbyszek napisał było po prostu perfekcyjnie prawidłowe.
Błąd okazał się banalny...otóż biblioteka Espressif i ZBOSS nie zaimplementowały tego klastra - o tym wiedzieliśmy od początku, ale...uniemożliwiają również dodanie takiego klastra (o id < 0x8000) - oczywiście bez żadnego sensownego komunikatu o błędzie...
Poszedł issue do Espressif, ale jakoś nie liczę na efekt. Ostatecznie Zbyszek wykorzystał swój kod robiąc custom cluster z id 0x840C i wszystko od razu zagrało!

Kolejna historia - Zbyszek zrobił najpierw raportowanie alarmu na klastrze binary input, ale znowu Mu marudziłem (gorzej niż żona :lol:), więc pokazał, na co go stać i przerobił to na klaster IAS ZONE.
Niestety Jego klaster IAS ZONE nie potrafił przeprowadzić prawidłowej procedury IAS ZONE ENROLLMENT z bramką, więc znowu usiadłem nad kodem i oczywiście znalazłem błąd...tylko, że w bramce. Kolejna lekcja pokory zaliczona.

Ostatecznie bramka zyskała nowe dziecko a przy okazji udało się wyeliminować kolejny złośliwy błąd.
Ale miło. Dziękuję! :)

Prawdziwy przyjaciel, to nie taki, który przytakuje, ale taki, który mądrze dopinguje i wskazuje drogę. I Ty dla mnie takim jesteś!

No i dzięki temu wiem, jak napisać samemu klasę i co to jest enrollowanie :D
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
Patryk90
Posts: 52
Joined: Mon Nov 10, 2025 8:57 pm

Post

No dla mnie to jest po prostu bomba.
Też informacyjna, bo wielu rzeczy nie wiedziałem.
Zamówiłem sobie właśnie taki czujniczek i razem z buzzerem wyszło niecałe 7 zł :lol: C6 mam, to sobie złożę.
Mam takie sklepowe (na 10 lat) a ten będzie dodatkowy :)
Dzięki za pomysł i taką dawkę teorii. Poczułem się jak na wykładzie z elektrotechniki na studiach :lol:
Instal
Posts: 43
Joined: Tue Jan 27, 2026 11:26 pm

Post

Patryk90 wrote: Wed Feb 25, 2026 7:22 pm No dla mnie to jest po prostu bomba.
No Panowie (Zibi ,Vajera) nie wiem czym Wy się zajmujecie zawodowo i jakie rzeczy robicie , ale skoro potraficie takie "fikołki" robić hobbystycznie to w razie godziny 'W" ja chcę być po waszej stronie.
PS.
Czy na specjalne zamówienie potrafilibyście zrobić czujnik "myśli mojej żony". Jeśli tak to ile by to kosztowało i jaki czas realizacji?
Pozdrawiam
User avatar
RomanG
Posts: 1060
Joined: Tue Jul 21, 2020 7:35 am
Has thanked: 26 times
Been thanked: 7 times

Post

Instal wrote: Wed Feb 25, 2026 7:42 pm
Patryk90 wrote: Wed Feb 25, 2026 7:22 pm No dla mnie to jest po prostu bomba.
No Panowie (Zibi ,Vajera) nie wiem czym Wy się zajmujecie zawodowo i jakie rzeczy robicie , ale skoro potraficie takie "fikołki" robić hobbystycznie to w razie godziny 'W" ja chcę być po waszej stronie.
PS.
Czy na specjalne zamówienie potrafilibyście zrobić czujnik "myśli mojej żony". Jeśli tak to ile by to kosztowało i jaki czas realizacji?
Pozdrawiam
Tu musiałbyś Panom Prezesom potrzymać piwo, bo jednak w tym przypadku przekłamań być nie może. ;)
... a poważnie; Łukaszu i Zbyszku, jesteście Mistrzami. Wnikliwą lekturę tematu pozostawiam na jutro, bo na malutkim ekraniku, to nie mogę się tym delektować.
User avatar
PawełPolny
Posts: 16
Joined: Thu Jan 29, 2026 12:18 am
Has thanked: 3 times

Post

@Zibi_007 - mam od Ciebie bramkę i extender. Spisują się świetnie. Cały czas pracują i nic się nie zawiesza i nie resetuje. Dalej nie wiem jak się mam odwdzięczyć, bo nic nie chcesz :( Może jednak dobrą śliwowicą Cię skuszę? :lol:
To by było pierwsze urządzenie, które bym zrobił sam ;)
Nigdy czegoś takiego nie robiłem, ale myślę, że dam radę bo opis prowadzi za rękę krok po kroku :) Patrzyłem na allegro i te części też są po kilka złotych.
Jakbym czegoś jednak nie wiedział to będę pisał na PW.
Paweł Polny
User avatar
Zibi_007
Posts: 3985
Joined: Tue Oct 31, 2023 10:06 pm
Has thanked: 10 times
Been thanked: 31 times

Post

PawełPolny wrote: Wed Feb 25, 2026 8:28 pm @Zibi_007 - mam od Ciebie bramkę i extender. Spisują się świetnie. Cały czas pracują i nic się nie zawiesza i nie resetuje. Dalej nie wiem jak się mam odwdzięczyć, bo nic nie chcesz :( Może jednak dobrą śliwowicą Cię skuszę? :lol:
To by było pierwsze urządzenie, które bym zrobił sam ;)
Nigdy czegoś takiego nie robiłem, ale myślę, że dam radę bo opis prowadzi za rękę krok po kroku :) Patrzyłem na allegro i te części też są po kilka złotych.
Jakbym czegoś jednak nie wiedział to będę pisał na PW.
Paweł Polny
Paweł, adres (paczkomat) bez zmian?
Jeśli tak, to jutro rano wyślę Ci te części.
Wrzucę też przewody i jakąś obudowę (tę zieloną ze zdjęcia mam wolną).
Poskładasz sobie. Nie zajmie Ci to więcej, jak 10 minut. Z wgraniem softu ;-)
Czujnik już wygrzany, więc będziesz 48 godzin do przodu.
Chcesz? W konkursie chyba Ci nie poszło, to będziesz miał prezent na koniec miesiąca miodowego :)
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
PawełPolny
Posts: 16
Joined: Thu Jan 29, 2026 12:18 am
Has thanked: 3 times

Post

Zibi_007 wrote: Wed Feb 25, 2026 8:36 pm
PawełPolny wrote: Wed Feb 25, 2026 8:28 pm @Zibi_007 - mam od Ciebie bramkę i extender. Spisują się świetnie. Cały czas pracują i nic się nie zawiesza i nie resetuje. Dalej nie wiem jak się mam odwdzięczyć, bo nic nie chcesz :( Może jednak dobrą śliwowicą Cię skuszę? :lol:
To by było pierwsze urządzenie, które bym zrobił sam ;)
Nigdy czegoś takiego nie robiłem, ale myślę, że dam radę bo opis prowadzi za rękę krok po kroku :) Patrzyłem na allegro i te części też są po kilka złotych.
Jakbym czegoś jednak nie wiedział to będę pisał na PW.
Paweł Polny
Paweł, adres (paczkomat) bez zmian?
Jeśli tak, to jutro rano wyślę Ci te części.
Wrzucę też przewody i jakąś obudowę (tę zieloną ze zdjęcia mam wolną).
Poskładasz sobie. Nie zajmie Ci to więcej, jak 10 minut. Z wgraniem softu ;-)
Czujnik już wygrzany, więc będziesz 48 godzin do przodu.
Chcesz? W konkursie chyba Ci nie poszło, to będziesz miał prezent na koniec miesiąca miodowego :)
Zibi GOAT! Jasne, że chcę :D
Wszystko bez zmian, nie mogę się doczekać!
Paweł

Return to “Bramka ZigBee”