Alarm przekroczenia ilości impulsów(wodomierz i inne)

User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

EDIT: w tym poście: viewtopic.php?p=223838#p223838, najnowsza wersja softu.

Cześć, w odpowiedzi na pewien problem który pojawił się na tym forum, postanowiłem postawić sobie kolejne zadanie programistyczne(?) które mnie bardzo dużo nauczyło. To lubię:).

Założenie, mamy osobę która nigdy nic nie wgrywała, programowała, nie wie co to mikrokontroler, ale zna podstawy obsługi komputera.
Osoba ta ma w domu osuplowany licznik impulsów, podłączony np. do wodomierza i chce dostawać powiadomienie jeśli liczba impulsów na minutę przekroczy ustawiony próg.

Po niemałych przebojach i nauczeniu się nowych rzeczy udało mi się, na podstawie własnego podobnego rozwiązania, stworzyć taki w miarę uniwersalny szkic i opracować procedurę postępowania dla Suplowicza bez podstaw w wgrywaniu własnego kodu.
Do uruchomienia tego projektu potrzebujemy tylko esp32c3:
https://www.google.com/search?q=esp32c3 ... s-wiz-serp
oraz starą ładowarkę telefonu i przewód USB-C
Jest możliwe uruchomienie na innych esp32, trzeba tylko wtedy zmienić pewne pliki przy wgrywaniu, o czym niżej.

Po kolei,
Najpierw wchodzimy w supla cloud naszego konta w Supli klikamy Konto->Integracje->BrokerMQTT
tam uruchamiamy swoje konto, zapisujemy sobie gdzieś: Host(serwer), nazwę użytkownika i generujemy i zapisujemy hasło. Będą nam te informacje potrzebne później.

Teraz pobieramy i rozpakowujemy tą paczkę która jest na dole tego posta(watcher.rar, mało widoczny między screenami, ale jest:). W tym folderze są screeny i plik README co, jak i gdzie ustawić, ale pokrótce to opiszę.
Najpierw jednak pobieramy stąd(chciałem wkleić ale za duży plik):
https://docs.espressif.com/projects/esp ... _tool.html
apkę:
Flash Download Tool
rozpakowujemy i odpalamy aplikację flash_download_tool_3.9.8_5( czy jaka tam jest aktualna wersja).

W pierwszym okienku które się pojawi ustawiamy ChipType na esp32-c3(screen "pierwsze ustawienie" w mojej paczce), klikamy OK.
Otworzy nam się okno aplikacji ładującej soft do naszego esp32c3. Tutaj ustawiamy wszystko jak na screnie "pliki i adresy". Podajemy ścieżki dla plików które są w mojej paczce(bootloader, partitions, boot_app0, liw.ino.esp32c3), oraz na prawo od ścieżek wpisujemy poprawny adres. Na samym dole aplikacji mamy okienko COM, najwyższa pora by nasze ESP podłączyć przewodem USB do kompa i podać w okienku COM pod które gniazdo podłączyliśmy(COM3, COM6, COMileśtam). Port można sprawdzić w menadżerze urządzeń komputera.
Teraz już tylko klikamy START w lewym dolnym rogu i za kilka sekund mamy wgrany program w naszym ESP. :D :D :D

Odłączamy ESP od kompa i podłączamy ponownie i otwieramy dostępne sieci WiFi na kompie. Jeśli wszystko przebiegło poprawnie, to powinna się tam pojawić nowa sieć mająca w nazwie SUPLA, łączymy się z nią, a następnie w przeglądarce standardowo 192.168.4.1.

Otworzy na się strona config w której ustawiamy nazwę sieci z którą ma się łączayć nasze esp, hasło do tej sieci, oraz dane do logowania do konta Supla.
Mamy też kilka nowych okienek:
MQTTserver .....tu wpisujemy nasz serwer MQTT

MQTT user .....nazwa użytkownika z MQTT

MQTT password .....hasło z MQTT

device ID .....tu wpisujemy ID urządzenia na którym mamy kanał wodomierza

channel ID..... ID kanału wodomierza

night_h_start .....godziny nocne start

night_h_end..... godziny nocne koniec

devName message .....dowolna nazwa urządzenia którą to nazwę chcemy widzieć w powiadomieniu np. wodomierz

push message .....treść powiadomienia

level alarm .....próg wody, program zlicza ilość impulsów/litrów wypływającej w ciągu minuty,
próg zostanie przekroczony->powiadomienie, działa 24h, w dzień i w godziny nocne ustawione wyżej

level alarm night ....tak jak wyżej, ale dla godzin nocnych, zlicza dla godziny, jeśli w ciągu godziny przekroczy ten próg->powiadomienie, działa tylko w ustawionych godzinach nocnych

tyle,
a następnie SAVE & RESTART(u mnie czasami po kliknięciu S&R trzeba jednak jeszcze odłączyć i podłączyć zasilanie).
Następnie włączamy w supla cloud rejestrację urządzeń, czekamy aż doda się nasze esp, wchodzimy w nie i w zakładce "powiadomienia" ustawiamy odbiorców powiadomień.

Wszystko. Powinno działać, u mnie działa.
Piszcie, pytajcie, zwracajcie uwagę na błędy, cały czas się uczę nowych rzeczy.
Jeszcze jedno, jeśli chcemy ponownie ustawić inputy na inne wartości to aby wejść znowu w stronę konfiguracyjną, logujemy się do supla cloud i klikamy "Przełącz urządzenie w tryb konfiguracyjny", lub odłączamy esp od zasialania, podłączamy ponownie i teraz mamy 15 s, by trzy razy wyłączyć i podłączyć zasilanie. Robimy to na spokojnie, nie szybko, wyłączamy czekamy 1-2 sek, podłączamy i znów czekamy 1-2s i tak 3 razy. Tą metodę stosujemy gdy nie ma możliwości zrobić tego z poziomu cloud.

Na koniec link do szkicu:
https://github.com/Soyer79/WaterMeterWa ... in/liw.ino


EDIT(9.02.25): wstawiłem na githuba i do spakowanego załącznika poniżej, nową, lekko poprawioną wersję szkicu.
You do not have the required permissions to view the files attached to this post.
Last edited by SOYER on Tue Jan 06, 2026 11:50 am, edited 6 times in total.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Może dołożymy sterowanie zaworem jak już mamy wolne piny w esp :D :D :D
https://www.youtube.com/watch?v=K6G2GNmiG1o
albo dodatkowy input dla ustawiania podstawowego czasu zliczania? Teraz mamy na sztywno minutę całą dobę i godzinę w ustawionych godzinach(nocnych).
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

https://github.com/Soyer79/WatermeterWa ... /liwX3.ino

Cześć, poniżej binarka do rozpakowania(watcherX3) dla jednego esp pilnująca trzech liczników.
Mamy więc na jednym esp 3 liczniki(dla jednego konta w supli oczywiście), dla każdego ustawianie dwóch alarmów, całodobowego i w ustawionych godzinach.
Dodatkowo możemy już ustawić przez jaki czas ma zliczać(w sekundach), zarówno całą dobę jak i w ustawionych godzinach.
Dotychczas była to minuta i godzina. Teraz mamy dowolność.
Myślę, że dość uniwersalne narzędzie.
Wgrywamy tak jak napisano w pierwszym poście, lub jak kto potrafi:).
Inputy dostały opisy z dodatkiem :1, :2, :3., dla licznika pierwszego, drugiego i trzeciego.
Dodatkowo mamy inputy:

"time period(s) :1" ustawiamy czas zliczania który działa całą dobę(próg level alarm), np time period 60 zlicza dla minuty, jeśli przekroczy ustawiony level alarm to wyśle wiadomość ustawioną w dev name mesage i push message

"time period(s) night :1" ustawiamy czas zliczania który działa w ustawionych godzinach night_h_start i night_h_end(próg level alarm night), np time period night 3600 zlicza dla godziny, jeśli przekroczy ustawiony level alarm night to wyśle wiadomość ustawioną w dev name mesage i push message, wiadomość będzie z prefixem "NIGHT".

Procedura:
Przy pierwszym wgraniu, łączymy się z siecią z wyrazem "Supla" w nazwie, otwieramy stronę www 192.168.4.1.
Podajemy dane sieci wifi, dane do logowania do konta supli.
W inpucie number of counters(1,2,3) podajemy ile liczników chcemy pilnować. Klikamy SAVE & RESTART.
Odpalamy supla cloud, włączamy rejestrację urządzeń, wchodzimy do naszego nowego esp32, ustawiamy w zakładce powiadomienia do kogo mają przychodzić, a następnie klikamy "Przełącz urządzenie w tryb konfiguracyjny".
Łączymy się z siecią z wyrazem "Supla" w nazwie, otwieramy stronę www 192.168.4.1.
Podajemy dane do naszego konta MQTT i numery urządzeń, kanałów, czasów itd. Patrz pierwszy post na tej stronie.
SAVE & RESTART.
Działa.
Testujcie.
You do not have the required permissions to view the files attached to this post.
Last edited by SOYER on Thu Feb 13, 2025 3:41 pm, edited 1 time in total.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Najnowsza wersja już na githubie oraz poniżej. Poprawiłem tylko logi przy uruchamianiu szkicu, są pełniejsze i bardziej czytelne.
You do not have the required permissions to view the files attached to this post.
Last edited by SOYER on Thu Feb 13, 2025 3:38 pm, edited 1 time in total.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Cześć, na githubie:
https://github.com/Soyer79/waterMeterX3 ... 3valve.ino

oraz niżej paczka do wgrania, mamy szkic jak ostatnio, czytający stany trzech liczników, oraz reagujący powiadomieniami.
Dzisiaj dodatkowo dodałem do pierwszego obsługiwanego licznika(inputy z ":1"), sterowanie zaworem podobnym do tego(przykładowa oferta):
https://allegro.pl/oferta/elektrozawor- ... 7214210914
Zawór musi mieć krańcówki odcinające zasilanie.
Zrobiłem sterowanie poprzez dwa kanały przekaźników podpięte do pinu 8(otwieranie) i pinu 9 (zamykanie).
Dwa kanały przekaźników pojawią się (po ustawieniu w cloud) w aplikacji. Pierwszy dla otwierania, drugi dla zamykania.
Po wysłaniu powiadomienia z licznika 1, włączany jest kanał przekaźnika na pinie 9, po minucie jest automatycznie wyłączany. Mamy zamknięty zawór.
Żeby zawór otworzyć musimy w aplikacji włączyć kanał przekaźnika otwierania zaworu. Po włączeniu w aplikacji, po minucie ten kanał sam się wyłączy.
Podobnie, żeby "ręcznie" zawór zamknąć, w apk włączamy przekaźnik od zamykania zaworu. Po minucie ten kanał też sam się wyłączy.

Tyle.

Jest to już trochę wyższa szkoła, ale nic skomplikowanego. Wystarczy kupić moduł z dwoma przekaźnikami(10zł), należy pamiętać, że większość tych modułów jest sterowana z 5V, a nasze esp ma logikę 3.3V. Da się to oczywiście zrobić, ale jeśli ktoś nie wie jak, to niech pyta.

EDIT: najnowsza wersja poniżej, zrobiłem zabezpieczenie przed uruchomieniem dwóch kierunków ruchu zaworów naraz.
You do not have the required permissions to view the files attached to this post.
Last edited by SOYER on Fri Feb 14, 2025 6:03 pm, edited 4 times in total.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Powyżej poprawny plik już wstawiony.
Na Githubie również.
U mnie pięknie działa, po wysłaniu powiadomienia z pierwszego licznika, pojawia się na minutę stan niski na pinie 9(zamykamy zawór).
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

You do not have the required permissions to view the files attached to this post.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

@klew jak znajdziesz chwilkę zaglądnij tu:
https://github.com/Soyer79/waterMeterX3 ... 3valve.ino
i znajdź dlaczego pod dev_name_message_1(PARAM8) uparcie zapisuje mi dev_name_message_2(PARAM18).
To tylko kilka linijek kodu za to odpowiada.
Patrzyłem na to już sto razy i twierdzę, że mam dobrze, ale ewidentnie chyba czegoś nie widzę.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
klew
Posts: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

SOYER wrote: Thu Feb 13, 2025 9:31 am @klew jak znajdziesz chwilkę zaglądnij tu:
https://github.com/Soyer79/waterMeterX3 ... 3valve.ino
i znajdź dlaczego pod dev_name_message_1(PARAM8) uparcie zapisuje mi dev_name_message_2(PARAM18).
To tylko kilka linijek kodu za to odpowiada.
Patrzyłem na to już sto razy i twierdzę, że mam dobrze, ale ewidentnie chyba czegoś nie widzę.
Parametry są przechowywane w klasie "Config" pod nazwą określoną przez PARAM8 i PARAM18.
Config używa kluczy o maksymlanej długośc 16 B (włącznie z '\0' na końcu). Twoje klucze są za długie i są obcinane do 16 B, przez co zamiast kilku różnych wartości, masz jedną.

Dodałem trochę doxygena do CustomTextParameter.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Dziękuję!!
Choć nie za wiele z tego rozumiem, ale tyle, że mam teraz ponownie skompilować i będzie działać.
Czy jednak mam skrócić te klucze?
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79

Return to “Projekty użytkowników”