Zapezpieczenie pomp...
 
Powiadomienia
Wyczyść wszystko

[Rozwiązany] Zapezpieczenie pompy

19 Wpisów
2 Użytkownicy
0 Reactions
189 Wyświetleń
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

Witam,

Posiadam gniazdko Gosund SP111 i chciałbym je wykorzystać do zabezpieczenia pompy wody przed suchobiegiem oraz przeciążeniem. Wgrałem Tasmotę, skalibrowałem, ale programowania dopiero się uczę dlatego prosiłbym o gotowe reguły do Tasmoty realizujące następujący scenariusz:

1) Gdy prąd będzie większy niż X przez czas Y np 10 sekund => wyłącz pompę (przeciążenie)

2) Gdy prąd będzie w zakresie: A < current < B przez określony czas C np. 30 sekund => wyłącz pompę (suchobieg) 

 
Dodane : 18/05/2024 9:40 am
isom
 isom
(@isom)
Wpisów: 5105
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @pamir

Posiadam gniazdko Gosund SP111 i chciałbym je wykorzystać do zabezpieczenia pompy wody przed suchobiegiem oraz przeciążeniem.

O ile pierwszy warunek jest dość prosty do zrobienia, to ten suchobieg wydaje się problematyczny z kilku powodów.

Jak określiłeś zakres prądów dla tej pracy na sucho ? Może lepiej dołożyć zwykły czujnik przepływu, będzie pewniej.

Reguła dla stanu przeciążenie może wyglądać tak 

Rule1 on Energy#Current> 0.8 do RuleTimer1 20 endon
      on Energy#Current< 0.5 do RuleTimer1 0 endon
      on Rules#Timer=1 do Power 0 endon

Gdy wartość prądu przekroczy 0.8A uruchamiany jest timer 20 sek , jeśli w tym czasie spadnie wartość prądu poniżej 0.5A timer zostaje wyzerowany i nic się nie dzieje. W przypadku gdy wartość prądu 0.8A utrzyma się przez 20 sek , timer dojdzie do końca i wyłączy przekaźnik.

 
Dodane : 20/05/2024 7:24 am
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

Dziękuję za pierwszą regułę dla przeciążenia.

Jeśli chodzi o wykrywanie suchobiegu to planuję zainstalować czujnik przepływu, ale wymaga to znacznej przeróbki instalacji, dlatego tymczasowo chciałem wykorzystać tasmote. Zakres prądów dla suchobieu wyznaczyłem przez pomiar prądów w systemie. Kiedy pompa jest zalana to prąd pracy normalnej waha się w granicach 2,2 -3A. w zależności, którą sekcję nawadniania uruchomię. Jeśli jest tylko zalana bez obciążenia (niepodpięta do żadnej sekcji) i przepływ wody skręcony na minimum to nie spada poniżej 2,1A. Natomiast kiedy zbraknie wody prąd spada wyraźnie do wartości 1,5-1,7A. 

 
Dodane : 20/05/2024 8:34 am
isom
 isom
(@isom)
Wpisów: 5105
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @pamir

dlatego tymczasowo chciałem wykorzystać tasmote

Tymczasówki są jak prowizorki, raz zrobione potem zostają na dłużej, aż się coś nie wysypie. Ale do brzegu, poniżej zestaw reguł, który w teorii powinien zrobić to co chcesz.

Warunek podstawowy, trzeba dodać do tego gniazdka dwa fikcyjne przekaźniki na dowolnych wolnych GPIO, będą one sygnalizowały stan przeciążenia i stan pracy na sucho. Jednocześnie pozwolą na dwa niezależne timery i ich resetowanie.

Wartości mem1 - mem3 do ustawienia ,są to założone wartości prądu gdzie mem1 to prąd przeciążenia, mem 2 prąd dopuszczalny, mem3 zbyt mała wartość, tak samo timery, w poniższym przykładzie to 15 i 30 sek.

Rule1 on system#boot do Backlog mem1 3.2; mem2 1.9; mem3 1.7;Power1 0;Power2 0;Power3 0;RuleTimer1 0;RuleTimer2 0 endon 
      on Power1#state=0 do rule2 0 endon on Power1#state=1 do rule2 1 endon
#######################################################################
Rule2  on Energy#Current do event current_demand=%value% endon
      on event#current_demand>%mem1% do Power2 1 break
      on event#current_demand>%mem2% do Backlog Power2 0;Power3 0 break
      on event#current_demand<%mem3% do Power3 1 break
      on Power2#state=1 do RuleTimer1 15 endon on Power2#state=0 do RuleTimer1 0 endon
      on Power3#state=1 do RuleTimer2 30 endon on Power3#state=0 do RuleTimer2 0 endon
      on Rules#Timer=1 do Backlog Power1 0;Power2 0;Power3 0 endon
      on Rules#Timer=2 do Backlog Power1 0;Power2 0;Power3 0 endon

Na koniec nie zapomnieć aktywować pierwszą regułę

rule1 1
 
Dodane : 20/05/2024 11:35 am
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

Wielkie dzięki również za drugi skrypt. Testowałem na razie tylko pierwszy... pojawił się w nim taki problem, że RuleTimer1 nigdy nie mógł odliczyć do końca, bo był cały czas nadpisywany przy prądzie przeciążenia. Nie wiedziałem jak ustawić częstotliwość wywoływania reguły, ale poradziłem sobie z tym z pomocą dokumentacji do Tasmoty wprowadzając zmienna pomocniczą w ten sposób:

Rule1
on system#boot do var1 0 endon
on Energy#Current<= 0.8 do if (var1 != 0) RuleTimer1 0; var1 0  endif break
on Energy#Current> 0.8 do if (var1 != 1) RuleTimer1 20; var1 1 endif endon 
on Rules#Timer=1 do Power1 off endon

Drugi skrypt będę testował jutro... nie wspomniałem jeszcze o tym, że pompa ma wbudowany wyłącznik ciśnieniowy i chyba jakąś elektronikę sterującą, więc nawet jak nie ma poboru wody to pobiera jakiś mały prąd - dziesiątki miliamperów. Bedę to musiał również uwzględnić, ale myślę, że mając powyższy koncept skryptu jakoś to ogarnę. Jeśli mi się nie uda to będę prosił o pomoc.

 
Dodane : 20/05/2024 9:18 pm
isom
 isom
(@isom)
Wpisów: 5105
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @pamir

więc nawet jak nie ma poboru wody to pobiera jakiś mały prąd - dziesiątki miliamperów. Bedę to musiał również uwzględnić

Zestaw reguł, który wstawiłem uwzględnia pobór bez włączonej pompy, a raczej nie uruchamia reguły 2, która sprawdza wartość tego prądu. Zmienną której użyłeś zastępują wirtualne przekaźniki, więc jak ich nie chcesz musisz skorzystać z dwóch zmiennych var.

W pierwszej mojej regule faktycznie zrobiłem błąd, ale widzę że dajesz radę 🙂

 
Dodane : 20/05/2024 9:32 pm
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

@isom Wracam jednak po pomoc:) ale po kolei....

1) Pompa jak jest podpięta do zasilania, ale nie ma poboru wody (wyłącznik ciśnieniowy zadziała) to też pobiera jakiś prąd ok 30mA. Tego przypadku zaproponowany skrypt nie uwzględniał. Generalnie w czasie dnia zostawiam ją pod napięciem, wyłączam zasilanie tylko na noc.

2) Postanowiłem też wprowadzić pewne zabezpieczenie przed ew. "wyciekiem z instalacji" tzn jeżeli czas nieprzerwanej normalnej pracy pompy będzie dłuży niż godzina => wyłącz pompę.

3) Napisałem wszystko w oparciu o powyższy skrypt i problem jest taki, że niby działa, ale nie do końca:) Czasami zabezpieczenie wyłączy pompę, czasami nie. Czasami zgodnie z zaprogramowanym opóźnieniem (15sekund) a czasami chwilę później. Szczególnie wtedy kiedy prąd skacze pomiędzy jednym, a drugim zakresem tak jakby kontroler nie wyrabiał obliczeniowo tzn. nie był w stanie kasować na czas flag (wirtualnych) przekaźników.

 

Rule1 on system#boot do Backlog mem1 3.0; mem2 2.0; mem3 0.1;Power1 0;Power2 0;Power3 0;Power4 0;RuleTimer1 0;RuleTimer2 0;RuleTimer3 0 endon 
      on Power1#state=0 do rule2 0 endon on Power1#state=1 do rule2 1 endon
#######################################################################
Rule2  on Energy#Current do event current_demand=%value% endon
      on event#current_demand>%mem1% do Backlog Power2 0; Power3 0; Power4 1 break
      on event#current_demand>%mem2% do Backlog Power2 0; Power3 1; Power4 0 break
      on event#current_demand>%mem3% do Backlog Power2 1; Power3 0; Power4 0 break
      on event#current_demand<=%mem3% do Backlog Power2 0; Power3 0; Power4 0 break
      on Power2#state=1 do RuleTimer1 15 endon on Power2#state=0 do RuleTimer1 0 endon
      on Power3#state=1 do RuleTimer2 3600 endon on Power3#state=0 do RuleTimer2 0 endon
      on Power4#state=1 do RuleTimer3 15 endon on Power4#state=0 do RuleTimer3 0 endon
      on Rules#Timer=1 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      on Rules#Timer=2 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      on Rules#Timer=3 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon

Rule1 1

Backlog Webbutton1 Zasilanie; Webbutton2 Suchobieg; Webbutton3 Praca; Webbutton4 Przeciążenie

 

Zastanawiam się czy wybrałem dobre GPIO dla tych 4 przekaźników? Czy czasem coś nie koliduję pomimo że konfiguracja szablonu pokazuje, że są wolne. Kontroler to ESP8285. Błędny jest kod czy SP111 nie wyrabia?

1
2
 
Dodane : 21/05/2024 5:50 pm
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

Dodatkowe info: z logów wynika że moduł przy włączonej Regule2 restartuję się po kilkunastu minutach pracy z powodu wyjątku nr 29.

Ze statusów (status 4) można tez wyczytać, że zaczyna brakować miejsca na stercie, tak jakby ten obszar pamięci nie był czyszczony i zwalniany...

Z tego co poddaje google to dość częsty problem, próbowałem na razie opcji "reset 5", "reset 3", ustawiać adres IP na statyczny ale efekt jest ten sam:(  

log
 
Dodane : 23/05/2024 12:16 pm
isom
 isom
(@isom)
Wpisów: 5105
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @pamir

Dodatkowe info: z logów wynika że moduł przy włączonej Regule2 restartuję się po kilkunastu minutach

To co stworzyłeś jest mocno problematyczne, pierwszy problem to gdy wartość prądu przekroczy 2A oba z poniższych warunków są spełnione

 on event#current_demand>%mem2% do Backlog Power2 0; Power3 1; Power4 0 break
 on event#current_demand>%mem3% do Backlog Power2 1; Power3 0; Power4 0 break

I co ma zrobić ten bidny mikroprocesor ? 

Drugi problem, który widzę to ogólna koncepcja, w której reguła 2 jest włączona przez większość dnia, a nie tylko na czas pracy pompy.

Chwilowo jestem zarobiony, może w weekend pomyślę jak to przerobić. Generalnie potrzebna jest informacja o starcie pompy, która uruchomi regułę 2, inaczej zajedziesz tego biednego ESP8285

 
Dodane : 23/05/2024 3:01 pm
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

To co stworzyłeś jest mocno problematyczne, pierwszy problem to gdy wartość prądu przekroczy 2A oba z poniższych warunków są spełnione

 on event#current_demand>%mem2% do Backlog Power2 0; Power3 1; Power4 0 break
 on event#current_demand>%mem3% do Backlog Power2 1; Power3 0; Power4 0 break

I co ma zrobić ten bidny mikroprocesor ? 

Ten wpis nie różni od się zaproponowanego rozwiązania z posta nr 4 ze zmiennymi mem1 i mem2. Oba warunki są spełnione, ale jeśli dobrze rozumiem wykona się tylko pierwsza reguła. Instrukcja break z pierwszej nie pozwoli na wykonanie drugiej.

Drugi problem, który widzę to ogólna koncepcja, w której reguła 2 jest włączona przez większość dnia, a nie tylko na czas pracy pompy.

Chwilowo jestem zarobiony, może w weekend pomyślę jak to przerobić. Generalnie potrzebna jest informacja o starcie pompy, która uruchomi regułę 2, inaczej zajedziesz tego biednego ESP8285

Nie znam się na tym jakie obciążenie jest wstanie wytrzymać takie ESP, to moje pierwsze inteligentne gniazdko i styczność z tasmotą, ale dziwi mnie dlaczego sterta się przepełnia, sama reguła nie tworzy nowych zmiennych, jedynie zmienia stan istniejących. Wygląda tak jakby gdzieś był wyciek pamięci. Ale czekam cierpliwie do weekendu:)

 
Dodane : 23/05/2024 6:25 pm
isom
 isom
(@isom)
Wpisów: 5105
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @pamir

Ten wpis nie różni od się zaproponowanego rozwiązania z posta nr 4 ze zmiennymi mem1 i mem2

Różni się w sposób znaczący 🙂 Przeanalizuj to jeszcze raz. 

Wszystkie warunki z post 4

on event#current_demand>%mem1% do Power2 1 break
on event#current_demand>%mem2% do Backlog Power2 0;Power3 0 break
on event#current_demand<%mem3% do Power3 1 break

Nie ma mowy żeby dwa były spełnione jednocześnie.

Napisz co uruchamia nawadnianie, bo jak rozumiem pompę aktywuje wył ciśnieniowy, więc trudno będzie na jego podstawie uruchomić regułę 2. Mam nadzieję, że coś co może zobaczyć tasmota, np inny moduł.

Do weekendu możesz spróbować ustawić w konsoli TelePeriod 10 i zmienić regułę 2 na

Rule2  on Tele-Energy#Current do event current_demand=%value% endon
      on event#current_demand>%mem1% do Backlog Power2 0; Power3 0; Power4 1 break
      on event#current_demand>%mem2% do Backlog Power2 0; Power3 1; Power4 0 break
      on event#current_demand>%mem3% do Backlog Power2 1; Power3 0; Power4 0 break
      on event#current_demand<=%mem3% do Backlog Power2 0; Power3 0; Power4 0 break
      on Power2#state=1 do RuleTimer1 25 endon on Power2#state=0 do RuleTimer1 0 endon
      on Power3#state=1 do RuleTimer2 3600 endon on Power3#state=0 do RuleTimer2 0 endon
      on Power4#state=1 do RuleTimer3 35 endon on Power4#state=0 do RuleTimer3 0 endon
      on Rules#Timer=1 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      on Rules#Timer=2 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      on Rules#Timer=3 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon

Czasy są trochę dłuższe, ale lepsze to niż brak reakcji 🙂

 
Dodane : 23/05/2024 6:57 pm
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

Różni się w sposób znaczący 🙂 Przeanalizuj to jeszcze raz. 

Wszystkie warunki z post 4

on event#current_demand>%mem1% do Power2 1 break
on event#current_demand>%mem2% do Backlog Power2 0;Power3 0 break
on event#current_demand<%mem3% do Power3 1 break

Nie ma mowy żeby dwa były spełnione jednocześnie.

Hmm nie bardzo rozumiem. Przykładowo dla prądu = 3.5A jest spełniony warunek 1 i 2 (mem1=3.2, mem2=1.9)... 

 

Napisz co uruchamia nawadnianie, bo jak rozumiem pompę aktywuje wył ciśnieniowy, więc trudno będzie na jego podstawie uruchomić regułę 2. Mam nadzieję, że coś co może zobaczyć tasmota, np inny moduł.

W systemie jest sterownik do nawadniania RainBirda ESP-ME3, chyba można z niego wyciągnąć sygnał sterujący ew. przekaźnikiem złączającym pompę w momencie kiedy zostanie uruchomiona jakaś sekcja nawadniania. W tym momencie ta opcja jest jednak niewykorzystywana, ponieważ oprócz nawadniania automatycznego korzystam też z ręcznych poborów wody na ogrodzie. Otwarcie kranu jest kompletnie niewidoczne dla sterownika. Dlatego założenie jest takie aby zabezpieczenie pompy zrealizować całkowicie niezależnie od sterownika nawadniania. Mam też sondę hydrostatyczną z przetwornikiem poziomu cieczy T80, która mierzy poziom wody w zbiorniku. Przetwornik ma 4 przekaźniki, które można wykorzystać do wystawienia alarmu w przypadku np. niskiego poziomu wody. Docelowo ma on być wpięty do systemu alarmowego. System alarmowy ma sterować przekaźnikiem włączającym pompę. W ten sposób zabezpieczę się przed suchobiegiem, ale nie przed przeciążeniem. Ale to wszystko dopiero jak znajdę czas na przeróbki tzn doprowadzenie okablowania itp... A ponieważ leżało u mnie niewykorzystane jedno gniazdko SP111 to tak sobie kombinuje:) bo akurat analiza poboru prądu daje dodatkowe możliwości zabezpieczenia przed przeciążeniem, wyciekiem, może udało by się też analizować stan filtrów... Dodatkowy moduł mogę zawsze dokupić jeśli to zwiększy możliwości tylko jakiego rodzaju?         

Do weekendu możesz spróbować ustawić w konsoli TelePeriod 10 i zmienić regułę 2 na

Rule2  on Tele-Energy#Current do event current_demand=%value% endon
      on event#current_demand>%mem1% do Backlog Power2 0; Power3 0; Power4 1 break
      on event#current_demand>%mem2% do Backlog Power2 0; Power3 1; Power4 0 break
      on event#current_demand>%mem3% do Backlog Power2 1; Power3 0; Power4 0 break
      on event#current_demand<=%mem3% do Backlog Power2 0; Power3 0; Power4 0 break
      on Power2#state=1 do RuleTimer1 25 endon on Power2#state=0 do RuleTimer1 0 endon
      on Power3#state=1 do RuleTimer2 3600 endon on Power3#state=0 do RuleTimer2 0 endon
      on Power4#state=1 do RuleTimer3 35 endon on Power4#state=0 do RuleTimer3 0 endon
      on Rules#Timer=1 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      on Rules#Timer=2 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      on Rules#Timer=3 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon

Czasy są trochę dłuższe, ale lepsze to niż brak reakcji 🙂

Dzięki, przetestuje w ramach nauki:)

 
Dodane : 23/05/2024 9:29 pm
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

Reguła z Tele-energy działa tak jak powinna czyli skutecznie, ale powoli. Loadavg spadł o połowę, nie brakuję pamięci na stercie. Natomiast w dokumentacji do tasmoty znalazłem opcję Rule<x> 5. Jeśli się ją zastosuję do Rule2 w wersji:

Rule2  on Energy#Current do event current_demand=%value% endon.....

to niestety nie działa tak jakbym chciał. Reguła zostaję wywołana tylko raz dla wartości prądu current_demand=0. I później niezależnie jak się zmienia prąd nigdy więcej już nie jest wywoływana. Ale kiedy włączę ją dla skryptu w postaci:

Rule2 on Energy#Current>%mem1% do Backlog Power2 0; Power3 0; Power4 1 break
      on Energy#Current>%mem2% do Backlog Power2 0; Power3 1; Power4 0 break
      on Energy#Current>%mem3% do Backlog Power2 1; Power3 0; Power4 0 break
      on Energy#Current<=%mem3% do Backlog Power2 0; Power3 0; Power4 0 endon
      on Power2#state=1 do RuleTimer1 15 endon on Power2#state=0 do RuleTimer1 0 endon
      ....

wygląda, że działa tak jak oczekuję. Tzn wywoływana jest raz za każdym razem kiedy wartość prądu przechodzi z jednego do innego zakresu. Loadav spadł jeszcze bardziej niż z Tele-energy. Czasy timerów można ustawić krótsze. Jedynie na konsoli w logach nie widać wartości prądu. Pytanie: dlaczego nie działa Rule<x> 5 z komendą event? 

Update: Jednak skrypt nie działa prawidłowo... Po włączeniu opcji Rule2 5 okazuje się że pomijana w regule jest instrukcja Break.. ktoś wie czy to błąd czy takie działanie jest zamierzone ?

 
Dodane : 25/05/2024 12:59 pm
isom
 isom
(@isom)
Wpisów: 5105
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@pamir nie chce mi się analizować czegoś czego nie pokazałeś, jak ma być analiza, potrzebny komplet reguł inaczej to wróżenie z fusów.

Mniejsza z tym, sprawdź sobie taki zestaw

Rule1 on system#boot do Backlog mem1 3.0;mem2 1.9;mem3 0.2;mem4 0.1;Power2 0;Power3 0;Power4 0;RuleTimer1 0;RuleTimer2 0;RuleTimer3 0 endon
      on Tele-Energy#Current>0.15 do Power2 1 endon
      on Tele-Energy#Current<0.1 do Power2 0 endon
      on Power2#state=1 do Backlog rule2 1; RuleTimer3 3600 endon on Power2#state=0 do Backlog RuleTimer3 0;rule2 0 endon
      on Rules#Timer=3 do Power1 0 endon
#######################################################################
Rule2 on Energy#Current do event current_demand=%value% endon
      on event#current_demand>%mem1% do Power4 1 break
      on event#current_demand>%mem2% do Backlog Power3 0; Power4 0 break
      on event#current_demand>%mem3% do Power3 1 break
      on event#current_demand<%mem4% do Backlog Power3 0; Power4 0 break
      on Power4#state=1 do RuleTimer1 15 endon on Power4#state=0 do RuleTimer1 0 endon
      on Power3#state=1 do RuleTimer2 15 endon on Power3#state=0 do RuleTimer2 0 endon
      on Rules#Timer=1 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      on Rules#Timer=2 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      
Backlog Webbutton1 Power; Webbutton2 Status; Webbutton3 Suchobieg; Webbutton4 Przeciążenie;rule1 1;teleperiod 10

 Kontrola czasu pracy pompy przeniesiona do rule1 , Power2 to status pracy pompy nie ważne w jakim trybie.

Reguła2 aktywna tylko w czasie pracy pompy ( wartość prądu większa niż 0.15A)

 
Dodane : 26/05/2024 7:38 am
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

@isom dzięki jeszcze za pomoc. Przetestowałem i powiem tak: działa, trochę lepiej niż wersja poprzednia z Tele-Energy, ale nadal czuję, że nie jest to wersja optymalna;) tzn. są przypadki nietypowe, kiedy czas wyłączenia znacznie się wydłuża w stosunku do tego co zostało zaprogramowane na timerach. Przykład: jeśli trafi się skrajnie niekorzystnie z momentem włączenia pompy czyli zaraz po wywołaniu z Rule1:

on Tele-Energy#Current>0.15 do Power2 1 endon

wtedy, jeśli się nie mylę, trzeba poczekać prawie 10 sekund (Teleperiod) zanim zostanie aktywowana Rule2. Gdyby zbiornik na wodę był akurat pusty to zabezpieczenie przed suchobiegiem aktywuje się po czasie > 25sek. (timer ustawiony na 15). Oczywiście nie jest to problem dla samej pompy. Bardziej patrzę na to pod kątem nauki samej Tasmoty i jej wykorzystania w aplikacjach bardziej krytycznych pod względem timingów.

Aktualnie zmodyfikowałem to co zaproponowałeś w ten sposób: Rule1 zmieniłem na typ "one-shot" (opcja Rule1 5), Tele-energy na Energy, jednie wywołanie RuleTimer3 musiałem przenieś do osobnej reguły Rule3 zwykłego typu.Nie wiem czy nie popełniłem jakiś błędów, ale Loadavg jest podobny, reakcja na zdarzenia trochę szybsza tzn. bardziej zgodna z tym co zostało ustawione na timerach.

Rule1 on system#boot do Backlog mem1 3.0;mem2 2.0;mem3 0.2;mem4 0.1;Power2 0;Power3 0;Power4 0;RuleTimer1 0;RuleTimer2 0;RuleTimer3 0 endon
      on Energy#Current>0.15 do Power2 1 endon
      on Energy#Current<0.1 do Power2 0 endon
      on Power2#state=1 do Backlog rule2 1; rule3 1; RuleTimer3 3600 endon on Power2#state=0 do Backlog RuleTimer3 0;rule2 0;rule3 0 endon
#######################################################################
Rule3 on Rules#Timer=3 do Power1 0 endon
#######################################################################
Rule2 on Energy#Current do event current_demand=%value% endon
      on event#current_demand>%mem1% do Power4 1 break
      on event#current_demand>%mem2% do Backlog Power3 0; Power4 0 break
      on event#current_demand>%mem3% do Power3 1 break
      on event#current_demand<%mem4% do Backlog Power3 0; Power4 0 break
      on Power4#state=1 do RuleTimer1 15 endon on Power4#state=0 do RuleTimer1 0 endon
      on Power3#state=1 do RuleTimer2 15 endon on Power3#state=0 do RuleTimer2 0 endon
      on Rules#Timer=1 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      on Rules#Timer=2 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      
Backlog Webbutton1 Power; Webbutton2 Status; Webbutton3 Suchobieg; Webbutton4 Przeciążenie;rule1 5; rule1 1; teleperiod 300

 

   

 
Dodane : 26/05/2024 6:29 pm
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

Dodane przez: @pamir

@isom dzięki jeszcze za pomoc. Przetestowałem i powiem tak: działa, trochę lepiej niż wersja poprzednia z Tele-Energy, ale nadal czuję, że nie jest to wersja optymalna;) tzn. są przypadki nietypowe, kiedy czas wyłączenia znacznie się wydłuża w stosunku do tego co zostało zaprogramowane na timerach. Przykład: jeśli trafi się skrajnie niekorzystnie z momentem włączenia pompy czyli zaraz po wywołaniu z Rule1:

on Tele-Energy#Current>0.15 do Power2 1 endon

wtedy, jeśli się nie mylę, trzeba poczekać prawie 10 sekund (Teleperiod) zanim zostanie aktywowana Rule2. Gdyby zbiornik na wodę był akurat pusty to zabezpieczenie przed suchobiegiem aktywuje się po czasie > 25sek. (timer ustawiony na 15). Oczywiście nie jest to problem dla samej pompy. Bardziej patrzę na to pod kątem nauki samej Tasmoty i jej wykorzystania w aplikacjach bardziej krytycznych pod względem timingów.

Aktualnie zmodyfikowałem to co zaproponowałeś w ten sposób: Rule1 zmieniłem na typ "one-shot" (opcja Rule1 5), Tele-energy na Energy, jednie wywołanie RuleTimer3 musiałem przenieś do osobnej reguły Rule3 zwykłego typu.Nie wiem czy nie popełniłem jakiś błędów, ale Loadavg jest podobny, reakcja na zdarzenia trochę szybsza tzn. bardziej zgodna z tym co zostało ustawione na timerach.

Rule1 on system#boot do Backlog mem1 3.0;mem2 2.0;mem3 0.2;mem4 0.1;Power2 0;Power3 0;Power4 0;RuleTimer1 0;RuleTimer2 0;RuleTimer3 0 endon
      on Energy#Current>0.15 do Power2 1 endon
      on Energy#Current<0.1 do Power2 0 endon
      on Power2#state=1 do Backlog rule2 1; rule3 1; RuleTimer3 3600 endon on Power2#state=0 do Backlog RuleTimer3 0;rule2 0;rule3 0 endon
#######################################################################
Rule3 on Rules#Timer=3 do Power1 0 endon
#######################################################################
Rule2 on Energy#Current do event current_demand=%value% endon
      on event#current_demand>%mem1% do Power4 1 break
      on event#current_demand>%mem2% do Backlog Power3 0; Power4 0 break
      on event#current_demand>%mem3% do Power3 1 break
      on event#current_demand<%mem4% do Backlog Power3 0; Power4 0 break
      on Power4#state=1 do RuleTimer1 15 endon on Power4#state=0 do RuleTimer1 0 endon
      on Power3#state=1 do RuleTimer2 15 endon on Power3#state=0 do RuleTimer2 0 endon
      on Rules#Timer=1 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      on Rules#Timer=2 do Backlog Power1 0;Power2 0;Power3 0;Power4 0 endon
      
Backlog Webbutton1 Power; Webbutton2 Status; Webbutton3 Suchobieg; Webbutton4 Przeciążenie;rule1 5; rule1 1; teleperiod 300

 

 

 
Dodane : 26/05/2024 6:30 pm
isom
 isom
(@isom)
Wpisów: 5105
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@pamir doktoryzuj się dalej, ale jak chcesz korzystać z Tasmoty w aplikacjach bardziej krytycznych, to nie na gosund SP111.

Weź ESP32 i do przodu, tam nie będzie problemu.

Co do reguł, uznałem, ze stan początkowy ma znikome znaczenie i lepiej żeby to działało pewnie w czasie całego cyklu, gdy pompa jest już rozbujana. Pomysłów na rozwiązanie takiego sterowania jest tyle ile możliwości w samej tasmocie. Twoje rozwiazanie nie eliminuje wydłużenia czasu początkowego, a jedynie go odrobinę skraca kosztem trzeciej reguły. Prawidłowo powinno być tak że sygnał do załączenia reguły 2 powinien wysyłać włącznik ciśnieniowy za pośrednictwem dodatkowego modułu, który powinien natychmiast włączyć Power2 w gosund, a nie pomiar prądu w samym gosund, bo ten pomiar wcale nie jest natychmiastowy 🙂 Tyle teorii.

 
Dodane : 26/05/2024 7:00 pm
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

Dodane przez: @isom

Weź ESP32 i do przodu, tam nie będzie problemu.

Wydaje mi się, że Gosund na ten moment działa zadowalająco do potrzeb, a problem można uznać za rozwiązany. Dzięki.

 

 
Dodane : 27/05/2024 3:41 pm
(@pamir)
Wpisów: 12
Bywalec
Autor tematu
 

Chciałbym wrócić jeszcze do tematu pod kątem bezpieczeństwa stosowania wtyczki sp111 w sterowaniu pompą i ew. wykorzystania innego sprzętu do tego celu. Jeśli powinienem założyć nowy wątek w innym dziale to proszę o info.

Generalnie używam tej wtyczki wraz z pompą od jakiegoś czasu (wcześniej jeszcze z aplikacją Smart Life) i nie ma problemu z przegrzewaniem się ani sklejaniem się styków przekaźnika. Ale wynika to zapewne z tego, w moim przypadku przekaźnik nie jest załączany/wyłączany przy prądach rozruchowych jak i dużych napięciach przy wyłączaniu pompy. Jak wspominałem pompa ma wbudowaną elektronikę (która jak się okazuje opóźnia start silnika o ok. 2 sek po podaniu napięcia zasilania), z kolei wyłącznik ciśnieniowy powoduję najpierw wyłączenie pompy, a dopiero później przy prawie zerowym prądzie gosund rozłącza przekaźnik. Jednak w przypadku wyłączenia awaryjnego np. przeciążenie nie jestem pewien czy ten przekaźnik wbudowany w gniazdko przeżyje łuk elektryczny przy rozłączaniu pod obciążeniem.. Chciałbym pozostać przy Tasmocie, dlatego szukam jakiegoś innego modułu do tego celu z lepszym przekaźnikiem. Prąd znamionowy pompy to 3,9A. rozruchowego nie znam ale, zakładam 4-6 większy.

Czy możecie polecić, którąś z opcji poniżej lub może jakiś inny sprawdzony moduł współpracujący bezproblemowo z obciążeniem indukcyjnym 1kW?

1) Sonoff Powr320D Elite - ESP32 + bezpośredni pomiar prądu + wbudowany przekaźnik bistabilny 20A ( https://www.fanhar-relay.com/wp-content/uploads/2019/03/W15L.pdf )

2) Sonoff Pow R3 - ESP2866 + przekładnikowy pomiar prądu + wbudowany przekaźnik monostabilny 25A (30A)( https://www.datasheet4u.com/datasheet-pdf/GOLDENRELAYS/GK-A-1A-N/pdf.php?id=1099288

3) Samoróbka tzn. jakiś moduł z ESP32 + PZEM-004T + stycznik...

 
Dodane : 31/05/2024 3:16 pm
Udostępnij: