WeekdayTimer mit Twilight kombinieren

Begonnen von Otto, 27 Februar 2014, 14:36:05

Vorheriges Thema - Nächstes Thema

Otto

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
Gruss Otto

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

docker - homematic

Dietmar63

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
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Otto

#2
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
Gruss Otto

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

docker - homematic

Dietmar63

leseTwilightWithMinMax("myTwilight","sr_weather","08:00","09:00")}
Diese Funktion gibt es nicht. Die müßte in Perl erstellt werden.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Otto

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
Gruss Otto

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

docker - homematic

Dietmar63

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?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Otto

Hallo,

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

Gruß Otto
Gruss Otto

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

docker - homematic

Dietmar63

1234567| wird warum auch immer als Zeitangabe interpretiert. Lass diese Angabe mal weg, und prüfe was Dann passiert.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Otto

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
Gruss Otto

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

docker - homematic

Dietmar63

Ich habe heute keinen Zugriff auf fhem. Werde morgen Abend prüfen was genau passiert.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Ich habe heute keinen Zugriff auf fhem. Werde morgen Abend prüfen was genau passiert.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

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.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Otto

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
Gruss Otto

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

docker - homematic

Dietmar63

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).
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Otto

Aber die MinMax Funktion liefert doch den richtigen Wert von 06:32:31

Liegt es wirklich an der Funktion?
Gruss Otto

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

docker - homematic