Blog - Home Assistant 13 pic 1920x1080 px kopie

Home Assistant seriál s Jakubem: Díl 13: Senzor CO₂ (ESPHome)

Úvod

Jak jsme si slíbili minule, v dnešním díle si vyrobíme CO₂ senzor, který se výborně hodí pro kontrolu kvality vzduchu ve vaší domácnosti. A věřím, že stejně jako já budete překvapeni, jak rychle se místnost může „vydýchat“. Díky senzoru zjistíme aktuální koncentraci CO₂ a můžeme si snadno poslat notifikaci, rozsvítit LEDku nebo spustit jakoukoli jinou automatizaci, která nám připomene, že je čas vyvětrat 🙂.

Vliv koncentrace CO₂ na lidský organismus:

  • 350-400 ppm – úroveň venkovního prostředí
  • do 1000 ppm – doporučená úroveň CO₂ ve vnitřních prostorách
  • 1200-1500 ppm – doporučená maximální úroveň CO₂ ve vnitřních prostorách
  • 1000-2000 ppm – nastávají příznaky únavy a snižování koncentrace
  • 2000-5000 ppm – nastávají možné bolesti hlavy
  • 5000 ppm – maximální bezpečná koncentrace; při delší expozici možné nevolnosti a zvýšený tep
  • 15000 ppm – dýchací potíže
  • 40000 ppm – možná ztráta vědomí

Z vlastní zkušenosti vím, že dostat se v menší místnosti bez pravidelného větrání na hodnoty mezi 1500-2000 ppm není moc velký problém. A ani to vlastně moc nepoznáte. Dříve jsem spal v ložnici se zavřeným oknem. Bez větrání před spaním a bez mikroventilace stoupne za 8 hodin spánku koncentrace klidně na 1500–2000 ppm – a to i když v místnosti spí jen jedna osoba. Mikroventilace výrazně pomůže a sníží hodnoty CO₂ na cca 1000 – 1200 ppm. Nejlepší je v létě spát s otevřeným oknem (alespoň na klasickou ventilaci) a v zimě každé dvě hodiny větrat a pořádně vyvětrat před spánkem 🙂.

Co budeme potřebovat

Instalace ESPHome na desku

Budeme postupovat úplně stejně jako v minulém dílu, ale abyste nemuseli pročítat půlku minulého dílu, celý postup si znovu projdeme. Jako desku opět použijeme NodeMCU ESP32 Development Board (tedy klasická verze ESP32 s microUSB) a opět pro ní máme k dispozici tisknutelnou krabičku. Odkaz na model najdete na zde. Krabičku si zatím můžete poslat do tisku, ať neztrácíte čas :).

Pro instalaci použijeme webový tool, který je za mě nejrychlejší a nejjednodušší. Otevřeme si tedy tuto stránku, připojíme desku přes microUSB do počítače a na webu klikneme na Connect.


Otevře se nám dialogové okno, kde bychom měli vidět naši desku. Pokud jí tam nevidíte, zkuste si pročíst předchozí článek, kde je popsáno, v čem by mohl být problém (ovladače, kabel, který není datový apod.). V dialogovém okně vybereme naši desku.


Pokud vše proběhlo v pořádku, objeví se nám další nabídka s modrým textem PREPARE FOR FIRST USE na který klepneme.

Pokud se vám v další nabídce dlouho točí kolečko s nápisem Connecting, zkuste následující postup:

  1. Desku odpojte od USB kabelu (web se vám automaticky vrátí do předchozí nabídky s Connect).
  2. Podržte tlačítko označené jako BOOT (většinou to, které není označeno EN) vedle microUSB portu.
  3. Připojte USB kabel, znovu klepněte na Connect a PREPARE FOR FIRST USE a tlačítko pusťte až v momentě, kdy začne instalace.

Tento postup je někdy potřeba zkusit vícekrát, ale většinou je potřeba jen u desek, na kterých už je nainstalován ESPHome a vy chcete dát desku do „továrního“ nastavení s čerstvým ESPHome. Tímto postupem desku přepnete do bootovacího módu.


Po úspěšné instalaci odklepneme dialogové okno a klepneme na CHANGE WI-FI.


V nabídce vyberte svou Wi-Fi síť a vyplňte heslo k Wi-Fi.


Pokud nás uvítá dialogové okno Provisioned, máme napůl vyhráno – ESPHome je úspěšně nahrán a deska je připravena pro konfiguraci senzoru.

Přidání a nastavení desky v HA

Nyní se přesuneme do našeho HA a to konkrétně do ESPHome Builderu.

V horní části by se nám měla objevit nabídka Discovered 1 device, kde klepneme na SHOW vpravo.


Deska se nám přidá do menu k ostatním zařízením (pokud již nějaká máme) a my klepneme na TAKE CONTROL.


Zařízení si můžeme libovolně pojmenovat a poté znovu klepnout na TAKE CONTROL.

Pokud nám vyskočí chyba, ve většině případů stačí doplnit údaje k Wi-Fi, tj. u desky klepneme na EDIT, doplníme následující kód:

… a v pravém rohu klepneme na INSTALL. Poté by se měla konfigurace zkompilovat a nainstalovat.

Místo opravy konfigurace můžeme rovnou přidat celý kód, který budeme potřebovat pro náš CO₂ senzor a radar:

Ve svém konfiguračním kódu upravte následující čtyři části podle vlastních údajů:

Friendly name si můžete nastavit libovolně, ale hodnota name musí přesně odpovídat názvu, který jste zadali ve webovém klientovi při první instalaci. Jinak se deska nenačte správně. Alternativně můžete do kódu přidat statickou IP adresu a bránu – a v routeru tuto IP přiřadit trvale k MAC adrese desky.

Zde nahraďte key: "" vlastním klíčem, který si můžete vygenerovat například zde.

Tato sekce definuje záchranný hotspot, který deska začne vysílat, pokud se nepřipojí ke známé Wi-Fi síti. Díky tomu se k ní budete moci připojit a opravit konfiguraci.

Sem zadejte heslo, které budete potřebovat při OTA (Over-the-Air) aktualizacích firmware.

Až budete mít vše připraveno, klikněte v pravém horním rohu na INSTALL a v nabídce zvolte možnost Wirelessly.

Kompilace může chvíli trvat – v některých případech i deset minut, tak se neděste 🙂


Také si v kódu můžeme povšimnout tohoto bloku:

Tento kód slouží k tomu, aby se ESP32 deska chovala jako bluetooth proxy.

Bluetooth proxy v ESPHome umožňuje ESPčku (např. ESP32) fungovat jako přeposílač Bluetooth signálů (např. ze senzorů jako Xiaomi, inkbird, apod.) do Home Assistantu, protože většina Home Assistant serverů (např. na RPi nebo mini PC) Bluetooth čip nemá, nebo má příliš malý dosah.

Jak to funguje krok za krokem:

  1. ESP32 s ESPHome běží někde poblíž Bluetooth zařízení (např. Bluetooth teploměr Xiaomi Mi Thermometer).
  2. ESP32 zachytí Bluetooth signály z těchto zařízení.
  3. Tato data nevyhodnocuje sám, ale přepošle do Home Assistantu přes Wi-Fi.
  4. Home Assistant tyto signály zpracuje, jako by je chytil sám → zařízení se vám objeví v HA jako entita.

Bluetooth proxy tedy můžeme krásně využít pro rozšíření Bluetooth pokrytí po bytě/domě, ideální je mít v každé místnosti jednu bluetooth proxy a odstraníte tím problém např. se špatným signálem pro Xiaomi Mi Thermometer o kterém jsme mluvili v tomto dílu.

3D tisk krabičky

Celý projekt s krabičkou a držákem naleznete zde. Na dvou podložkách najdete variantu jak pro NodeMCU desku, tak i pro klasický ESP32 DevKit. Pokud byste chtěli i kompatibilní držák, najdete ho na jedné podložce z minulého projektu.

V projektu naleznete i druhý print profile, kde je víčko upravené pro model MH-Z19B, který je o trochu větší než MH-Z19C.

Tisk krabičky zabere přibližně 45 minut a budete potřebovat cca 26g filamentu. Veškeré důležité informace najdete přímo v projektu na MakerWorldu.

Vůle pro osazení ESP32 desky, radaru i víčka jsou minimální, takže je potřeba při sestavení použít trochu síly. Pokud nemáte perfektně kalibrovanou tiskárnu, doporučuji tisknout pomalu – model je navržen s přesností na setiny milimetru. 🙂

Soubor ve formátu .3mf je optimalizovaný pro tiskárny BambuLab. Pokud by vám nesedělo víčko nebo deska, můžete zkusit zmenšit boční stěny o 0,1 mm z každé strany – nicméně já osobně jsem tiskl několik kusů a všechny seděly bez úprav.

Kompletace

Osazení ESP32 desky a radaru

Nyní můžeme desku odpojit od microUSB kabelu a vložit ji do vytištěné krabičky. Desku je ideální vkládat mírně šikmo – tedy nejprve zasunout stranu s USB portem a pak druhou stranu mírným zatlačením dorovnat. Pokud deska nesedí rovně, jemně zatlačte na protilehlou stranu, tím se usadí.

Vyjmutí je trochu složitější. U NodeMCU se mi osvědčil malý imbusový klíč – dá se zasunout pod desku a lehce zatáhnout. U klasického ESP32 DevKitu pomáhá malý plochý šroubovák – opatrně jej vsuňte pod USB port a lehce nadzvedněte. Nicméně krabička není konstruovaná na časté výměny desek (a ani by to nemělo být potřeba).

Dále vložíme CO₂ senzor do víčka. Pasuje přesně, stačí ho lehce zatlačit (ideálně ze stran).


Zapojení konektorů

Pomocí krimpovacích kleští si vyrobíme čtyři dupont propojky (female to female). Délka každé bude zhruba 4 cm bez konektorů, s konektory přibližně 6 cm.

Pokud si propojky vyrábět nechcete, můžete použít hotové. Počítejte ale s tím, že uvnitř krabičky nebude tolik místa – bude nutné kablíky smotat, aby bylo možné krabičku vůbec zavřít.

MH-Z19C pinESP32 pinPoznámka
VCC5Vnapájení
GNDGNDuzemnění
TXGPIO17 (RX)přijímá data z CO₂ senzoru
RXGPIO16 (TX)posílá data do CO₂ senzoru

Po zapojení všech konektorů můžeme zavřít víčko krabičky a máme téměř vše připraveno.

Přidání senzoru do HA a nastavení

Přejdeme do Settings → Devices & Services → ESPHome. Nahoře by se mělo zobrazit nově objevené zařízení. Klikneme vpravo na ADD. Zařízení se přidá do Devices, kde můžeme kliknout na modré 1 device.


Senzor bude reportovat dvě základní hodnoty, teplotu a CO₂ v ppm. Nic víc od něj nečekejme, ale i tohle nám stačí více než dost.

Parametry CO₂ senzoru

Model No.MH-Z19C
Detection GasCO₂
Working voltage5.0±0.1V DC
Average current< 40mA (@5V power supply)
Peak current125mA (@5V power supply)
Interface level3.3 V (Compatible with 5V)
Detection Range400~5000ppm(optional)
Output signalSerial Port (UART) (TTL level 3.3V), PWM
Preheat time1 min
Response TimeT90 < 120 s
Working temperature-10 ~ 50 ℃
Working humidity0 ~ 95% RH (No condensation)
Weight5 g
Lifespan5 years
Detection GasFormulaDetection RangeAccuracy
Carbon DioxideCO₂400~2000ppm
400~5000ppm
± (50ppm+5% reading value)


Jak můžeme vidět, senzor je poměrně přesný (na domácí poměry naprosto dostačující). Kalibrace funguje následovně:

Zero Point Calibration (Kalibrace nulového bodu)

MH-Z19C/MH-Z19B senzor měří koncentraci CO₂ v jednotkách ppm (částic na milion) a pro správné měření potřebuje čas od času kalibraci – tedy nastavení „nulového bodu“, který odpovídá čistému vzduchu s 400 ppm CO₂.

Existují dva způsoby kalibrace:

Manuální kalibrace (ručně)

Pokud chcete senzor zkalibrovat ručně, musíte na pin HD přivést nízkou logickou úroveň (0V) a udržet ji alespoň 7 sekund.

Jednoduše řečeno: připojte HD pin ke GND (zem) na alespoň 7 sekund.

Než to uděláte, ujistěte se, že je senzor alespoň 20 minut zapnutý a nachází se v prostředí s čistým vzduchem (cca 400 ppm CO₂) – například venku nebo v dobře větrané místnosti. Jinak by se mohl kalibrovat na špatnou hodnotu a měřit nepřesně.

Automatická kalibrace (samokalibrace)

Senzor má také funkci automatické kalibrace, která se spouští každých 24 hodin od zapnutí. Senzor si během této doby sám určuje nulový bod podle prostředí – předpokládá ale, že se alespoň jednou denně dostane do vzduchu s běžnou hladinou CO₂ (cca 400 ppm).

Tahle funkce je fajn pro domácnosti nebo kanceláře, ale nevhodná pro skleníky, stáje, sklady a podobná místa, kde je CO₂ trvale vyšší.

V těchto případech doporučuji automatickou kalibraci vypnout (např. v ESPHome automatic_baseline_calibration: false) a provádět ruční kalibraci podle potřeby.

Jednodušší automatizace s jednou hláškou

Níže naleznete kód automatizace, která pošle notifikaci na telefon :). Automatizace jsem vám sem dal dvě, jedna je jednodušší a pošle hlášku pouze jednou, pokud je překročena mez 800ppm a druhá posílá notifikace opakovaně v 10minutových intervalech, což je dostatečně otravné na to, aby vás to donutilo vyvětrat :).

Složitější automatizace s opakovanými hláškami

Závěr

V dnešním díle jsme – jako vždy – odvedli pořádný kus práce. Máme funkční CO₂ senzor a s ním i možnost žít o něco zdravěji. Samozřejmě jen pokud se podle něj i skutečně řídíme 😉.

Příště se podíváme na senzor kouře, který nás může na dálku upozornit třeba na začínající požár.

Tak čistému vzduchu zdar!

Podobné příspěvky

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *