Opis w kodzie jest z punktu widzenia CC1101 - czyli miso oznacza miso na cc1101 a cyferka oznacza pin w ESP
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
I tak i nie. Pod ESP32 mozesz podlaczyc pod prawie dowolne piny.
Ale na fotce pokazał ESP8266:)
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 :
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).
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
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 (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.
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.
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 ale niestety filtr nie działa
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