
S lőn világosság.
Az éjszakai világítás részeként a ház egyes részeit egész éjjel megvilágítva akarjuk tartani, figyelembe véve a naplemente-napfelkelte időpontját.
Mit kapcsoljunk?
Több úton is meghatározhatjuk, hogy milyen fogyasztókat akarunk kapcsolni. Az egyesével történő felsorolás helyett hozzáadhatjuk őket csoportokhoz is, vagy egyedi attribútum alapján tovább szűkíthetjük a csoportjainkat.
Mivel én a csoportokat az eszköz funkciója alapján hoztam létre, valamint többféle eszközt is kapcsolni akarok (aljzatot, lámpát stb) ezért a global userattr kibővítése tűnt logikus megoldásnak.
A userattr. a „global” eszköz része (http://YOURFHEM:8083/fhem?detail=global). Az attributumok végére adjuk meg az ATTRIBUTUMNÉV:ÉRTÉK1,ÉRTÉK2 formában, hogy milyen értékeket lehet hozzárendelni az eszközökhöz (a választható nemleges érték valójában fölösleges, helyette az attribútumot is lehet törölni).

A kiválasztatott eszközöknél megadtam, hogy az éjszakai világításhoz tartoznak, mint a példában szereplő Philips HUE lámpánál.
Feltételes kapcsolás
Ha az összes hozzárendeléssel megvagyunk, akkor jöhet a logika!
define doif_NIGHTLIGHT DOIF ([{sunset("REAL", 0, "16:30", "21:00")}]) ({
fhem("set group=light:FILTER=a:nightlight=yes on");;
fhem("set Telegram message nightlight on.");;
}) DOELSEIF ([{sunrise("REAL", 0, "5:30", "8:00")}]) ({
fhem("set group=light:FILTER=a:nightlight=yes off");;
fhem("set Telegram message nightlight off. ");;
})
A fenti kódot másoljuk be a FHEM felület parancssorába. Ha készen vagyunk, akkor egy új DOIF eszköz jön létre.
Figyelem: a fenti kód a FHEM saját beépített nyelvét (DOIF – DOELSEIF struktúra) kombinálja PERL hívásokkal (a {} közötti rész). Perl kódból fhem kódot a fhem() függvénnyel lehetséges.
Mit csinál a kód?
Ha emberi nyelvre lefordítjuk, akkor a következő logikát írtuk le:
– Ha lemegy a nap (de legkorábban 16:30-kor és legkésőbb 21:00-kor)
— kapcsolja fel azokat az eszközöket, ami a „light” csoportba tartozik, és a nightlight attributum meg van adva (yes értékkel)
– Ha pedig feljön a nap (de legkorábban 5:30-kor és legkésőbb 8:00-kor)
— kapcsolja le azokat az eszközöket, ami a „light” csoportba tartozik, és a nightlight attributum meg van adva (yes értékkel)
Mindezt még kiegészítettem egy telegramos üzenetküldéssel, átmenetileg.
Mit kell még tudni?
A Sunset akkor működik, ha megadtad a lakásodhoz/házadhoz megadod a hosszúsági és szélességi fokokat. Ez a Google Maps segítségével történik. Add meg a címed, klikkelj az utcára, és egy kis popup felületen kapsz két hat tizedes jeggyel rendelkező értéket, amiből az első a hosszúsági fok, a második a szélességi fok.
A Budai Vár esetében a következő parancsokat kell tehát megadni:
attr global latitude 47.502080
attr global longitude 19.034817
A {sunrise()} és {sunset()} pranacsok opcionálisan 4 paramétert kaphatnak:
- az első napfelkete/naplemente annak függvényében, hogy a nap hol található a horizonton:
- „REAL”, amikor a nap a horizonton van („HORIZON=0.0”)
- „CIVIL”, amit szürkület van (a Nap 6 fokkal van a horizont alatt) („HORIZON=-6.0”)
- „NAUTIC”, amikor a Nap 12 fokkal van a horizont alatt, ez az az idő, amikor a tengerészek számára szabad szemmel láthatóvá válnak a csillagok („HORIZON=-12.0”)
- „ASTRONOMIC”, amikor a Nap 18 fokkal van a horizont alatt és már nem világítja meg az eget („HORIZON=-18.0”)
- „HORIZON=-6.0”, ha tetszőleges értéket akarunk megadni.
- a második, hogy ettől az időponttól hány másodperccel térjen el (offset)
- a harmadik és negyedik, hogy legkorábban, illetve legkésőbb mikor kell, hogy jelezzen az esemény (a fenti példában hiába kel fel a Nap 5:30 előtt, legkorábban 5:30-kor jelezzen).
A „set” parancs hajtja végre az eszközökön az utasításokat. A parancs megadhat 1-1 eszközt közvetlenül (pl. set Telegram …) , vagy valamilyen módon eszközök csoportját.
Ha több eszközt akarsz egyszerre váltani, akkor valamilyen rendszer alapján érdemes csoportosítanod őket, pl a set NAME=.*Light on
pl. minden Light-ra végződő eszközt váltana, set group=light on
pedig minden „light” csoporthoz hozzáadott eszközt. A legtöbb oldal javasolja a SZOBA_eszköz_TIPUS elnevezési szabályosságot, de ennek alkalmazására nem minden esetben van lehetőséged – pl. ha a lámpát egy adapterrel kapcsolsz, akkor az így nézne ki: