W gałęzi rozwojowej ESPHome pojawił się komponent dla elektrochemicznych czujników gazów DFRobot z serii SEN0465-SEN0476, które producent sprzedaje jako fabrycznie skalibrowane („Factory Calibrated Electrochemical Gas Sensor”). Zmianę #20880, przygotowaną przez tzabbi i przejrzaną przez bdraco, scalono 17 października 2026. Tego samego dnia dokumentacja trafiła do gałęzi next serwisu esphome.io. Komponent wejdzie do ESPHome 2026.11, czyli wersji, nad którą trwają teraz prace.
Dwanaście płytek, jeden protokół
Wszystkie modele mają tę samą płytkę przetwornika i ten sam protokół, a różnią się tylko sondą. Dlatego jeden komponent obsługuje całą serię, a gaz wybierasz kluczem model:
| Model | Gaz | Model | Gaz |
|---|---|---|---|
| SEN0465 | tlen (O2, w %) | SEN0471 | dwutlenek azotu (NO2) |
| SEN0466 | tlenek węgla (CO) | SEN0472 | ozon (O3) |
| SEN0467 | siarkowodór (H2S) | SEN0473 | wodór (H2) |
| SEN0468 | chlor (Cl2) | SEN0474 | chlorowodór (HCl) |
| SEN0469 | amoniak (NH3) | SEN0475 | fluorowodór (HF) |
| SEN0470 | dwutlenek siarki (SO2) | SEN0476 | fosfina (PH3) |
Poza czujnikiem tlenu wszystkie podają stężenie w ppm. Od modelu zależy też liczba miejsc po przecinku i klasa urządzenia, więc SEN0466 pojawi się w Home Assistancie jako czujnik tlenku węgla. Każda płytka mierzy dodatkowo własną temperaturę.
To zupełnie inny sprzęt niż MiCS-5524, którego obsługa trafiła do gałęzi rozwojowej dzień wcześniej. Tamten moduł ma jedno wyjście analogowe, które reaguje naraz na kilka gazów. Tutaj każda sonda mierzy jeden gaz, a płytka przekazuje wynik cyfrowo.
I2C albo UART
Magistralę wybierasz przełącznikiem SEL na płytce: 0 oznacza I2C, a 1 UART. Stąd dwie platformy, dfrobot_sen0465_i2c i dfrobot_sen0465_uart. Domyślny adres I2C to 0x77, a przełącznikami A0 i A1 ustawisz dowolny adres od 0x74 do 0x77. Czujnik obsługuje też inne grupy adresów w zakresie 0x60-0x7F, ale grupy nie zmienisz z poziomu ESPHome. Do tego potrzebna jest biblioteka DFRobot dla Arduino. UART działa zawsze z prędkością 9600 b/s w formacie 8N1, a ESPHome odrzuci konfigurację z innymi ustawieniami albo bez pinu TX lub RX.
Po starcie ESPHome przełącza czujnik w tryb pasywny, w którym ten odpowiada wyłącznie na zapytania. Potem czeka sekundę, ustawia alarm i robi pierwszy odczyt. Na każdy z tych kroków ma trzy próby. Jeśli przy odczycie czujnik nie odpowie, przyśle błędną odpowiedź albo nie zgodzi się suma kontrolna, ESPHome ustawia stan nieznany i nie zostawia na panelu starej wartości. Domyślnie odczyt odbywa się co 60 s.
Kompensacja temperatury i wyjście alarmowe
Wskazania sond elektrochemicznych zmieniają się razem z temperaturą. Jeśli ustawisz temperature_compensation: true, ESPHome poprawi stężenie według wzorów z biblioteki DFRobot na podstawie temperatury płytki. Poza zakresem, który obejmują te wzory, zamiast wyniku pojawi się NaN i ostrzeżenie, podczas gdy biblioteka DFRobot zwraca w takiej sytuacji 0. Tej opcji nie ma dla tlenu, bo nie ma dla niego wzoru, ani dla wodoru. Wzór producenta dla wodoru dzieli przez 0,74 × T + 0,007 i poniżej 20 °C daje bezsensowne wyniki.
W sekcji alarm: ustawiasz próg dla wyjścia ALA na płytce. Alarm włącza się po przekroczeniu progu (high, wartość domyślna) albo po spadku poniżej niego (low). Bez tej sekcji ESPHome wyłącza alarm przy starcie. Stanu alarmu nie da się odczytać przez I2C ani UART, więc żeby zobaczyć go w Home Assistancie, podłącz wyjście ALA do pinu GPIO i dodaj czujnik binarny GPIO. Płytka porównuje próg z własnym odczytem, bez kompensacji temperatury, dlatego alarm może się włączyć przy nieco innej wartości niż ta, którą pokazuje ESPHome.
Sprawdzony na jednej płytce
Autor uruchomił SEN0466 z ESP32-C6 na obu magistralach. Gdy do sondy dotarł dym z kadzidełka, stężenie CO wzrosło, a przez UART przyszło 17 odczytów z rzędu bez żadnego błędu sumy kontrolnej. Samo wyjście ALA i kompensację temperatury sprawdzono tylko w teście z emulowanym portem UART.