Powiadomienia
Wyczyść wszystko

Rules

21 Wpisów
3 Użytkownicy
2 Likes
7,820 Wyświetleń
(@booster)
Wpisów: 234
Weteran
Autor tematu
 

Cześć, temat poświęcony przykładowym .RULES. 
Potrzebuję pomocy z tym skryptem


rule "PIR"

when
Item pir changed

then
if (pir.state == OPEN) {
sendCommand(sonoff_5, ON)
Thread::sleep(10)
}
else
{
sendCommand(sonoff_5, OFF)
}
end

I wyjaśniam:

Kiedy czujnik ruchu wykryje ruch
Wtedy włączy Sonoff 5, poczeka 10s
Jeśli już nie ma ruchu wtedy wył Sonoff_5

Problem mam w tym, że chciałbym aby ta reguła działała od wartości Sunset do Sunrise, czyli z pogody bierze mi zachód i wschód słońca (nie mam czujnika światła) 
Pir jest zamontowany w przedpokoju gdzie jest włącznik scienny, nie wiem czy przy wykorzystaniu PIR w sumie jest potrzebny ale tutaj muszę jego funkcję przemyśleć, chyba że macie pomysł? 
przy wł wł sciennego co powinno się wykonywać wł i wył światło a czujnik ruchu uśpiony np na 1min?

Np. to zmienić 


var Number hour = now.getHourOfDay
if ((hour >= 22) || (hour <= 5)) {
// ... do stuff here
}

Trzeba dorobić item który z sunrise i sunset wybierze tylko godzinę? a co z minutami ? 🙁
czy item >= sunset ) || ( item <=sunrise, ale chyba to nie tak łątwe 😛

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

mam cos takiego zrobione na sunset i sunrise - wieczorkiem podesle jak bede w domu

jedna z reguł mam, że włącza mi pastucha elektrycznego na dachu bo mam agresywnego zwierzaka ktory mi zjada dach 😉

pastuch odpala sie na 1h przed zmrokiem i wyłącza pastucha 2h po świcie

I chyba mam dokładnie też taką regułę, z sunset + PIR + swiatło - na schodach. 

Czego nie mam to jak długo mam swieciś się swiatło ma schodach. To mi reguluje sam PIR jak dostanie OPEN to trzyma go przez 20sek, a jak dostanie CLOSE to gasi mi światło inną regułą

 
Dodane : 14/11/2017 1:19 pm
(@booster)
Wpisów: 234
Weteran
Autor tematu
 

Fajnie jakby timer był odnawialny 😉
Jesli widzi ruch zeruje timer i znowu x-sekund , chce uniknąć mikagnia światła jak timer upada a jestem dłużej w pomieszeniu.
Albo tak jak napisane wyzej ze trzyma 10s i sprawdza ponownie jesli Open znowu 10s jeśli close to wył 🙂

 
Dodane : 14/11/2017 1:47 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

jestem zainteresowany zrobieniem czegos takiego, wiec zrobimy

 
Dodane : 14/11/2017 2:04 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

na razie same odpalanie reguł powiązane z astro czyli wschodami / zachodami słońca

  • po pierwsze używam astro binding w wersji 1 nie od openHab 2. Astro do openHAB 2 przestało działać z regułami po aktualizacji openHAB 2.1
  • tego używam: Astro Binding (1.x) binding-astro1 - 1.10.0
  • Binding skonfigurowany w /etc/openhab2/services

Konfigurujemy switch które dostają ON jak wystąp zdarzenie

// Rozpoczyna się wschód słońca
Switch becomes_bright {astro="planet=sun, type=rise, property=start"}

// 30 min przed rozpoczęciem zachodu słońca
Switch becomes_dark {astro="planet=sun, type=set, property=start, offset=-30"}

// 30 min po rozpoczęciu się zachodu słońca
Switch is_dark {astro="planet=sun, type=set, property=start, offset=30"}

// 60 min przed rozpoczęciem zachodu słońca
Switch hour_before_sunset {astro="planet=sun, type=set, property=start, offset=-60"}

tutaj 

  • type: set - zachód słońca, rise - wschód słońca i jest wile innych kombinacji np noc
    • https://github.com/openhab/openhab1-addons/wiki/Astro-binding
    • kolejność odpalania ;  https://github.com/openhab/openhab1-addons/wiki/Astro-Binding---Schedules
  • property: możliwości to start lub end i odpowiedni czy switch ma dostac ON na początku np. wschodu słońca (start) czy na końcu (end)
  • offset: w minutach przesuwa odpalenie switch w jedną lub drugą stronę

przykładowe reguły

rule "Turn outside lights on"
when
Item is_dark received update ON
then
if (switch_outside_1A.state==OFF) { sendCommand(switch_outside_1A, ON) }
if (switch_outside_terrace_light.state==OFF) sendCommand(switch_outside_terrace_light,ON)
end
 
Dodane : 14/11/2017 10:22 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

teraz w Twoim przypadku musisz pewnie zrobić dodatkowy item / switch który będzie miał stan ON w okresie kiedy chcesz zeby lampa zapalała się po wykrycia ruchu przez PIR

przyład: lampa ma zapalać się zawsze po wykryciu ruchu przez PIR i kiedy jest 60 min przez zachodem i 60 po wschodzie słońca

*.items

Switch zrobilo_sie_ciemno {astro="planet=sun, type=set, property=start, offset=-60"}
Switch zrobilo_sie_jasno {astro="planet=sun, type=rise, property=start, offset=60"}
Switch jest_ciemno

*.rules

rule "Ustaw jest ciemno"
when
Item zrobilo_sie_ciemno received update ON
then
postUpdate(jest_ciemno, ON) }
end

rule "Ustaw jest jasno"
when
Item zrobilo_sie_jasno received update ON
then
postUpdate(jest_ciemno, OFF) }
end

rule "PIR"
when
Item pir changed
then
if (jest_ciemno.state==ON && pir.state == OPEN) {
sendCommand(sonoff_5, ON)
Thread::sleep(10)
} else if (pir.state == CLOSED && sonoff_5.state == ON ) {
sendCommand(sonoff_5, OFF)
}
end


 
Dodane : 14/11/2017 10:49 pm
(@booster)
Wpisów: 234
Weteran
Autor tematu
 

Ok dzięki 🙂 czytałem na necie jakieś przykłady ale w sumie ten jest ławy, podoba mi się też to

else if (pir.state == CLOSED && sonoff_5.state == ON )

Bo nie będzie mi migać (mam nadzieje bo zmieniam z 501 na 2x 505) a on nie ma regulacji podania czasu/sygnału po wykryciu ruchu. Ew jak nie będzie działać to Thread::sleep(10) będzie trzeba na jakiś timer zmienić, jesli wykryje ruch to doda do timer np 5s

Jeszcze inna beczka będę chciał zrobić .items -> switch i aktywacja wł wył daną regułę. I aktywacje tego przez ALEXA bo jest teraz możliwość dodania Rutines a tam już można wykryć w Smart Home switch z .items i wł/wył sceny 😉 np 
Włączyć radio rano na Alexa + wł światła w sypialni na 40%.

 
Dodane : 15/11/2017 10:50 am
(@booster)
Wpisów: 234
Weteran
Autor tematu
 

adri@n masz pomysł jak zrobić w Basic UI powiadomienie np. Przez ostatnie 5 minut był wykryty ruch? 5,10,30,60min ? Albo W ostatnich X minutach był wykryty ruch i co 5 minut np do godziny czasu co kończy się Ostatni ruch ponad godzinę temu

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

pomyśle, ale tutaj trzeba będzie jaką kombinacje zrobić

 
Dodane : 17/11/2017 11:01 am
(@booster)
Wpisów: 234
Weteran
Autor tematu
 

Z tym zmierzchem nie zadziałało u mnie 🙁 zbyt często zapala się swiatło. I tutaj uwaga na przyszłość 😉 zmieniam koncepcję.
Korzystam z automatycznego wł/wył ( tzn będe bo jeszcze nie działa ) ale oddzielne światło pasek ledowy w przedpokoju z uwagi na to że przedpokój łaczy wszystko i zbyt często ktoś przechodzi a główne oświetlenie tak miga że.... :] 
- Pasek ledowy ( ok 3-5 pasków na 2m) na czujnik ruchu
- Główne światło wł/wył z włącznika sciennego lub openhab/alexa Ale JEŚLI nie wykryje ruchu przez 1min to wył automatycznie światło.

I teraz przydały by się timery 😀 

 
Dodane : 23/11/2017 11:28 am
(@tribon)
Wpisów: 222
Weteran Donator 2K17
 

Adrian, może byś zrobił cały dział pod OpenHAB do Rules?

Ustalilibyśmy, że jeden temat jeden rules. Może stałaby się to kopalnia wiedzy.

 
Dodane : 23/11/2017 12:30 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 
Dodane przez: tribon

Adrian, może byś zrobił cały dział pod OpenHAB do Rules?

Ustalilibyśmy, że jeden temat jeden rules. Może stałaby się to kopalnia wiedzy.

zrobione - ten temat już tam przesunięty, dzięki za sugestię.

 
Dodane : 23/11/2017 10:16 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 
Dodane przez: Booster B (Booster)

Z tym zmierzchem nie zadziałało u mnie 🙁 zbyt często zapala się swiatło.

ale, problem był z samym zmierzchem czy już z PIR - jego lokalizacja, ruch dookoła?

 
Dodane : 23/11/2017 10:18 pm
(@booster)
Wpisów: 234
Weteran
Autor tematu
 

Aktualnie zrobiłem coś takiego i testuję 

rule "Wyl przedpokoju po 20s nie aktywnosci" 
when
Item pir changed to CLOSED
then
Thread::sleep(20000)
if (pir.state == CLOSED && sonoff_5.state == ON ) {
sendCommand(sonoff_5, OFF)
}
end

Tylko nie wiem czy Thread::Sleep(20) to 20 sekund ? chyba powinno być 20000 ?

 
Dodane : 25/11/2017 1:30 pm
(@tribon)
Wpisów: 222
Weteran Donator 2K17
 

Wg mnie 20s=20000ms czyli wpisujesz 20000.

 
Dodane : 25/11/2017 6:03 pm
adrian reacted
(@booster)
Wpisów: 234
Weteran
Autor tematu
 

Aktualnie zdalnie wprowadziłem zmiany.

//Astro
Switch Night_State

Mam OpenHab nie zaktualizowany. Astro binding 2.1.0

.rules

rule "Aktywowanie sciany na ruch " 
when
Item pir changed to OPEN
then
if (sonoff_6.state == OFF && sonoff_5.state == OFF && Night_State.state == ON) {
sendCommand(sonoff_10_status, ON)
sendCommand(sonoff_10, ON)
}
end

rule "OpenHAB system started - astro"
when System started
then createTimer(now.plusSeconds(180)) [ |
logInfo("RULE", "--> astro init") if (now.isAfter((SunsetTime.state as DateTimeType).calendar.timeInMillis) ||
now.isBefore((SunriseTime.state as DateTimeType).calendar.timeInMillis)
) {
logInfo("RULE", "--> Night_State ON") postUpdate(NightState, ON)
} else {
logInfo("RULE", "--> Night_State OFF") postUpdate(NightState, OFF)
}
]
end
rule "Update NightState"
when Item SunElevation changed
then
if(SunElevation.state > 0){ if(NightState.state != OFF) postUpdate(NightState, OFF)
} else {
if(NightState.state != ON) postUpdate(NightState, ON)
}
end

Jak wróce światło powinno się zapalać 😉 jeśli nie będzie to coś nie Halo :(. Po testach napiszę czy wsio ok.

A to też jest ciekawe

rule "Example Rule at sunrise"

when

Channel 'astro:sun:home:rise#event' triggered START

then

sendCommand(Switch_Landscape, OFF)

end
 
Dodane : 07/02/2018 2:35 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

ja robię reguły na astro związane z oświetleniem w ten sposób

Przykład poniżej działa tak, że OH ma mi wyłączyć oświetlenie na zewnątrz 30 minut przed tym zanim rozpocznie się wschód słońca

1. Definiuje sobie w pliku konfiguracyjnym *.things - "rzecz"  którą nazwałem day_state_becomes_bright - "robi się jasno" 

Zdefiniowane : 30min przed tym zanim w mojej lokalizacji rozpocznie się wschód słońca 

astro:sun:day_state_becomes_bright   [  geolocation="52.xxxxxx,20.xxxxxxx", interval=60] {
Channels:
Type rangeEvent : rise#event [
offset=-30
]
}

a do tego mam regułę wyłączającą światła

rule "Turn off outside lights because it becomes bright"
when
Channel "astro:sun:day_state_becomes_bright:rise#event" triggered START
then
if (all_lights_outside.state!=OFF) sendCommand(all_lights_outside, OFF)
end
 
Dodane : 07/02/2018 9:47 pm
Maciek reacted
(@booster)
Wpisów: 234
Weteran
Autor tematu
 

Kolejny problem 🙂
AFE T2 z Temp i wilgocią, dodatkowo kontaktron na GPIO3

RULES

rule "Brama Garażu open/close"
when
Item sonoff_garaz_status changed
then
sendBroadcastNotification("Brama Garażu Otwarta")
end
rule "Brama Garażu open/close"
when
Item sonoff_garaz changed to ON
then
sendBroadcastNotification("Brama Garażu Otwarta1")
end

rule "Garaz on-off do 1-0"
when
Item sonoff_garaz_status changed
then
if (sonoff_garaz_status.state.toString.contains("OFF")) {
postUpdate(sonoff_garaz_status_liczbowy, 0)
} else {
postUpdate(sonoff_garaz_status_liczbowy, 1)
}
end
rule "Garaz Status"
when
Item sonoff_garaz_status changed
then
if (sonoff_garaz_status.state!=sonoff_garaz.state) {
if (sonoff_garaz_status.state==ON) {
sendCommand(sonoff_garaz, ON)
} else {
sendCommand(sonoff_garaz, OFF)
}
}
end
rule "Garaz Status z garazu"
when
Item sonoff_garaz changed
then
if (sonoff_garaz.state!=sonoff_garaz_status.state) {
if (sonoff_garaz.state==ON) {
sendCommand(sonoff_garaz_status, ON)
} else {
sendCommand(sonoff_garaz_status, OFF)
}
}
end


ITEMS

Switch sonoff_garaz "[MAP(garaz.map):%s]" {mqtt=">[broker:/device/garaz/switch/cmd:command:on:on],>[broker:/device/garaz/switch/cmd:command:off:off]"}
Switch sonoff_garaz_status "[MAP(garaz.map):%s]" {mqtt=">[broker:/device/garaz/switch/state:state:on:on],>[broker:/device/garaz/switch/state:state:off:off]"}
Number sonoff_garaz_humidity "Bathroom Humidity [%.1f %%]" { mqtt="<[broker:/device/garaz/humidity:state:default]"}
Number sonoff_garaz_temperature "Bathroom Temperature [%.1f °C]" { mqtt="<[broker:/device/garaz/temperature:state:default]"}
Number sonoff_garaz_status_liczbowy

sonoff_garaz_status_liczbowy jest to grafany ( tak samo reguła )
sendBroadcastNotification w rules żeby mieć powiadomienia na telefon ( dwie bo testowałem czy duże ON czy małe działa 😀 )

 

I problem rozchodzi się że gdy na status w sitemaps czy coś ustawiam sonoff_garaz to nie aktualizuje się status, ale jak używał do swich sonoff_garaz_status to z Openhab działa, do grafany zapisuje itd. ale w garażu jak wł/wył manualnie po GPIO0 lub przez GPIO3 to status się nie zmienia ;( przez co jak steruję przez Openhab itd jest ok ale już z poziomu garazu to nie działa, kombinowałem itd czy ktoś może mi pomóc? 

 

 

 

 
Dodane : 26/09/2018 7:58 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

zmień > na < w .... _status

 
Dodane : 29/09/2018 10:04 pm
(@booster)
Wpisów: 234
Weteran
Autor tematu
 
Switch sonoff_garaz_status "[MAP(garaz.map):%s]" {mqtt="<[broker:/device/garaz/switch/state:state:on:on],<[broker:/device/garaz/switch/state:state:off:off]"}

O to chodzi? niestety dalej nie działa :/ z Basic UI wszystko ok jak zmieniam status ale z sonoff nie mam info :/

 
Dodane : 05/10/2018 11:09 am
Strona 1 / 2
Udostępnij: