LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Przegląd bloga /Smart Home / ESPHome i ESP32 w praktyce: Własne czujniki...
Ten artykuł w innych językach:

ESPHome i ESP32 w praktyce: Własne czujniki środowiskowe bez chmury

Część 2 z 6 serii Home Assistant bez chmury

ESPHome i ESP32 w praktyce: Własne czujniki środowiskowe bez chmury
Spis treści
  1. ESPHome i ESP32 w praktyce: Własne czujniki środowiskowe bez chmury
  2. 1. Wybór pomiaru i podłączenie czujnika
  3. 2. Konfiguracja i sprawdzenie oprogramowania
  4. 3. Kalibracja i umieszczenie czujnika
  5. 4. Dostęp lokalny i granice izolacji sieciowej
  6. Pytania i odpowiedzi
  7. Źródła

ESPHome i ESP32 w praktyce: Własne czujniki środowiskowe bez chmury

ESP32 z czujnikiem SCD40 może przesyłać CO₂, temperaturę i wilgotność względną bezpośrednio do Home Assistant. ESPHome tworzy oprogramowanie z konfiguracji YAML. Ten tor danych nie wymaga konta w chmurze producenta. Jakość pomiaru nadal zależy od czujnika, obudowy i kalibracji; lokalne połączenie nie zapewnia dokładności laboratoryjnej.

1. Wybór pomiaru i podłączenie czujnika

SCD40 mierzy CO₂ metodą fotoakustyczną NDIR. Zakres określonej dokładności wynosi 400–2000 ppm, a nie 5000 ppm; poza tym zakresem nie obowiązuje ta sama deklaracja dokładności. SCD30 to inny, optyczny moduł NDIR z zakresem określonej dokładności 400–10 000 ppm. Zakresy te należy odróżnić od zakresu cyfrowych wartości wyjściowych.

Indeks VOC opisuje zmiany mieszaniny lotnych związków organicznych, a nie bezpośrednie stężenie CO₂. Komponent sgp4x w ESPHome może obliczać indeks VOC na podstawie SGP40. Podstawowy komponent BME680 udostępnia rezystancję gazową; indeks jakości powietrza wymaga dodatkowego przetwarzania, na przykład BSEC. SHT40 mierzy temperaturę i wilgotność. Te opcjonalne moduły wymagają osobnej konfiguracji i nie wchodzą w skład poniższego przykładu.

I²C wymaga SDA i SCL, wspólnej masy oraz odpowiedniego zasilania: dwa przewody sygnałowe nie zasilają całego urządzenia. Przykład wykorzystuje GPIO21 i GPIO22 klasycznej płytki ESP32 opisanej definicją esp32dev. Inne płytki, zwłaszcza warianty C3/S3, wymagają odpowiedniej definicji i przypisania pinów. Dokumentacja modułu czujnika określa napięcie zasilania, rezystory podciągające i połączenia. Linie ESP32 wymagają poziomów 3,3 V; zasilanie modułu napięciem 5 V nie uzasadnia podciągania SDA/SCL do 5 V. Krótkie przewody i kontrola łącznego obciążenia rezystorów z kilku modułów ograniczają problemy magistrali.

Lokalny tor danych: oprócz SDA/SCL potrzebne są zasilanie i masa. Odczyty trafiają do Home Assistant przez szyfrowane API; aktualizacje firmware korzystają z osobnego połączenia.
Lokalny tor danych: oprócz SDA/SCL potrzebne są zasilanie i masa. Odczyty trafiają do Home Assistant przez szyfrowane API; aktualizacje firmware korzystają z osobnego połączenia.

2. Konfiguracja i sprawdzenie oprogramowania

Poniższy przykład obejmuje ESP32 i SCD40. Aktualne ESPHome oddziela blok esp32 od esphome. Dane dostępowe należą do prywatnego pliku secrets.yaml obok konfiguracji. api_encryption_key musi zawierać 32 losowe bajty zakodowane w Base64; opisowy tekst zastępczy ani wspólny klucz przykładowy nie są odpowiednie. Hasło OTA jest oddzielne od klucza API. Pierwsza instalacja zwykle odbywa się przez USB; kolejne aktualizacje mogą korzystać z sieci lokalnej.

esphome:
  name: env-monitor-office

esp32:
  board: esp32dev
  framework:
    type: esp-idf

logger:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

api:
  encryption:
    key: !secret api_encryption_key

ota:
  - platform: esphome
    password: !secret ota_password

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true
  frequency: 100kHz

sensor:
  - platform: scd4x
    co2:
      name: Biuro CO2
    temperature:
      name: Biuro Temperatura
    humidity:
      name: Biuro Wilgotność
    measurement_mode: periodic
    update_interval: 30s
    automatic_self_calibration: false

Czujnik w trybie periodic wykonuje pomiar co pięć sekund; ta konfiguracja przesyła odczyty co 30 sekund. Fizyczna reakcja na zmianę powietrza trwa dłużej niż transmisja sieciowa. Częstsze odpytywanie nie zapewnia natychmiastowej reakcji czujnika gazu.

3. Kalibracja i umieszczenie czujnika

Automatyczna samokalibracja pozostaje w przykładzie wyłączona do czasu spełnienia warunków producenta. Założenia ASC w SCD4x obejmują regularny kontakt z powietrzem o stężeniu około 400 ppm, według podlinkowanej karty katalogowej przynajmniej raz w tygodniu. Stale zajęte pomieszczenie z podwyższonym CO₂ może nie spełniać tego warunku. Wyłączenie ASC także nie zapobiega dryfowi: nadal potrzebne są pomiar odniesienia i odpowiednia procedura konserwacji.

Wymuszona kalibracja wymaga znanego, stabilnego stężenia odniesienia oraz procedury producenta, w tym przynajmniej trzech minut pracy w stabilnych warunkach przed sekwencją kalibracji. Powietrza na zewnątrz nie należy automatycznie utożsamiać z dokładnie 400 ppm. Spadek minimum dobowego sam w sobie nie dowodzi dryfu kalibracji. Potrzebne jest porównanie z wiarygodnym odniesieniem.

Czujnik wymaga odstępu od ESP32 i stabilizatora napięcia oraz przepływu powietrza w obudowie. Po osiągnięciu równowagi cieplnej następuje porównanie temperatury z przyrządem odniesienia. Domyślna wartość temperature_offset dla SCD4x w ESPHome wynosi 4 °C i wymaga dopasowania do konkretnego montażu. Korekta wpływa na temperaturę i wilgotność względną, ale nie kalibruje CO₂. Kanały temperatury i wilgotności są przydatne do obserwacji pomieszczenia, jednak nagrzewanie obudowy może dominować w błędzie pomiaru.

4. Dostęp lokalny i granice izolacji sieciowej

Osobna sieć IoT VLAN z zaporą może blokować bezpośredni dostęp czujnika do internetu. Home Assistant nadal potrzebuje dostępu do TCP 6053 czujnika dla szyfrowanego API; uprawniony komputer aktualizacyjny potrzebuje TCP 3232 dla ESP32 OTA oraz ruchu zwrotnego tych połączeń. Przykład włącza szyfrowanie API i aktualizacje OTA chronione hasłem.

Wykrywanie mDNS zwykle nie przekracza automatycznie granic VLAN. Rezerwacja DHCP i ręczna integracja przez adres IP zapewniają przewidywalną alternatywę; wykrywanie po nazwie wymaga świadomej konfiguracji sieci. Kompilacja odbywa się na komputerze budującym firmware, który może potrzebować internetu do pobrania zależności. Sam czujnik nie potrzebuje internetu do przedstawionych lokalnych funkcji API i OTA.

Zapora ogranicza bezpośrednie połączenia zewnętrzne. Eksporty, integracje chmurowe i kopie zapasowe Home Assistant nadal mogą przenosić odczyty poza sieć. Dostępność zależy również od Wi-Fi, zasilania, firmware i komputera automatyki; działanie lokalne nie gwarantuje pracy bez przerw.

Pytania i odpowiedzi

Jak sprawdzić konfigurację przed instalacją?

Przed kompilacją walidator konfiguracji ESPHome sprawdza faktyczną definicję płytki wraz z prywatnym plikiem sekretów. Pomyślna walidacja potwierdza schemat, ale nie zgodność elektryczną ani dokładność pomiaru. Po instalacji potrzebne są kontrole adresu I²C, logów, odczytów, aktualizacji i zachowania przy utracie Wi-Fi lub Home Assistant. Kalibracja wymaga oddzielnego porównania pomiarowego.

Czy niedostępny czujnik oznacza zerowe CO₂?

Nie. Brak odczytu lub przerwane połączenie oznaczają brak informacji, a nie zerowe stężenie. Automatyzacje wymagają osobnego stanu awarii oraz kontroli ostatniego udanego pomiaru. Sama niezmieniona wartość liczbowa nie odróżnia stabilnych warunków od zablokowanego czujnika.

Home Assistant bez chmury

  1. Zigbee2MQTT i ZHA: planowanie niezawodnej sieci Zigbee
  2. ESPHome i ESP32 w praktyce: Własne czujniki środowiskowe bez chmury
  3. Wykrywanie obecności 2.0: radary mmWave (LD2410/LD2450) w automatyzacji oświetlenia
  4. Lokalne sterowanie głosem w Home Assistant z Whisper i Piper
  5. WireGuard i Tailscale DMZ: Bezpieczny dostęp z zewnątrz do Home Assistant i własnych serwerów
  6. Lokalny system zarządzania energią: Integracja falowników PV i magazynów energii przez Modbus TCP
Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Kontakt

Masz pytanie lub pomysł na projekt internetowy? Napisz krótko, o co chodzi. Formularz korzysta z reCAPTCHA do ochrony przed spamem.

Napisanie komentarza

Doświadczenia z innymi urządzeniami lub integracjami oraz pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.