sunset in Abhängigkeit von weiteren Bedingungen einschränken

Begonnen von Spartacus, 29 September 2014, 14:50:29

Vorheriges Thema - Nächstes Thema

Spartacus

Hallo zusammen,
ihr habt recht! ich habe es ausprobiert. Mit diesem Code:
define GartenLicht at *{sunset(0,"18:00","20:30")} { fhem("set lamp on-till 21:00")}
wird das Device so geschaltet:
SU      MIN     MAX   FixAus
16:39  18:00  20:30   21:00 ---> 18:00 ein, 21:00 aus
18:40  18:00  20:30   21:00 ---> 18:40 ein, 21:00 aus
20:29  18:00  20:30   21:00 ---> 20:29 ein, 21:00 aus
20:59  18:00  20:30   21:00 ---> 20:30 ein, 21:00 aus
21:39  21:00  20:30   21:00 ---> 20:30 ein, 21:00 aus

Das macht aber für mich keinen Sinn, wenn es draußen noch "hell" ist, brauche ich keine Gartenbeleuchtung.

Aber wie kriege ich das jetzt hin?
SU      MIN     MAX   FixAus
16:39  18:00  20:30   21:00 ---> 18:00 ein, 21:00 aus
18:40  18:00  20:30   21:00 ---> 18:40 ein, 21:00 aus
20:29  18:00  20:30   21:00 ---> 20:29 ein, 21:00 aus
20:59  18:00  20:30   21:00 ---> bleibt aus
21:39  21:00  20:30   21:00 ---> bleibt aus


Spartacus
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Paul

Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Spartacus

...an das "disable" habe ich auch schon gedacht, aber so einfach ist es nicht, da ich ja noch unterschiedliche Fälle betrachten muss (werktags, vor Feiertagen, Neujahr).

Bsp:
SU um 20:28, Lampe schaltet ein
Und wenn ich nun , wie im Bsp. den at um 20:29 auf "disable" setze, dann schaltet die Funzel um 21:00 auch nicht mehr aus, da der Befehl m.E. auch auf "disabled" gesetzt wird.
Auf die Schnelle fällt mir dazu nichts ein...muss noch mal in Ruhe darüber nachdenken....

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Paul

??? Um 20:29 hat die Lampe doch bereits den Befehl bekommen um 21:00 Uhr aus zuschalten
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Spartacus

ok!
Das heisst, fhem merkt sich das!
das ist natürlich wieder gut!
Ich probiere es einfach mal aus und melde mich mit dem Ergebnis.

Besten Dank,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Puschel74

Hallo,

wenn es dir draussen noch zu hell ist für die Beleuchtung ...
Dann setz doch die früheste Einschaltzeit einfach später  ???

Also anstelle von 18:00 einfach 19:30 dann wird auch nicht vor 19:30 eingeschalten.

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.

Damian

Was hältst du von:

define di_garten DOIF ([{sunset(0,"18:00","20:30")}-21:00] and [twilight:twilight_weather] <30)(set lamp on) DOELSE (set lamp off)

Hier geht die Lampe nur zwischen 18:00 und 20:30 an, wenn es dunkel genug ist. Wenn du keine eigene Helligkeitsmessung vornehmen kannst, dann kannst du dir mit dem twilight-Modul behelfen, siehe Beispiel. Und "set lamp off " wird natürlich um 21:00 Uhr nur dann gesendet, wenn vorher die Lampe auch eingeschaltet wurde.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Spartacus

Hallo zusammen,
vielen Dank für die vielen Tipps. Ich werde das alles mal ausprobieren!

@ Damian:
Das muss ich mir mal in Ruhe ansehen. So auf Anhieb kann ich noch nicht nachvollziehen, was da gerade passiert...

Vielen Dank und Gruß,
Spartacus
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Spartacus

Hallo,
das DOIF Modul ist sehr mächtig! Ich habe zwar noch nicht alles verstanden, aber ich konnte zumindest die Zeile von Damian so halbwegs nachvollziehen.
Bin erst über das "-21:00" gestolpert, aber es ist als Zeitinterval zwischen sunset und 21:00 zu sehen...

Allerdings habe ich ein Problem mit dem twilight. Da komme ich nicht mit klar! welche Bedeutung hat das reading "twilight_weather" und der wert 30? In meiner "myTwilight"-Definition, ist das Reading immer "0". Was besagt dieser Wert im Zusammenhang mit der Dunkelheit und wie muss ich den wert manipulieren um hier die richtige "Dunkelheit" auszuwählen? Konnte das mit Hilfe der Commandref nicht klären, bzw. habe ich es nicht verstanden.

Spartacus
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Steffen

Hallo!

Warum geht mit diesem Code auch gerde ebend das "AbendLicht" an??
([{sunset(0,"18:30","20:30")}-21:00] and [myTwilight:twilight_weather] <40 and [AbendLicht] eq "off" and [Doreen] eq "Anwesend" or [Steffen] eq "Anwesend") (set AbendLicht on)

Puschel74

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.

Steffen

Zitat von: Puschel74 am 02 Oktober 2014, 07:10:41
Hallo,

was steht im Logfile?

Grüße

Das hat was mit dem "or" im Code zu tun, wenn ich ihn mit "and" ersetzte dann geht AbendLicht nicht auf on.
Aber ich dachte es müsste alle bedingungen erfüllt sein, das ist ja bei twilight und zeit nicht der Fall oder habe ich das Flasch verstanden?

Mfg Steffen

Puschel74

#27
Hallo,

wie hier zu sehen
define di_light DOIF ([08:00] or [10:00] or [20:00]) (set switch on) DOELSEIF ([09:00] or [11:00] or [00:00]) (set switch off)
trägt or dazu bei das verschiedene Zustände zur Auslösung führen können - eben ODER-Verknüpft.

Nach meinem Verständnis wird hier
([{sunset(0,"18:30","20:30")}-21:00] and [myTwilight:twilight_weather] <40 and [AbendLicht] eq "off" and [Doreen] eq "Anwesend" or [Steffen] eq "Anwesend")
geprüft ob
(Uhrzeit UND myTwilight UND Abendlicht UND Doreen erfüllt ist) ODER Steffen Anwesend ist.
Ich hab mal Klammern gesetzt damit mein Gedankgang ersichtlich wird.

Ich gehe mal davon aus das Steffen heute morgen abwesend war und daher das Licht geschaltet hat.

Ist aber nur eine Vermutung.

Zitat von: Puschel74 am 02 Oktober 2014, 07:10:41
Hallo,
was steht im Logfile?
Grüße
Ich vermute mal im Logfile steht nichts aufschlussreiches drinnen sonst hättest du es ja gepostet.

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.

Damian

Nicht-Programmierer sollten sich, wenn sie komplexere Abfragen vornehmen wollen, mit der Rangfolge der Bedingungen vertraut machen. Siehe auch http://fhem.de/commandref_DE.html#IF. "and" bindet z. B. stärker als "or". Wenn du eine andere Priorität haben willst, dann musst du entsprechend klammern. Bei dir wird die Lampe auf on geschaltet wenn alle and Verknüpfungen wahr sind ODER Steffen "anwesend".

Dann solltest du nicht, das was du schalten willst (hier Abendlicht) in die Bedingung setzen. Denn durch das Schalten der Lampe triggert sich das Modul selbst - du erzeugst eine Rekursion (Endlosschleife). Das Modul verwaltet die Zustände selbst und weiß ob die Lampe an ist oder nicht, dazu sollte auch das Ausschalten der Lampe ins Modul.

Ich weiß nicht genau, was du vor hattest, aber so:

([{sunset(0,"18:30","20:30")}-21:00] and [myTwilight:twilight_weather] <40 and ([Doreen] eq "Anwesend" or [Steffen] eq "Anwesend")) (set AbendLicht on) DOLESE (set AbendLicht off)

könnte es besser funktionieren.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Spartacus

Hi,
Kann jemand sagen, was dieses reading twilight_weather <40 bedeutet? Verstehe die Abhängigkeit  hier nicht. Was wird bei diesem Reading mit 40 verglichen? Bzw. Was sagt dieser Wert aus?

Danke,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R