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

Opis w kodzie jest z punktu widzenia CC1101 - czyli miso oznacza miso na cc1101 a cyferka oznacza pin w ESP

1 Like

TAK, rozumiem, ale dla 110% pewności dopytam: MISO na CC1101 łączymy z MISO na NodeMcu?

Tak, MISO z CC1101 łączysz do ESP pin12 MISO

1 Like

I tak i nie. Pod ESP32 mozesz podlaczyc pod prawie dowolne piny.

Ale na fotce pokazał ESP8266:)

1 Like

Panowie dziękuje za pomoc, jest już wszystko jasne zostawiam czytelną grafikę z podłączeniem dla takich amatorów jak ja poniżej:


Powyższy schemat dotyczy - tego repozytorium dla przystawki APATORA :

1 Like

Cześć,
Jak sprawa wygląda z innymi nadajnikami (driverami)?
Mam AT-WMBUS-08 (apator08) co ciekawe na naklejce jest numer “212139” a w wmbusmeters mam wpisany numer “00033cab” w konfiguracji dla rtl433 bo taki mi wykrył na “auto”.

No i licznik gazu (driver=unismart).
image

Oczywiście jak coś odczytam to dam znać.
Puki co jak wpisuje powyższe numery z naklejek to mam błędy podczas kompilacji, może winą są właśnie drivery?

Compiling /data/wmbus/.pioenvs/wmbus/src/main.cpp.o
In file included from src/main.cpp:29:
src/apator.h:32:18: error: invalid digit "9" in octal constant
   32 | int ApatorID_1 = 00021290;
      |                  ^~~~~~~~
*** [/data/wmbus/.pioenvs/wmbus/src/main.cpp.o] Error 1
========================== [FAILED] Took 2.39 seconds ==========================

Próbowałem z zerami bez ogólnie różnie.

skoro mówisz o ciekawostkach to
212139=0x33cab

1 Like

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 Like

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