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

Kompilacja przebiegła pomyślnie w takiej konfiguracji.

Tak jest ok?

Chyba ok. Nie wiem czy te numery jako nazwy nie powinny być w cudzysłowie

Ja mam bez cudzysłowia i działa. Problemem natomiast jest że co kilka odczytów pojawia się błąd w postaci jakiś kosmicznych liczb albo ujemnych. Przy następnym odczycie wszystko wraca do normy ale na wykresie pik pozostaje.

True. W Izarze też tak miałem, więc zrobiłem filtr:

       if ((waterUsage_temp > 0) and (waterUsage_temp < 10000000)) {    //filtrowanie wartości mniejszych od 0 //to już nie i większych niż 1000 litrów niż poprzednia wartość
            waterUsage = waterUsage_temp;
        } 

W apatorze spróbuj podmienić tego ifa w pliku h:

 if (decrypt_TPL_AES_CBC_IV(frame, pos, key, iv, &num_encrypted_bytes, &num_not_encrypted_at_end)) {
          std::vector<uchar>::iterator fv;
          fv = std::find(pos, frame.end(), 0x10);
          if (fv != frame.end()){
            int v;
            int v_temp;
            memcpy(&v_temp, &fv[1], 4);
            if ((v_temp > 0) and (v_temp < 10000000)) {     //data filter
              v = v_temp;
            } 
            ESP_LOGI("Info", "Meter state: %d L", v);
            my_sensor_state->publish_state(v);
            my_sensor_id->publish_state(MeterID);
          }
        }

Wielkie dzięki!
Sprawdzę ale dopiero jutro bo wszystkie nadajniki po 17 poszły “spać” i nie wysyłają żadnych danych :slight_smile: (mieszkam w bloku)

Przy dwóch licznikach Apator ten if wygląda tak:

 if (decrypt_TPL_AES_CBC_IV(frame, pos, key, iv, &num_encrypted_bytes, &num_not_encrypted_at_end)) {
          std::vector<uchar>::iterator fv;
          fv = std::find(pos, frame.end(), 0x10);
          if (fv != frame.end()){
            int v;
            int v_temp;
            memcpy(&v_temp, &fv[1], 4);
            if ((v_temp > 0) and (v_temp < 10000000)) {     //data filter
              v = v_temp;
            } 
            memcpy(&v, &fv[1], 4);
            ESP_LOGI("Info", "Meter state: %d L", v);
            if (MeterID == ApatorID_1) {
              Apator_state_1->publish_state(v);
              Apator_id_1->publish_state(MeterID);
            } 
            if (MeterID == ApatorID_2) {
              Apator_state_2->publish_state(v);
              Apator_id_2->publish_state(MeterID);
            }
          }
        }   

Uaktualniłem obydwa repozytoria

Czy to dotyczy również połączenie w przypadku odczytu z Izar’a?
Pytanie dot. repozytorium:
ESPhome-IZAR-meter-reader

A ja w moim rozwiązaniu z bramką (obojętnie czy samodzielną czy jako komponent ESPHome) i wmbusmetersem nie mam takich problemów - a całość juz ponad rok chodzi. :wink:

W którym dokładnie kodzie macie te piki? Liczycie tam CRC dla ramki?

U mnie rok z Izarem to wychodzi ponad 3 miliony poprawnych pomiarów na jeden licznik (a słucham dwóch), plus z 6 miesięcy z Apatorem.

Nie, w przypadku Izara, nie trzeba podłączać GDO0 i GDO2

To są jakieś błędy wynikające z dekodowania w ESP, a ja korzystam z gotowych bibliotek Maćka (Izar) i Olka (Apator). Nie wnikam jak to dekodują, aż tak się nie znam.
Esphome nie ma na to wpływu.

1 polubienie

Wszystko u mnie działa, tylko, c że HA do sensora zuzycia wody wymaga jednostki m3 (i w tej jednostce też licznik prezentuje sam na sobie), wiec wypadało by w kodzie podzielić wynik /1000 przed wysłaniem do HA

Jednak pobudziły się te moje śpiochy :slight_smile: ale niestety filtr nie działa :frowning: na pewno dla liczb ujemnych bo już jeden i drugi złapał minus kosmos. Plusowych kosmosów na razie nie łapią

To w pliku h działaj.

Jak by ktoś reflektował to mam do sprzedania nówkę licznik wody zimnej z nakładką Apatora. Przebieg 50L. Plomba na nakladce.
Cena 150zł + wysyłka

Tak zrobiłem, w .h dodałem /1000 i zmieniłem w yaml jednostke :slight_smile:

W izarze taki filtr mi pięknie działa. Wysyla do HA tylko wtedy gdy wartość jest w zakresie od 0 do 10000000.

W apatorze nie mam jak sprawdzic, bo nie wysyła śmieci, ale zasada ta sama, więc dziwne

U mnie też waliło wartościami w kosmos, wgrałem filtr, dam znać czy pomogło :slight_smile:

Tak to działa pieknie :slight_smile:

A i zrezygnowałem z /1000 w .h, zrobiłem template sensor w którym to robię, bo i tak trzeba było dodać kilka atrybutów, żeby dashboard z energią zobaczył to jako wskazanie zuzycia wody :slight_smile:

Ja nadal będę zachwałał pełnego wmbusmeters’a. :grinning: :grinning:
Poniżej statsy z mojej konfiguracji (CC1101+ESP32, komponent do ESPHome+wmbusmeters jako ha-addon), żadnych pików:

@_Szczepan co zrobić aby mieć pewność, że ha_addon jest z Twojej przerobionej wersji?

Chyba nakładka na wodę przestała mi działać, żadnych odczytów od jakiegoś czasu nawet na DVB-T, gaz odczytuje cały czas.

Obecnie to tylko samemu wyedytować te pliki w swojej wersji repo addona (albo lokalnie) i zainstalować go.

Po “staremu” z rtl433 też będzie działać?

Jak będziesz wysyłał telegramy z niego po sieci to powinno działać.