/// mod-edit - wydzielono z wątku na inny temat…
Czym jest wersja “v5 od Kuby”? Mam SX1267 i czy można do niej zmigrować?
Czym jest wersja “v5 od Kuby”? Mam SX1267 i czy można do niej zmigrować?
W pierwszej linii readme.md SzczepanLeon @4 masz taki wiersz: Version 5 based on Kuba’s dirty fork…
Po naciśnięciu zostaniesz przeniesiony do githuba: GitHub - IoTLabs-pl/ESPHome-Components.
Pierwsze zbudowałem obraz z użyciem V5 od Szczepana. Mieszkam w bloku gdzie tylko w mojej klatce mam 36 różnych liczników (ciepłomierze + liczniki wody) i układ na SX1276 w porywach dwa razy na godzinę dekodował ramki. Mam również RTL-SDR i miałem porównanie jaki jest ruch w eterze. Po zainstalowaniu wersji od Kuby co sekundę, co dwie układ odbiera i dekoduje ramki z eteru.
Mój YAML. Nie mam sekcji sensors itd ponieważ mój układ nie jest zintegrowany z asistantem - odbieram i analizuję wiadomości mqtt.
esphome:
name: nowysx1276
friendly_name: NowySX1276
platformio_options:
upload_speed: 921600
external_components:
- source:
type: git
url: https://github.com/IoTLabs-pl/esphome-components
esp32:
board: esp32dev
framework:
type: esp-idf
logger:
id: component_loger
level: DEBUG
baud_rate: 115200
ota:
- platform: esphome
password: "19bbb3a5a185d53ba756c99add5a42f8"
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
api:
web_server:
version: 3
time:
platform: sntp
id: time_sntp
spi:
clk_pin: GPIO18
mosi_pin: GPIO23
miso_pin: GPIO19
mqtt:
broker: 192.168.1.201
port: 1883
client_id: dm
wmbus_common:
# drivers: all
# or specify specific drivers
drivers:
- apator162
- iwmtx5
- hydrocalm3
wmbus_radio:
radio_type: SX1276
cs_pin: GPIO15
reset_pin: GPIO27
irq_pin: GPIO14 # DIO01
on_frame:
- then:
- logger.log:
format: "RSSI: %ddBm T: %s (%d)"
args: [ frame->rssi(), frame->as_hex().c_str(), frame->data().size() ]
- then:
- repeat:
count: 3
then:
- output.turn_on: status_led
- delay: 100ms
- output.turn_off: status_led
- delay: 100ms
- mark_as_handled: True
then:
- mqtt.publish:
topic: telemetria/telegram_rtl
payload: !lambda return frame->as_rtlwmbus();
wmbus_meter:
- id: cold_water_supply
meter_id: 25319203
type: iwmtx5
mode: T1
on_telegram:
- wmbus_meter.send_telegram_with_mqtt:
topic: telemetria/gw/licznik_wody/zimna
- id: hot_water_supply
meter_id: 25318091
type: iwmtx5
mode: T1
on_telegram:
- wmbus_meter.send_telegram_with_mqtt:
topic: telemetria/gw/licznik_wody/ciepla
- id: heat_meter
meter_id: 05285311
type: iwmtx5
mode: T1
on_telegram:
- wmbus_meter.send_telegram_with_mqtt:
topic: telemetria/gw/licznik_ciepla
- id: public_water_supply_system
meter_id: 06861073
type: apator162
mode: T1
key: "00000000000000000000000000000000"
on_telegram:
- wmbus_meter.send_telegram_with_mqtt:
topic: telemetria/dm/licznik_wody/woda_z_wodociagow
- id: own_water_supply_system
meter_id: 06861531
type: apator162
mode: T1
key: "00000000000000000000000000000000"
on_telegram:
- wmbus_meter.send_telegram_with_mqtt:
topic: telemetria/dm/licznik_wody/woda_z_wlasnego_ujecia
output:
- platform: gpio
id: status_led
pin: GPIO25
Na jakiej płytce odpalasz ta wersje od Kuby?
Tak właśnie probowałem coś zrobić z esp32s3mini i cc1101 i to nie działa(V4) nie wiem z jakiego powodu dlatego tez pytam jaki HW by cos innego sprawdzonego kupić ![]()
Skorzystaj z drugiego wątku, gdzie się podpiąłeś - “wersja Kuby”, czyli IoTLabs-pl jest dedykowana wyłącznie dla SX1276, jeśli się wczytasz w repozytorium to się dowiesz nawet jaka to konkretnie płytka prototypowa (sorry nie pamiętam konkretów, ale coś ze stajni Heltec bodajże).
A jedyne co mogę sugerować, by być fair, to byś kupił gotowy odbiornik właśnie u niego (link do ogłoszenia sprzedaży, bo realnie trudno to znaleźć).
Tak widziałem heltec_wifi_lora_32_V2 tylko to teraz ciezko kupic w wersji V2 wiekszosć to V3 i V4 niestety :(.
A więc czytanie dokumentacji wita. Jeśli znajdziesz wszystkie różnice między wersjami tych płytek (a jakie właściwie są?) to sobie dostosujesz YAMLa. Oczywiście to MUSI być SX1276 868MHz.
Oprócz tego sugeruję MCU “S3” (to jest chyba coś, przed czym się bronisz) na płytce wyposażonej w PSRAM.
Ale jak pisałem wyżej - uważam, że dobrą robotę trzeba wspierać, a cena sprzętu u niego nie jest wygórowana…
Piszemy w niewłaściwym wątku przenoszę posty. przeniesione
Narazie zamówiłem ESP32 inne niz te mini, czytajac watek o EspHome mam duzo watpliwosci czy sie skompiluje i w sumie nie wiem czy moj licznik wody w ogole odczyta (DIEHL) . wiec szukam alterantywy na 2 krok ![]()
Zupełnie nie łapię kontekstu, nie rozmawialiśmy nigdzie o żadnych “mini”.
Za to zmusiłeś mnie do przekopania dokumentacji Helteca,
zamiast jasno napisać, że ich wypusty Heltec wifi lora 32 v3 i Heltec wifi lora 32 v4 mają radio SX1262 (niekompatybilne z tu opisywanym komponentem).
Proponuję byś wybierał za każdym razem właściwy wątek do treści, które chcesz napisać, bo naprawdę mamy tu już wystarczająco dużo bałaganu z komponentami pochodzącymi od rożnych autorów (a raczej z osobami postującymi w losowo wybranych wątkach…).
Tym bardziej nie rozumiem twoich kombinacji - spytaj te osoby które produkują te czytniki - nikt nie będzie bardziej zorientowany od nich czy dany model daje się odczytać (ale jak znam życie, to do Diehl, o ile w ogóle to jest wersja wM-Bus, musisz znać klucz szyfrowania, a duzi dostawcy wody mają jakiś betonowo-mentalny problem z udostępnianiem klucza swojemu klientowi, więc szanse oceniam na niskie jeśli nie pojawi się w końcu uregulowanie prawne dające konsumentom prawo do dostępu do danych o własnym zużyciu wszelkich mediów na równi z dostawcami).
Dziekuje za wyjasnienia. napisze do iotlabs bo na stronie nic nie znalazlem o DIEHL niestety.
Bo do DIEHL są zakładane nakładki IZAR i w 99 procentach użycia są bez kodowania.
Licznik Wody Diehl Aries IS IZAR - Home Assistant - ArturHome
P.S.
Prześlij mi foto nakładki radiowej na PW, to porównam ze swoimi.
Próbowałeś może odpalać kod swojego komponentu pod Arduino framework? Masz gdzieś projekt?
Twoje rozwiązanie na integrację z Suplą GitHub - IoTLabs-pl/wM-Bus-Gateway-for-Supla zainstalowane z Twojej strony działa jak powinno, natomiast próba zbudowania tego pod frameworkiem Arduino po oczywistym pozbyciu się zależności do ESPHome się kompiluje i uruchamia, ale nie odbiera w ogóle poprawnych ramek. Strzelam, że problem leży w obsłudze przerwań, aczkolwiek może Ty wiesz dokładnie.
Testuje na sx1276
Niestety nie.
W IDFie mam bardziej bezpośrednią kontrolę nad komunikacją tasków odbiorczego i przetwarzającego i dlatego chciałem to zrobić jak najbliżej samego IDFa. Nie mam zasadniczo pojęcia dlaczego pod Arduino to nie działa, bo Arduino też przecież jest pośrednio nakładką na IDF.
Na ten moment, ramka jest akumulowana na stercie przez wątek odbiorczy, a gdy mamy prawo przypuszczać że jest kompletna, przerzucamy wskaźnik na nią przez kolejkę do main loopa, który robi wszystkie wmbusmetersowo-ciężkie sprawy na niskim priorytecie.
Wczoraj wieczorem wypuściliśmy dość mocno zmienioną wersję komponentów (1.1.0). W szczególności:
Ostatecznie, wszystkie zmiany powinny doprowadzić do zdecydowanie mniejszego zużycia RAMu w trakcie działania. Na ten moment, prawdopodobnie przez dłuższy czas (o ile nie będzie bugów), ten mechanizm ładowania pozostanie z nami. wmbusmeters w 2.0.0 wprowadza dynamiczne konstruowanie parserów: sportowanie go na mały mikrokontroler będzie jeszcze bardziej karkołomne niż teraz, ale póki ten system ładowania się nie ustabilizuje po stronie wmbusmeters, to ciężko podjąć jakiekolwiek działania.
Wiodący autor wmbusmeters ma chyba jakieś zamiłowanie do pisania własnych formatów plików, parserów i lexerów, co niestety nie jest przyjemne do utrzymania ![]()
Jeśli ktoś miałby możliwość i ochotę, to bardzo chętnie przygarniemy jakiś feedback, bo lokalnie możemy to przetestować na dość mocno ograniczonej liczbie konfiguracji.
https://pl.aliexpress.com/item/1005005967763162.html?spm=a2g0o.order_list.order_list_main.5.612c180258Ae33&gatewayAdapt=glo2pol posadzę go na takiej płytce?
Na dowolnej z SX1276 i prockiem z rodziny ESP. Na Heltecach mamy zrobione nasze zestawy: wM-Bus Gateway – IoTLabs dostępne właściwie od ręki.
Jeśli ktoś miałby możliwość i ochotę, to bardzo chętnie przygarniemy jakiś feedback, bo lokalnie możemy to przetestować na dość mocno ograniczonej liczbie konfiguracji.
Uruchomiłem ten fork u siebie. Mam, jak przytłaczająca większość apatora 162 to was pewnie nie zainteresuje. Ale jak byście chcieli jakieś konkretne info zwrotne o takim ciepłomierzu Ciepłomierz mieszkaniowy Q heat 5.5 - Santech - Ciepłomierze to służę.
Moja płytka to klon Heltec V2
jakby ktoś widział jakieś błędy w yamlu lub miał sugestie co zmienić lub dopisać, to chętnie potestuje.
esphome:
name: test
friendly_name: test
# Po uruchomieniu publikuje ostatnie zapisane wartości z globals,
# żeby encje w Home Assistant od razu miały stan, zanim przyjdą nowe ramki z liczników.
on_boot:
priority: -100
then:
- lambda: |-
if (id(g_ciepla_woda) > 0) {
id(ciepla_woda_2).publish_state(id(g_ciepla_woda));
}
if (id(g_zimna_woda) > 0) {
id(zimna_woda_2).publish_state(id(g_zimna_woda));
}
if (id(g_ogrzewanie) > 0) {
id(ogrzewanie_2).publish_state(id(g_ogrzewanie));
}
if (id(g_ogrzewanie_last_year) > 0) {
id(ogrzewanie_2_last_year).publish_state(id(g_ogrzewanie_last_year));
}
if (id(g_ogrzewanie_last_month) > 0) {
id(ogrzewanie_2_last_month).publish_state(id(g_ogrzewanie_last_month));
}
preferences:
# Jak często ESPHome zapisuje wartości restore_value do flash
flash_write_interval: 1min
esp32:
board: heltec_wifi_lora_32_V2
framework:
type: esp-idf
globals:
# Ostatni znany stan licznika ciepłej wody
- id: g_ciepla_woda
type: float
restore_value: yes
initial_value: '168.469'
# Ostatni znany stan licznika zimnej wody
- id: g_zimna_woda
type: float
restore_value: yes
initial_value: '131.450'
# Ostatni znany stan całkowitego zużycia energii z licznika ogrzewania
- id: g_ogrzewanie
type: float
restore_value: yes
initial_value: '21188.801'
# Ostatni znany odczyt pola "poprzedni rok" z licznika ogrzewania
- id: g_ogrzewanie_last_year
type: float
restore_value: yes
initial_value: '14216.400'
# Ostatni znany odczyt pola "poprzedni miesiąc" z licznika ogrzewania
- id: g_ogrzewanie_last_month
type: float
restore_value: yes
initial_value: '20668.301'
logger:
level: DEBUG
baud_rate: 115200
task_log_buffer_size: 2048
logs: #chyba złoty kompromis jeśli mamy sporo obcych liczników w koło.
wmbus: WARN
esp32.preferences: WARN
api:
encryption:
key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ota:
- platform: esphome
password: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: none
time:
- platform: homeassistant
external_components:
- source: github://IoTLabs-pl/ESPHome-Components@v1.1.0
components:
- wmbus_radio
- wmbus_meter
- wmbus_common
wmbus_common:
drivers:
- apator162
- qheat
- amiplus #czekam na klucz z pging
spi:
clk_pin:
number: GPIO5
ignore_strapping_warning: true
mosi_pin: GPIO27
miso_pin: GPIO19
wmbus_radio:
radio_type: SX1276
cs_pin: GPIO18
reset_pin: GPIO14
irq_pin: GPIO35
wmbus_meter:
- id: ciepla_woda_meter
meter_id: 6929680
type: apator162
key: "00000000000000000000000000000000"
- id: zimna_woda_meter
meter_id: 6830337
type: apator162
key: "00000000000000000000000000000000"
- id: ogrzewanie_meter
meter_id: 67897051
type: qheat
key: "00000000000000000000000000000000"
sensor:
# =========================
# CIEPŁA WODA
# =========================
- platform: wmbus_meter
id: ciepla_woda_2
parent_id: ciepla_woda_meter
field: total_m3
name: "CieplaWoda"
accuracy_decimals: 3
unit_of_measurement: "m³"
device_class: water
state_class: total_increasing
icon: "mdi:water"
on_value:
then:
- lambda: |-
// Zapamiętaj ostatni odczyt po restarcie
id(g_ciepla_woda) = x;
- platform: wmbus_meter
parent_id: ciepla_woda_meter
field: rssi_dbm
name: "CieplaWoda RSSI"
accuracy_decimals: 0
unit_of_measurement: "dBm"
device_class: signal_strength
state_class: measurement
entity_category: diagnostic
icon: "mdi:signal"
# =========================
# ZIMNA WODA
# =========================
- platform: wmbus_meter
id: zimna_woda_2
parent_id: zimna_woda_meter
field: total_m3
name: "ZimnaWoda"
accuracy_decimals: 3
unit_of_measurement: "m³"
device_class: water
state_class: total_increasing
icon: "mdi:water"
on_value:
then:
- lambda: |-
// Zapamiętaj ostatni odczyt po restarcie
id(g_zimna_woda) = x;
- platform: wmbus_meter
parent_id: zimna_woda_meter
field: rssi_dbm
name: "ZimnaWoda RSSI"
accuracy_decimals: 0
unit_of_measurement: "dBm"
device_class: signal_strength
state_class: measurement
entity_category: diagnostic
icon: "mdi:signal"
# =========================
# OGRZEWANIE
# =========================
- platform: wmbus_meter
id: ogrzewanie_2
parent_id: ogrzewanie_meter
field: total_energy_consumption_kwh
name: "Ogrzewanie"
accuracy_decimals: 3
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
icon: "mdi:radiator"
on_value:
then:
- lambda: |-
// Zapamiętaj główny stan licznika ogrzewania
id(g_ogrzewanie) = x;
- platform: wmbus_meter
id: ogrzewanie_2_last_year
parent_id: ogrzewanie_meter
field: last_year_energy_consumption_kwh
name: "Ogrzewanie poprzedni rok"
accuracy_decimals: 3
unit_of_measurement: "kWh"
device_class: energy
entity_category: diagnostic
icon: "mdi:radiator"
on_value:
then:
- lambda: |-
// Zapamiętaj pole "poprzedni rok"
id(g_ogrzewanie_last_year) = x;
- platform: wmbus_meter
id: ogrzewanie_2_last_month
parent_id: ogrzewanie_meter
field: last_month_energy_consumption_kwh
name: "Ogrzewanie poprzedni miesiąc"
accuracy_decimals: 3
unit_of_measurement: "kWh"
device_class: energy
entity_category: diagnostic
icon: "mdi:radiator"
on_value:
then:
- lambda: |-
// Zapamiętaj pole "poprzedni miesiąc"
id(g_ogrzewanie_last_month) = x;
- platform: wmbus_meter
parent_id: ogrzewanie_meter
field: rssi_dbm
name: "Ogrzewanie RSSI"
accuracy_decimals: 0
unit_of_measurement: "dBm"
device_class: signal_strength
state_class: measurement
entity_category: diagnostic
icon: "mdi:signal"
# =========================
# DIAGNOSTYKA WIFI
# =========================
- platform: wifi_signal
id: wifi_signal_db
name: "WiFi RSSI"
update_interval: 60s
device_class: signal_strength
entity_category: diagnostic
- platform: copy
source_id: wifi_signal_db
name: "WiFi Signal"
unit_of_measurement: "%"
accuracy_decimals: 0
entity_category: diagnostic
filters:
# Proste przeliczenie RSSI z dBm na %
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
[17:53:08.397][D][wifi:2327]: Roam scan (-54 dBm, attempt 1/3)
[17:53:32.203][D][sensor:118]: 'Ogrzewanie RSSI' >> -75 dBm
[17:54:05.981][D][sensor:118]: 'CieplaWoda' >> 168.479 m³
[17:54:05.989][D][sensor:118]: 'CieplaWoda RSSI' >> -80 dBm
[17:54:06.791][D][sensor:118]: 'WiFi RSSI' >> -54 dBm
[17:54:06.797][D][sensor:118]: 'WiFi Signal' >> 92 %
[17:54:13.551][D][sensor:118]: 'ZimnaWoda' >> 131.489 m³
[17:54:13.559][D][sensor:118]: 'ZimnaWoda RSSI' >> -77 dBm
[17:55:06.796][D][sensor:118]: 'WiFi RSSI' >> -54 dBm
[17:55:06.839][D][sensor:118]: 'WiFi Signal' >> 92 %
[17:55:20.983][D][sensor:118]: 'CieplaWoda' >> 168.479 m³
[17:55:20.990][D][sensor:118]: 'CieplaWoda RSSI' >> -80 dBm
[17:55:51.552][D][sensor:118]: 'ZimnaWoda' >> 131.490 m³
[17:55:51.596][D][sensor:118]: 'ZimnaWoda RSSI' >> -77 dBm
[17:56:06.805][D][sensor:118]: 'WiFi RSSI' >> -54 dBm
[17:56:06.809][D][sensor:118]: 'WiFi Signal' >> 92 %
[17:56:29.985][D][sensor:118]: 'CieplaWoda' >> 168.479 m³
[17:56:29.992][D][sensor:118]: 'CieplaWoda RSSI' >> -80 dBm
[17:56:30.028][W][api.connection:2235]: ESPHome Logs 2026.2.4 (192.168.1.148): Reading failed CONNECTION_CLOSED errno=128
[17:57:01.541][D][sensor:118]: 'Ogrzewanie' >> 21190.801 kWh
[17:57:01.547][D][sensor:118]: 'Ogrzewanie poprzedni rok' >> 14216.400 kWh
[17:57:01.547][D][sensor:118]: 'Ogrzewanie poprzedni miesiąc' >> 20668.301 kWh
[17:57:01.554][D][sensor:118]: 'Ogrzewanie RSSI' >> -74 dBm
[17:57:06.803][D][sensor:118]: 'WiFi RSSI' >> -54 dBm
[17:57:06.810][D][sensor:118]: 'WiFi Signal' >> 92 %
Ogarnął ktoś może odczyt podzielników ciepła Apator EITN 40? Aktualnie mam 2 odbiorniki. Jeden na radiu CC1101, który odbiera mi właśnie te podzielniki a drugi na SX1276, którym łapię ramki nowych nakładek wodomierzy apatora (jeszcze natywnie niewspieranych w tym komponencie). Chciałbym mieć wszystko na 1 urządzeniu.
Podzielniki wyglądają tak:
Specyfikacja: https://api.apator.com/uploads/oferta/woda-i-cieplo/podzielniki/e-itn40/e-itn40-instrukcja-obslugi.pdf
Mogę dostarczyć wszelkich możliwych danych. Kiedyś założyłem issue na github celem dodania ich do wsparcia. Niestety idzie to bardzo powoli a w zasadzie to stoi w miejscu. Adding support for Apator E-ITN 40 · Issue #1144 · wmbusmeters/wmbusmeters · GitHub
na CC1101 odbieram te ramki na v3 zmodyfikowanego komponentu od Szczepana, tylko na ESPHome 2025.6.3 wyżej już nie działa. wrzucając ramkę do wmbus wychodzą jakieś kosmiczne wskazania, sprzeczne z fizycznym odczytem.
Użyłem swojego komponentu i na Twoim Telegramie:
40440106139901000908A00000A10081016B013F00A2004E00000000000000000000000000000018001E0007007800100002002F01C700000000002D3006000000
Dostałem :
Received telegram from: 00019913
manufacturer: (APA) Apator, Poland (0x601)
type: Heat Cost Allocator (0x08)
ver: 0x09
driver: unknown!
[wmbus-bridge][WARN] === NEW METER CANDIDATE DETECTED ===
[wmbus-bridge][WARN] Received telegram from: 00019913
[wmbus-bridge][WARN] Suggested driver: unknown
[wmbus-bridge][WARN] Add to options.json meters[] (example):
[wmbus-bridge][WARN] {"id":"meter_00019913","meter_id":"00019913","type":"auto","type_other":"","key":"NOKEY"}
[wmbus-bridge][WARN] ==================================
Zaraz sprawdzę Czy mi założy encje.
Nie założył - wmbusmeters nie ma driverów:
(meter) CIEPŁO: meter detection could not find driver for id: 00019913 mfct: (APA) Apator, Poland (0x601) type: Heat Cost Allocator (0x08) ver: 0x09
(meter) please consider opening an issue at https://github.com/wmbusmeters/wmbusmeters/
(meter) to add support for this unknown mfct,media,version combination
{"_":"telegram","media":"heat cost allocation","meter":"auto","name":"CIEPŁO","id":"00019913","timestamp":"2026-03-16T12:13:35Z"}
Także tego czytał nie będziesz bo nie ma czym dekodować.