FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: Otto am 27 Februar 2014, 14:36:05

Titel: WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 27 Februar 2014, 14:36:05
Hallo,

ich möchte gerne Twilight in einen WeekdayTimer einbauen.

Meine Rollosteuerung sieht zur Zeit so aus:
define Rollladen_AZ_down WeekdayTimer Rollo_AZ 1234567|{sunset_abs(-600,"16:00","22:00")}|down (ReadingsVal("RolloAutomatik", "state", "Aus") eq "An")
define Rollladen_AZ_up WeekdayTimer Rollo_AZ 1234567|{sunrise_abs(1200,"08:00","09:00")}|up (ReadingsVal("Verreist", "state", "Ja") eq "Nein")

Jetzt will ich aber sunset durch Twilight ersetzen, dazu habe ich als Versuch
define TwilightMessage1 notify myTwilight.*:aktEvent:.*ss_indoor.*      set Dunkel on
define TwilightMessage2 notify myTwilight.*:aktEvent:.*sr_weather.*      set Dunkel off
define Rollladen_AZ_up WeekdayTimer Rollo_AZ 1234567|08:00|up (Dunkel == off && ReadingsVal("Verreist", "state", "Ja") eq "Nein")


Nur wie bekomme ich eine Zeit von 8:00 bis 09:00 eingebaut, sprich ein up frühstens 8:00 aber spätestens 09:00

Hat einer eine Idee?

Gruß Otto
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 27 Februar 2014, 19:54:06
da müßtet du dir selbst eine kleine Funktion schreiben, die etwa so aussehen könnte:
define Rollladen_AZ_up WeekdayTimer Rollo_AZ 1234567|{leseTwilightWithMinMax("myTwilight","sr_weather","08:00","09:00")}|up
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 28 Februar 2014, 09:22:16
Hallo Dietmar,

wenn ich das 1:1 übernehme kommt
2014.02.28 08:57:18 1: [Rollladen_AZ_up] invalid time in Rollladen_AZ_up <> HH:MM[:SS]

myTwilight sollte richtig eingerichtet sein, der log geht mit.
define TwilightMessage0 notify myTwilight.*:aktEvent:.*                  {Log 3, "Nachricht von @: %";;}

Würdest du so nett sein und mir auf die Sprünge helfen?
Die Funktion {leseTwilightWithMinMax("myTwilight","sr_weather","08:00","09:00")} habe ich noch nicht verstanden bzw. weiss nicht wie ich es prüfen kann.

Gruß Otto
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 28 Februar 2014, 14:22:08
leseTwilightWithMinMax("myTwilight","sr_weather","08:00","09:00")}
Diese Funktion gibt es nicht. Die müßte in Perl erstellt werden.
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 01 März 2014, 12:32:15
Hallo,

ich habe mich mal versucht mit einer Funktion, läuft aber nicht:

[Rollladen_AZ_down] invalid time in Rollladen_AZ_down <1234567> HH:MM[:SS]


define Rollladen_AZ_down WeekdayTimer Rollo_AZ 1234567|{ZeitMinMax(ReadingsVal("myTwilight", "sr_civil", '0'), "08:00", "09:00")}|down (ReadingsVal("RolloAutomatik", "state", "Aus") eq "An")
attr Rollladen_AZ_down verbose 5


in 99_myUtils.pm
sub ZeitMinMax ($$$) {
my ($leseTwiligt, $MinZeit, $MaxZeit) = @_;
#Log 1, "Zeiten: $leseTwiligt, $Min, $Max";

if ( $leseTwiligt ge $MaxZeit ) # größer oder gleich
{ return $MaxZeit;}
#{Log 1, "Zeiten: $MaxZeit";}
if ( $leseTwiligt le $MinZeit ) # kleiner oder gleich
{ return $MinZeit;}
#{Log 1, "Zeiten: $MinZeit";}
if ( $leseTwiligt ge $MinZeit && $leseTwiligt le $MaxZeit ) # dazwischen
{ return $leseTwiligt;}
#{Log 1, "Zeiten: $leseTwiligt";}

}


Was ist falsch?

Gruß Otto
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 01 März 2014, 12:45:31
Du bist aber sehr nah an einer funktionierenden Lösung. Wenn du die ## vor den Logs entfernst, welchen output bekommst du ins log geschrieben, wenn du die Funktion aufrufst?

Welches Ergebnis liefert ZeiMinMax?
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 01 März 2014, 13:31:20
Hallo,

ich bekomme 08:00 zurück.
Da kann ja nur das Format nicht stimmen??

Gruß Otto
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 01 März 2014, 14:40:26
1234567| wird warum auch immer als Zeitangabe interpretiert. Lass diese Angabe mal weg, und prüfe was Dann passiert.
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 01 März 2014, 14:51:52
das Log sagt
2014.03.01 14:49:30 3: no Switchingtime found in <{ZeitMinMax(ReadingsVal("myTwilight", "sr_civil", '0'), "08:00", "09:00")}|down (ReadingsVal("RolloAutomatik", "state", "Aus") eq "An")>, check first parameter
2014.03.01 14:49:32 5: [Rollladen_AZ_down] list of windowsenors found: ''
2014.03.01 14:49:32 4: [Rollladen_AZ_down] 01.01.1970 01:00:00 ; aktParam: 0.0 ; newParam: 0
2014.03.01 14:49:32 4: [Rollladen_AZ_down] is not disabled
2014.03.01 14:49:32 5: [Rollladen_AZ_down] no switch in the yesterdays because of the devices type.
2014.03.01 14:49:32 4: [Rollladen_AZ_down] Next switch 01.01.1970 01:00:00
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 01 März 2014, 16:52:39
Ich habe heute keinen Zugriff auf fhem. Werde morgen Abend prüfen was genau passiert.
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 01 März 2014, 17:05:24
Ich habe heute keinen Zugriff auf fhem. Werde morgen Abend prüfen was genau passiert.
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 02 März 2014, 18:35:40
define Rollladen_AZ_down WeekdayTimer Rollo_AZ 1234567|{ZeitMinMax(ReadingsVal("myTwilight", "sr_civil", '0'), "08:00", "09:00")}|down  ...
Ich glaube die Leerzeichen sind schuld:   
123|18:00|an 123|18:00|an 123|18:00|an 123|18:00|an 123|18:00|an
Sie trennen die einzelnen  Zeitparameter, wenn du mehrere angeben willst.
Probier es mal so:
define Rollladen_AZ_down WeekdayTimer Rollo_AZ 1234567|{ZeitMinMax(ReadingsVal("myTwilight","sr_civil",'0'),"08:00","09:00")}|down ...

zwischen 123...|down darf kein Leerzeichen sein.
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 03 März 2014, 09:58:02
Hallo Dietmar,

leider geht es noch nicht, ist aber ein anderer Fehler

ich habe die Leerzeichen entfernt
define Rollladen_AZ_down WeekdayTimer Rollo_AZ 1234567|{ZeitMinMax(ReadingsVal("myTwilight","sr_civil",'0'),"06:00","09:00")}|down (ReadingsVal("RolloAutomatik", "state", "Aus") eq "An")

{ZeitMinMax(ReadingsVal("myTwilight","sr_civil",'0'),"06:00","09:00")}
ergibt 06:32:31

aber das Log sagt mir 6:00
[Rollladen_AZ_down] list of windowsenors found: ''
[Rollladen_AZ_down] 03.03.2014 06:00:00 ; aktParam: 0.0 ; newParam: down
[Rollladen_AZ_down] is not disabled
[Rollladen_AZ_down] no switch in the yesterdays because of the devices type.
[Rollladen_AZ_down] Next switch 04.03.2014 06:00:00



Gruß Otto
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 03 März 2014, 10:08:39
Dann stimmt deine MinMax Funktion noch nicht richtig.
Entferne die ## vor den Log-Ausgaben, dann erkennst du wo die Abfrage nicht richtig funktioniert.

Bedenke, dass die Zeit, die von TW zurückkommt das Format HH:MM:SS hat, die min, max-Werte HH:MM haben, und dass du Stringvergleiche durchführst  (eq, gt, lt).
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 03 März 2014, 10:13:20
Aber die MinMax Funktion liefert doch den richtigen Wert von 06:32:31

Liegt es wirklich an der Funktion?
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 03 März 2014, 11:23:09
Ok,

Das Modul WD funtioniert so, dass immer so gegen Mitternacht alle Zeiten, die über Perl ({...}) ermittelt werden müssen, neu berechnet werden.
Dann sollte auch in deinem Fall die richtige Zeit ermittelt werden.

Die "06:00" kommt vielleicht deshalb, weil beim Start deines fhems das Gerät myTwilight noch nicht exisiert - ein Reihenfolgenproblem bei den Definitionen.
Während der Ausdruck {ZeitMinMax(ReadingsVal("myTwilight","sr_civil",'0'),"06:00","09:00")} das richtige Ergebnis liefert, weil fhem komplett hochgefahren ist.

Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 04 März 2014, 08:41:08
Hallo,
ZitatDas Modul WD funtioniert so, dass immer so gegen Mitternacht alle Zeiten, die über Perl ({...}) ermittelt werden müssen, neu berechnet werden.
Dann sollte auch in deinem Fall die richtige Zeit ermittelt werden.
Eine Neuberechnung erfolgt nicht, im Log kann ich auch keine Aktivität sehen

Habe
attr global verbose 3
attr Rollladen_AZ_down verbose 5
oder reicht das nicht aus um im Log was zu sehen.

wie prüfe ich die Neuberechnung gegen Mitternacht?

Bei einem Restart von FHEM tut sich auch nix.


Was mir noch auffält:
define Rollladen_AZ_down WeekdayTimer Rollo_AZ 1234567|{sunset_abs(-600,"16:00","22:00")}|down (ReadingsVal("RolloAutomatik", "state", "Aus") eq "An")
Hier wird die Zeit von sunset_abs auch nur per Restart geändert und nicht um Mitternacht....


Gruß Otto
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 04 März 2014, 18:11:13
mit verbose 5 müßtest du im Log um 00:10 etwas finden.
define Rollladen_AZ_down WeekdayTimer Rollo_AZ 1234567|{sunset_abs(-6 ...
sollte hier auch passieren, weil WD diese Aufgabe übernimmt.

Ich prüfe die Funktion noch einmal und melde mich.
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 04 März 2014, 19:23:24
scheint leider nicht so zu funktionieren, wie ich es gedacht hatte.
Es wird allerdings ein wenig dauern, bis ich es repariet habe, weil es nicht ganz so einfach werden wird.
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 24 April 2014, 19:32:30
Hallo Dietmar,
hast du schon was Neues zu diesem Thema?

Gruß Otto
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 16 Juni 2014, 10:13:17
Hallo Dietmar,
hattest du schon Gelegenheit dich mit dem Thema zubeschäftigen?

Gruß Otto
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 16 Juni 2014, 12:13:14
ist schon repariert und eingecheckt.
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 17 Juni 2014, 07:46:05
Hallo Dietmar,

danke, sieht gut aus.

Eine Verständnisfrage habe ich noch:
define Rollladen_AZ_down WeekdayTimer Rollo_AZ 1234567|{sunset_abs(-600,"16:00","22:00")}|off liefert nach einem restart sofort die richtige Zeit.
define Rollladen_AZ_down WeekdayTimer Rollo_AZ 1234567|{ZeitMinMax(ReadingsVal("myTwilight","ss_civil",'0'),"16:00","22:00")}|off liefert erst um 0:10 die richtige Zeit, beim restart gibt WD mir erst 16:00 h

Kann man das noch irgendwie ändern?

Gruß Otto
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 17 Juni 2014, 11:24:16
ich sehe mir den Fall heute mal an.
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 18 Juni 2014, 21:11:05
ich habe eine verbesserte Version von Twilight eingecheckt.
Pobier' mal, ob sie eine Verbesserung für dich darstellt.   
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 21 Juni 2014, 08:40:11
Hallo Dietmar,

leider kann ich keine Änderung feststellen, gleiches Verhalten.

Gruß Otto
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Dietmar63 am 21 Juni 2014, 11:15:25
In welcher Reihenfolge werden die Geräte beim restart bei dir definiert?
Gib mal bei beiden verbose 5 an.

Wenn der TW noch nicht definiert ist, kannst du auf die Werte nirgends sonst zugreifen, bzw. fhem greift ins Leere.

Vielleicht liegt es daran.
Titel: Antw:WeekdayTimer mit Twilight kombinieren
Beitrag von: Otto am 22 Juni 2014, 19:11:42
Hallo,
ZitatWenn der TW noch nicht definiert ist, kannst du auf die Werte nirgends sonst zugreifen, bzw. fhem greift ins Leere.
Genau das war es, danke für die gute Arbeit.

Gruß Otto