blog.vyoralek.cz

Centrum chytré domácnosti – HomeAssistant (Hass.io) – 5 část – Wemos D1 + BME280 a SHT31

V další části série o HomeAssistentovi si ukážeme jak využít sensory BME280 a SHT31 ve spojení s Wemos D1 mini a firmwarem Sonoff-Tasmota.

Co budeme potřebovat

  1. nepájivé pole (breadboard) – cca. $1 AliExpress
  2. vodiče samec-samec – 4 žíly – cca. $0,7 AliExpress
  3. desku Wemos D1 mini s čipem ESP8266 – cca. $2.25 AliExpress
  4. sensor BME280 – měření teploty, vlhkosti a tlaku – cca. $2.18 AliExpress
  5. nebo sensor SHT31 – měření teploty a vlhkosti – cca. $3.7 AliExpress
  6. jakýkoliv USB kabel s USB nabíječkou (např. i mobilní nabíječku)

Pokud si ceny jednotlivých součástek sečteme tak v případě použití BME280 se dostaneme na cenu cca $6.13 (135Kč) a nebo $7.65 (157kč) se senzorem SHT31.

Na všechny tři elektronické součástky bude potřeba napájet pin headery a k tomu se nám bude hodit ještě pájka. Pokud ji ještě nemáte tak doporučuji přibalit za cca. 90kč ruční Vastar 60W Electric Soldering Iron,

Schéma zapojení

Zapojení pro oba uvedené sensory bude naprosto stejné, jelikož používají shodnou komunikaci přes I2C. Můžeme na nich najít tyto piny:

  • VIN – napájení pin – můžeme použít jak 5V tak i 3.3V, dle možnostech desky kam sensor napojujeme
  • GND – uzemnění pro napájení a logiku
  • SDA – datová linka (DA = data access) pro I2C komunikaci
  • SCL – časovač (CL = clock line) pro I2C komunikaci

V případě Wemos D1 Mini máme pevně dány pouze piny pro napájení a uzemnění. Samotné SDA a SCL můžeme podle potřeby zapojit téměř kamkoliv (kromě RX, TX). My použijeme například pin D3 a D4.

Zapojení pak bude vypadat takto:

Sensor BME280 nebo SHT31Wemos D1 Mini
VIN3.3V
GNDG
SDAD3
SCLD4

nebo schématicky:

V reálu to pak vypadá nějak takto – barevné vodiče jsou stejně jako na schématu výše.

Firmware

Máme zde v podstatě dvě možnosti. Buď si napíšeme kompletně vlastní aplikaci za použití knihoven po použité senzory a desku a nebo použijeme již hotové řešení. Pro tento článek si vybereme hotové řešení a použijeme již hodněkrát zmíněny Sonoff-Tasmota firmware.

Postup je velice podobný jako v případě nahrávání do Sonoff produktů. Popíšu tady tedy spíše jen specifika pro Wemos D1 Mini a pokud byste byli ztracení tak se koukněte na předchozí článek.

Alternativa – už nějakou je k dispozici firmware ESPHome, který je zejména při integraci na HomeAssistent mnohem přímočarejší – doporučuji tak kouknout i na článek víceméně se stejnými sensory ale pro ESPHome.

Nastavení Visual Studio Code + PlatformIO

Tentokráte úplně přeskočím konfiguraci pro Arduino, jelikož ve Visual Studio Code s pluginem PlatformIO to bude více přímočaré.

Nejprve si do souboru platformio.ini přidáme novou konfiguraci pro Wemos D1 mini:

[env:wemos-d1-mini]
platform = ${common.platform}
framework = ${common.framework}
board = d1_mini
board_build.flash_mode = ${common.board_build.flash_mode}
board_build.f_cpu = ${common.board_build.f_cpu}
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=cs-CZ
monitor_speed = ${common.monitor_speed}
upload_port = ${common.upload_port}
upload_resetmethod = ${common.upload_resetmethod}
upload_speed = ${common.upload_speed}
extra_scripts = ${common.extra_scripts}

Původně jsem měl konfiguraci z Wiki Tasmoty, ale jak jsem byl upozorněn ta už z nějakého důvodu nefunguje. Tuhle novou konfiguraci jsem v rychlosti vyzkoušel a mělo by to fungovat vpořádku.

Mezi PlatformIO tasky najdeme nově task s názvem env:wemos-d1-mini.

Parametry firmware Sonoff-Tasmota

Před samotnou kompilací a nahráním doporučuji ještě změnit v souboru my_user_config.h alespoň následující:

  • #define STA_SSID1 – název WiFi sítě
  • #define STA_PASS1 – heslo WiFi sítě
  • a odkomentovat #define MY_LANGUAGE pro zapnutí češtiny

Pro jistotu můžeme zkontrolovat, že máme odkomentované následující řádky:

  • #define USE_BMP – pro podporu sensoru BMP280
  • #define USE_SHT3X – pro podporu sensoru SHT31

Nahrání firmware

Nyní už můžeme kliknout na Upload a firmware se nám zkompiluje pro nahraje na Wemos D1 Mini – to musíme mít už připojené přes USB.

Po připojení ke konzoli bychom už měli vidět IP adresu na které je sonoff připojen.

--- Miniterm on /dev/cu.usbserial-1A150  115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
00:00:00 Projekt sonoff Sonoff (Topic sonoff13, Záložní DVES_2F8618, GroupTopic sonoffs) Verze 6.4.0(sonoff)-2_4_2
00:00:00 WIF: Připojování k AP1 brloh v módu 11N jako sonoff13-1560...
00:00:04 WIF: ...připojeno
00:00:04 DNS: Inicializovaný
00:00:04 HTP: Aktivní Web server sonoff13-1560.local na IP adrese 10.2.1.88
00:00:06 MQT: Připojování...
00:00:06 MQT: ...připojeno
00:00:06 MQT: tele/sonoff13/LWT = Aktivní (Zachováno)
00:00:06 MQT: cmnd/sonoff13/POWER =
00:00:06 MQT: tele/sonoff13/INFO1 = {"Module":"Generic","Version":"6.4.0(sonoff)","FallbackTopic":"DVES_2F8618","GroupTopic":"sonoffs"}
00:00:06 MQT: tele/sonoff13/INFO2 = {"WebServerMode":"Admin","Hostname":"sonoff13-1560","IPAddress":"10.2.1.88"}

Pokud byste měli nějaký problém s nahráním firmware přes Visual Studio Code, tak je možné použít i EspTool o kterém jsem podobněji psal zde.

Ve zkratce – přepneme se do adresáře .pioenvs/wemos-d1-mini a upload spustíme pomocí příkazu:

> esptool.py write_flash 0x00000 firmware.bin
esptool.py v2.5.1
Found 4 serial ports
Serial port /dev/cu.usbserial-1A150
Connecting.....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 2c:3a:e8:2f:86:18
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0340
Compressed 535136 bytes to 365968...
Wrote 535136 bytes (365968 compressed) at 0x00000000 in 35.4 seconds (effective 120.8 kbit/s)...
Hash of data verified.

Nastavení Sonoff-Tasmota

Nyní již nám firmware Sonoff-Tasmota běží na Wemos D1 Mini s čipem ESP8266 a můžeme se na něj pomocí IP adresy připojit do webového rozhraní. V našem konkrétním příkladě např. do webového prohlížeče zadáme:

http://10.2.1.88

Půjdeme nejprve do nastavení modulu, kdy jako typ modulu vybereme 18 Generic a konfigurace GPIO bude následující:

  • D3 neboli GPIO0 – 06 I2C SDA
  • D4 nebo GPIO4 – 05 I2C SCL

Použít můžeme i jiné GPIO podle libosti (kromě RX a TX), jen je potřeba správně nastavit I2C SDA a SCL a pak tyto piny správně napojit na sensor.

Wemos D1 Mini se Sonoff firmware - nastavení modulu
Wemos D1 Mini se Sonoff firmware – nastavení modulu

Ve webovém rozhraní a hlavním menu bychom pak měli vidět automaticky jednotlivé měřené hodnoty s aktuálními hodnotami:

Hodnoty s dvou senzorů BHE280 a SHT31 v Sonoff firmwaru

Jak můžete vidět vidíme data s obou sensorů zároveň. Je to díky tomu, že oba sensory používají I2C komunikaci a zároveň mají jinou adresu.

Wemos D1 mini s paralelním zapojením BME280 a SHT31
Wemos D1 mini s paralelním zapojením BME280 a SHT31

BME280 v základu používá adresu 0x77, kdežto SHT31 0x44. Kdybychom chtěli mít zapojené dva sensory stejného typu zároveň je potřeba na jednom z nich adresu změnit – většinou pomocí přerušení na desce (pak je pro BME280 0x76 a 0x45 pro SHT31).

Samotný JSON soubor produkovaný Sonoff-Tasmota a který je posílán prostřednictvím MQTT přes topic tele/<VAS_PROJEKT>/SENSOR má následující strukturu:

{
    "Time": "2019-01-06T14:57:45",
    "BME280": {
        "Temperature": 23.4,
        "Humidity": 38.2,
        "Pressure": 992.7
    },
    "SHT3X-0x44": {
        "Temperature": 23.8,
        "Humidity": 41.5
    },
    "PressureUnit": "hPa",
    "TempUnit": "C"
}

Integrace do Home-Assistant

Jelikož máme k Wemos D1 mini připojené jen sensory, které tak přidáme jako sensory i na straně Home-Asisstentu.

Nejprve si však ve webovém rozhraní Sonoff-tasmota zkontrolujeme zda máme správně nastavený MQTT server a nastavíme si podle potřeby topic, ve kterém budou údaje posílány:

Nastavení MQTT topicu pro Wemos D1 mini

Já jsem si pro tuto ukázku zvolil popisně název wemos-d1-mini ať je jasné odkud data proudí a do konfigurace Home-Asisstenta a souboru configuration.yaml přidáme podle JSON struktury výše všechny sensory:

    - platform: mqtt
      name: "room1_table_bme280_temp"
      state_topic: "tele/wemos-d1-mini/SENSOR"
      value_template: ' {{ value_json["BME280"]["Temperature"] }}'
      unit_of_measurement: "°C"
      device_class: temperature
    - platform: mqtt
      name: "room1_table_bme280_humid"
      state_topic: "tele/wemos-d1-mini/SENSOR"
      value_template: ' {{ value_json["BME280"]["Humidity"] }}'
      unit_of_measurement: "%"
      device_class: humidity
    - platform: mqtt
      name: "room1_table_bme280_pressure"
      state_topic: "tele/wemos-d1-mini/SENSOR"
      value_template: ' {{ value_json["BME280"]["Pressure"] }}'
      unit_of_measurement: "hPa"
      device_class: pressure
    - platform: mqtt
      name: "room1_table_sht31_temp"
      state_topic: "tele/wemos-d1-mini/SENSOR"
      value_template: ' {{ value_json["SHT3X-0x44"]["Temperature"] }}'
      unit_of_measurement: "°C"
      device_class: temperature
    - platform: mqtt
      name: "room1_table_sht31_humid"
      state_topic: "tele/wemos-d1-mini/SENSOR"
      value_template: ' {{ value_json["SHT3X-0x44"]["Humidity"] }}'
      unit_of_measurement: "%"
      device_class: humidity   

Jelikož máme opět v názvech spíše systémová jména, která však nechceme zobrazit v Home-Assistentovi připravíme si přejmenování v souboru customize.yaml

sensor.room1_table_bme280_temp:
  friendly_name: "Teplota"

sensor.room1_table_bme280_humid:
  friendly_name: "Vlhkost"  

sensor.room1_table_bme280_pressure:
  friendly_name: "Tlak" 

sensor.room1_table_sht31_temp:
  friendly_name: "Teplota"

sensor.room1_table_sht31_humid:
  friendly_name: "Vlhkost"  

A konečně poslední úprava nás čeká v seskupení položek, které patří logicky k sobě prostřednictvím group.yaml:

Home-Assistant zrestartujeme a všech pět údajů z dvou sensorů vidíme hezky na dashboardu:

Nová sensorová data v Home-Assistentovi

I když je tento návod pro kombinaci Wemos D1 Mini s BME280 a SHT31 je možné ho použít i s NodeMCU a sensory podporovanými v Sonoff-Tasmota.

Stejně jako v přechozích dílech jsem kompletní konfigurační soubory uložil na Github. Můžeme si tak projít celou konfiguraci pěkně pohromady za všech díly.

Dohromady s předchozí lampičkou už tak máme v Home-Assistentovi pěknou řádku sensorů a jeden spínač. Tím ale zdaleka možnosti nekončí a seriál bude pokračovat dále 🙂

Dashboard s prvky z posledních dvou článků

5 komentářů

Napsat komentář

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

  • Čau, super web a super návody. Neměl by si nějaký návod jak rozšířit wemos o spínání namísto mikrospinačů v zařízení a zjištění stavu, třeba z led co jsou na zařízení? Chtěl bych takto nějak napojit zvlhčovač vzduchu. Díky

  • Ahoj, děkuji za článek , šlo by zprovoznit tento jednoduchý měřič teploty s čidlem DS18B20? který taky podporuje Tasmota jelikož je ve vypínačích Sonoff TH10/TH16? a druhá otázka šlo by popřípadě jak dlouho by vydržel wemos ,který by byl napájen z baterie popřípadě jaký (2x AA baterie)? děkuji

    • Ahoj. K prvnímu dotazu – určitě ano šlo by a ano tento je přesně v Sonoff TH10/16. Navíc podpora je i v ESPHome, takže je možné si vybrat Sonoff-Tasmotu nebo ESPHome podle potřeby. Co se týče spotřeby je to pro mě poměrně složité obecně odpovědět. Záleží na použitím firmware a co všechno bude připojeno. Nicméně obecně WiFi (tedy i Wemos D1 mini) není úplně ideální na provoz přes baterii. Pokud byste chtěl napájet přes baterku tak doporučuju se kouknout spíše po ZigBee nebo Z-Wave. Na druhou stranu pro mě tedy je to pole neprobádání. U Zigbee používám jen hotové produkty a netuším zda je něco jako Wemos D1 pro Zigbee 🙂 Třeba někdo napoví.

  • Dobrý den, mohl byste prosím doplnit obsah souboru group.yaml. Na vebu je prázdný řádek.
    Děkuji

%d blogerům se to líbí: