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

Czyli do T1 klucza nie potrzebuję, do C1 już tak, ale go nie posiadam.
W wersji 3.x można było wybrać ramki za pomocą “mode:”.
Jak w 4.x to zrobić ?

To wszystko zalezy od konfiguracji miernika.

Nie ma takiej opcji - wszystkim zajmuje się driver.
W 3.0 mode pojawiło się tylko dlatego ze obsługa C1 była na pewnym etapie eksperymentalna (bez CRC).

Do konfiguracji wmbus na ESP32 próbuję dołożyć jeszcze czujnik BME280 wg opisu tutaj i tutaj.
Odczyty się pojawiają, są OK dla wmbus, ale niestety NOK dla BME280 bez względu na to, czy stosuję bme280_spi czy bme280_i2c. Np. temperatura jest -60 st, a spodziewana ok +21.

Gdy instaluję osobno wmbus i bme280_spi, odczyty z tych urządzeń są poprawne. Jeszcze dodam dla porządku, że obydwa są wpięte do różnych GPIO.

Czy w ogóle użycie CC1101 i BME280 razem na jednym MCU ma szansę powodzenia? Powinno zadziałać czy nie? Jeśli powinno, to mogę podrzucić konfig i logi. A jeśli się nie da, to poproszę o wskazówkę, dlaczego.

Wygenerowałem sobie problem i mam nadzieję, że znalazłem rozwiązanie.

Sekcję spi zrobiłem tak:

spi:
  id:        spi_bme280
  interface: spi3
  clk_pin:  GPIO14
  mosi_pin: GPIO12
  miso_pin: GPIO13

Natomiast w sensor: platformę bme280 mam tak:

  - platform: bme280_spi
    spi_id:   spi_bme280
    cs_pin:   GPIO15

Wzorowałem się na tym opisie. Wydaje mi się, że kluczowe było wymuszenie (hardware’owego) kontrolera spi3. Teraz w logu startowym wyświetla się

[C][spi:072]:   Using HW SPI: HSPI

Przykładowy kawałek odczytów:

[15:28:10][D][mbus:035]: Received T1 A frame
[15:28:10][I][wmbus:092]: Using selected driver apator162 (detected driver was apator162)
[15:28:10][I][wmbus:104]: apator162 [0x03303990] RSSI: -77dBm T: 3E4401069039300305077A4C003085CEE7F079BD2841A272056213B491193EBBA6565749B8A9469B190041AD9D6163D893E5AFAC0C391147BF0AB67D3A2DE3 (63) T1 A
[15:28:10][D][meters.cpp:1980]: (meter) created ESPHome apator162 03303990 encrypted
[15:28:10][D][meters.cpp:909]: (meter) ESPHome(0) apator162  handling telegram from 03303990.M=APA.V=05.T=07
[15:28:10][D][sensor:094]: 'Wodomierz ogrodkowy RSSI': Sending state -77.00000 dBm with 0 decimals of accuracy
[15:28:11][D][sensor:094]: 'Wodomierz ogrodkowy': Sending state 30.15300 m3 with 3 decimals of accuracy
[15:28:11][W][component:237]: Component wmbus took a long time for an operation (90 ms).
[15:28:11][W][component:238]: Components should block for at most 30 ms.
[15:29:10][D][sensor:094]: 'Temperature': Sending state 20.48410 °C with 1 decimals of accuracy
[15:29:10][D][sensor:094]: 'Pressure': Sending state 1006.42487 hPa with 1 decimals of accuracy
[15:29:10][D][sensor:094]: 'Rel. Humidity': Sending state 48.91016 % with 1 decimals of accuracy

Poproszę wypowiedzcie się, bo się na tym znacie :slight_smile:, czy skoro są spodziewane dane, to wystarczy do stwierdzenia, że taka konfiguracja jest poprawna. Chodzi mi szczególnie o to, czy nie ma kolizji z wmbus.

1 polubienie

Jak masz inne piny (inny SPI bus) w obu komponentach i dane są poprawne - to wszystko jest OK. Poprostu wykorzystujesz to co ESP32 daje z siebie.

Generalnie na jednej szynie SPI można mieć więcej niż jeden slave, oczywiście musi być spełnionych kilka warunków (przepustowość szyny nie może być przekroczona, każdy slave musi mieć możliwość pracować z daną częstotliwością itd.) nie wiem wprawdzie jak jest w przypadku tutaj opisywanego komponentu - czy CC1101 może się dzielić szyną z czymś innym, czy wymaga maksa jaki da się wycisnąć z szyny…

hmm SPI dla BME280 wydaje mi się strzelaniem z armaty do muchy, skoro te czujniki mogą pracować też jako I2C

@_Szczepan, dziękuję!

@szopen

hmm SPI dla BME280 wydaje mi się strzelaniem z armaty do muchy, skoro te czujniki mogą pracować też jako I2C

Pewnie masz rację, ale… Próbowałem jakiś podstawowy config I2C, ale z jakiegoś powodu dostawałem takie same niepoprawne odczyty TPH, jak dla SPI bez wskazania interface. W końcu wczytałem się w SPI, popróbowałem i działa.

1 polubienie

Szybkie pytanie, w Gamie 350 po zdekodowaniu pojawiają się takie pola:
“device_date_time”:“2024-10-18 19:13:24”,
“timestamp”:“2024-10-18T17:13:51Z”
Chciałbym pokazać jedno z nich w HA. Pytanie, jakie ustawić Unit of Measure, bo generalnie to pierwsze wg logowania Verbose jest tekstem.

Na chwilę obecną nie da się.

(post usunięty przez autora)