Powiadomienia
Wyczyść wszystko

Nawilżacz powietrza.

13 Wpisów
2 Użytkownicy
2 Likes
3,309 Wyświetleń
(@tribon)
Wpisów: 222
Weteran Donator 2K17
Autor tematu
 

Staram się skonstruować regułę, która uruchomi nawilżacz.

Nie mam czujnika poziomu wody w nawilżaczu 🙁

 

Założenia (podkreślone = zrealizowane):

Jeżeli jest jesień lub zima i

Jest noc lub nikogo z domowników nie ma

Jeżeli wilgotność w pomieszczeniu jest <40% to włącz nawilżacz.

Jeżeli wilgotność w pomieszczeniu jest >45% to wyłącz nawilżacz.

 

 

Coś dopiszę jak będą postępy. Jako, że jest to moja pierwsza reguła to będzie pewnie szło jak krew z nosa.

 
Dodane : 24/11/2017 7:59 am
adrian reacted
(@tribon)
Wpisów: 222
Weteran Donator 2K17
Autor tematu
 

Items:

Number XAIR_humidity "Humidity [%d %%]" <humidity> {channel="xxxxxxxxxxxxx"}
Switch sonoff_03 "Nawilżacz" {mqtt=">[broker:/sonoff/03/cmd:command:ON:ON],>[broker:/sonoff/03/cmd:command:OFF:OFF]"}
String Season_Name "Pora roku [%s]" { channel="astro:sun:home:season#name" }
Group:Switch:OR(ON, OFF) ile_osob "Obecność [%dx os. w domu]"

 

 

rule "Metoda 1 ON"
when
Item XAIR_humidity changed
then
if(XAIR_humidity<=40.0) { sendCommand(sonoff_03, ON) }
end


rule "Metoda 1 OFF"

when
Item XAIR_humidity changed
then
if(XAIR_humidity>=45.0) { sendCommand(sonoff_03, OFF) }
end
 
Dodane : 27/11/2017 7:54 pm
adrian
(@adrian)
Wpisów: 3973
Szefu Admin Zasłużony dla Forum, Patron Strony
 

ja złączyłbym to w jedna regułę

rule "Metoda humidit changed"
when
Item XAIR_humidity changed
then
if (XAIR_humidity<=40.0) { sendCommand(sonoff_03, ON) }
else if (XAIR_humidity>=45.0) { sendCommand(sonoff_03, OFF) } 
end



 
Dodane : 29/11/2017 11:18 am
(@tribon)
Wpisów: 222
Weteran Donator 2K17
Autor tematu
 

Też o tym myślałem. Ale jako, że to moja pierwsza reguła to jeszcze jej nawet nie przetestowałem. Chyba nic nie wybuchnie...

 
Dodane : 29/11/2017 11:42 am
adrian
(@adrian)
Wpisów: 3973
Szefu Admin Zasłużony dla Forum, Patron Strony
 

nie jestem pewien czy możesz tak bezpośredni czytać wartości z items 

XAIR_humidity<50

nie mam jak teraz sprawdzić

 
Dodane : 29/11/2017 11:44 am
(@tribon)
Wpisów: 222
Weteran Donator 2K17
Autor tematu
 

Niestety nie działa. Z logu:

Unknown variable or command '<'
 
Dodane : 29/11/2017 10:45 pm
adrian
(@adrian)
Wpisów: 3973
Szefu Admin Zasłużony dla Forum, Patron Strony
 

zrob tak

XAIR_humidity.state<=40.0
 
Dodane : 29/11/2017 10:49 pm
(@tribon)
Wpisów: 222
Weteran Donator 2K17
Autor tematu
 

Działa. Teraz staram się dodać warunek "jesienią i zimą", Nie potrzeba nawilżać poza sezonem grzewczym (a nie mam smart ogrzewania aby wyznaczyć start sezonu grzewczego)

rule "ON OFF humidifier"
when
Item XAIR_humidity changed or
Item Season_Name changed to AUTUMN or
Item Season_Name changed to WINTER
then
if (XAIR_humidity.state<=40.0) { sendCommand(sonoff_03, ON) }
else if (XAIR_humidity.state>=45.0) { sendCommand(sonoff_03, OFF) }
end
 
Dodane : 29/11/2017 11:41 pm
adrian
(@adrian)
Wpisów: 3973
Szefu Admin Zasłużony dla Forum, Patron Strony
 

To Ci nie zadziała tak jak chcesz

reguła odpali się 

  • jeśli zmieni się wilgotność i nie ważne jaka masz porę roku - użyłeś warunku or (lub)
  • jeśli zmieni się na Jesień - raz w roku to się odpali - przy zmianie z lata na jesień
  • jeśli zmieni się na na Zimę - raz w roku to się odpali - przy zmianie z jesieni na zimę

generalnie odpali Ci 100% + 2 razy tyle samo co bez warunków na porę roku. Nie napiszę Ci, jak to zrobić, żebyś sam rozkminił  😉

 
Dodane : 30/11/2017 7:11 am
adrian
(@adrian)
Wpisów: 3973
Szefu Admin Zasłużony dla Forum, Patron Strony
 

@Maciek - i jak zrobies?

 
Dodane : 06/12/2017 8:34 am
(@tribon)
Wpisów: 222
Weteran Donator 2K17
Autor tematu
 

Hej. No ostatnio z innych powodów miałem przerwę w "home automation". Do tego poopóźniały mi się dostawy z CN i nie wiem gdzie są. Teraz mam trochę pisania i wyjaśniania... Jednak czasem warto zapłacić "troszkę" więcej.

Muszę powiedzieć, że bardzo mi się podoba automatyzacja i naprawdę działa! Dodaję wody. Sam się włącza i wyłącza. Polecam.

Jedyne co wymyśliłem to aby zmienić na: 

Item Season_Name.state AUTUMN or
Item Season_Name.state WINTER

ale nie przetestowałem. Muszę powiedzieć, że za każdym razem jak szukam openhab rules to otrzymuję przykłady które są już bardzo zaawansowane. Trudno złapać początek. Brak tutoriali. Dla nieprogramisty to chyba najcięższa część tego projektu...

Jak byś mógł coś podpowiedzieć to byłbym wdzięczny.

 
Dodane : 06/12/2017 3:57 pm
adrian
(@adrian)
Wpisów: 3973
Szefu Admin Zasłużony dla Forum, Patron Strony
 

ok,

to taki tutorial'ik

Do poniższego

rule "nazwa reguly"
when
warunek (co ma sie wydarzyc, zeby uruchomił się kod poniżej)
then
ZROB COS
end

Między when a then masz tzw. zdarzenie, czyli co ma się wydarzyć, żeby uruchomiła się część między then a end

jaki są zdarzenia

Głownie zmienił się stan Item z jednej wartości na drugą.

przykłady.

  • Item typu: Switch z ON na OFF lub odwrotnie
  • Item typu PIR: z OPEN na CLOSE lub odwrotnie
  • Item typu astro start zachód słońca - uruchomi się w czesie kiedy rozpocznie się zachód słońca

ale mogą być też np, godzina 12:31:10sek

Teraz jeśli zrobisz taki warunek

when
Item przycisk changed from OFF to ON
then
ZROB COS
end

to taka reguła odpali się za każdym razem kiedy wciśniesz przycisk 

Łączenie warunków

Między when a then możesz oczywiście łączyć warunki

Warunki łączy się albo używając and albo or

Jeśli użyjesz and to te dwa warunki muszę wystąpić jednocześnie, żeby uruchomił się kod między then a end

when
Item przycisk_1 changed from OFF to ON
and
Item przycisk_2 changed from OFF to ON
then
ZROB COS
end
 

W tym przypadku musisz mieć wciśnięty przycisk_1 i przycisk_2 równocześnie, żeby  uruchomił się kod między then a end

Jeśli użyjesz or to kod między then a end uruchom się kiedy jeden z tych dwóch przycisków zostanie wciśnięty, obojętnie który

------

Kolejny poziom wtajemniczenia

Między when a then jak napisałem wpisywane są zdarzenia, czyli coś musi się wydarzyc

  • jest zima
  • jest wiosna 

to nie jest zdarzenie i nie może występować w warunku

Zmieniło się z lato na jesień jest zdarzeniem

Item Season_Name changed to AUTUMN

ale spowoduje że kod między then a end, uruchomi się raz w roku  bo tylko raz w roku pora roku zmienia się z lato na jesień.

Jeśli chcesz sprawdzać stan / wartości to musisz już zrobić takie sprawdzenie w kodzie nie w warunku. 

W twoim przypadku musisz zrobić coś takiego

when
Item XAIR_humidity changed
then

To odpali kod za każdym razem jak zmieni się wartości wilgotności

Tylko, że w kodzie teraz sprawdzasz - jaka jest pora roku, jaka jest wartość wilgotności i jak wszystko pasi to włączasz sonoffa

rule "ON OFF humidifier"
when
Item XAIR_humidity changed
then
if (Season_Name.state==AUTUMN or Season_Name.state==WINTER) { // Jesli jest albo jesień albo zima
if (XAIR_humidity.state<=40.0) { sendCommand(sonoff_03, ON) }
else if (XAIR_humidity.state>=45.0) { sendCommand(sonoff_03, OFF) }
}

end
 
Dodane : 06/12/2017 8:14 pm
(@tribon)
Wpisów: 222
Weteran Donator 2K17
Autor tematu
 

Dziękuję, już zrozumiałem. Usilnie wszystkie warunki próbowałem wstawić po stronie "when".

 
Dodane : 06/12/2017 11:03 pm
adrian reacted
Udostępnij: