Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker

Begonnen von sTaN, 13 Februar 2021, 17:11:26

Vorheriges Thema - Nächstes Thema

sTaN

Zitat von: Otto123 am 13 Februar 2021, 18:59:12
übersichtlicher wird es wenn Du einfach ein userReadings in deinem Dummy machst, der mit diesem perlCode von der Zeit die 15 min abzieht?. Dann machst das notify mit diesem userReadings?

Danke Otto, daran werde ich mich mal versuchen. Thema userReadings ist ebenfalls Neuland für mich! Aber ich gebe dir Recht, schöner wird es damit werden. Zumal ich plane für meine Frau auch noch einen Dummy zu erstellen.

Gruß
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

Otto123

Zitat von: sTaN am 13 Februar 2021, 20:14:47
Zumal ich plane für meine Frau auch noch einen Dummy zu erstellen.
Den setzt Du auf die Couch wenn Du keine Lust zum reden hast  ;D ;D ;D Sorry  ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

sTaN

Zitat von: Otto123 am 13 Februar 2021, 20:20:21
Den setzt Du auf die Couch wenn Du keine Lust zum reden hast  ;D ;D ;D Sorry  ;)

;D ;D ;D Chapeau! Natürlich meinte ich einen timeWecker dummy für meine Frau  :P
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

sTaN

Hallo Otto,

irgendwie lässt mir dein Ansatz, die umgerechnete Uhrzeit in ein userReading zu schreiben keine Ruhe, aber nach knapp 2h muss ich doch noch mal fragen...

Ich hatte im Dummy timeWeckersTaN (welcher die Uhrzeit im Format 07:15:00) bekommt, das userReading ZeitBadHeizung verpasst:

ZeitBadHeizung {my $val=Value("state");;my $sec=(split(":",$val))[0]*3600+(split(":",$val))[1]*60+(split(":",$val))[2]-15*60;;my $result=POSIX::strftime("%H:%M:%S",gmtime($sec))}

Nachdem die Zeit des Dummys auf 07:15:00 gesetzt wurde, erscheint auch das Reading ZeitBadHeizung, aber mir der Uhrzeit 23:45:00. Egal welche Zeit der Dummy annimmt, bliebt es bei 23:45:00.

Gruß und sorry für die erneute Fragerei!
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

Otto123

weil Du hier 0 liest -> Value("state")  - es gibt doch kein Gerät mit Name state
Das muss in dem Fall ja Value($name) heißen, oder viel besser ReadingsVal($name,'state','')

Achtung
ReadingsVal($name,'state','') liest state
Value($name)                       liest STATE
Beim Stino Dummy ist STATE gleich state. Aber das muss nicht immer so sein.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

sTaN

 ::) Natürlich logisch!
Mit deiner Anpassungsempfehlung klappt es auf anhieb:

ZeitBadHeizung {my $val=ReadingsVal($name,'state','');;my $sec=(split(":",$val))[0]*3600+(split(":",$val))[1]*60+(split(":",$val))[2]-15*60;;my $result=POSIX::strftime("%H:%M:%S",gmtime($sec))}

Wirklich toll, dein rascher Support!!! Vielen herzlichen Dank!

Gruß
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

sTaN

Zitat von: Otto123 am 13 Februar 2021, 18:01:14
Dann nicht defmod sondern modify verwenden. Du willst doch ein existierendes at ändern oder ein neues anlegen?

Hallo Otto,

wegen einer Sache muss ich mich doch noch mal melden. Du hattest ja geschrieben, ich soll lieber modify statt defmod, in meinem Notify verwenden. Daraufhin meinte ich, dass sich dann aber die Zeit für BA_Heizung_AutoOn nicht verändert.

Da ich nun bemerkt habe, dass mit defmod natürlich auch die Attribute meines devices BA_Heizung_AutoOn verschwinden, wollte ich nun doch auf modify umsteigen, mit dem folgenden Problem:

Sobald ich das DEF im Notify Notify_BA_Heizung_AutoOn mit modify statt defmod verwende, scheint er nicht mehr den berechneten Wert aus dem Dummy (timeWeckersTaN) und dem enthaltenen userReading ZeitBadHeizung mit dem berechneten Offset von 15 Minuten zu nehmen, sondern den zuletzt bekannten Wert:

DEF Notify_BA_Heizung_AutoOn
statusWeckersTaN:.* {if (Value("statusWeckersTaN") eq "on") {my $time = ReadingsVal("timeWeckersTaN","ZeitBadHeizung","");;fhem"modify BA_Heizung_AutoOn at $time set WT_Bad desiredTemperature auto comfort ; set WT_Bad desiredTemperature auto"}}

Beispiel:
iPhone Wecker hat die Zeit 07:30 Uhr und somit der Dummy timeWeckersTaN den Wert 07:30:00. Das userReading ZeitBadHeizung berechnet es auf 07:15:00. Mit defmod wird die Zeit für BA_Heizung_AutoOn auf 07:15:00 korrekt gesetzt und bei Änderung auch aktualisiert. Also bei Wecker Zeit 08:00 auf z.B.: 07:45:00.

Sobald ich aber nun modify verwende, bleibt BA_Heizung_AutoOn immer auf 07:15:00, egal ob sich die Zeit im Dummy timeWeckersTaN verändert.

Für mich scheint es so, als ob die Berechnung nicht schnell genug erfolgt oder warum klappt es mit defmod und nicht mit modify? Kann dies ein Bug sein?

Gruß und danke
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

Otto123

Hallo,

Du hast mich und die Doku falsch verstanden https://fhem.de/commandref_DE.html#modify

statusWeckersTaN:.* {if (Value("statusWeckersTaN") eq "on") {my $time = ReadingsVal("timeWeckersTaN","ZeitBadHeizung","");;fhem("modify BA_Heizung_AutoOn $time")}}
Ich schreibe bei fhem("") immer die Klammern mit (weil es in der Doku so steht und ich schon manchmal den Effekt hatte das es ohne nicht geht)
Bei modify kannst Du den TYPE der Def nicht ändern deshalb ist der TYPE nicht Bestandteil des Befehls. Wenn Du den Ausführungsteil nicht ändern willst brauchst Du den auch nicht angeben. ;)

Du kannst es noch kürzer machen, durch Stringverkettung:
statusWeckersTaN:.* {if (Value("statusWeckersTaN") eq "on") {fhem("modify BA_Heizung_AutoOn ".ReadingsVal("timeWeckersTaN","ZeitBadHeizung",""))}}

Ist der eigentliche Trigger für das notify der set statusWeckersTaN on Befehl? Dann ginge es noch kürzer:
statusWeckersTaN:on {fhem("modify BA_Heizung_AutoOn ".ReadingsVal("timeWeckersTaN","ZeitBadHeizung",""))}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

sTaN

Meine Herren, du solltest einen Orden für Geschwindigkeit und SuperSupporter bekommen!
Die Syntax mit Perl in FHEM und ich werden einfach keine Freunde.  :-\

Ich versuche durch solche Sachen die Syntax immer zu verstehen, aber irgendwie bringt es das bisherige Wissen immer wieder durcheinander und ich stehe gefühlt wieder bei Null...

So klappt es jetzt, danke!
Du hast zwar meine else Bedingung, wenn statusWeckersTaN = off set WT_Bad desiredTemperature auto" weggelassen, aber mir stellt sich gerade eh die Frage, ob ich das überhaupt benötige! Da ich im AT BA_Heizung_AutoOn eh mit auto im set Befehl arbeite set WT_Bad desiredTemperature auto comfort dürfte das wahrscheinlich überflüssig sein und mit der Automation die Heizung im Bad jetzt eh immer aus ist und nie automatisch startet.

Auch wenn es vielleicht eher daran liegt, dass ich es aufgrund meiner Syntaxverständnisprobleme einfach nicht wieder rein bekomme!   ;D ;D ;D
Aber so ist das jetzt schön schlank!

Danke Otto! Wie immer grandiose Hilfe!
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

Otto123

ich habe da oben kein else gesehen?
ZitatSyntaxverständnisprobleme
Deswegen versuche ich es immer einigermaßen zu erklären. Kann aber auch mal sein ich setze falsch an...

Schönen Tag
Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz