Właśnie umieściłem na githubie nowszą wersję (0.9.8), zarówno biblioteki jak i mojego komponentu.
Przez ostatnie 12h nie miałem ani jednego restartu wymuszonego poprzez WDT (brak odczytu z CC1101).
Dobra, to chyba zostal problem z podlaczeniem CC1101 do ESP32 (z 8266 dziala mi normalnie)
Kupilem dodatkowo ESP32 aby sie pobawic ale po podlaczeniu CC1101 do ESP32 przestaje dzialac i jest nie dostepne.
Sprawedzilem czy nie ma zwarcc miedzy polaczeniami, napiecie do CC dociera i jest na normalnym poziomie wiec przypuszczam ze cos go gryzie podlaczenie sygnalowe.
STAN REPOZYTORIUM NA DZIEŃ 2022-12-21 godzina 13:20
Po wielu przegranych bitwach z moim RP3b+ i dzięki wsparciu @szopen i @macek (wielkie dzięki) wkońcu udało mi się skompilować BINarke i wgrać do NodeMcu i scalić to z HA, tak że to hula.
Kilka uwag:
Dostaje (jak inni) PIKI. Po piku następuje powrót do prawidłowej wartości…
a) ale tylko dla stanu licznika
apator.h
93 my_sensor_state->publish_state(v);
b) dla wartości ID licznika robi się bałagan po piku i pozostaje - nie resetuje się.
Po raz kolejny powtarzam, że piki to nie moja wina. Ja wrzuciłem gotowy dekder od @OlekD do esphome i to działa. W celu wyeliminowania pikow dodałem filtr, biorący pod uwage wartości pomiedzy 0 a 1000000, który @Jarosław_Wicik później zmodyfikował. Sproboj wrzucic jego wersję (jest wyzej w tym temacie)
Nie denerwuj się. Wielki szacunek za udostępnienie swojej pracy. W tym temacie jest taka wielowątkowość że idzie się pogubić są omawiane trzy albo i więcej repozytoria
A może i moja wina jednak…
Po konsultacji z @OlekD, zaktualizowałem repo.
Wersja na 1 licznik Apator:
Wersja na 2 liczniki Apator:
Potestujcie czy wali wartościami stanu licznika z kosmosu.
Przerobiłem też sposób przesyłania ID. Ze względu na to, że esphome wysyła dane w zmiennej float, ma pewne ograniczenia co do wartości i przez to może wyświetlać nieprawidłową wartość ID w HA. Zrobiłem przesyłanie ID tak jak w przypadku Izara - jako text sensor.
teraz potestujemy stabilność
Update 1
narazie nakładka śpi, bo mam już rozbieżność między fizycznym odczytem a radiowym 10 l
Update 2
o 05:28 nakładka się przebudziła na chwile i poszła spać dalej
o 06:43 nakładka się przebudziła na chwile i poszła spać dalej
Dzięki za info.
Dodałem te nawiasy na githubie już po kompilacji kodu u siebie, gdzie nawiasów nie miałem.
Chciałem żeby to tak ładnie było ogarnięte. Dziwne, że te nawiasy coś zmieniają…
Nie mogą, Jak coś zmieniają to albo kompilator jest “walnięty” (mało prawdopodobne) albo warunki w IF’e mają jakiś defekt.
99% junior programistów pierwsze co słyszy w pracy to “wciskaj nawiasy wszędzie – niech nikt nie zastanawia się co autor miał na myśli”, czyli inaczej “nie zakłądaj że ktoś po tobie będzie znał kolejność wykonywania działań i operatorów”
Też usłyszałem od kolegi elektronika, żeby dać nawiasy do każdego warunku, to tak zrobiłem, bo to nawet lepiej w kodzie wygląda.
Dlaczego inaczej działa - nie wiem…
Nie wiem dlaczego bez nawiasów działa a z nie. Kompilowałem zgodnie z wcześniejszą sugestią repo przed ostatnimi poprawkami dodając samodzielnie filtr i miałem dokładnie tą samą sytuacje. Z nawiasami nie było żadnych wartości (ID, STATUS) bez były.
Platforma to NodeMcu V3 z ESP8266MOD na pokładzie z CH340 robiącym za UART.
Z tym że deklaracja platformy ESP8266 jest u mnie zmieniona zgodnie z obowiązującą dokumentacją ESPHome:
esphome:
name: apator
comment: Maszynownia - licznik wody
includes:
- custom_components/apator.h
libraries:
- SPI
- "https://github.com/bblanchon/ArduinoJson.git"
- "https://github.com/LSatan/SmartRC-CC1101-Driver-Lib.git"
- "https://github.com/SzczepanLeon/wMbus-lib.git"
- "https://github.com/MariuszWoszczynski/Apator-meter-reader-core.git"
esp8266:
board: nodemcuv2
# Enable logging
logger:
level: DEBUG
# Enable Home Assistant API
api:
encryption:
key: "*************************************************************"
ota:
password: "******************************************"
# Serwer with a statistic data and OTA board update
web_server:
port: 80
version: 2
auth:
username: !secret maszynownia_auth_u
password: !secret maszynownia_auth_p
# WiFi Local Area Network (HA)
wifi:
ssid: !secret maszynownia_wifi_ssid
password: !secret maszynownia_wifi_p
# Hotspot when can't connect to Local WiFi
ap:
ssid: "Apator AP"
password: !secret maszynownia_ap_p
captive_portal:
text_sensor:
- platform: custom
lambda: |-
auto textsensor = new MyTextSensor();
App.register_component(textsensor);
return {textsensor->my_text_sensor};
text_sensors:
- name: Meter ID #text
filters:
- to_upper:
sensor:
- platform: custom
lambda: |-
auto sensor = new MySensor();
App.register_component(sensor);
return {sensor->my_sensor_state};
sensors:
- name: Water meter state #float value
unit_of_measurement: L
accuracy_decimals: 0
# int ApatorID = 0x4829838;
U mnie po aktualizacji źródeł nadal jeden licznik odczytywany jest prawidłowo a drugi podaje stale kosmiczne wartości (nie są to chwilowe piki).
Jeśli chodzi o stabilność to z moich obserwacji jest dobrze.
Poniżej wartości odczytywane u mnie z liczników wody:
@MarcO A czy ten drugi licznik kupowałeś z nakładką lub samą nakładkę jako nowe czy używane? Bo sprzedając używki nikt nie resetuje licznika w nakładce, a u Ciebie wskazanie to 469795,584 m3 co przekracza już zakres samego liczydła. 00000,000m3
Obydwa liczniki wraz z nakładkami były wyminiane na nowe przez firmę.
Prawidłowy odczyt tego licznika jest 36 589 L, który realizuję za pomocą wmbusmeters i karty DVB-T.
A spróbuj zainstalować wersję na jeden licznik i podaj ID tego co źle pokazuje.
Trzeba dojść do tego czy coś jest z repo na 2 liczniki, czy ten licznik inaczej nadaje i dekoder nie daje rady.
Czy HA liczy zużycie przy tej wartości (czy wartość się zmienia)?