CC1101 ESPHome SzczepanLeon

Więcej cierpliwości niż 24h?

Jakie masz wkładki ?
Tutaj raczej nic się nie dzieje:

[20:45:50][VV][api.service:540]: on_ping_request: PingRequest {}
[20:45:50][VV][api.service:043]: send_ping_response: PingResponse {}
[20:46:04][VV][api.service:540]: on_ping_request: PingRequest {}
[20:46:04][VV][api.service:043]: send_ping_response: PingResponse {}
[20:46:10][VV][api.service:540]: on_ping_request: PingRequest {}
[20:46:10][VV][api.service:043]: send_ping_response: PingResponse {}
[20:46:11][VV][scheduler:225]: Running interval ‘’ with interval=60000 last_execution=221682 (now=281682)

Masz poprawnie wpisane meter_id: twoich liczników?

Jak właściwie się to podaje - obecnie z tym walczę?
Na module mam 16192288 to powinienem podać 0x16192288 czy zamienić na hex 0x00F71320?

apator162 Jeżeli numer ma mniej jak 8cyfr trzeba to uzupełnić zerami przed

meter_id: 0x00203960

Jakie wkładki?

Jak pisałem wcześniej (100 x sprawdzane i działało na ESP32) moja nakładka ma numer:

i dopełnienie zer do ośmiu nic nie pomaga w tym przypadku a dla ESP32 nie robiło różnicy czy cyfr jest osiem czy nie.

Edit:

wg mnie nie ma różnicy czy jest osiem cyfr czy nie. Mi działało bez ośmiu (na ESP32)

Według Autora ma to znaczenie.
ESP32 U mnie nr. Z nalepki 203960 meter_id: 0x00203960

1 Like

:face_with_head_bandage: Sam sprawdzę - wpisałem na dwa sposoby.

Właśnie odebrałem telegram po zwiększeniu zer do ośmiu. Dałbym sobie rękę obciąć, że wcześniej miałem osiem. Nie chce mi się wierzyć żebym je kasował, albo same się kasowały.
Anyway.
Uzupełniłem. Odebrałem telegram ale teraz znowu milczy.

Jak nic nie leci z kranu telegramy też nie lecą

Niby działa.
Nr trzeba było wpisać w systemie dziesiętnym czyli - jak pisał @artpc:
0x00473662.
Jednakże częstotliwość odbierania nie powala na kolana. Dzisiaj odebrałem dwa telegramy. LQI mam 140, a RSSI -76dBm. Wcześniej - gdy licznik zczytywałem przez RTL, dostawałem telegram przy każdym odkręceniu kranu. Da się jakoś zmusić sprzęt/soft do częstszego odbierania? Parametr force_update mam ustawiony na true.

Na Apatorach ID podane na nakładce jest w zapisie HEX. Dlatego należy przepisać numer z nakładki z 0x z przodu, uzupełniając po 0x zerami do łącznie 8 cyfr (z tymi z nakładki). Jeśli ID by było podane w systemie dziesiętnym, to by działało bez 0x (a nie działa).
Powodem małej ilości sygnałów może być słabawy sygnał z nakładki. Daj odbiornik bliżej licznika. RTL ma znacznie lepszy zasięg odbioru niż CC1101, dlatego działał lepiej. Apator powinien nadawać w dzień max co kilka minut.

Co do wadliwego radia, to jest bardzo duża szansa, że chip jest uwalony. Trochę tego przerobiłem. Na 100" pomaga wymiana chipa na nowy, aczkolwiek koszt niewiele mniejszy niż zakup nowego modułu…
Warto się przyjrzeć samemu chipowi przed wymianą, bo czasem okazuje się że “nogi” wiszą w powietrzu i wystarczy go porządnie przelutować.

2 Likes

Ja straciłem dwa dni na to aby sobie przypomnieć, że mój moduł jest na 433MHz :crazy_face:
“Coś” lapał i to mnie zgubiło.
Ponad rok leżał w szufladzie do innego projektu.

To pomogło. Teraz raportuje jak wściekły.

Witam.
Mam podobny problem z odczytem czegokolwiek poprzez moduł: cc1101 868Mhz. (ten zielony, prostokątny, ze spiralną antenką).
Mieszkam w bloku i na kaloryferach mamy podzielniki Apator E-ITN 30.3.


– przykład z jednego z pokoi.

W instrukcji widnieje: Operating frequency: 868 MHz

Radio połączone do NodeMcu v2 wedle danych z aplikacji biblioteki. Log pokazuje połączenie, ale kompletnie radio milczy.

Plik yaml wygląda tak:

esphome:
  name: wmbus
  friendly_name: WMBus

esp8266:
  board: nodemcuv2

# Enable logging
logger:
  level: VERY_VERBOSE

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip: 
    static_ip: 192.168.1.77
    subnet: 255.255.255.0
    gateway: 192.168.1.254

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

captive_portal:

time:
  - platform: sntp
    id: time_sntp

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

wmbus:
  mosi_pin: GPIO13 # D7
  miso_pin: GPIO12 # D6
  clk_pin:  GPIO14 # D5
  cs_pin:   GPIO2  # D4
  gdo0_pin: GPIO5  # D1
  gdo2_pin: GPIO4  # D2

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

Log wygląda tak:

INFO ESPHome 2023.12.5
INFO Reading configuration /config/esphome/wmbus.yaml...
INFO Detected timezone 'Europe/Warsaw'
INFO Starting log output from 192.168.1.77 using esphome API
INFO Successfully connected to wmbus @ 192.168.1.77 in 0.006s
INFO Successful handshake with wmbus @ 192.168.1.77 in 2.407s
[21:41:42][I][app:102]: ESPHome version 2023.12.5 compiled on Dec 29 2023, 21:37:45
[21:41:42][C][wifi:573]: WiFi:
[21:41:42][C][wifi:405]:   Local MAC: 5C:CF:7F:13:8F:C4
[21:41:42][C][wifi:410]:   SSID: 'xxxxxxxxxxxxxxxxx'[redacted]
[21:41:42][C][wifi:411]:   IP Address: 192.168.1.77
[21:41:42][C][wifi:412]:   BSSID: 78:17:BE:2D:55:D4[redacted]
[21:41:42][C][wifi:414]:   Hostname: 'wmbus'
[21:41:42][C][wifi:416]:   Signal strength: -56 dB ▂▄▆█
[21:41:42][V][wifi:418]:   Priority: 0.0
[21:41:42][C][wifi:420]:   Channel: 3
[21:41:42][C][wifi:421]:   Subnet: 255.255.255.0
[21:41:42][C][wifi:422]:   Gateway: 192.168.1.254
[21:41:42][C][wifi:423]:   DNS1: 0.0.0.0
[21:41:42][C][wifi:424]:   DNS2: 0.0.0.0
[21:41:42][C][logger:443]: Logger:
[21:41:42][C][logger:444]:   Level: VERY_VERBOSE
[21:41:42][C][logger:445]:   Log Baud Rate: 115200
[21:41:42][C][logger:447]:   Hardware UART: UART0
[21:41:42][C][captive_portal:088]: Captive Portal:
[21:41:42][C][sntp:053]: SNTP Time:
[21:41:42][C][sntp:054]:   Server 1: '0.pool.ntp.org'
[21:41:42][C][sntp:055]:   Server 2: '1.pool.ntp.org'
[21:41:42][C][sntp:056]:   Server 3: '2.pool.ntp.org'
[21:41:42][C][sntp:057]:   Timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'
[21:41:42][C][mdns:115]: mDNS:
[21:41:42][C][mdns:116]:   Hostname: wmbus
[21:41:42][V][mdns:117]:   Services:
[21:41:42][V][mdns:119]:   - _esphomelib, _tcp, 6053
[21:41:42][V][mdns:121]:     TXT: friendly_name = WMBus
[21:41:42][V][mdns:121]:     TXT: version = 2023.12.5
[21:41:42][V][mdns:121]:     TXT: mac = 5ccf7f138fc4
[21:41:42][V][mdns:121]:     TXT: platform = ESP8266
[21:41:42][V][mdns:121]:     TXT: board = nodemcuv2
[21:41:42][V][mdns:121]:     TXT: network = wifi
[21:41:42][V][mdns:121]:     TXT: api_encryption = Noise_NNpsk0_25519_ChaChaPoly_SHA256
[21:41:42][C][ota:097]: Over-The-Air Updates:
[21:41:42][C][ota:098]:   Address: 192.168.1.77:8266
[21:41:42][C][ota:101]:   Using Password.
[21:41:42][C][api:139]: API Server:
[21:41:42][C][api:140]:   Address: 192.168.1.77:6053
[21:41:42][C][api:142]:   Using noise encryption: YES
[21:41:42][C][wmbus:416]: wM-Bus v2.4.9:
[21:41:42][C][wmbus:418]:   Clients:
[21:41:42][C][wmbus:420]:     wmbusmeters: 10.0.0.1:7227 TCP [rtl-wmbus]
[21:41:42][C][wmbus:433]:   CC1101 frequency: 868.000 MHz
[21:41:42][C][wmbus:434]:   CC1101 SPI bus:
[21:41:42][C][wmbus:435]:     MOSI Pin: GPIO13
[21:41:42][C][wmbus:436]:     MISO Pin: GPIO12
[21:41:42][C][wmbus:437]:     CLK Pin:  GPIO14
[21:41:42][C][wmbus:438]:     CS Pin:   GPIO2
[21:41:42][C][wmbus:439]:     GDO0 Pin: GPIO5
[21:41:42][C][wmbus:440]:     GDO2 Pin: GPIO4
[21:41:42][C][wmbus:447]:   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
[21:42:00][VV][scheduler:225]: Running interval '' with interval=60000 last_execution=65808 (now=125808)
[21:42:19][VV][api.service:558]: on_ping_request: PingRequest {}
[21:42:19][VV][api.service:043]: send_ping_response: PingResponse {}
[21:42:42][VV][api.connection:132]: Sending keepalive PING...
[21:42:42][VV][api.service:037]: send_ping_request: PingRequest {}
[21:42:42][VV][api.service:558]: on_ping_request: PingRequest {}
[21:42:42][VV][api.service:043]: send_ping_response: PingResponse {}
[21:42:42][VV][api.service:567]: on_ping_response: PingResponse {}
[21:42:59][VV][api.service:558]: on_ping_request: PingRequest {}
[21:42:59][VV][api.service:043]: send_ping_response: PingResponse {}

Podczas kompilacji na żółto otrzymuję takie warning’i:

.piolibdeps/wmbus/SmartRC-CC1101-Driver-Lib/ELECHOUSE_CC1101_SRC_DRV.cpp:149:3: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
  149 |   while(digitalRead(MISO_PIN));
      |   ^~~~~
.piolibdeps/wmbus/SmartRC-CC1101-Driver-Lib/ELECHOUSE_CC1101_SRC_DRV.cpp:150:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
  150 |  digitalWrite(SS_PIN, HIGH);
      |  ^~~~~~~~~~~~
.piolibdeps/wmbus/SmartRC-CC1101-Driver-Lib/ELECHOUSE_CC1101_SRC_DRV.cpp: In member function 'void ELECHOUSE_CC1101::setPA(int)':
.piolibdeps/wmbus/SmartRC-CC1101-Driver-Lib/ELECHOUSE_CC1101_SRC_DRV.cpp:498:13: warning: 'a' may be used uninitialized in this function [-Wmaybe-uninitialized]
  498 | PA_TABLE[1] = a;

Odległość od radia do najbliższego podzielnika to jakiś metr. Sąsiady i ich kaloryfery z podzielnikami na około, nasze własne w mieszkaniu sztuk 5.
W łazience na liczniki też radio, gdyż spółdzielnia i to odczytuje zdalnie, ale nie sprawdzałem jeszcze co tam siedzi.

Odczytu zero…

Gdzie mogę jeszcze szukać problemu?

Witam.
Mam takie logi z ESPHome.
Czy to oznacza ,że mój CC1101 odbiera jakieś dane? Czy wręcz przeciwnie, coś jest nie tak . A jeśli tak to co dalej z tym zrobić?

[15:43:23][C][wifi:416]:   Signal strength: -71 dB ▂▄▆█
[15:43:23][C][wifi:420]:   Channel: 1
[15:43:23][C][wifi:421]:   Subnet: 255.255.255.0
[15:43:23][C][wifi:422]:   Gateway: 192.168.1.1
[15:43:23][C][wifi:423]:   DNS1: 192.168.1.1
[15:43:23][C][wifi:424]:   DNS2: 0.0.0.0
[15:43:23][C][logger:439]: Logger:
[15:43:23][C][logger:440]:   Level: DEBUG
[15:43:23][C][logger:441]:   Log Baud Rate: 115200
[15:43:23][C][logger:443]:   Hardware UART: UART0
[15:43:23][C][captive_portal:088]: Captive Portal:
[15:43:23][C][sntp:053]: SNTP Time:
[15:43:23][C][sntp:054]:   Server 1: '0.pool.ntp.org'
[15:43:23][C][sntp:055]:   Server 2: '1.pool.ntp.org'
[15:43:23][C][sntp:056]:   Server 3: '2.pool.ntp.org'
[15:43:23][C][sntp:057]:   Timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'
[15:43:23][C][mdns:115]: mDNS:
[15:43:23][C][mdns:116]:   Hostname: cieplomierz
[15:43:23][C][ota:097]: Over-The-Air Updates:
[15:43:23][C][ota:098]:   Address: cieplomierz.local:8266
[15:43:23][C][ota:101]:   Using Password.
[15:43:23][C][api:139]: API Server:
[15:43:23][C][api:140]:   Address: cieplomierz.local:6053
[15:43:23][C][api:142]:   Using noise encryption: YES
[15:43:23][C][wmbus:372]: wM-Bus v3.1.7:
[15:43:23][C][wmbus:389]:   CC1101 frequency: 868.950 MHz
[15:43:23][C][wmbus:390]:   CC1101 SPI bus:
[15:43:23][C][wmbus:391]:     MOSI Pin: GPIO13
[15:43:23][C][wmbus:392]:     MISO Pin: GPIO12
[15:43:23][C][wmbus:393]:     CLK Pin:  GPIO14
[15:43:23][C][wmbus:394]:     CS Pin:   GPIO15
[15:43:23][C][wmbus:395]:     GDO0 Pin: GPIO5
[15:43:23][C][wmbus:396]:     GDO2 Pin: GPIO4
[15:43:23][C][wmbus:403]:   Available drivers:  amiplus, apator08, apator162, apatoreitn, bmeters, c5isf, compact5, dme07, elf, evo868, fhkvdataiii, flowiq2200, hydrocalm3, hydrus, iperl, itron, izar, kamheat, mkradio3, mkradio4, mkradio4a, multical21, qheat, qwater, rfmtx1, sharky774, topaseskr, ultrimis, unismart, vario451
[15:43:27][D][mbus:035]: Processing T1 A frame
[15:43:27][D][mbus:035]: Processing T1 A frame
[15:43:27][D][mbus:035]: Processing T1 A frame
[15:43:40][D][mbus:035]: Processing T1 A frame
[15:43:41][D][mbus:035]: Processing T1 A frame
[15:43:54][D][mbus:035]: Processing T1 A frame
[15:43:55][D][mbus:035]: Processing T1 A frame

Te wpisy "Procesing T1 A frame " schodzą co kilka sekund poza tym co jakiś czs synchronizacja czasu i nic poza tym. Meter ID wziąłem z SerialNumber . A może problem jest w tym że moje mierniki w piwnicy to 3 x sharky775 a nie 774 ?Połączenia sprawdzałem już trzy razy.
Nie wiem czy kupować nowy CC ?

esphome:
  name: cieplomierz
  friendly_name: Podzielnik
esp8266:
  board: nodemcuv2

external_components:

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

logger:
  level: DEBUG

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Cieplomierz Fallback Hotspot"
    password: "2myF6fOAyiOl"
# Enable logging

captive_portal:

wmbus:
  mosi_pin: GPIO13 # D7
  miso_pin: GPIO12 # D6
  clk_pin:  GPIO14 # D5
  cs_pin:   GPIO15 # D8
  gdo0_pin: GPIO5  # D1
  gdo2_pin: GPIO4  # D2
  log_unknown: True

time:
  - platform: sntp
    id: time_sntp
sensor:
  - platform: wmbus
    meter_id: 76047533
    type: sharky774
    total_energy_consumption_gj:
      name: "total_energy_consumption_gj"
    power_kw:
      name: "power_kw"  

Trochę mam wrażenie, że nikt nie czyta co pisuje autor @_Szczepan
W pierwszym etapie uruchomienia NIE definiujemy sensorów dla liczników, tylko zbieramy logi (ewentualnie z podwyższonym poziomem logowania).

Dopiero gdy znamy ID liczników na podstawie analizy telegramów z logów definiujemy sensory.

1 Like

Nc nie trzeba zerami uzupełniać - a przynajmniej u mnie.
Proszę nie powielajcie tej bzdury. Pewnie gdzieś w jakimś starym kodzie (nie moim) taki był wymóg.
Teraz to jest herezja.

Czyli CC1101 coś odbiera. Mozesz ustawić log na VERBOSE oraz wywalić sensory z konfiguracji.

OK i teraz ramki wyglądają tak

[19:20:04][V][rxLoop:155]: Have 164 bytes from CC1101 Rx
[19:20:04][D][mbus:035]: Processing T1 A frame
[19:20:04][V][mbus:039]: Frame: 67271C99934D34B4D959C4DA7171F509738381275E1F6DDCCD70E7312F13A3B1973258B663562F18E973198BB342E9C4B659A71A6C8D371C8ECB2598DB1A96C971A7271C99934D34B4D959C4DA71659CA5CC9C4E6CA359665670E7312F13A3B1973258B663562F18E973198BB342E9C4B659A71A6C8D371C8ECB2598DB1A96C971A7271C99934D34B4D959C4DA71659CA5CC9C4E6CA359665659994D972B31C71B256B6B (164) [RAW]
[19:20:04][V][3of6:083]: Decode 3 out of 6 failed..
[19:20:08][V][rxLoop:155]: Have 164 bytes from CC1101 Rx
[19:20:08][D][mbus:035]: Processing T1 A frame
[19:20:08][V][mbus:039]: Frame: 67271C99934D38DB25953B167171E52595C69C3995968CDCB4965B2671966CD1CA71A72938F12DAD298CB9963A66966B1C65672B318ECA5CCB4B1C729993A72A638D271C99934D38DB25953B1671659C8D658D4E6B0B596656965B2671966CD1CA71A72938F12DAD298CB9963A66966B1C65672B318ECA5CCB4B1C729993A72A638D271C99934D38DB25953B1671659C8D658D4E6B0B596656599C5CB1397471334DB0B0 (164) [RAW]
[19:20:08][V][3of6:083]: Decode 3 out of 6 failed..

Coś odbiera ale jest problem z dekodowaniem.
Mozesz:
a) dodac opcje sync_mode: True do YAMLa
b) zmniejszyć odległość (jak daleko teraz jest CC1101?)