Powiadomienia
Wyczyść wszystko

Flow switch czujnik przepływu

50 Wpisów
2 Użytkownicy
9 Reactions
2,061 Wyświetleń
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 
przekazniki

Popelinę mi siał przekaźnik jednokanałowy. Rozłączał mi pompę. Był podłączony na 3v bo na 5 v nie da się go podłączyć-choć jest na 5v.

Zmiana w esp easy w hardware na LOW, HIGH nic nie daje. Gdy ma napięcie 5v cały czas trzyma i nie odbija. A na 3v jest za słabo- puszcza. Zastosowałem inny przekaźnik (czerwony ) jedno kanałowy, który ma opcję zmiany OL I OH. Na OL tez nie działał, działa na OH.

Natomiast czterokanałowy tez jest ok, działa na 5v choć jest OL ... . A ten mały pizdryk nie wiem, o co mu chodzi. Szmelc. 


 
Dodane : 22/01/2024 1:46 pm
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

Cześć,

wróciłem do tematu bo nie było to dobrze zrobione i przekombinowane.

Zrobiłem stanowisko testowe działa to teraz w takiej postaci:

image

Jeśli przepływ spadnie poniżej 150 i ten stan trwa co najmniej  10 s ---> wyłącz pompę,

Jeśli przepływ znów wróci czyli będzie >150 i ten stan będzie trwał dłużej niż 3 s ------> włącz pompę.

Zamykam zawór na 5 s - nic się nie dzieje, zamykam zawór na 10 s --->> wyłącza pompę. 

A teraz chciałbym to samo działanie żeby zrobiło samo ESP w rules. 


 
Dodane : 16/12/2025 10:39 am
isom
 isom
(@isom)
Wpisów: 5297
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Nie testowałem bo nie mam na czym 

Rule1
  ON system#boot DO var1 0 ENDON
  ON flow#Actual<150 DO if (var1!=1) RuleTimer1 3 endif ENDON
  ON Rules#Timer=1 DO backlog Power1 off; var1 1 ENDON
  ON flow#Actual>150 DO if (var1!=0) RuleTimer2 10 endif ENDON
  ON Rules#Timer=2 DO backlog Power1 on; var1 0 ENDON

 
Dodane : 16/12/2025 6:40 pm
geoterm zareagował
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

@isom dziękuję - testuję.


 
Dodane : 16/12/2025 6:57 pm
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

działa pięknie-prawie idealnie, jest pewien mankament- układ musi startować ze zmienną 1. Jeśli zmienię zmienną ręcznie to już głupieje. Czyli jak zblokować zmianę zmiennej ręcznie, albo, żeby ona zawsze wróciła do właściwego stanu?

image
On System#Boot Do
    TaskValueSet,4,1,0 //zmienna na 0
Endon
 
On ads#flow<150 Do // jeśli przepływ spadnie do poziomu krytycznego
  If [dummy#var]=1 // jesli zmienna = 1
  TimerSet,1,3 // t1 odlicza do 3 s 
  Endif
Endon

On Rules#Timer=1 Do  // jesli przepływ jest normalny, powrócił na conajmniej  3 s
GPIO,2,0 // ON pompę obieg. 
  TaskValueSet,4,1,0 // zmienna na 0
Endon

On ads#flow>150 Do // jesli przepływ jest normalny
  If [dummy#var]=0  //jeśli zmienna= 0
  TimerSet,2,5 // t2 odlicza czas do 5 s
  Endif
Endon

On Rules#Timer=2 Do  // jeśli przepływ zaniknie na  5 s i więcej  
GPIO,2,1  // OFF pompę obieg.
  TaskValueSet,4,1,1 // zmienna na 1
Endon

 
Dodane : 16/12/2025 9:06 pm
isom
 isom
(@isom)
Wpisów: 5297
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Spróbuj bez zmiennej ale z histerezą

On System#Boot Do
  GPIO,2,1        // przekaźnik OFF po starcie
Endon


// ===== WYŁĄCZANIE (flow < 140) =====
On ads#flow<140 Do
  TimerSet,2,5    // niski przepływ musi trwać 5 s
Endon

On Rules#Timer=2 Do
  GPIO,2,1        // OFF przekaźnik
Endon


// ===== WŁĄCZANIE (flow >= 160) =====
On ads#flow>=160 Do
  TimerSet,1,3    // wysoki przepływ musi trwać 3 s
Endon

On Rules#Timer=1 Do
  GPIO,2,0        // ON przekaźnik
Endon

 


 
Dodane : 16/12/2025 9:55 pm
geoterm zareagował
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

Działa, też fajne - zmieniłem tylko z on na off bo było odwrotnie, czyli jak był mały przepływ to włączył się. Natomiast jak w trakcie pracy wyłączę ręcznie GPIO to trzeba zjechać z przepływem w dół, znów przepływ do góry i wtedy dopiero się załącza ponownie przekaźnik. 

On System#Boot Do
  GPIO,2,1        // przekaźnik OFF po starcie
Endon


// ===== WŁĄCZANIE (flow < 140) =====
On ads#flow<140 Do
  TimerSet,2,5    // duży przepływ musi trwać 5 s
Endon

On Rules#Timer=2 Do
  GPIO,2,0        // ON przekaźnik
Endon


// ===== WYŁĄCZANIE (flow >= 160) =====
On ads#flow>=160 Do
  TimerSet,1,3    // mały przepływ musi trwać 3 s
Endon

On Rules#Timer=1 Do
  GPIO,2,1        // OFF przekaźnik
Endon

 
Dodane : 16/12/2025 10:13 pm
isom
 isom
(@isom)
Wpisów: 5297
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Uzupełnij sobie kasowanie przeciwnych  timerów tzn jak rusza pierwszy drugi ma się zerować i odwrotnie 

On ads#flow>=160 Do
  TimerSet,1,3
  TimerSet,2,0    // kasuje timer wyłączenia
Endon

On ads#flow<140 Do
  TimerSet,2,5
  TimerSet,1,0    // kasuje timer włączenia
Endon

Oczywiście pomiędzy stany GPIO mają być 🙂

tylko nie chce mi się już tego pisać 


 
Dodane : 16/12/2025 10:21 pm
geoterm zareagował
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

Nie wiem czy dobrze zrozumiałem, dodałem te timery zerowania, ale tak to nie działa

On System#Boot Do
  GPIO,2,1        // przekaźnik OFF po starcie
Endon


// ===== WŁĄCZANIE (flow < 140) ======
On ads#flow<140 Do
  TimerSet,1,0    // kasuje timer wyłączenia
  TimerSet,2,5    // wysoki przepływ musi trwać 5 s
Endon

On Rules#Timer=2 Do
  GPIO,2,0        // ON przekaźnik
Endon


// ===== WYŁĄCZANIE (flow >= 160) ======
On ads#flow>=160 Do
  TimerSet,2,0    // kasuje timer włączenia
  TimerSet,1,3    // niski przepływ musi trwać 3 s
Endon

On Rules#Timer=1 Do
  GPIO,2,1        // OFF przekaźnik
Endon

 
Dodane : 16/12/2025 10:32 pm
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

Ten kod działa fajnie.

Przy resecie płytki działa prawidłowo, odliczy czas i włączy przekaźnik jeśli jest spełniony warunek przepływu.

Przy wyłączeniu płytki od zasilania, powrocie zasilania, wysoki przepływ- przekaźnik się nie włącza-ale włączy się jeśli choć na chwilę zjadę przepływem poniżej progu i znów dam wysoki przepływ, hmmm może coś pokombinuję z System#wake 

Czyli rozwiązanie widzę np. takie: dołożyć upsa 5v do płytki i po herbacie, dodatkowo zrobić przycisk sterowania ręcznego - podać ręcznie 5v na przekaźnik, włączyć alarm do telegramu jeśli brak przepływu i wysoka temperatura. 

Przy zaniku wifi też działało. 

Zmiana stanu GPIO podczas pracy-wyłączenie ręczne- i tu problem na pewno, nie wraca do pracy-ale zjechanie -nawet krótkie- z przepływem w dół i powrót przepływu - powraca do normy. Ale kto będzie ręcznie wyłączał przekaźnik. 

On System#Boot Do
  GPIO,2,1        // przekaźnik OFF po starcie
Endon


// ===== WŁĄCZANIE (flow < 140) ======
On ads#flow<140 Do
  TimerSet,2,10    // wysoki przepływ musi trwać 10 s
Endon

On Rules#Timer=2 Do
  GPIO,2,0        // ON przekaźnik
Endon


// ===== WYŁĄCZANIE (flow >= 160) ======
On ads#flow>=160 Do
 TimerSet,1,5    // niski przepływ musi trwać 5 s
Endon

On Rules#Timer=1 Do
  GPIO,2,1        // OFF przekaźnik
Endon

 
Dodane : 17/12/2025 9:39 am
isom
 isom
(@isom)
Wpisów: 5297
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dziwne że kasowanie tych timerów nie działa, bo moim zdaniem powinno. Może w espeasy jest coś inaczej a ja nie korzystam.

na ręczne włączenie / wyłączenie, można zastosować watchdog co sekundę , czyli ja bym zrobił to tak 

On System#Boot Do
  GPIO,2,1          // przekaźnik OFF
  Let,0,1           // wymagany stan = OFF
  TimerSet,1,0
  TimerSet,2,0
Endon

On ads#flow>=160 Do
  TimerSet,1,3      // warunek musi trwać 3 s
  TimerSet,2,0      // kasuje timer wyłączenia
Endon

On Rules#Timer=1 Do
  GPIO,2,0          // ON
  Let,0,0           // wymagany stan = ON
Endon

On ads#flow<140 Do
  TimerSet,2,5      // warunek musi trwać 5 s
  TimerSet,1,0      // kasuje timer włączenia
Endon

On Rules#Timer=2 Do
  GPIO,2,1          // OFF
  Let,0,1           // wymagany stan = OFF
Endon

On Clock#Second Do // Co sekundę sprawdza czy stan gpio odpowiada wartości Let i jesli nie to ją ustawia
  If [GPIO#2] != [UserVar#0]
    GPIO,2,[UserVar#0]
  EndIf
Endon

 

Dostosuj sobie on i off bo każdy może interpretować inaczej


 
Dodane : 17/12/2025 10:37 am
geoterm zareagował
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

Jeśli chodzi o tego watch doga, czy muszę stworzyć dummy#var czy ten user var to jest wirtualna zmienna ?

On Clock#Second Do // Co sekundę sprawdza czy stan gpio odpowiada wartości Let i jesli nie to ją ustawia
  If [GPIO#2] != [UserVar#0]
    GPIO,2,[UserVar#0]
  EndIf
Endon

 
Dodane : 17/12/2025 11:51 am
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

Zrobiłem test kodu poniżej i zrobiłem tak:

- wyrzuciłem dwa timery kasuj pod flow- bo inaczej nie działało, zostawiłem timery pod boot i tak reaguje układ-ożył,

- zamieniłem GPIO ON na OFF miejscami

- przy resecie lub przy wyłączeniu zasilania żeby układ działał trzeba zjechać z przepływem w dół, potem przepływ  na maxa i wtedy dalej działa prawidłowo -ale robiłem też test w domoticzu z blockly i tam podobna sytuacja,

- włączanie, wyłączanie GPIO ręcznie - jest możliwe, nie jest zblokowany pin

On System#Boot Do
  GPIO,2,1          // przekaźnik OFF
  Let,0,1           // wymagany stan = OFF
  TimerSet,1,0
  TimerSet,2,0
Endon

On ads#flow>=160 Do
  TimerSet,1,3      // warunek musi trwać 3 s
Endon

On Rules#Timer=1 Do
  GPIO,2,1          // OFF
  Let,0,1           // wymagany stan = OFF
Endon

On ads#flow<140 Do
  TimerSet,2,5      // warunek musi trwać 5 s
Endon

On Rules#Timer=2 Do
  GPIO,2,0          // ON
  Let,0,0           // wymagany stan = ON
Endon

On Clock#Second Do // Co sekundę sprawdza czy stan gpio odpowiada wartości Let i jesli nie to ją ustawia
  If [GPIO#2] != [UserVar#0]
    GPIO,2,[UserVar#0]
  EndIf
Endon

 
Dodane : 17/12/2025 12:21 pm
isom
 isom
(@isom)
Wpisów: 5297
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @geoterm

włączanie, wyłączanie GPIO ręcznie - jest możliwe, nie jest zblokowany pin

Tu nie ma mowy o zablokowaniu ręcznego włączenia, nie da się tego zrobić, można i tak powinno być przywrócić prawidłowy stan po ręcznym przełączeniu.

Za przywrócenie stanu odpowiada zmienna Let, a raczej jej wartość , co sekundę jest sprawdzana jej wartość i jeśli zmieni się stan przekaźnika bez zmiany tej zmiennej ( ręcznie), reguła powinna przywrócić stan poprzedni max po sekundzie.

Po resecie lub zaniku zasilania wszystkie timery są na off i przekaźnik również, pierwszy odczyt przepływu jeśli jest poniżej 140 lub powyżej 160 powinien aktywować timer, a po nim przekaźnik.

Stan bezczynności może być tylko gdy przepływ jest w oknie histerezy np 145 i wtedy nic się nie wydarzy 


 
Dodane : 17/12/2025 12:56 pm
geoterm zareagował
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

To nie działa ten "LET" zatem - jak jest włączony przekaźnik, wyłączę go i nie włączy go sam. 


 
Dodane : 17/12/2025 1:28 pm
isom
 isom
(@isom)
Wpisów: 5297
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Nie działa bo odwracasz logikę przekaźnika, masz tu wersję, która powinna działać.

Oczywiście uparcie twierdzę , że kasowanie liczników powinno działać 🙂

On System#Boot Do
  GPIO,2,1          // OFF (active-LOW)
  Let,0,1           // wymagany stan GPIO = OFF
  TimerSet,1,0
  TimerSet,2,0
Endon

//WŁĄCZANIE (flow ≥ 160)

On ads#flow>=160 Do
  TimerSet,1,3      // warunek musi trwać 3 s
  TimerSet,2,0
Endon

On Rules#Timer=1 Do
  GPIO,2,0          // ON
  Let,0,0
Endon

//WYŁĄCZANIE (flow < 140)

On ads#flow<140 Do
  TimerSet,2,5      // warunek musi trwać 5 s
  TimerSet,1,0
Endon

On Rules#Timer=2 Do
  GPIO,2,1          // OFF
  Let,0,1
Endon

//WATCHDOG (ochrona przed ręcznym sterowaniem)

On Clock#Second Do
  If [GPIO#2] != [UserVar#0]
    GPIO,2,[UserVar#0]
  EndIf
Endon

NTP masz aktywne ? Potrzebne do watchdoga !

Bez NTP wywołanie clock#second będzie niemożliwe

Przykład z popularnym serwerem

1

 


 
Dodane : 17/12/2025 1:50 pm
geoterm zareagował
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 
image

 
Dodane : 17/12/2025 2:54 pm
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

Tak, mam aktywne NTP

image
image

Mam te niebieskie przekaźniki do tego testu, ale to chyba nie przeszkadza w temacie. 


 
Dodane : 17/12/2025 3:05 pm
isom
 isom
(@isom)
Wpisów: 5297
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @geoterm

Mam te niebieskie przekaźniki do tego testu

To nie ma wpływu na te testy, pokaż logi gdy ręcznie wymuszasz zmianę stanu przekaźnika


 
Dodane : 17/12/2025 5:53 pm
geoterm
(@geoterm)
Wpisów: 200
Pomocny
Autor tematu
 

Ręczne wyłączenie GPIO,2,1

image

Po dłuższym czasie wyłącza się przekaźnik sam-to chyba to failed fetch

image

 


 
Dodane : 17/12/2025 7:50 pm
Strona 2 / 3
Udostępnij: