Apator, Izar, AT-WMBUS-16-2 odczyt wodomierza ESPHome + CC1101

Dzięki wielkie! Pokazała się encja.
Ja miałem to wpisane:

  - platform: template
    sensors:

I nie chciało działać. Dziwne.
Co do nieprawidłowych wartości to nie wiem. Ja w sumie mam może 3-4 m do czujnika no i jedną ścianę.

No u mnie CC1101 leżało w szafce z licznikami i też potrafiły być skoki pod 10000, na sofcie Szczepana leżą w tym samym miejscu i spokój jest.

@Jarosław_Wicik To nie jest dziwnie, tylko miałeś stary format sensora :slight_smile: to, że “w internecie nic nie ginie” na ten minus, że ludzie kopiują coś z postów innych sprzed x czasu bez sprawdzania w dokumentacji , czy coś nie uległo zmianie.

1 polubienie

Cześć. czy ktoś odczytuje nakładkę AT-WMBUS-16-2h ? nie zauważyłem żeby ktoś wspomniał o wersji h.
Wczoraj parę godzin próbowałem poskładać esp+CC1101 i napotkałem wszystkie problemy świata po drodze, więc wolę się upewnić zanim znowu siądę do tego.

Jedyne info w necie o tej nakłądce znalazłem na Kazachskiej stronie:

Wygląda na standardowy wMBus, więc powinno działać (wątpię żeby nagle dla jakiejś wersji zmienili telegram np na C1).

1 polubienie

Witam. A może mi ktoś podpowiedzieć dlaczego mając dwie nakładki APATOR AT-WMBUS-16-2 (woda ciepła i zimna) z jednej odczytuję prawidłowo pomiar a z drugiej jakieś kosmiczne wartości.
Odczytów dokonuję za pomocą WEMOS D1 PRO + CC1101 korzystając z bibliotek:

Spróbuj zmienić w pliku h, tak jak zrobił Jarek:

W tym problem, że już tego próbowałem tego rozwiązania i wtedy nie dostaję żadnych danych z tego licznika.
Wgrałem również wersję na pojedynczy licznik i tak samo wpisując ID jednego licznika otrzymuję prawidlowe dane a po wpisaniu ID drugiego licznika lecą tylko kosmiczne wartości, ani razu nie dostaję wartości prawidłowej.
Ma ktoś jakiś pomysł dlaczego tak się dzieje?

Przykładowy błedny odczyt:

[13:38:11][I][Info:064]: Package received. Meter ID = 02549822
[13:38:11][I][Info:065]: Signal strenght: -49
[13:38:11][I][Info:089]: Meter state: 50440371 L

Gdzie stan licznika jest: 36,287 m³

Poniżej odczyt prawidłowy z drugiego licznika:

[13:43:13][I][Info:064]: Package received. Meter ID = 03649421
[13:43:13][I][Info:065]: Signal strenght: -46
[13:43:13][I][Info:089]: Meter state: 70096 L

Gdzie stan licznika jest: 70,096 m³

Apator ma z tego co tłumaczył autor wmbusmeters niestandardowy protkół i nawet twórca wmbusmeters musi od czasu do czasu coś tam poprawiać - zdaje się, że zmieniają okresowo położenie bitów z odczytem. Może Twoja przestawiła się na układ, którego jeszcze nie potrafi poprawnie zdekodować :slight_smile:

Raczej nie bo aktualnie odbieram dane z obydwu za pomocą wmbusmeters i karty DVB-T i tam odczyty są prawidłowe.

Walczyłem z tym na wemosie i działało to średnio, później zmieniłem na nodemcv3 i stabilność zdecydowanie się poprawiła, ale czasem błędy były, po wprowadzeniu modyfikacji o której pisze @Woszu łapie pięknie z dwóch liczników. Co prawda pozostał problem zawieszania się odczytów po około 7-8 godzinach ale i to rozwiązałem dość prostym watchdogiem, od niedzieli działa stabilnie.
Być może wemos jest mniej wydajny niż nodemcv3 i to powoduje problem?

Jeżeli korzystasz z mojej biblioteki do odczytu wMBus z CC1101 to jutro wypycham fixa/usprawnienie zwiększające stabilność (testy stabilności lecą – wygląda to obiecująco).

1 polubienie

W 99,9 % korzystam z rozwiązania @Mariusz_Woszczyński 0,01% to moje modyfikacje :slight_smile: a z tego co widzę są tam twoje biblioteki. Z niecierpliwością czekam na pozytywne zakończenie testów .

Procek jest w nich identyczny (a wręcz całe MCU, bo to przecież nie sam CPU), ale UWAGA niektóre podróbki WeMos’a mają zamontowany za słaby VRM (o obciążalności zaledwie 100mA) i to może być potencjalnie przyczyną niestabilnej pracy (zawsze można spróbować dolutować jakiś elektrolit, by wygładzić zasilanie, ale jeśli CPU pracuje na maksa cały czas, to on nie pomoże).

Tyle, że ja na stabilność nie mogę narzekać ponieważ ok 20h odczytywałem dane z licznika którego dane odczytuje prawidłowo i nie zauważyłem żadnych problemów.
Mam tylko ten problem, że z jednego licznika odczytuje dane prawidłowo a z drugiego jakieś kosmiczne wartości stale lecą.

To było do @Jarosław_Wicik
Jeśli chodzi o kwestie drugiego licznika, to zapewne jakiś problem z kodem, ale na to jestem “za cienki w uszach”.

Też sądzę, że jest to jakiś problem z kodem ponieważ jako mieszkaniec blokowiska widzę wiele liczników z nakładką APATOR-162-2 i testowo wrzuciłem kod MariuszWoszczynski/ESPhome-APATOR-meter-reader zmieniając tylko ID na losowe ID liczników które widzę.
Wniosek jest taki, że część liczników odczytywana jest z prawidłowymi danymi a niektóre odczytywane są z danymi z kosmosu.

@Mariusz_Woszczyński Co jest z ostatnia wersja izar’a?

Compiling /data/licznik-wody/.pioenvs/licznik-wody/src/main.cpp.o
In file included from src/main.cpp:26:
src/izar_meter.h:14:7: error: ‘TextSensor’ does not name a type
14 | TextSensor *my_text_sensor = new TextSensor();
| ^~~~~~~~~~
src/izar_meter.h:17:57: error: expected class-name before ‘{’ token
17 | class MyTextSensor :public Component, public TextSensor {
| ^
src/izar_meter.h:19:9: error: ‘TextSensor’ does not name a type; did you mean ‘MyTextSensor’?
19 | TextSensor *my_text_sensor = MyTextData::my_text_sensor;
| ^~~~~~~~~~
| MyTextSensor
src/izar_meter.h: In member function ‘virtual void MySensor::loop()’:
src/izar_meter.h:46:21: error: ‘my_text_sensor’ is not a member of ‘MyTextData’
46 | MyTextData::my_text_sensor->publish_state(ID_text);
| ^~~~~~~~~~~~~~
*** [/data/licznik-wody/.pioenvs/licznik-wody/src/main.cpp.o] Error 1
========================== [FAILED] Took 5.83 seconds ==========================

hmm, u mnie to kompiluje.
Plik h wrzucony do esphome/custom components/ ?
Pokaż cały plik yaml z esphome

Jak wcześniej już kompilowałeś kod izara to zrób porządki:

  1. Uruchom opcję Clean Build Files w burger menu esphome
  2. Usuń katalog esphome/.esphome/build/nazwa_twojego_esphome
  3. Usuń z katalogu esphome/.esphome plik: nazwa_twojego_esphome.yaml.json
  4. Usuń z katalogu esphome/.esphome/idedata plik nazwa_twojego_esphome.json

albo utwórz nowy esphome, usuwając obecny z integracji (jak dasz drugi z tym samym IP, to będą się gryzły)

custom components oczywiscie jest, na starej wersji dziala nadal.
Czyszczenie nic nie pomoglo.
Zawartosc yaml:

esphome:
  name: esphome-web-33e900
  includes:
    - custom_components/izar_meter.h
  libraries:
    - SPI
    - "https://github.com/maciekn/izar-wmbus-esp.git"
    - "https://github.com/knolleary/pubsubclient.git"
    - "https://github.com/bblanchon/ArduinoJson.git"
esp32:
  board: esp32dev
  framework:
    type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-33E900"
    password: "UjZT3N7u9IFI"
captive_portal:
   
sensor:
  - platform: custom
    lambda: |-
      auto sensor = new MySensor();
      App.register_component(sensor);
      return {sensor->my_sensor};
    sensors:
      - name: Water meter state          #float value
        unit_of_measurement: L
        accuracy_decimals: 0

@Jordan
Do wklejania kodu NIE używaj cytowania, jest za dużo roboty z poprawianiem takich postów, to jest YAML i go szlag trafia, jeśli wrzucisz na forum nie stosując zasad formatowania, a tu obowiązuje MarkDown (jak na githubie), a zatem wystarczy linijka z 3 odwrotnymi apostrofami (to te spod klawisza tyldy) przed i za wklejanym blokiem…