Komponent wM-Bus do ESPHome (SzczepanLeon) wersja 2.x - wątek ogólny

Tak jest w kodzie dla ESP32 od @_Szczepan

wmbus:
  mosi_pin: GPIO32
  clk_pin:  GPIO33 
  miso_pin: GPIO19
  gdo2_pin: GPIO21
  gdo0_pin: GPIO22
  cs_pin:   GPIO23
  log_unknown: true
  led_pin: GPIO2
  led_blink_time: "1s"

Post został scalony z istniejącym tematem: Licznik Wody Diehl Aries IS IZAR

Może się komuś przyda na wypadek chęci przetestowania PCB CC1101 pod kątem przejść (bo te PCB są dość marnie wykonane), to naskrobałem z grubsza jakie piny układu z czym są połączone (nieco odpuściłem tor zasilania, ale to kolor czerwony - układ ma 2 wejścia zasilania - po lewej część procesorowa, po prawej układy radia analogowego, dlatego ich nie połączyłem na rysunku), kolor niebieski to masa (która też jest w postaci większości powierzchni na PCB), a na fioletowo piny interfejsu cyfrowego, a zielony to istotne komponenty (w torze zasilania pominąłem niestety jeden pin i jest błędnie na zielono to ten zielony edit: poprawiony na czerwono po lewej na górze - to jest 3 wejście bloku zasilania, de facto wewnętrzny blok zasilania ma jeszcze wyprowadzony kondensator odsprzęgający, również oznaczyłem to na zielono jako stopień pośredni zasilania dolny lewy róg, ale to nie jest wejście zasilania!), jedynie tor antenowy jest zupełnie nieuwzględniony

1 polubienie

btw. nie bardzo rozumiem dlaczego nie wykorzystujemy pinów HSPI ? lub SPI

Podpiąłem zgodnie ze schematem. Tak mi się wydaje, jednak zaczynam wątpić już czy dobrze odczytuje piny :confused: Wrzucam tez zdjęcie płytek.
Opisane piny CC1101 - czerwonym na czarnym tle. Mam nadziej że czytelnie.

KOD:

esphome:
  name: esp32
  friendly_name: ESP32

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "J9nM/JhuWR5KMJcJ0m2YUuT8D3nCOmVZ3IV0qHIsk6I="

ota:
  password: "0069deae68fb981e56ef31827b413b4e"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32 Fallback Hotspot"
    password: "lbRvrgjsYxHw"

time:
  - platform: sntp
    id: time_sntp

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

wmbus:
  mosi_pin: GPIO32
  clk_pin:  GPIO33 
  miso_pin: GPIO19
  gdo2_pin: GPIO21
  gdo0_pin: GPIO22
  cs_pin:   GPIO23
  log_unknown: true
  led_pin: GPIO2
  led_blink_time: "1s"

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

captive_portal:
    


20231020_162817

O ile się nie mylę to było by dziwne jak by działało, to ESP ma gdzie indziej piny SPI:
Numery wg tego co na płytce a nie obok
mosi = 23,
miso = 19,
clk = 18,
cs=5,
gdo0, gdo2 dowolne GPIO

Opisujesz to do ESP 32 czy 8266 ?

Rozumiem że to piny opisane na płytce ?

mosi = 23, czyli G23
miso = 19, czyli G19
clk = 18, czyli G18
cs=5, czyli G5

a jaka konfiguracja GPIO w yamlu ?

wmbus:
  mosi_pin: GPIO23
  clk_pin:  GPIO18
  miso_pin: GPIO19
  gdo2_pin: GPIO21
  gdo0_pin: GPIO22
  cs_pin:   GPIO5

Tak ?

Przecież to ty podpinasz i sam decydujesz gdzie przylutujesz. YAML ma odpowiadać miejscu podłączenia a nie na odwrót.

W przypadku ESP32 masz dużą dowolność gdzie to SPI z CC1101 podepniesz.

1 polubienie

Tylko własnie problem polega na tym, że gdzieś robie błąd. Podpinam teraz pod ESP32


Konfiguracja

esphome:
  name: esp32
  friendly_name: ESP32

esp32:
  board: nodemcu-32s
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "J9nM/JhuWR5KMJcJ0m2YUuT8D3nCOmVZ3IV0qHIsk6I="

ota:
  password: "0069deae68fb981e56ef31827b413b4e"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32 Fallback Hotspot"
    password: "lbRvrgjsYxHw"

time:
  - platform: sntp
    id: time_sntp

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

wmbus:
  mosi_pin: GPIO23
  clk_pin:  GPIO18
  miso_pin: GPIO19
  gdo2_pin: GPIO21
  gdo0_pin: GPIO22
  cs_pin:   GPIO5
  log_unknown: true
  led_pin: GPIO2
  led_blink_time: "1s"

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

captive_portal:

Podpiete pod piny
Mosi = G23
MISO = G19
CLS = G18
CS = G5
GDO2 = G21
GDO0 = G22

I nadal mam błąd sprawdzenia połączeni CC1101 :confused:



20231020_194105

PS. CC1101 wyjęte nówka z paczki, ale być moze uszkodzone :confused: jest możliwość jakość zweryfikować ?

Ja do wroom32 mam podpięte tak:
mosi = 23,
miso = 19,
clk = 18,
cs=5,
gdo0 = 4,
gdo2 = 2 - tak wiem, to jest też dioda

i generalnie staram się przestrzegać opisów, mimo, że wiem , że teoretycznie w ESP32 można bardziej dowolnie podpinać interfejsy.

Nie zmienia to faktu, że jedno CC1101 chyba uwaliłem w jakiś sposób bo też nie odpowiadało po jakimś czasie…

Bez drugiego CC1101 podpiętego tak samo i działającego? Raczej nie.

Moje doświadczenie wskazuje że ~3-7% CC1101 od “chinczyka” potrafi być uszkodzone.

1 polubienie

to sporo, czyli reasumując nie ma tu żadnego “haczyka” i łopatologiczne podłaczenie pod SPI powinno zadziałać. Już myslałem ze trace rozum i nie potrafie odczytać poprawnie pinów :confused:
w takim razie zamawiamy i czekamy na nowe moduły :confused: niestety

Może @_Szczepan udało Ci się ‘rzucić’ okiem na moje zdjecia i nie rzuca sie w oczy raczej błędne podłączenie ?

Przy okazji zapytam czy jest możliwość uszkodzenia CC1101 w przypadku błędnego podłączenia ? zwrócić na coś wyjątkowo uwagę ? lub przy lutowaniu ? kwestia podpięcia anteny lub inne tego typu aspekty ?

To nie jest tak jak myślisz - wykorzystujemy kontrolery SPI, a ESP32 ma bodajże 3 kontrolery SPI z czego tylko jeden (ten wykorzystywany do połączenia z kościami flash, psram i/lub kartą TF ma statyczne piny i w ogóle często nie wyprowadzony na GPIO bo ludzie z tych pinów robią niewłaściwy użytek i im sprzęt nie działa, akurat na twojej płytce są wyprowadzone jako SD0-SD3, ale z nich nie korzystaj)
w ogóle ESP32 ma w większości “wędrujące piny” (wewnętrzna krosownica i multiplekser to ogarniają)

Jeśli mnie pamięć nie myli w przypadku ESP8266/8285 nie ma takiej dowolności - tam oba kontrolery mają bodajże statyczne piny (albo alternatywna lokalizacja jest tylko jedna? - trzeba zajrzeć do dokumentacji a o tej porze mi się nie chce).

Tak, można zjarać podpinając zasilanie o odwrotnej biegunowości.
Można też uszkodzić podając 5V na jego SPI/GPIO.

Krótkie przewody, nie poplątane (no generalnie zasady jak dla SPI)
Nie przegrzewać - te płytki naprawdę “wieją biedą”, przed lutowaniem możesz sprawdzić czy w ogóle istnieją połączenia z IC (ale rób to multimetrem, który nie wystawia napięcia większego od 1V w trybie badania przejścia, bo spotkałem już mierniki, które potrafią przyładować i 20V, co gwarantuje spalenie delikatnej elektroniki).
Co do anteny to zależy czy lutujesz tą z zestawu czy gniazdko, ale i jedno i drugie jest wykonalne (po to 2 punkty masy po obu stronach wyjścia antenowego), wręcz zamiast fabrycznej anteny można wlutować odcinek prostego miedzianego drutu bez izolacji o długości 83mm + 1-2mm zgięte od kątem prostym w celu lutowania (antena prętowa), w przypadku izolowanego trzeba przeliczyć współczynnik skrócenia (ale myślę że i tak zadziała, jeśli ma działać).

1 polubienie

Hej,
Udało Ci się rozwiązać problem dla 8266 lub ESP32?
Trzeci dzień walczę z dokładnie takim przypadkiem. Mam nieco inną płytkę ESP32 (ESP32S na ESP-WROOM-32). Testuję też na Wemos D1 mini (ESP8266MOD).

Mam dwa moduły CC1101 - z każdym mam ten sam problem. Skupiłem sięna 8266 jako “pinologicznie” łatwiejszym.

Log:

INFO Reading configuration /config/esphome/iperl.yaml...
INFO Detected timezone 'Europe/Warsaw'
INFO Starting log output from iperl.local using esphome API
INFO Successfully connected to iperl.local
[21:01:17][I][app:102]: ESPHome version 2023.10.3 compiled on Oct 29 2023, 20:59:52
[21:01:17][C][wifi:546]: WiFi:
[21:01:17][C][wifi:382]:   Local MAC: E8:68:E7:6E:84:22
[21:01:17][C][wifi:383]:   SSID: [redacted]
[21:01:17][C][wifi:384]:   IP Address: 192.168.1.25
[21:01:17][C][wifi:385]:   BSSID: [redacted]
[21:01:17][C][wifi:387]:   Hostname: 'iperl'
[21:01:17][C][wifi:389]:   Signal strength: -60 dB ▂▄▆█
[21:01:17][C][wifi:393]:   Channel: 6
[21:01:17][C][wifi:394]:   Subnet: 255.255.255.0
[21:01:17][C][wifi:395]:   Gateway: 192.168.1.1
[21:01:17][C][wifi:396]:   DNS1: 192.168.1.1
[21:01:17][C][wifi:397]:   DNS2: 109.196.48.222
[21:01:17][C][logger:416]: Logger:
[21:01:17][C][logger:417]:   Level: VERBOSE
[21:01:17][C][logger:418]:   Log Baud Rate: 115200
[21:01:17][C][logger:420]:   Hardware UART: UART0
[21:01:17][C][homeassistant.time:010]: Home Assistant Time:
[21:01:17][C][homeassistant.time:011]:   Timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'
[21:01:17][C][captive_portal:088]: Captive Portal:
[21:01:17][C][mdns:115]: mDNS:
[21:01:17][C][mdns:116]:   Hostname: iperl
[21:01:17][V][mdns:117]:   Services:
[21:01:17][V][mdns:119]:   - _esphomelib, _tcp, 6053
[21:01:17][V][mdns:121]:     TXT: friendly_name = iperl
[21:01:17][V][mdns:121]:     TXT: version = 2023.10.3
[21:01:17][V][mdns:121]:     TXT: mac = e868e76e8422
[21:01:17][V][mdns:121]:     TXT: platform = ESP8266
[21:01:17][V][mdns:121]:     TXT: board = nodemcuv2
[21:01:17][V][mdns:121]:     TXT: network = wifi
[21:01:17][V][mdns:121]:     TXT: api_encryption = Noise_NNpsk0_25519_ChaChaPoly_SHA256
[21:01:17][C][ota:097]: Over-The-Air Updates:
[21:01:17][C][ota:098]:   Address: iperl.local:8266
[21:01:17][C][ota:101]:   Using Password.
[21:01:17][C][api:138]: API Server:
[21:01:17][C][api:139]:   Address: iperl.local:6053
[21:01:17][C][api:141]:   Using noise encryption: YES
[21:01:17][C][wmbus:394]: wM-Bus v2.2.31:
[21:01:17][C][wmbus:411]:   CC1101 SPI bus:
[21:01:17][C][wmbus:412]:     MOSI Pin: GPIO13
[21:01:17][C][wmbus:413]:     MISO Pin: GPIO12
[21:01:17][C][wmbus:414]:     CLK Pin:  GPIO14
[21:01:17][C][wmbus:415]:     CS Pin:   GPIO15
[21:01:17][C][wmbus:416]:     GDO0 Pin: GPIO4
[21:01:17][C][wmbus:417]:     GDO2 Pin: GPIO5
[21:01:17][E][wmbus:430]:   Check connection to CC1101!
[21:05:40][I][ota:117]: Boot seems successful, resetting boot loop counter.111

Config (na testy wywaliłem sensory jak gdzieś radził @szopen ):

  name: iperl
  friendly_name: iperl

esp8266:
  board: nodemcuv2

time:
  - platform: homeassistant
    id: homeassistant_time

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

# Enable logging
logger:
  #level: DEBUG
  level: VERBOSE

# Enable Home Assistant API
api:
  encryption:
    key: "IL9/VuzXmaDES6XtHI09sy7DBoTgUwuV7gETLJpZX2c="

ota:
  password: "47eacdc9e38a7de76ca92d4bd4f89959"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Iperl Fallback Hotspot"
    password: "GAyeczJ9DjWk"

captive_portal:

wmbus:
  log_unknown: True

  mosi_pin: D7
  miso_pin: D6
  clk_pin:  D5
  cs_pin:   D8
  gdo0_pin: D2
  gdo2_pin: D1

#  led_pin: GPIO2
#  led_blink_time: "1s"

Przewody około 7cm, poprawne przejścia od ESP do chipu CC1101, zasilanie z ESP stabilne 3.3V. Nie mam bladego pojęcia co jeszcze mogę zrobić poza zakupem kolejnego radia lub gotowca od @_Szczepan.

Będę wdzięczny za rzucenie okiem na powyższe - może gdzieś robię błąd:/

Witam, niestety ja jeszcze nie ruszyłem nawet o krok z tematem…czekam na nowe moduły cc1101…myślałem że ten jest uwalony, ale teraz sam już nie wiem.
Swoją drogą szkoda że na cc1101 nie ma diodki informującej o jakiejś transmisji danych lub czegoś w ten deseń, byłaby chociaż pewność ze moduł robi cokolwiek i żyje…

@Tomasz_Nowrot
masz dokładnie ten problem:

czyli konfiguracja nie odpowiada połączeniom (najprawdopodobniej)


kwestia zupełnie poboczna - jeśli używasz płytki D1 mini to używaj jej definicji d1_mini, a nie definicji płytki o innej “pinologii” nodemcuv2 w tym wypadku ma to tylko wpływ na aliasy Dx spoza zakresu, który używasz

poniżej fragmenty kodu definiującego aliasy dla tych 2 modeli płytek (tak naprawdę dla kilku więcej, ale konfiguracja widoczna poniżej zawiera 3 modele referencyjne, przy czym NodeMCU v2 zawiera rekurencyjnie załączoną konfigurację NodeMCU v0.9 (definicję nodemcu)

    "nodemcu": {
        "D0": 16,
        "D1": 5,
        "D2": 4,
        "D3": 0,
        "D4": 2,
        "D5": 14,
        "D6": 12,
        "D7": 13,
        "D8": 15,
        "D9": 3,
        "D10": 1,
        "LED": 16,
    },
    "nodemcuv2": "nodemcu",

a tu D1 mini

    "d1_mini": {
        "D0": 16,
        "D1": 5,
        "D2": 4,
        "D3": 0,
        "D4": 2,
        "D5": 14,
        "D6": 12,
        "D7": 13,
        "D8": 15,
        "LED": 2,
    },

UWAGA kwestia trzecia
Jak porównasz to zauważysz, że D1 mini pechowo ma podpiętą diodę LED na pinie GPIO2, czyli D4 (co może przeszkadzać w poprawnej komunikacji - GPIO z fabrycznie podpiętym jakimś sprzętem w rodzaju mostka UART-USB czy nawet diody LED automatycznie staje się “trefne”, bo jego zachowanie elektryczne może odbiegać od tego co się spodziewamy po dostępnym do użytku GPIO); natomiast NodeMCU v2 (i v3) mają LED podpięty do zupełnie innego GPIO.

PS nie analizowałem w ogóle całej reszty.

PPS kup gotowca od @_Szczepan (jeśli ma na zbyciu), w końcu za rozwój tego projektu należy się mu szeleszcząca mamona (możesz też wesprzeć finansowo w inny sposób - linki na repo projektu).

W 100% odpowiada.

Ajj - zapomniałem zmienić. To był jeden z tych rozpaczliwych gestów, gdy już innych pomysłów brak.
Pierwotnie było d1_mini i zakomentowany LED na gpio2.

Pewnie tak zrobię, ale to nie jest rozwiązanie problemu. A jak widzę nie jestem jedyny (nie tylko w tym wątku można znaleźć podobne pytania).

I dzięki za wskazówki!

Zakomentowanie spowoduje tylko nie używanie tego pinu do wysterowania LEDa, ale nie zmienia elektrycznego schematu danej płytki, ten LED jest nadal tam fizycznie podpięty.

Przydałyby się “referencyjne” projekty dla danych modeli płytek ESP.

1 polubienie

Ja tylko podpowiem od siebie, że uwalone radio wcale nie jest jakąś rzadkością. Jak zamawiam od skośnych, to okolo 20% jest martwe na dzień dobry. Ostatnio też 10% esp32 było jebnięte (program nie startował). Dlatego ja testuję każdą jedną sztukę, zanim wyjdzie do klienta

1 polubienie

Czy któryś z innych modułów 868 jest może kompatybilny z tym CC1101?
Może kojarzysz jak to wygląda?

Np ten (to też CC1101, ale w innej odsłonie):