by

Měření vodoměru v Home Assistant: Nastavení ESPHome (díl 2/3)

Toto je druhý článek ze tří o měření spotřeby vody s využitím optického senzoru TCRT5000 připíchlým na vodoměru, a vývojové desky Wemos D1 Mini, která bude informace o proteklé vodě posílat do Home Assistantu. V předchozím článku jsme skončili u toho, že jsme měli senzor TCRT5000 uchycený na vodoměru a nastavený tak, aby se spínal s každým proteklým litrem. Nyní je na řadě tuto informaci dostat do Home Assistant.

Jak dostat impulzy od vodoměru do HA?

V minulém článku jsme použili Arduino IDE k nahrání krátkého kódu, který četl výstupy ze senzoru a vypisoval je. Pokud byste uměli programovat, tak si v Arduino IDE můžete doprogramovat všechno ostatní – připojení k WiFi, odesílání impulzů třeba přes MQTT apod.

Ale zaprvé i kdybych programovat uměl (neumím), tak by to bylo mega zbytečné práce, protože existují projekty jako ESPHome, s jejichž pomocí je nastavení, integrace, a následná správa podobných senzorů výrazně jednodušší.

ESPHome už znám! Zajímá mě jenom konfigurace senzoru.

→ Pokud už ESPHome znáte a používáte, tak můžete sjet rovnou na odstavec #konfigurace-senzoru-tcrt5000-v-esphome.

Instalace ESPHome

ESPHome pro účely flashování desek lze rozjet několika způsoby:

Osobně mám manuální instalaci na macOS, která se ovládá přes Terminál, resp. přes Příkazový řádek (cmd) ve Windows…

# Instalace ESPHome na macOS – prerekvizity: nainstalovaný Python
pip3 install esphome

A potom na serveru (na stejném, kde běží Home Assistant) ESPHome Dashboard, přes který lze desky snadno spravovat, případně rovnou vytvářet:

Dashboard doporučuju, nicméně pro účely tohoto článku se zatím obejdeme i bez něj. Pro prvotní rozjetí stačí manuální instalace ESPHome a všechno jde udělat z Terminálu (Mac)/Příkazového řádku (Windows).

Tak, ESPHome máme nainstalovaný, co dál?

Příprava ESPHome konfigurace (manuální)

Nejdříve připravíme základní konfigurační soubor, který ESPHome později využije k naflashování desky Wemos D1 Mini. Je to YAML soubor, který obsahuje:

  • základní informace (název senzoru, typ desky)
  • informace o WiFi, ke které se má připojit
  • informace o senzorech připojených k této desce: co, kde a jak mají snímat, a jak se to má odesílat do HA apod.

Pro vytvoření tohoto YAML souboru využijeme průvodce (wizard). Ten spustíme v Terminálu (Mac) nebo Příkazovém řádku (Windows):

esphome wizard vodomery.yaml

Průvodce se postupně zeptá na několik základních údajů:

  • název senzoru („node name“): třeba vodomery podle toho, co měří; nebo pradelna-sklep podle toho, kde je deska umístěná
  • čip na použité desce: ESP32/ESP8266 (tady použitý Wemos D1 Mini je ESP8266)
  • typ desky: zde d1_mini
  • údaje k WiFi: jméno sítě a heslo
  • volitelně: heslo k API; nechávám prázdné

To je vše. Průvodce na konci vyplivne soubor vodomery.yaml (ve složce, ve které jste byli v Terminálu, typicky tedy v domovském adresáři), který vypadá takto:

esphome:
  name: vodomery

esp8266:
  board: d1_mini

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: ""

wifi:
  ssid: "WIFI"
  password: "HESLO"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Vodomery Fallback Hotspot"
    password: "cwVMBRAmMeAs"

captive_portal:

Toto je základní konfigurace, se kterou se deska připojí k WiFi, a nabídne se k integraci v HA. Prozatím bez dat naměřených senzorem TCRT5000 (ty nadefinujeme za okamžik).

Naflashování ESPHome na desku Wemos D1 Mini

Teď stačí vzít Wemos D1 Mini a USB kabelem jej připojit k počítači.

Flashování desky se potom spustí příkazem:

esphome run vodomery.yaml

ESPHome se zkompiluje podle konfiguračního vodomery.yaml souboru a potom se zeptá, na jakém portu je připojen Wemos D1 Mini:

Po úspěšném nahrání ESPHome na Wemos by se deska měla připojit k WiFi:

V tento moment už by se deska také měla objevit v Home Assistant (Settings → Integrations), připravená k integraci:

Rovnou ji můžeme přidat kliknutím na Configure, a integrovat ji do HA. Senzor ale v tento moment nebude mít žádné entity (žádné výstupy ze senzoru – protože jsme zatím žádné nedefinovali):

Konfigurace senzoru TCRT5000 v ESPHome

V předchozím článku jsme senzor nastavili tak, aby při otáčejícím se litrovém kolečku na vodoměru přepínal digitální výstup mezi HIGH a LOW, a toho využijeme při definování senzoru v rámci konfigurace ESPHome, tj. při úpravě souboru vodomery.yaml, který jsme vytvořili o pár kroků zpět.

TCRT5000 může být k Wemos D1 Mini připojený už jen třemi vodiči: +, -, a D0. A0 můžeme odpojit, nebude už potřeba.

Otevřeme si tedy konfigurační soubor (vodomery.yaml), a na jeho konec (tj. typicky za řádek captive_portal:) přidáme nastavení senzoru TCRT5000.

Pro začátek věnujte největší pozornost řádku pin number:, kde je potřeba definovat pin na Wemos D1 Mini, ke kterému je připojen D0 výstup z optického senzoru TCRT5000.

Poznámka: V ESPHome lze pin definovat jeho názvem, tak, jak je natištěný na desce. V tomto případě tedy třeba D6. ESPHome ví, s jakou deskou pracujeme (d1_mini), takže i bude vědět, že D6 je GPIO 12 (viz schéma; zatímco v Arduino IDE bylo nutné ten stejný pin definovat explicitně jako 12, viz minulý díl).

# TCRT5000 na litrovém kolečku
sensor:
  - platform: pulse_meter
    name: "Vodoměr studna - aktuální průtok"
    pin:
      number: D6 # pin na Wemos D1 Mini, ke kterému je připojen D0 výstup z TCRT5000
      mode:
        input: true
    internal_filter_mode: pulse
    unit_of_measurement: "l/min."
    accuracy_decimals: 0
    internal_filter: 100ms
    timeout: 1min
    icon: "mdi:gauge"
    total:
      name: "Vodoměr studna - impulzy po 1 litru"
      device_class: water
      state_class: total_increasing
      unit_of_measurement: "L" 
      icon: "mdi:water-pump"

Vysvětlivky:

  • sensor – definujeme nějaký senzor, který se následně objeví jako entita v HA (info)
  • platform – počítáme pulzy, takže pulse_meter (info)

Konfigurační soubor uložíme, a desku můžeme znova přeflashovat, stejně jako předtím:
esphome run vodomery.yaml

Po dokončení opět uvidíme výpis logu výstup z desky, a mj. i to, že už snímáme pulzy (pokud to zkoušíte u počítače, daleko od vodoměru, tak stačí před senzorem mávat kouskem papíru):

A tyto informace se rovnou jako entita objeví v HA pod integrací ESPHome → vodomery, kde budeme mít dva nové senzory: aktuální průtok, a počet litrů, které senzor TCRT5000 nasnímal od „nabootování“ (zapnutí) desky Wemos D1 Mini:

První senzor, Průtok je vypočítaný průměr, který se začne zobrazovat poté, co protečou minimálně dva litry za méně než minutu (viz timeout: 1min v konfiguraci ). Pokud za >60 vteřin není zaznamenán žádný impulz, spadne zpět na nulu.

A druhý senzor (u mě pojmenovaný impulzy po 1L) zobrazuje počet litrů, které ESPHome napočítal od spuštění desky. To znamená, že při každém resetování Wemosu se tento údaj zresetuje na nulu (což ničemu nevadí, zmiňuji to proto, abyste věděli, jak se to bude chovat).

Trvalé ukládání historie spotřeby v Home Assistant

Co dál? Naměřené údaje z této entity (Impulzy po 1L) se zatím nikde trvale neukládají. Na detailnější konfiguraci v Home Assistantu se podíváme v dalším dílu, nicméně ještě alespoň senzor přidáme do panelu Energy.

V Home Assistant běžte do Settings → Dashboard → Energy → Water Consumption → Add Water Source. Zde by mělo jít zvolit náš senzor jako entita sledující spotřebu vody:

V tento okamžik už se nám data dlouhodobě ukládají do databáze přímo v Home Assistantu, a na dashboardu Energy můžeme začít sledovat průběžnou spotřebu vody po hodinách, dnech, měsících a rocích:
Důležitá poznámka: Pokud někdy odeberete z Energy tuto entitu (nebo ji jenom přejmenujete), tak z grafů zmizí naměřená data. Pokud si tedy prvně konfigurujete desku s názvem d1_wemos-pokus-voda nanečisto s lazy pojmenovaným senzorem tcrt5000-senzor_vody_test3_studena; s tím, že v budoucnu to hezky přejmenujete na sklep-pradelnasensor.studna_vodomer, tak opatrně. Takto se to alespoň chovalo ve verzi HA 2023.2.5. Předpokládám, že do budoucna to bude ošetřené lépe (ostatně už by mělo být, ale dle mojí zkušenosti ne úplně), ale teď platí zálohovat, zálohovat a zálohovat, a pokud možno pojmenovávat hezky už od začátku. :D

Co dál?

Home Assistant už teď sleduje a ukládá spotřebu vody, příště už se jen podíváme na to, jak si vytvořit nějaký vlastní podrobnější přehled, který bude zobrazovat spotřebu vody za den, měsíc, rok apod.

Write a Comment

Comment

  1. Snažím se připojit k jednomu Wemos D1 připojit tři vodoměry. Lze použít libovolné “Dn” piny?

  2. Myslim si, ze jo. Ne vsechny D piny jsou uplne stejne, ale pro tyto potreby by mely jit pouzit vsechny. Sam mam pripojene taky dva vodomery a jeden teplomer.

  3. Pokusim se dodelat, mam to rozepsane uz dva roky – z poloviny hotove. Ted jsem nekomu pomahal rozbehat to stejne a trosku me to koplo, ze jsem to sam do konce nedopsal a uz si nepamatoval uplne vsechno co bylo v HA kde potreba doklikat. :D

  4. Čau čau bude pokračování? Dostal jsem se s ESP až do měření energií ale tam se to chová nějak uplně ne podle představ :)

  5. No… rad bych. Mam to rozepsane uz dlouho :D Nicmene pokud ESPHome posila 1 pulz – 1 litr, tak zakladni funkcionalita by mela fungovat uz bez dalsich zasahu po pridani do Energii. V tom zaverecnem clanku jsem chtel mrknout potom jeste na vytvoreni nejakych helperu na cenu a custom entit, ktery by uz jen treba zobrazovaly cenu spotrebovane vody za nejake obdobi. Duvod proc jsem clanek poradne nedodelal, ze i ja sam tohle mam uz hotove jen tak z pulky. 😅