FHEM Forum

FHEM => Automatisierung => Thema gestartet von: moonsorrox am 08 November 2015, 16:47:07

Titel: Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: moonsorrox am 08 November 2015, 16:47:07
Zur Erklärung vorab meine Mobotix Kamera kann mit dem "!isday" Befehl eine Beleuchtung einschalten, was sie auch tut...
Sobald irgend ein Ereignis, sei es der interne IR Melder oder auch der mit Messfeldern bestückte Bereich ein Signal gibt wird mit diesem Befehl die Beleuchtung eingeschaltet
/fhem?cmd={+if+(!isday())+{fhem+"set+AussenLampe+on-for-timer+120"}}

Nicht durch die + Zeichen im Code irritieren lassen die sind richtig und werden von der Kamera gemacht sobald dies gespeichert wird

Nun ist ja isday ein Zustand der sich laut Wiki Eintrag bildet aus Sonnenaufgang und Sonnenuntergang:
Zitatisday

Bekanntlich kann man mit "isday" leicht testen ob es draussen hell ist oder nicht. isday ist eine Funktion des (automatisch geladenen) Moduls SUNRISE_EL, das auch sunset und sunrise enthält.

Problematisch bei isday ist die fehlende Möglichkeit, Sonnenaufgang und Untergang einzustellen (zumindest wenn man nicht 99_SUNRISE_EL.pm verändern will): isday ist wahr, wenn die Sonne im gegebenen Breitengrad sichtbar ist. Wenn örtliche Gegebenheiten eine Anpassung erfordern, kann man sich auch ein eigenes isday basteln, in dem man sunrise und sunset verwendet und dieses mit getrennten offsets versieht.

Zuerst definiert man sich eine Variable ("dummy") der anstelle isday eingesetzt werden soll, z.B.:

    define Tageslicht dummy

Dann wird diese mit sunset und sunrise befüllt:

define SetDummy1 at *{sunset(-3600)} set Tageslicht hell
define SetDummy2 at *{sunrise(+1800)} set Tageslicht dunkel

Jetzt kann für jeden Wechsel ein eigener Offset gewählt werden, im Beispiel 3600 Sekunden vor Sonnenuntergang und 1800 Sekunden nach Sonnenaufgang. Anstatt das Dummy "Tageslicht" mit den Werten "hell/dunkel" zu befüllen, kann natürlich auch 1/0 oder "Tag/Nacht" etc. verwendet werden, je nach dem was bei der Anwendung besser passt.

Für höhere Ansprüche könnte hingegen das Twilight-Modul verwendet werden, das Dämmerungsstufen kennt. 

Jetzt möchte ich für meine Kamera ein eigenes "!isday" da ich schon einmal in meiner Konfig "!isday! nutze.
Wenn ich mir jetzt ein zweites "!isday" nach Beispiel im Wiki erstelle mit eben anderen Zeiten, wie kann ich jetzt der Kamera die Unterscheidung der beiden "!isday" beibringen oder wird das nicht funktionieren..?

Hat da jemand Erfahrung mit oder ein Tipp mir fehlt da grad so der Zusammenhang..?
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: betateilchen am 08 November 2015, 16:53:17
isday() ist eine Funktion aus 99_SUNRISE_EL die Du in Deiner Konfiguration verwenden kannst, sooft Du willst.
Und geografische Gegebenheiten werden dabei genauso berücksichtigt wie verschiedene Winkel - isday() folgt der gleichen Logik wie sunrise() und sunset(), das heißt, Du kannst auch isday('REAL') angeben oder isday(-6)

Mach Dir das Leben nicht unnötig schwer und glaube vor allen Dingen nicht jeden Quatsch, der im Wiki steht.
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: moonsorrox am 08 November 2015, 17:01:40
Also ich hatte ja schon die folgende Variante probiert aber ich habe das Gefühl das es nicht funktioniert, bisher hat er nicht ausgelöst...!

/fhem?cmd={+if+(!isday("CIVIL",0,"21:00","07:00"))+{fhem+"set+AussenLampe+on-for-timer+120"}}
Evtl. kann er dieses so nicht verarbeiten

Es soll eben diese Schaltung nur Abends/Nachts und nicht vor 21 Uhr und nur bis morgens 7 Uhr die Beleuchtung einschalten..!

Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: rudolfkoenig am 08 November 2015, 17:15:33
isday() ignoriert seconds, min und max.
Ich habe sie jetzt so modifiziert, dass min und max beachtet werden. seconds wird weiterhin ignoriert.
Btw. erst kommt min, dann max, d.h. ab sofort ist isday("CIVIL",0,"21:00","07:00") immer 0.
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: moonsorrox am 08 November 2015, 17:31:22
Zitat von: rudolfkoenig am 08 November 2015, 17:15:33
isday() ignoriert seconds, min und max.
Ich habe sie jetzt so modifiziert, dass min und max beachtet werden. seconds wird weiterhin ignoriert.
Btw. erst kommt min, dann max, d.h. ab sofort ist isday("CIVIL",0,"21:00","07:00") immer 0.
OK das wußte ich nicht das min und max ignoriert werden, denn wie ich schon oben schrieb, er schaltet trotzdem "Ein" egal was ich geschrieben hab. Ich habe gerade wieder einige Tests mit um die 17 Uhr drin gehabt, somit ist das auch klar.

Wie kann ich dann 21-7 Uhr verwenden, wenn das immer 0 ist..?
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: betateilchen am 08 November 2015, 17:32:58
Zitat von: rudolfkoenig am 08 November 2015, 17:15:33
ab sofort ist isday("CIVIL",0,"21:00","07:00") immer 0.

Warum ist das immer 0?
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: rudolfkoenig am 08 November 2015, 17:34:27
Weil es keine Uhrzeit gibt, fuer die gilt: 21 < Uhrzeit < 07
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: moonsorrox am 08 November 2015, 17:36:48
für mich ist das eben Abends oder Nachts, nicht vor 21 Uhr und nicht nach 7 Uhr einschalten...!
Das geht wohl wegen Mitternacht nicht..?
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: moonsorrox am 08 November 2015, 17:51:42
ich habe mir jetzt mal kurz ein paar Besipiele erstellt um zu sehen wo bin ich mit den Zeiten, wenn ich bei isday (CIVIL, REAL, HORIZON=-6, HORIZON=-12) eingebe.
Das sieht dann so aus

([{sunrise("CIVIL")}-{sunset("CIVIL")}|78]) (set du_Kameralicht hell) DOELSE (set du_Kameralicht Aufnahme)
09.11.2015 06:53:50|78
09.11.2015 17:16:16|78

([{sunrise("REAL")}-{sunset("REAL")}|78]) (set du_Kameralicht hell) DOELSE (set du_Kameralicht Aufnahme)
09.11.2015 07:37:01|78
09.11.2015 16:33:08|78

([{sunrise("HORIZON=-6")}-{sunset("HORIZON=-6")}|78]) (set du_Kameralicht hell) DOELSE (set du_Kameralicht Aufnahme)
09.11.2015 06:53:50|78
09.11.2015 17:16:16|78

([{sunrise("HORIZON=-12")}-{sunset("HORIZON=-12")}|78]) (set du_Kameralicht hell) DOELSE (set du_Kameralicht Aufnahme)
09.11.2015 06:12:48|78
08.11.2015 17:58:42|78


aber keine Zeit kommt eben an die 21 Uhr ran, ist ja auch klar. Aber wie kann ich das dann hinbekommen.?
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: rudolfkoenig am 08 November 2015, 17:53:08
Warum kannst du die beiden Uhrzeiten nicht umdrehen?
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: moonsorrox am 08 November 2015, 17:57:24
Zitat von: rudolfkoenig am 08 November 2015, 17:53:08
Warum kannst du die beiden Uhrzeiten nicht umdrehen?

in dem Befehl in der Kamera:
/fhem?cmd={+if+(!isday())+{fhem+"set+AussenLampe+on-for-timer+120"}}

kann ich doch dann nur !isday(Real) oder !isday(CIVIL) oder so eingeben

Oben waren nur eben mal die Beispiele, ja klar kann ich das umdrehen nützt mir aber in der Kamera nichts
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: betateilchen am 08 November 2015, 17:59:24
Zitat von: rudolfkoenig am 08 November 2015, 17:34:27
Weil es keine Uhrzeit gibt, fuer die gilt: 21 < Uhrzeit < 07

mathematisch nicht, nach gesundem Menschenverstand aber schon :)

Zitat von: rudolfkoenig am 08 November 2015, 17:15:33
Btw. erst kommt min, dann max, d.h. ab sofort ist isday("CIVIL",0,"21:00","07:00") immer 0.

na dann eben isday("CIVIL",0,"21:00","31:00"), sunrise liefert ja unter Umständen auch Uhrzeiten > 24:00 als Ergebnis...

*duck-und-weg*   8)
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: moonsorrox am 08 November 2015, 18:01:30
würde das funktionieren mit den 24 Std. dazu addieren, ich glaub eher nicht... weil er die 31 nicht als Uhrzeit kennt..!  :-\
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: rudolfkoenig am 08 November 2015, 20:13:25
Ich formuliere es mal nett: ihr seid bestimmt gerade von einem Party gekommen :)

isday(0, "07:00", "21:00") besagt, dass der Tag fruehestens um 7 anfaengt, und spaetestens um 21 aufhoert.

Ich habe gerade isday erweitert:
isday(0, "21:00", "07:00") besagt, dass der Tag fruehestens um 21 aufhoert, und spaetestens um 7 anfaengt.
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: franky08 am 08 November 2015, 20:20:03
Warum machst du nicht:
{ if(!isday() && $hour ~~ [21..24]) { fhem "set ..." } }
und
{ if(!isday() && $hour ~~ [00..06]) { fhem "set ..." } }

VG
Frank
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: moonsorrox am 08 November 2015, 21:13:11
Zitat von: franky08 am 08 November 2015, 20:20:03
Warum machst du nicht:
{ if(!isday() && $hour ~~ [21..24]) { fhem "set ..." } }
und
{ if(!isday() && $hour ~~ [00..06]) { fhem "set ..." } }

VG
Frank
Ich kann nicht beide Befehle eingeben, das geht nicht...!
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: franky08 am 08 November 2015, 21:47:05
Dann so:
{ if(!isday() && ($hour ~~ [21..24] || $hour ~~ [00..06]) { fhem "set ..." } }

ob das aber richtig ist, ich hab´s nicht getestet!

VG
Frank
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: betateilchen am 08 November 2015, 21:58:17
spontan würde ich sagen, da fehlt eine schließende runde Klammer.
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: franky08 am 08 November 2015, 22:10:45
Richtig  ;)
{ if(!isday() && ($hour ~~ [21..24] || $hour ~~ [00..06])) { fhem "set ..." } }
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: moonsorrox am 09 November 2015, 01:11:11
OK, dass könnte ich mal probieren..! ich weiß nicht ob meine Kamera das so an der Fhem Server übermitteln kann...!
Die Kamera selbst ändert ja diese Codeschnipsel und packt diese (+) Zeichen dazwischen und der Fhem Server kann mit diesen dann hoffentlich umgehen, aber ich glaube das könnte man ja über die Eingabezeile testen.
Wenn Rudolf das Modul erweitert hat warte ich erst einmal bis das per Update kommt und teste es damit...
Titel: Antw:Frage zu "!isday" und deren Nutzung mit einer IP Kamera
Beitrag von: moonsorrox am 09 November 2015, 17:47:13
Zitat von: rudolfkoenig am 08 November 2015, 20:13:25
Ich habe gerade isday erweitert:
isday(0, "21:00", "07:00") besagt, dass der Tag fruehestens um 21 aufhoert, und spaetestens um 7 anfaengt.

heute nach dem Update nochmal eine Frage, ich habe das ja so drin:
/fhem?cmd={+if+(!isday("CIVIL"))+{fhem+"set+AussenLampe+on-for-timer+120"}}

"CIVIL" kann ich jetzt weglassen und nur eintragen:
!isday(0,"21:00","07:00")

oder kann das noch genutzt werden..? in der commandref ist dazu kein Beispiel.