Początki są trudne. Postanowiłem podłączyć licznik SMD72Bi do homeassistanta. Licznik jest dwukierunkowy, ale zaznaczam na początku jest wykorzystywany jako podlicznik do PC i liczy tylko pobór. Ma wyjście impulsowe 1000im/kWh zamykające obwód w momencie mignięcia diody. Podłączyłem to wyjście bezpośrednio do GND i D4 (GPIO4) na płytce ESP32.
Kompletnie się na tym nie znam i działa na tym co znajdę w internecie część rozumiejąc, a część robiąc kopiuj/wklej. ESP32 jest już widoczne w homeassitant i z tym nie ma problemu, encje odczytuje itp.
Problem1.
Zliczam impulsy w ten sposób:
Dokładnie 2 razy za dużo impulsów, przypuszczam że bezpośrednie podłączenie zlicza mi załączenie i wyłączenie impulsu, ale prawdziwym probleme (to chyba da się obejść zmieniając multiply na 0,0005) że w homeassistacie w ogóle pokazuje dziwne rzeczy:
Tak ze 100x mniej podliczył energii niż by wynikało ze zliczanych impulsów.
Problem 2.
Jak pobrać bieżącą moc z licznika. Wymyśliłem sobie żeby zliczyać czas pomiędzy impulsami (1Wh) i liczyć P=W/t, ale jak pobrać ten czas z ESP32, a może w ogóle nie tędy droga i trzeba to zrobić inaczej, choć taki sposób by mi pasował bo byłby najaktualniejszy - minimalny pobór na PC to 7W czyli ~500s pomiędzy impulsami, a maksymalny to może być około 4kW czyli ~0,9s.
U mnie działa to dobrze z ustawieniami dla internal_filter: 100ms oraz opcjonalnym timeout: 1min (wskazówka wodomierza może zatrzymać się pod czujnikiem i impuls może trwać godzinami).
Jeśli bezpośrednio, to musisz wiedzieć czy tak możesz. Na dodatek nie użyłeś dla GPIO wewnętrznego pullup: true i input: true.
A podstawa to ustalenie jak prawidłowo można się podłączyć pod te wyjście impulsowe tego licznika, co jest elementem wykonawczym na tym wyjściu.
Tym bardziej powinieneś korzystać z oficjalnej dokumentacji, a nie przypadkowych zlepkach informacji, z przypadkowych źródeł wklejając kod bez zrozumienia. Zamiast tracić bliżej nieokreślony czas na próby, mając nadzieję, że się uda, lepiej poświęcić go na zrozumienie jak to działa.