Ustatnia modyfikacja 1 stycznia 2024 przez Olek

Ponad rok-dwa lata temu wykonałem urządzenie które pozwala na zdalny odczyt wskazań wodomierzy Apator1. Użyłem do tego celu modułu ESP8266 Wemos D1 Mini podłączonego do modułu radiowego CC1101 pracującego na częstotliwości 868MHz. Nakładka licznika wysyła informacje korzystając z protokołu M-BUS2 w wersji radiowej (wireless) WM-BUS. Korzystając z biblioteki wmbusmeters na Github-ie3 stworzyłem własny kod C++ który zaimplementowałem do ESP8266 za pomocą pakietu PlatformIO4 i zaimplementowanego z edytorem VSC5. Komunikacja z HA odbywała się za pośrednictwem protokołu MQTT6. To wszystko wykonałem jeszcze przed tym jak w Home Assistant nie było specjalnej karty zużycia wody w sekcji Energia.

Po kilku miesiącach na forum ArturHome.pl (bardzo dobrego zresztą) napotkałem podobny wątek7 na temat podobnego rozwiązania i podzieliłem się moim. To chyba mocno przyczyniło się do postępu prac. Wynikiem czego powstało bardzo fajna integracja8 na bazie już popularnego i wygodnego dodatku do HA czyli ESPHome9.

Przed kilkoma dniami też się wreszcie przesiadłem na te rozwiązanie. Dążę do tego aby wszystkie elementy zbudowane na ESP były zintegrowana poprzez ESPHome. Daje to wygodną i przejrzystą kontrolę nad tymi elementami.

esphome:
  name: licznik-wody
  friendly_name: licznik-wody


esp8266:
  board: d1_mini


# Enable logging
logger:
#  level: INFO
  level: DEBUG
#  level: VERBOSE
#  level: VERY_VERBOSE
# Enable Home Assistant API
api:
  encryption:
    key: "xxx"

ota:
  password: "xxx"


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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Licznik-Wody Fallback Hotspot"
    password: "xxx"


  manual_ip:
    static_ip: 192.168.x.xxx
    gateway: 192.168.x.x
    subnet: 255.255.255.x  
    dns1: 192.168.x.x  
      
web_server:
  port: 80

captive_portal:
    

external_components:
  - source: github://SzczepanLeon/esphome-components@main
    components: [ wmbus ]    

time:
  - platform: sntp
    id: time_sntp    

wmbus:
  mosi_pin: GPIO13
  miso_pin: GPIO12
  clk_pin:  GPIO14
  cs_pin:   GPIO2
  gdo0_pin: GPIO4
  gdo2_pin: GPIO5

  log_unknown: True

sensor:
  - platform: wmbus
    meter_id: 0X02198188
    type: apator162
    key: "00000000000000000000000000000000"
    add_prefix: False
    lqi:
      name: "LQI główny"
    rssi:
      name: "RSSI główny"
    total_water_m3:
      name: "glowny"

  - platform: wmbus
    meter_id: 0X02728389
    type: apator162
    key: "00000000000000000000000000000000"
    add_prefix: False
    lqi:
      name: "LQI ogrodowy"
    rssi:
      name: "RSSI ogrodowy"
    total_water_m3:
      name: "ogrodowy"      


text_sensor:
  - platform: wmbus
    name: "Text debug for Apator 16-2"      
    
    
#
# https://github.com/SzczepanLeon/esphome-components
#
# https://forum.arturhome.pl/t/komponent-wm-bus-do-esphome-szczepanleon-wersja-2-x-watek-ogolny/9117/69
#
#
#  ***********************  Podłączenie fizyczne modułów ****************************************
#
#                                    +-----------------+| 
#                                    |    |  |  |  |    |
#                              [RST] |o                o| [TX ] [GPIO1]
#                     [ ADC1 ] [ A0] |o                o| [RX ] [GPIO3]
#  4 fiolet           [GPIO16] [ D0] |o   W E M O S    o| [D1 ] [GPIO5]   6 zielony
#              [ SCK] [GPIO14] [ D5] |o                o| [D2 ] [GPIO4]   7 żółty
#  5 niebie    [MISO] [GPIO12] [ D6] |o   D1 MINI      o| [D3 ] [GPIO0]
#  3 biały     [MOSI] [GPIO13] [ D7] |o                o| [D4 ] [GPIO2]   8 pomar
#              [ SS ] [GPIO15] [ D8] |o                o| [GND]           2 szary
#  1 czarny                    [3v3] |o                o| [5V ]
#                                      |                |
#                                      |----|usb|-------|
#
#
#                                    +---------------------+
#  1 czarny                  [ VCC]  |o                    |                 
#  2 szary                   [ GND]  |o                    |                 
#  3 biały                   [MOSI]  |o                   o| [GND]
#  4 fiolet                  [SCLK]  |o     CC1101        o| [ATN] /\/\/\/\/               
#  5 niebie                  [MISO]  |o                   o| [GND]                
#  6 zielony                 [GDO2]  |o                    |                 
#  7 żółty                   [GDO0]  |o                    |                 
#  8 pomar                   [ CSN]  |o                    |                 
#                                    +---------------------+
#
#    

Dorobiłem tylko mocowanie do tych elementów tak aby bezpiecznie przymocować do mojej rozdzielni.

Przy okazji już wspomnę, że mam jeszcze jeden projekt który korzysta z tego samego zestawu hardware. Mianowicie komunikacja ze stacją pogodową Bresser 10. Mam działający produkt na czystym C++ i MQTT. Jest na etapie przejścia do ESPHome, jak się uda to na pewno się tym tu podzielę.

  1. https://www.apator.com/nasze-rozwiazania/woda-i-cieplo/system-zdalnego-odczytu-mediow/system-radiowy/at-wmbus-16-2-apt-o3a-1 ↩︎
  2. https://pl.wikipedia.org/wiki/M-Bus ↩︎
  3. https://github.com/wmbusmeters/wmbusmeters ↩︎
  4. https://platformio.org/ ↩︎
  5. https://code.visualstudio.com/ ↩︎
  6. https://en.wikipedia.org/wiki/MQTT ↩︎
  7. https://forum.arturhome.pl/t/apator-izar-at-wmbus-16-2-odczyt-wodomierza-esphome-cc1101/7197/12 ↩︎
  8. https://github.com/SzczepanLeon/esphome-components ↩︎
  9. https://esphome.io/ ↩︎
  10. https://www.bresser.de/pl/bresser-bresser-2/Stacje-meteorologiczne/Centrum-pogodowe-BRESSER-5-w-1-COMFORT-z-kolorowym-wy-wietlaczem.html ↩︎

Dodaj komentarz