Zakręcony już dzisiaj jestem, bo i w robocie pod górkę to i teraz z tym repo jakos tak odruchowo.
Domyślny klucz w driverach, miałem właśnie dylemat gdzie go umieścić, naturalnie było by w driverach, ale natomiast w konstruktorze ładnie widać w logu.
Oka zmianie to i będzie w driverach, ale to już nie dzisiaj.
Wypchnąłem wersję 2.2.35 z uaktualnionym driverem dla sharky774.
Dodane dodatkowe pola, bez domyślnego klucza.
@aurban6 Możesz przetestować?
Działa wyśmienicie, wszystkie wartości zgadzają się z odczytem z miernika.
Dodał bym do dokumentacji przykład konfiguracji
- platform: wmbus
meter_id: 0x75453518
type: sharky774
key: "51728910E66D83F851728910E66D83F8"
lqi:
name: "My lqi"
rssi:
name: "My RSSI"
total_energy_consumption_kwh:
name: "My consumption in kWh"
device_class: "energy"
icon: "mdi:heating-coil"
power_kw:
name: "My power in kW"
flow_temperature_c:
name: "My flow temp"
return_temperature_c:
name: "My return temp"
total_volume_m3:
name: "My volume in m3"
volume_flow_m3h:
name: "My flow in m3h"
Zastanawiam się co do klucza (specjalnie umieściłem go w przykładzie) czy to jednak dobry pomysł zaszywać go w kodzie (a jak się w jakiejś wersji fw licznika zmieni).
Widzę po przykładach, że dla type: bmeters umieściłeś rozumiem defaultowy klucz, tak więc podobnie było by dla sharky.
Wycofałem się też z pomysłu dodawania drivera sharky ponieważ nie zauważyłem różnic pomiędzy shark774.
Do zastanowienia czy zamiast “total_energy_consumption_kwh” nie zwracać w GJ, ponieważ ta jednostka raczej służy do rozliczenia się (podaje się cenę dla 1 GJ)(na liczniku 1 pokazywana wartością jest zużycie w GJ).
Do zastanowienia czy zamiast “volume_flow_m3h” nie zwracać przepływu w litrach na godzinę.
Tak wiem, na wszystkie te wartości można nałożyć filtr.
Domyślny można zaszyć tak aby i tak był nadpisywany poprzez key z YAMLa
Mi jest to obojętne – nie korzystam z tego miernika
Mam jeszcze jedną prośbę - test/log VERBOSE z:
external_components:
- source: github://SzczepanLeon/esphome-components@default_key
Chyba kiepski pomysł, a co jeśli monter ustali jakiś swój klucz szyfrujący ?
Nie wiem jak działa ten licznik, czy można zmienić klucz szyfrujący, czy ten default działa niezależnie od własnego klucza.
Dodałem już sobie filtry i niech tak pozostanie rzeczywiście jak licznik zwraca.
Mam jeszcze jedną prośbę - test/log VERBOSE z OK
Nie w tę stronę. Po prostu najczęściej wykorzystywane klucze jako defaultowe i wtedy nie trzeba by sekcji key dodawać do konfiga. A jak ktoś ma inny klucz to daje key z tym swoim.
Jeśli oczekujesz w logu
ESP_LOGV(TAG, "Added driver '%s' with key '%s'", this->driver_type_.c_str(), this->key_.c_str());
To nie ma.
[14:44:33][C][wmbus:400]: wM-Bus v2.3.01:
[14:44:33][C][wmbus:402]: Clients:
[14:44:33][C][wmbus:409]: wmbusmeters: 10.0.0.1:7227 TCP [rtl-wmbus]
[14:44:33][C][wmbus:413]: LED:
[14:44:33][C][wmbus:414]: Pin: GPIO0
[14:44:33][C][wmbus:415]: Duration: 1000 ms
[14:44:33][C][wmbus:417]: CC1101 SPI bus:
[14:44:33][C][wmbus:418]: MOSI Pin: GPIO23
[14:44:33][C][wmbus:419]: MISO Pin: GPIO19
[14:44:33][C][wmbus:420]: CLK Pin: GPIO18
[14:44:33][C][wmbus:421]: CS Pin: GPIO5
[14:44:33][C][wmbus:422]: GDO0 Pin: GPIO16
[14:44:33][C][wmbus:423]: GDO2 Pin: GPIO17
[14:44:33][C][wmbus:430]: Available drivers: amiplus, apator08, apator162, apatoreitn, bmeters, c5isf, compact5, dme07, elf, evo868, fhkvdataiii, hydrocalm3, hydrus, iperl, itron, izar, mkradio3, mkradio4, qheat, qwater, sharky774, topaseskr, ultrimis, unismart, vario451
[14:44:33][C][wmbus:448]: Meter:
[14:44:33][C][wmbus:449]: ID: 71726978 [0x04467782]
[14:44:33][C][wmbus:450]: Type: apator162
[14:44:33][C][wmbus:451]: Mode: T1
[14:44:33][C][wmbus:452]: Key: '00000000000000000000000000000000'
[14:44:33][C][wmbus:454]: Sensor 'Zimna woda RSSI'
[14:44:33][C][wmbus:454]: Device Class: 'signal_strength'
[14:44:33][C][wmbus:454]: State Class: 'measurement'
[14:44:33][C][wmbus:454]: Unit of Measurement: 'dBm'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 0
[14:44:33][C][wmbus:454]: Sensor 'Zimna woda'
[14:44:33][C][wmbus:454]: Device Class: 'water'
[14:44:33][C][wmbus:454]: State Class: 'total_increasing'
[14:44:33][C][wmbus:454]: Unit of Measurement: 'm³'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 3
[14:44:33][C][wmbus:454]: Icon: 'mdi:water'
[14:44:33][C][wmbus:448]: Meter:
[14:44:33][C][wmbus:449]: ID: 71899169 [0x04491821]
[14:44:33][C][wmbus:450]: Type: apator162
[14:44:33][C][wmbus:451]: Mode: T1
[14:44:33][C][wmbus:452]: Key: '00000000000000000000000000000000'
[14:44:33][C][wmbus:454]: Sensor 'Ciepła woda RSSI'
[14:44:33][C][wmbus:454]: Device Class: 'signal_strength'
[14:44:33][C][wmbus:454]: State Class: 'measurement'
[14:44:33][C][wmbus:454]: Unit of Measurement: 'dBm'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 0
[14:44:33][C][wmbus:454]: Sensor 'Ciepła woda'
[14:44:33][C][wmbus:454]: Device Class: 'water'
[14:44:33][C][wmbus:454]: State Class: 'total_increasing'
[14:44:33][C][wmbus:454]: Unit of Measurement: 'm³'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 3
[14:44:33][C][wmbus:454]: Icon: 'mdi:water'
[14:44:33][C][wmbus:448]: Meter:
[14:44:33][C][wmbus:449]: ID: 1969558806 [0x75651516]
[14:44:33][C][wmbus:450]: Type: sharky774
[14:44:33][C][wmbus:451]: Mode: T1
[14:44:33][C][wmbus:452]: Key: '51728910E66D83F851728910E66D83F8'
[14:44:33][C][wmbus:454]: Sensor 'c.o. temp wejście'
[14:44:33][C][wmbus:454]: Device Class: 'temperature'
[14:44:33][C][wmbus:454]: State Class: 'measurement'
[14:44:33][C][wmbus:454]: Unit of Measurement: '°C'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 0
[14:44:33][C][wmbus:454]: Icon: 'mdi:coolant-temperature'
[14:44:33][C][wmbus:454]: Sensor 'c.o. moc bieżąca'
[14:44:33][C][wmbus:454]: Device Class: 'energy'
[14:44:33][C][wmbus:454]: State Class: 'measurement'
[14:44:33][C][wmbus:454]: Unit of Measurement: 'kW'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 3
[14:44:33][C][wmbus:454]: Icon: 'mdi:transmission-tower-export'
[14:44:33][C][wmbus:454]: Sensor 'c.o. temp wyjście'
[14:44:33][C][wmbus:454]: Device Class: 'temperature'
[14:44:33][C][wmbus:454]: State Class: 'measurement'
[14:44:33][C][wmbus:454]: Unit of Measurement: '°C'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 0
[14:44:33][C][wmbus:454]: Icon: 'mdi:coolant-temperature'
[14:44:33][C][wmbus:454]: Sensor 'c.o. RSSI'
[14:44:33][C][wmbus:454]: Device Class: 'signal_strength'
[14:44:33][C][wmbus:454]: State Class: 'measurement'
[14:44:33][C][wmbus:454]: Unit of Measurement: 'dBm'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 0
[14:44:33][C][wmbus:454]: Sensor 'c.o. zużycie'
[14:44:33][C][wmbus:454]: Device Class: 'energy'
[14:44:33][C][wmbus:454]: State Class: 'total_increasing'
[14:44:33][C][wmbus:454]: Unit of Measurement: 'GJ'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 3
[14:44:33][C][wmbus:454]: Icon: 'mdi:heating-coil'
[14:44:33][C][wmbus:454]: Sensor 'c.o. całkowity przepływ'
[14:44:33][C][wmbus:454]: Device Class: 'water'
[14:44:33][C][wmbus:454]: State Class: 'total_increasing'
[14:44:33][C][wmbus:454]: Unit of Measurement: 'm³'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 3
[14:44:33][C][wmbus:454]: Icon: 'mdi:water'
[14:44:33][C][wmbus:454]: Sensor 'c.o. przepływ l/h'
[14:44:33][C][wmbus:454]: Device Class: 'water'
[14:44:33][C][wmbus:454]: State Class: ''
[14:44:33][C][wmbus:454]: Unit of Measurement: 'l/h'
[14:44:33][C][wmbus:454]: Accuracy Decimals: 3
[14:44:33][C][wmbus:454]: Icon: 'mdi:water'
[14:44:34][D][wmbus:184]: Meter ID [0x75651541] RSSI: -63 dBm LQI: 130 Mode: T1 not found in configuration T: 5E44A5114115657541047A3A0050052913E881DD30C5F7FDC6E81745940CE405B10E8D1CFFAE88C428E2A441242A394CA19B75FEAF50E25707E4EE8DC87B284D10873CBAA3D43ECB5B349F3C1920567E4CD63315B34ABEF732D0114C37F65F (95)
Jedyne pochodzące z wmbus-drivers to z pobierania wartości
[14:46:30][I][wmbus:084]: Using driver 'sharky774' for ID [0x75651516] RSSI: -50 dBm LQI: 128 Mode: T1 T: 5E44A5111615657541047A2E0050059DB3CB56C30D5D26323452685F3B600F3BEE4ADF0C616E5F4E8343DB16FED04BC08E1D50377A99160D2705E471BFBDAF373814E759727671750613111B6B5A106CD97F522F4846A2D5F51FD621D6C4E0 (95)
[14:46:30][D][wmbus:090]: Decrypted T : 5E44A5111615657541047A2E0050052F2F0C0E966101000C13123634000B3B0000000C2B000000000A5A33040A5E95020B266998000AA6180000C2026CFF2A373814E759727671750613111B6B5A106CD97F522F4846A2D5F51FD621D6C4E0 (95)
[14:46:30][V][wmbus-drivers:088]: Found register '0C0E' with '16196'->'1106032832779409581720731648.000000'
[14:46:30][V][wmbus-drivers:187]: Found register '0C13' with '343612'->'1001816996111155328.000000'
[14:46:30][V][wmbus-drivers:364]: Found register '0B3B' with '0'->'0.000000'
[14:46:30][V][wmbus-drivers:345]: Found register '0C2B' with '0'->'0.000000'
[14:46:30][V][wmbus-drivers:287]: Found register '0A5A' with '433'->'62706532359.154305'
[14:46:30][V][wmbus-drivers:307]: Found register '0A5E' with '295'->'3758097408.447144'
[14:46:30][V][sensor:043]: 'c.o. RSSI': Received new state -50.000000
[14:46:30][D][sensor:094]: 'c.o. RSSI': Sending state -50.00000 dBm with 0 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 72 bytes
[14:46:30][V][sensor:043]: 'c.o. temp wejście': Received new state 43.299999
[14:46:30][D][sensor:094]: 'c.o. temp wejście': Sending state 43.30000 °C with 0 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 80 bytes
[14:46:30][V][sensor:043]: 'c.o. moc bieżąca': Received new state 0.000000
[14:46:30][D][sensor:094]: 'c.o. moc bieżąca': Sending state 0.00000 kW with 3 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 80 bytes
[14:46:30][V][sensor:043]: 'c.o. temp wyjście': Received new state 29.500000
[14:46:30][D][sensor:094]: 'c.o. temp wyjście': Sending state 29.50000 °C with 0 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 80 bytes
[14:46:30][V][sensor:043]: 'c.o. zużycie': Received new state 4498.888672
[14:46:30][D][sensor:094]: 'c.o. zużycie': Sending state 16.19600 GJ with 3 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 76 bytes
[14:46:30][V][sensor:043]: 'c.o. całkowity przepływ': Received new state 343.612000
[14:46:30][D][sensor:094]: 'c.o. całkowity przepływ': Sending state 343.61200 m³ with 3 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 88 bytes
[14:46:30][V][sensor:043]: 'c.o. przepływ l/h': Received new state 0.000000
[14:46:30][D][sensor:094]: 'c.o. przepływ l/h': Sending state 0.00000 l/h with 3 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 80 bytes
Oczekuje byle czego z drivera na VERBOSE
ESP_LOGV(TAG, "Added driver '%s' with key '%s'", this->driver_type_.c_str(), this->key_.c_str());
Ten powyżej to raczej się pokaże tylko po serialu – odpalany jest raz więc nie liczę na jego obecność w logu.
Ważne że te z get_ są.
Odnośnie czy telegram jest rozkodowany to można by się pokusić o sprawdzenie w telegramie 2f2f i ew. podjąć próbę z default key.
Dokładnie tak po dekodowaniu jest robione.
Z tym sharky to wyskoczyło połączenie paru rzeczy.
Auto dekodowania w wmbusmeters i zaćmnienia użytkowników
Tutaj mogło by pomóc parsowanie tpl-cfg
Po testowaniu licznika można by napisać, że doszedłem do zadowolenia.
sensor:
# Ogrzewanie
- platform: wmbus
meter_id: 0x75741589
type: sharky774
key: "51728910E66D83F851728910E66D83F8"
rssi:
name: "Ogrzewanie RSSI"
total_energy_consumption_gj:
name: "Ogrzewanie zużycie GJ"
power_kw:
name: "Ogrzewanie moc bieżąca"
total_volume_m3:
name: "Ogrzewanie przepływ"
volume_flow_l3h:
name: "Ogrzewanie przepływ l/h"
flow_temperature_c:
name: "Ogrzewanie wejście"
return_temperature_c:
name: "Ogrzewanie wyjście"
operating_time_d:
name: "Ogrzewanie czas"
@_Szczepan wyślę Ci requesty na githuba.
Cześć, posiadam ESP32 z podłączonym CC1101 wg schematu:
wmbus:
mosi_pin: GPIO13
miso_pin: GPIO12
clk_pin: GPIO14
cs_pin: GPIO2
gdo0_pin: GPIO5
gdo2_pin: GPIO4
Problem polega na tym że randomowo co któryś restart ESP32 ono nie wstaje. Zapętla się na botowaniu. Jak odłączę wtedy CC1101 to normalnie ESP się uruchomi. Ktoś ma jakiś pomysł gdzie szukać przyczyny?
Płytka jest zasilana ładowarką USB 5V-550mA
W ESP32 jest inny zestaw “niezdrowych” pinów niż w ESP8266
a że jest ich dużo więcej do wykorzystania to możesz spróbować zmiany “pinologii”.
Dla esp32dev
wmbus:
mosi_pin: GPIO23
miso_pin: GPIO19
clk_pin: GPIO18
cs_pin: GPIO5
gdo0_pin: GPIO16
gdo2_pin: GPIO17
led_pin: GPIO2
led_blink_time: "1s"
clients:
- name: "wmbusmeters"
ip_address: "10.0.0.1"
port: 7227
Zmieniłem GPIO5 na 27 i póki co problem z głowy
Zaktualizowałem ESPHome z wersji 2023.11.4 na 2023.11.6 i moje ESP32 przestało odbierać dane z modułu unismart. W logu cisza. Nakładki apator08 działają bez zarzutów. Przywróciłem 2023.11.4 i wszystko działa.
Czy komuś działa unismart na wersji 2023.11.6 ?
Załącz logi VERY_VERBOSE na tym 2023.11.6, może coś ciekawego będzie.
Co masz w YAMLu?
W yaml’u mam to:
wmbus:
mosi_pin: GPIO23
miso_pin: GPIO19
clk_pin: GPIO18
cs_pin: GPIO5
gdo0_pin: GPIO25
gdo2_pin: GPIO26
log_unknown: true
sensor:
- platform: wmbus
meter_id: 0x000ABFA4
type: apator08
mode: T1
add_prefix: false
total_water_m3:
id: "water_main"
name: "Woda - Licznik główny"
filters:
- offset: 83.078
- platform: wmbus
meter_id: 0x000B9CE7
type: apator08
mode: T1
add_prefix: false
total_water_m3:
id: "water_garden"
name: "Woda - Licznik ogrodowy"
filters:
- offset: 60.457
- platform: wmbus
meter_id: 0x00058794
type: unismart
key: "00000000000000000000000000000000"
add_prefix: false
total_gas_m3:
id: "gas_main"
name: "Licznik gazu"
icon: "mdi:gas-burner"
device_class: "gas"
accuracy_decimals: 3
filters:
- offset: 4337.090
Tylko? Żadnych dodatkowych komponentów?
Oprócz konfiguracji platformy, wifi, ota, api, time nic więcej nie ma.