Komponent wM-Bus do ESPHome (SzczepanLeon) - liczniki energii elektrycznej

mod-edit: Ten wątek jest dedykowany dla liczników energii elektrycznej.

Tematy ogólne proszę poruszać w źródłowym wątku
Na pozostałe rodzaje liczników zostały też wydzielone osobne wątki podlinkowane w powyższym.


Cześć @_Szczepan

Właśnie odpaliłem ESP ze skonfigurowanym klientem. Lecz z poziomu dodatku wmbusmeters widzę tylko telegramy z IZARa, dlatego chciałem się zapytać czy jestem w stanie odebrać telegramy z innych typów liczników które nie są wspierane przez przez Twój projekt, ale jest mozliwośc obsługi z poziomu wmbusmeters? Chodzi mi o licznik Ami Plus od Taurona.

Jesteś wstanie odebrać telegramy z wszystkiego co nadaje na 868,95 MHz z modem T1 (tak CC1101 jest ustawiony w komponencie/bibliotece).

Czy AMIPlus nadaje ramki T1 to nie wiem, z informacji w internecie, wygląda że tak (ale są szyfrowane == musisz znać klucz). Tutaj jest obiecujący dokument https://amiplus.tauron-dystrybucja.pl/-/media/offer-documents/amiplus/amiplus-modu-wireless-m-bus.ashx

Jak odbierzesz ramkę daj znać. Przeczytaj punkt 4. Domyślnie wMBus jest wyłączony. Musisz do Taurona napisać.

Super, dzięki bardzo za info! Tak wiem wiem, HANa aktywowałem jakiś czas temu, więc juz posiadam klucz, może dam trochę bliżej odbiornik i zobaczymy :slight_smile:

Daj znać czy coś odebrało.

Hmm widzę, że brama garażowa to chyba zbyt duża przeszkoda, udało mi się odebrać jeden telegram, akurat wtedy gdy wyjeżdżałem autem. Oto telegram:
4e4401068240088602027a000040052f2f0e035131250200000B2B180200066d004915ff21400c78824008860BaBc8fc100000000e833c3814000000000BaB3c0000000afdc9fc0135022f2f2f2f2f

EDIT:

Co ciekawe to ramka z mqtt wygladąda tak:

{
    "media": "electricity",
    "meter": "amiplus",
    "name": "energy_from_amiplus",
    "id": "86084082",
    "total_energy_consumption_kwh": 2253.151,
    "current_power_consumption_kw": 0.218,
    "total_energy_production_kwh": 1.438,
    "current_power_production_kw": 0,
    "voltage_at_phase_1_v": 235,
    "device_date_time": "2023-01-31 21:09:00",
    "timestamp": "2023-01-31T20:09:01Z",
    "device": "rtlwmbus[cmd_0]",
    "rssi_dbm": -63
}

A więc rssi=-63, to tak średnio, lecz co mnie jeszcze zastanawia to "total_energy_production_kwh": 1.438, gdzie ja nie mam fotowoltaiki…

1 polubienie

No jest to OBIS 2.8.0 więc coś oddajesz :wink:
Sprawdź czy ta wartość się zmienia. Jak tak to bym wyjaśniał z Tauronem. Jak nie to osobiście bym olał.

Hejka!
postawiłem dziś D1 mini + CC1101 i działa bez zarzutu (może trochę czułość niska, ale szczególnie to nie przeszkadza w moim przypadku) - zasilanie normalnie z USB, żadnych udziwnień (no może tyle że zlutowałem nie na kabelku a na płytce prototypowej do D1 żeby mieć “moduł” radia 868.

Czy mogę prosić o dodanie sterownika elf do listy? wmbusmeters czyta aż miło:

[22:31:44][D][wmbus:087]: Meter ID [0x00041459] RSSI: -71 dBm not found in configuration T: 4D4401865914040015377247338101010640040C040020026CFA210E0A6503736009000C13857073030A5A42040A5E5503
440EA659010001FD0C010A6545240AFD4737030A270819047F00000002 (78)
[22:32:12][D][wmbus:087]: Meter ID [0x00041639] RSSI: -76 dBm not found in configuration T: 4D440186391604001537725521810101064004B2040020026CF2210E0A5221833604000C13645241020A5A46040A5E1004
440E65A6000001FD0C010A6502240AFD4736030A270819047F00000002 (78)
[22:33:47][D][wmbus:087]: Meter ID [0x00041459] RSSI: -73 dBm not found in configuration T: 4D4401865914040015377247338101010640040D040020026CFA210E0A6503736009000C13857073030A5A42040A5E5503
440EA659010001FD0C010A6565240AFD4737030A270819047F00000002 (78)

Pozdrawiam ( i dziękuję za super projekt!)

1 polubienie

Moze czytasz licznik sąsiada :grin:

@Scorcerer @jgrycz Spróbujcie z wersją 1.3.8, czy poprawnie dekoduje telegramy itp. Coś na szybko w nocy dodałem.

dzięki @_Szczepan, wiesz co ok 16 wrzucałem soft, dodałem też licznik energii bo widziałem, że dodałeś amiplus! Wielkie dzięki!

Jak nie miałem auta w garażu(???), to byłem w stanie odebrać jakieś ramki co jakiś czas ale nadal jakość sygnału była bardzo słaba.
Po tym jak zobaczyłem, że coś odbieram to dodałem licznik bezpośrednio z poziomu ESP, lecz niestety nie byłem w stanie zdekodować telegramu i waliło errorem, a w ciągu dnia dostawałem dość sporo takich komunikatów lecz teraz jest cisza i nie mam jak skopiować logów.

Dlatego jutro będę monitorował sytuację i wrzucę jak się coś pojawi.

Edit:

Ooo udało mi się coś odebrać:) dzięki @_Szczepan ! Lecę postawić Ci kawę!

Edit 2:
Po całym dniu pracy sytuacja wygląda jak na poniższym obrazku:

Bez problemu byłem w stanie odebrać telegram co 3-4 minuty (przy słabej jakości sygnału), dopóki nie wjechałem autem do garażu, widocznie 1,5 Tony zelaza I blachy wpływa na odbiornik, zadałem kumplowi po telekomunikacji to pytanie, zobaczymy co odpowie, lecz tymczasem jedzie do mine dedykowana antenna.

@_Szczepan wstyd mi prosić, ale byłaby opcja dodania tych 2 pol: current_power_consumption_kw I voltage_at_phase_1_v ?

1 polubienie

Bajlando! Działa znów od strzała, co prawda jednostka jest niezbyt i wypluwa tylko jedną wartość a nie cały datagram, ale historia już się tworzy i spróbuję na weekendzie dodać więcej (jak mi się uda to stworzę ci MR).
Bardzo, BARDZO dziękuję :slight_smile:

Multi-sensory z jednego telegramu czekają na refaktoryzację kodu.
edit - 2023.04.29
Dodałem wersję 2.0.0 z obsługą tych pól i multi-sensorów.

Powinno wypluwać w kWh (wartość, a jednostkę musisz nadpisać w yamlu - było już w wątku).
Co do jednej wartości to niestety tak z obecnym kodem jest - chcesz więcej to wysyłaj telegram do wmbusmeters’a i potem po np. mqtt do HA.

Możesz mi podpowiedzieć jak w wersji 2.xxx
dodać offset
filters:
offset: -247.466

Powinno tak samo sie dodawac.
To jest atrybut sensora. Wiec w 2.x musi byc o poziom nizej (pod total_water_m3).

Offset jest ok,
A co z nazwami sensorów dodaje mi przed nazwą nr wodomierza
0x61085 ESP_wodomierz_
Musi tak być?

Nie musi tak byc:

Dziękuję
Działa jak natura chciała :slight_smile:
Super praca

1 polubienie

A mi nie odczytuje licznika wody i nie działa mimo zmian w yaml do wersji 2.0, kompilacji i wgraniu
Konfigurcja jak poniżej

esphome:
  name: wodomierz
  friendly_name: Wodomierz

esp8266:
  board: nodemcuv2

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

# Enable logging
logger:
 level: DEBUG

time:
 - platform: sntp
   id: time_sntp

# Enable Home Assistant API
api:
  encryption:
    key: "g6rdTxkkmj7ggMsBrqzWLShM0VK7r0aY6MlXYFUEUfU="

ota:
  password: "e04233b0acb1fe1564125236727eba12"

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

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

captive_portal:

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

  led_pin: GPIO0
  led_blink_time: "1s"

  clients:
    - name: "wmbusmeters"
      ip_address: "10.0.0.1"
      port: 7227


sensor:
 - platform: wmbus # pierwszy licznik
   meter_id: 0x21319041
   type: izar
   lqi:
     name: "Moj licznik wody 45"
   rssi:
     name: "My ww45"
   total_water_m3:
     name: "Stan licznika wody 45"
     accuracy_decimals: 3
#    unit_of_measurement: "m3" #opcjonalnie, np. w przypadku liczników prądu
#    filters: 
 - platform: wmbus # drugi licznik
   total_water_m3:
      name: "Stan licznika wody 43"
   meter_id: 0x213151E4
   type: izar
 - platform: wmbus # trzeci licznik
   total_water_m3:
     name: "Stan licznika wody 47"
   meter_id: 0x4140F00D
   type: izar

log otrzymuje taki:

INFO Reading configuration /config/esphome/wodomierz.yaml...
INFO Updating https://github.com/SzczepanLeon/esphome-components.git@main
INFO Detected timezone 'Europe/Warsaw'
INFO Generating C++ source...
INFO Compiling app...
Processing wodomierz (board: nodemcuv2; framework: arduino; platform: platformio/espressif8266 @ 3.2.0)
--------------------------------------------------------------------------------
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
Dependency Graph
|-- ESPAsyncTCP-esphome @ 1.2.3
|-- ESPAsyncWebServer-esphome @ 2.1.0
|   |-- ESPAsyncTCP-esphome @ 1.2.3
|   |-- Hash @ 1.0
|   |-- ESP8266WiFi @ 1.0
|-- DNSServer @ 1.1.1
|-- ESP8266WiFi @ 1.0
|-- ESP8266mDNS @ 1.2
|-- noise-c @ 0.1.4
|   |-- libsodium @ 1.10018.1
|-- wMbus-lib @ 1.1.1+sha.da2558f
|   |-- SPI @ 1.0
|   |-- SmartRC-CC1101-Driver-Lib @ 2.5.7
Compiling /data/wodomierz/.pioenvs/wodomierz/src/main.cpp.o
Linking /data/wodomierz/.pioenvs/wodomierz/firmware.elf
RAM:   [=====     ]  45.9% (used 37640 bytes from 81920 bytes)
Flash: [=====     ]  51.3% (used 536121 bytes from 1044464 bytes)
Building /data/wodomierz/.pioenvs/wodomierz/firmware.bin
esp8266_copy_factory_bin(["/data/wodomierz/.pioenvs/wodomierz/firmware.bin"], ["/data/wodomierz/.pioenvs/wodomierz/firmware.elf"])
========================= [SUCCESS] Took 24.59 seconds =========================
INFO Successfully compiled program.
INFO Resolving IP address of wodomierz.local
INFO  -> 192.168.10.250
INFO Uploading /data/wodomierz/.pioenvs/wodomierz/firmware.bin (540272 bytes)
INFO Compressed to 377414 bytes
Uploading: [============================================================] 100% Done...

INFO Waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from wodomierz.local using esphome API
WARNING Can't connect to ESPHome API for wodomierz.local: Error resolving IP address: [Errno -5] No address associated with hostname
INFO Trying to reconnect to wodomierz.local in the background
INFO Successfully connected to wodomierz.local
[11:34:22][I][app:102]: ESPHome version 2023.4.2 compiled on Apr 29 2023, 11:33:37
[11:34:22][C][wifi:505]: WiFi:
[11:34:22][C][wifi:363]:   Local MAC: 48:3F:DA:A9:96:BA
[11:34:22][C][wifi:364]:   SSID: 'ASUS'[redacted]
[11:34:22][C][wifi:365]:   IP Address: 192.168.10.250
[11:34:22][C][wifi:366]:   BSSID: E0:3F:49:E0:ED:E0[redacted]
[11:34:22][C][wifi:368]:   Hostname: 'wodomierz'
[11:34:22][C][wifi:370]:   Signal strength: -53 dB ▂▄▆█
[11:34:22][C][wifi:374]:   Channel: 12
[11:34:22][C][wifi:375]:   Subnet: 255.255.255.0
[11:34:22][C][wifi:376]:   Gateway: 192.168.10.1
[11:34:22][C][wifi:377]:   DNS1: 192.168.10.1
[11:34:22][C][wifi:378]:   DNS2: 0.0.0.0
[11:34:22][C][logger:294]: Logger:
[11:34:22][C][logger:295]:   Level: DEBUG
[11:34:22][C][logger:296]:   Log Baud Rate: 115200
[11:34:22][C][logger:297]:   Hardware UART: UART0
[11:34:22][C][captive_portal:088]: Captive Portal:
[11:34:22][C][mdns:108]: mDNS:
[11:34:22][C][mdns:109]:   Hostname: wodomierz
[11:34:22][C][ota:093]: Over-The-Air Updates:
[11:34:22][C][ota:094]:   Address: wodomierz.local:8266
[11:34:22][C][ota:097]:   Using Password.
[11:34:22][C][api:138]: API Server:
[11:34:22][C][api:139]:   Address: wodomierz.local:6053
[11:34:22][C][api:141]:   Using noise encryption: YES
[11:34:22][C][sntp:053]: SNTP Time:
[11:34:22][C][sntp:054]:   Server 1: '0.pool.ntp.org'
[11:34:22][C][sntp:055]:   Server 2: '1.pool.ntp.org'
[11:34:22][C][sntp:056]:   Server 3: '2.pool.ntp.org'
[11:34:22][C][sntp:057]:   Timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'
[11:34:22][C][wmbus:284]: wM-Bus v2.0.5:
[11:34:22][C][wmbus:286]:   Clients:
[11:34:22][C][wmbus:288]:     wmbusmeters: 10.0.0.1:7227 TCP [rtl-wmbus]
[11:34:22][C][wmbus:297]:   LED:
[11:34:22][C][wmbus:298]:     Pin: GPIO0
[11:34:22][C][wmbus:299]:     Duration: 1000 ms
[11:34:22][C][wmbus:301]:   CC1101 SPI bus:
[11:34:22][C][wmbus:302]:     MOSI Pin: GPIO13
[11:34:22][C][wmbus:303]:     MISO Pin: GPIO12
[11:34:22][C][wmbus:304]:     CLK Pin:  GPIO14
[11:34:22][C][wmbus:305]:     CS Pin:   GPIO2
[11:34:22][C][wmbus:306]:     GDO0 Pin: GPIO5
[11:34:22][C][wmbus:307]:     GDO2 Pin: GPIO4
[11:34:22][E][wmbus:320]:   Check connection to CC1101!
[11:39:10][I][ota:113]: Boot seems successful, resetting boot loop counter.

Sprawdź pinologie. Coś z połączeniem do CC1101 masz nie tak.

Niewykluczone, ze radio jest uszkodzone.
Ja zauważyłem, że chińczycy trochę w ciula tną.
W ostatnim czasie miałem z 5 nowych, uwalonych CC1101