Hallo zusammen,
ich habe ein notify für meine Haustürklingel gebaut, das sieht so aus:
GPIOTuerklingel:on get cam1 image;sleep 3;
set Treppenhausbeleuchtung on;
set teleBot sendPhoto /opt/fhem/www/snapshots/cam1_snapshot_2.jpg;
set teleBot sendPhoto /opt/fhem/www/snapshots/cam1_snapshot_3.jpg;
set teleBot sendPhoto /opt/fhem/www/snapshots/cam1_snapshot_4.jpg;
set teleBot sendPhoto /opt/fhem/www/snapshots/cam1_snapshot_5.jpg;
Bei Betätigung der Türklingel werden von cam1 Bilder gemacht, dann kommt eine Pause weil die Bilder der cam erst weggeschrieben werden müssen. Die Treppenhausbeleuchtung schaltet ein, die letzten Bilder werden mir via Telegram geschickt.
Das funktioniert auch soweit. Aber ich will das Einschalten der Treppenhausbeleuchtung auf das Zeitfenster zwischen Sonnenuntergang und -aufgang beschränken. Das kriege ich irgendwie nicht hin.
Wer weiss Rat?
Gruß
J
Schau Dir das Attribut https://fhem.de/commandref.html#disabledForIntervals an; enthaelt auch ein Beispiel mit sunrise/sunset.
Bitte verwende Code Tages für Logausgaben und Codeteile.
Du kannst das Attribut disableForInterval nehmen. Oder Du kannst eine Bedingung einbauen. Entweder mit dem FHEM Befehl IF siehe Commandref oder Du gehst auf Perlebene und machst dort if
Hi,
um die Abfrage Tag/Nacht etwas einfacher zu machen, habe ich mir ganz am Anfang einen Tageslicht Dummy definiert. Der wird einfach von zwei at (sunrise sunset) auf 0 oder 1 gesetzt und an verschiedenen Stellen in meinem FHEM abgefragt.
IF ([Tageslicht] eq "0") (set switch1 on)
Gruß Otto
Fuer sowas gibt es "seit immer" die perl Funktion isday(), erklaert in commandref. Ob sie mit IF verwendbar ist weiss ich nicht, war eigentlich fuer if gedacht.
Fuer Casual Leser: IF ist ein FHEM-befehl mit seiner eigenen Syntax, verwandt mit DOIF. Mit if ist das "normale" perl Sprachelement gemeint.
Perl war mir am Anfang zu "heikel" ;) aber klar mit Perl geht es genauso einfach:
{if (isday() == 0) {fhem "set switch1 on"}}
Nach meinen Tests bekommt IF den Umgang mit isday() nicht hin. Aber vielleicht habe ich nicht alle Möglichkeiten probiert. Es ist mit Sicherheit dann auch nicht mehr "einfacher".
Vor allem für Windows User: niemals "entspannt" mit Groß und Kleinschreibung umgehen. ;D
Gruß Otto
;D
{if ( not isday() ) {fhem "set switch1 on"}}
Oder halt statt not ! nehmen
Zitat von: Otto123 am 09 Juli 2017, 12:07:49
Nach meinen Tests bekommt IF den Umgang mit isday() nicht hin. Aber vielleicht habe ich nicht alle Möglichkeiten probiert.
wahrscheinlich ;)
IF (!isday()) (set switch1 on)
Zitat von: Damian am 09 Juli 2017, 12:17:52
wahrscheinlich ;)
Ich habe mit viel viel mehr Klammern angefangen und dann reduziert - diese minimal Variante habe ich mir dann nicht mehr getraut :-[
;D ;D ;D
Immerhin hat der TE jetzt die Qual der Wahl :)
Schönen Sonntag
Otto
Zitat von: Otto123 am 09 Juli 2017, 12:43:56
Ich habe mit viel viel mehr Klammern angefangen und dann reduziert - diese minimal Variante habe ich mir dann nicht mehr getraut
Das war noch nicht die minimale Variante:
IF (!isday) (set switch1 on)