Terrarium Beleuchtung steuern

Begonnen von topy, 07 Januar 2014, 11:05:04

Vorheriges Thema - Nächstes Thema

topy

Hallo zusammen,

FHEM nutze ich jetzt schon etwas länger. Das ganze letzte Jahr über z.B. um die Beleuchtung im Terrarium unserer Echsen mit Sonnenaufgang An und Sonnenuntergang auszuschalten. Im Winter gehen die Tierchen im Winterschlaf, welcher mit immer kürzeren Beheizungsschüben (durch die Wärmestrahler) eingeleitet wird. Das ganze innerhalb eines Monats, in vier zyklen mit je 1 Stunde später AN und 1 Stunde früher aus. Genauso werden die Tiere auch aus ihrem Winterschlaf geholt. Da ich das dieses Jahr nicht manuell machen wollte, würde ich das gerne automatisieren und habe dazu folgendes geschrieben:


## AN Januar
define TerrariumAnJanuar11 at *{sunrise(+14400)} {if ($month==1) && ($day<=6) {fhem("set FS20_074a07 on")} }
define TerrariumAnJanuar21 at *{sunrise(+10800)} {if($month==1) && ($day>6) && ($day<=12) {fhem("set FS20_074a07 on")} }
define TerrariumAnJanuar31 at *{sunrise(+7200)} {if($month==1) && ($day>12) && ($day<=18) {fhem("set FS20_074a07 on")} }
define TerrariumAnJanuar41 at *{sunrise(+3600)} {if($month==1) && ($day>18) && ($day<=24) {fhem("set FS20_074a07 on")} }
define TerrariumAnJanuar51 at *{sunrise("REAL")} {if($month==1) && ($day>24) {fhem("set FS20_074a07 on")} }

## Aus Januar
define TerrariumAusJanuar11 at *{sunset(-14400)} {if($month==1) && ($day<=6) {fhem("set FS20_074a07 off")} }
define TerrariumAusJanuar21 at *{sunset(-10800)} {if($month==1) && ($day>6) && ($day<=12) {fhem("set FS20_074a07 off")} }
define TerrariumAusJanuar31 at *{sunset(-7200)} {if($month==1) && ($day>12) && ($day<=18) {fhem("set FS20_074a07 off")} }
define TerrariumAusJanuar41 at *{sunset(-3600)} {if($month==1) && ($day>18) && ($day<=24) {fhem("set FS20_074a07 off")} }
define TerrariumAusJanuar51 at *{sunset("REAL")} {if($month==1) && ($day>24) {fhem("set FS20_074a07 off")} }


Leider wird nicht geschaltet (festgestellt nach Beobachtung der Lampen :D, und kontrolliert im event monitor - events werden definiert, und gleich wieder deleted, eine Ausführung folgt nicht, sprich, scheinbar greifen die IF-Klauseln nicht), kann mir jemand sagen woran das liegt?

Ach ja, da mein Sender in Küche steht, und die Tiere im Wohnzimmer, schicke ich immer 3x das AN und 3x das AUS Signal, nur um sicherzugegen das entsprechend geschaltet wird, und die Tierchen ihre kalte Nacht, bzw den Warmen Tag haben, daher die beschriftung 11,21.. die Duplikate 12,13..,22,23,.. habe ich hier der Übersicht halber entfernt.

Viele Grüße

Puschel74

Hallo,

was steht im fhem-eigenen LogFile dazu?

grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

rudolfkoenig

Oder auch:
fhem> { $month }
1
fhem> { $day }
Global symbol "$day" requires explicit package name at (eval 25517) line 1.

fhem> { $mday }
7
fhem> { $wday }
2


rudolfkoenig

Ob dreimal schicken besser ist, ist diskussionswuerdig, FS20 sendet per-se schon 3-mal, das wuerde insg. 9 Telegramme bedeuten. Man kann es aber einfacher schreiben mit:
set FS20_074a07,FS20_074a07,FS20_074a07 on

rudolfkoenig

Und:
if ($month==1) && ($day<=6) { ... }
ist falsch. Richtig ist
if ($month==1 && $day<=6) { ... }

topy

#5
Zitat von: rudolfkoenig am 07 Januar 2014, 11:50:15
if ($month==1 && $day<=6) { ... }


Hatte ich vorher geschrieben. Dann aber das http://www.fhemwiki.de/wiki/If-condition gelesen und mir diese doppelte Klammersetzung abgeguckt.

Ok, fhem log spuckt syntax Fehler aus. Dachte fhem.cfg wird bereits auf Syntaxfehler beim abspeichern geprüft und hatte das somit ausgeschlossen und die Log gar nicht weiter betrachtet.

2014.01.07 11:48:52 3: syntax error at (eval 2926) line 1, near ") &&"
Global symbol "$day" requires explicit package name at (eval 2926) line 1.
syntax error at (eval 2926) line 1, near "} }"




Danke für alle Antworten, $mday war ja dann scheinbar der entscheidene Fehler. Vielen Dank! Falls es dennoch nicht klappt, melde ich mich nochmal

topy

Das korrigierte Script sieht jetzt so aus:

## AN Oktober
define TerrariumAnOktober1 at *{sunrise(+3600)} {if($month==10 && $mday<=6) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 on")} }
define TerrariumAnOktober2 at *{sunrise(+7200)} {if($month==10 && $mday>6 && $mday<=12) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 on")} }
define TerrariumAnOktober3 at *{sunrise(+10800)} {if($month==10 && $mday>12 && $mday<=18) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 on")} }
define TerrariumAnOktober4 at *{sunrise(+14400)} {if($month==10 && $mday>18 && $mday<=24) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 on")} }

## AUS Oktober
define TerrariumAusOktober1 at *{sunset(-3600)} {if($month==10 && $mday<=6) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 off")} }
define TerrariumAusOktober2 at *{sunset(-7200)} {if($month==10 && $mday>6 && $mday<=12) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 off")} }
define TerrariumAusOktober3 at *{sunset(-10800)} {if($month==10 && $mday>12 && $mday<=18) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 off")} }
define TerrariumAusOktober4 at *{sunset(-14400)} {if($month==10 && $mday>18 && $mday<=24) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 off")} }

## AN Januar
define TerrariumAnJanuar1 at *{sunrise(+14400)} {if ($month==1 && $mday<=6) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 on")} }
define TerrariumAnJanuar2 at *{sunrise(+10800)} {if($month==1 && $mday>6 && $mday<=12) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 on")} }
define TerrariumAnJanuar3 at *{sunrise(+7200)} {if($month==1 && $mday>12 && $mday<=18) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 on")} }
define TerrariumAnJanuar4 at *{sunrise(+3600)} {if($month==1 && $mday>18 && $mday<=24) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 on")} }
define TerrariumAnJanuar5 at *{sunrise("REAL")} {if($month==1 && $mday>24) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 on")} }

## Aus Januar
define TerrariumAusJanuar1 at *{sunset(-14400)} {if($month==1 && $mday<=6) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 off")} }
define TerrariumAusJanuar2 at *{sunset(-10800)} {if($month==1 && $mday>6 && $mday<=12) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 off")} }
define TerrariumAusJanuar3 at *{sunset(-7200)} {if($month==1 && $mday>12 && $mday<=18) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 off")} }
define TerrariumAusJanuar4 at *{sunset(-3600)} {if($month==1 && $mday>18 && $mday<=24) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 off")} }
define TerrariumAusJanuar5 at *{sunset("REAL")} {if($month==1 && $mday>24) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 off")} }

## Zwischen Januar und Oktober normal Schalten
define TerrariumAnNeu at *{sunrise("REAL")} {if($month>1 && $month<10) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 on")} }
define TerrariumAusNeu at *{sunset("REAL")} {if($month>1 && $month<10) {fhem("set FS20_074a07,FS20_074a07,FS20_074a07 off")} }


Werde heute abend prüfen ob es geschaltet hat. Falls nicht, melde ich mich nochmal hier.

@Rudolf, leider haben die 3 Signale schon mal nicht ausgereicht, und die Tierchen ne Nacht nicht schlafen lassen. Seitdem ich die 9 verschicke, ist das dass nicht mehr vorgekommen. Welche Ursachen das hatte weiß ich nicht, an der Stelle gehe ich aber lieber auf Nummer sicher.

Falls jemand noch Optimierungsvorschläge hat, immer her damit! :)

vg

OiledAmoeba

Zitat von: rudolfkoenig am 07 Januar 2014, 11:47:18
Ob dreimal schicken besser ist, ist diskussionswuerdig, FS20 sendet per-se schon 3-mal, das wuerde insg. 9 Telegramme bedeuten. Man kann es aber einfacher schreiben mit:
set FS20_074a07,FS20_074a07,FS20_074a07 on

Ich habe gerade nicht nachgesehen, bin hier aber irritiert.
FS20DI würde bei 3 Telegrammen doch aber fehlerhaft laufen, oder? Oder gilt das nur für FS20ST?
Beim Dimmer ist es doch, dass das erste Telegramm den Dimmer fahren lässt, jedes weitere, gleichlautende Telegramm bricht das Anfahren ab und setzt den Wert sofort. Oder?
Also: set fs20.Dimmer dim62% => Dimmer fährt entsprechend der gespeicherten Ramp-Zeit auf 62%. Kommt der Befehl nochmal, setzt der Dimmer die 62% sofort, ohne auf Ramp zu achten.
Die Fernbedienung setzt das Telegramm doch auch nur einmal ab, oder?
Gruß
Florian

Jail auf XigmaNAS (freeBSD); CCU2 mit CULv3, nanoCUL868 und JeeLink-Clone; div. FS20-Komponenten; andFHEM; div. hm- und hmip-Komponenten; div. IT+

rudolfkoenig

Bei FS20 wird alles 3-mal gesendet, Ausnahme sind dimUp/dimDown, wenn man es auf der Fernbedienung drueckt. culfw sendet _alle_ FS20 Telegramme dreimal, auch dimUp/dimDown. Wie Geraete draruf reagieren, ist eine andere Baustelle.

OiledAmoeba

OK, wir schweifen ab, aber:
Dann ist es mein Glück, dass ich nicht CULe, sondern FHZe?
Denn wenn ich, egal ob über fhem oder Handsender, set fs20.Dimmer on schicke, fährt der Dimmer brav ganz langsam auf den zuletzt eingestellten Dimmpunkt.
Schicke ich aber set fs20.Dimmer,fs20.Dimmer on, setzt er den Dimmpunkt sofort.
Wie gesagt, FHZ.
Gruß
Florian

Jail auf XigmaNAS (freeBSD); CCU2 mit CULv3, nanoCUL868 und JeeLink-Clone; div. FS20-Komponenten; andFHEM; div. hm- und hmip-Komponenten; div. IT+

rudolfkoenig

ZitatDann ist es mein Glück, dass ich nicht CULe, sondern FHZe?

Nein, jedenfalls nicht bei diesem Beispiel.
- "set dimmer on" oder "set dimmer 62%" ist was anders als  "set dimmer dimUp"
- aus deiner Beobachtung kann man nicht auf den Anzahl der Telegramme schliessen: Ob ein Befehl zum ersten 3-er Gruppe gehoert oder zum zweiten, kann man im Firmware der FS20DI anhand von Timing feststellen.

OiledAmoeba

Ah, ich glaube, jetzt klingelt es bei mir.
Das drei mal Senden ist also keine fhem-Spezialität, sondern gehört zum FS20-Protokoll?
Und durch die in fhem eingebaute Sendeverzögerung (etwa 'ne Viertelsekunde, wenn ich mich recht erinnere) weiß dann der Dimmer, ob das empfangene Telegramm eine von den Sicherheitswiederholungen ist, oder ein neuer Befehl. Richtig?

"set Dimmer,Dimmer on" würde nach meinem Verständnis dann zerlegt werden in
fhem an Sender: "on, Pause, on"
Sender an FS20: "on, on, on, Pause, on, on, on"
Gruß
Florian

Jail auf XigmaNAS (freeBSD); CCU2 mit CULv3, nanoCUL868 und JeeLink-Clone; div. FS20-Komponenten; andFHEM; div. hm- und hmip-Komponenten; div. IT+

brmpfl

Zitat von: topy am 07 Januar 2014, 12:30:55
leider haben die 3 Signale schon mal nicht ausgereicht, und die Tierchen ne Nacht nicht schlafen lassen. Seitdem ich die 9 verschicke, ist das dass nicht mehr vorgekommen. Welche Ursachen das hatte weiß ich nicht, an der Stelle gehe ich aber lieber auf Nummer sicher.

Falls jemand noch Optimierungsvorschläge hat, immer her damit! :)

Bei FS20 kommen die Signale schon mal nicht an.
Durch das dreimalige Absetzen des Befehls reduzierst Du nur die Wahrscheinlichkeit, dass das Signal nicht ankommt.
Eine ähnliche Baustelle hatte ich bei meiner Aquarienbeleuchtung.

Bei Homematic dagegen konnte ich noch kein "verlorengegangenes" Signal feststellen.

:)
:)
Hajo