FHEM Forum

FHEM => Automatisierung => Thema gestartet von: sTaN am 13 Februar 2021, 17:11:26

Titel: Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 17:11:26
Hallo liebe Community,

ich bin auf der Suche nach einer einfachen Möglichkeit an eine Uhrzeit Variable noch einen Offset -15 Minuten anzuhängen bzw. zu berechnen. Ich hatte es mir einfacher vorgestellt, als es scheinbar ist. Durch die Funktion sunset(-3600) etc. dachte ich, gibt es hierfür etwas ähnliches für ein AT.

Hintergrund:
Über einen NFC Tag am Bett starte ich einen Siri Kurzbefehl, der mir den iPhone Wecker öffnet, ich die Uhrzeit einstelle, diese Uhrzeit dann in eine Variable $timeWeckersTaN schreibe und an Fhem für ein AT übergeben wird. Das AT soll dann die Heizung am nächsten Tag im Bad starten, aber eben 15 Minuten vor der Wecker Uhrzeit.

Ich habe dazu diesen veralteten Thread (https://forum.fhem.de/index.php?topic=9710.0) gefunden, aber scheinbar gibt es die Perl Funktion TimeOffset("",5) nicht mehr?

Habt hier eine Idee, wie ich meine Funktion mit einem Offset von X Minuten gestalten kann?
Hier das aktuelle define meines Notify Notify_BA_Heizung_AutoOn:

statusWeckersTaN:.* {if (Value("statusWeckersTaN") eq "on") {my $timeWeckersTaN = Value("timeWeckersTaN");;fhem"define BA_Heizung_AutoOn at $timeWeckersTaN set WT_Bad desiredTemperature auto comfort ; set WT_Bad desiredTemperature auto"}}

Ich dachte an so etwas in der Art, wie in dem Thread beschrieben, aber das scheint nicht zu funktionieren:

define BA_Heizung_AutoOn at {TimeOffset($timeWeckersTaN,-15)} set WT_Bad desiredTemperature auto comfort

Der verlinkte Wiki Eintrag existiert leider auch nicht mehr.
Über eine simple Idee würde ich mich sehr freuen!

Gruß
sTaN
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: Otto123 am 13 Februar 2021, 17:15:11
Hi,

Du bist hier im falschen Board, kannst Du bitte verschieben?

*** Keine Fragethemen starten! Board ist nur für funktionsfähigen Code! ***

https://forum.fhem.de/index.php/topic,47490.0.html

Ein möglicher Ansatz wäre deine Zeit Value("timeWeckersTaN") in Sekunden umzuwandeln timelocal() dann 15*60 davon abzuziehen und zurückwandeln in eine Zeitangabe. Ähnlich wie "Subtraktion vom aktuellen Zeitpunkt" in diesem Wiki https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit

Gruß Otto
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 17:19:13
Mist, danke für die Info. Leider finde ich keine Möglichkeit den Beitrag zu verschieben.
Könnte dies bitte jemand oder ein Moderator in den Forumbereich Automatisierung verschieben?

Danke!
sTaN
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: Otto123 am 13 Februar 2021, 17:22:50
ZitatMist, danke für die Info. Leider finde ich keine Möglichkeit den Beitrag zu verschieben.
erster Beitrag unten links
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 17:27:31
Ich sehe leider keine Möglichkeit (siehe Screenshots). Löschen kann ich ihn auch nicht, sonst hätte ich ihn fix neu erstellt und den hier gelöscht.
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: Otto123 am 13 Februar 2021, 17:32:00
https://forum.fhem.de/index.php?topic=68904.0
Da ist wohl was mit dem Forum passiert :) geht bei mir auch nicht Stimmt nicht man darf den Beitrag nicht editieren sondern muss ganz nach unten scrollen!
Hast Du mein Edit in #1 gelesen?
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: betateilchen am 13 Februar 2021, 17:39:29
Zitat von: sTaN am 13 Februar 2021, 17:27:31
Ich sehe leider keine Möglichkeit (siehe Screenshots).

Der Verschieben Button ist viel weiter unten, siehe Screenshot.

Zitat von: sTaN am 13 Februar 2021, 17:27:31
Löschen kann ich ihn auch nicht, sonst hätte ich ihn fix neu erstellt und den hier gelöscht.

Löschen von Threads geht hier im Forum für User generell nicht.
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 17:50:03
Zitat von: Otto123 am 13 Februar 2021, 17:32:00
https://forum.fhem.de/index.php?topic=68904.0
Da ist wohl was mit dem Forum passiert :) geht bei mir auch nicht Stimmt nicht man darf den Beitrag nicht editieren sondern muss ganz nach unten scrollen!

Ahhh. Ich habe scheinbar einen anderen Forum Skin. Über das + ganz unten links versteckt sich "Thread verschieben". Danke!

Aber endlich Back to Topic  :)

Zitat von: Otto123 am 13 Februar 2021, 17:32:00
Hast Du mein Edit in #1 gelesen?

Danke, der war mir bei dem Durcheinander leider entgangen. Ja den Wiki Beitrag hatte ich auch schon gefunden. Ich habe gehofft, ich könnte das direkt in meinem define des Notifys unterbringen, aber scheitere vermutlich immer an der Syntax, weshalb ich gehofft habe, es gibt eine einfachere Möglichkeit a la TimeOffset() oder wie bei sunset()...

EDIT:

Mein Versuch damit sah wie folgt aus:

statusWeckersTaN:.* {if (Value("statusWeckersTaN") eq "on") {my $timeWeckersTaN = Value("timeWeckersTaN");;fhem"defmod BA_Heizung_AutoOn at {POSIX::strftime($timeWeckersTaN ,localtime(time-15*60))} set WT_Bad desiredTemperature auto comfort ; set WT_Bad desiredTemperature auto"}}

Aber mit folgenden Fehlern:
2021.02.13 17:51:54 1:  ERROR evaluating my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $EVTPART10=   $evalSpecials->{'%EVTPART10'};my $EVTPART11=   $evalSpecials->{'%EVTPART11'};my $EVTPART12=   $evalSpecials->{'%EVTPART12'};my $EVTPART13=   $evalSpecials->{'%EVTPART13'};my $EVTPART14=   $evalSpecials->{'%EVTPART14'};my $EVTPART15=   $evalSpecials->{'%EVTPART15'};my $EVTPART16=   $evalSpecials->{'%EVTPART16'};my $EVTPART17=   $evalSpecials->{'%EVTPART17'};my $EVTPART18=   $evalSpecials->{'%EVTPART18'};my $EVTPART19=   $evalSpecials->{'%EVTPART19'};my $EVTPART2=   $evalSpecials->{'%EVTPART2'};my $EVTPART20=   $evalSpecials->{'%EVTPART20'};my $EVTPART21=   $evalSpecials->{'%EVTPART21'};my $EVTPART22=   $evalSpecials->{'%EVTPART22'};my $EVTPART23=   $evalSpecials->{'%EVTPART23'};my $EVTPART24=   $evalSpecials->{'%EVTPART24'};my $EVTPART25=   $evalSpecials->{'%EVTPART25'};my $EVTPART26=   $evalSpecials->{'%EVTPART26'};my $EVTPART27=   $evalSpecials->{'%EVTPART27'};my $EVTPART28=   $evalSpecials->{'%EVTPART28'};my $EVTPART29=   $evalSpecials->{'%EVTPART29'};my $EVTPART3=   $evalSpecials->{'%EVTPART3'};my $EVTPART4=   $evalSpecials->{'%EVTPART4'};my $EVTPART5=   $evalSpecials->{'%EVTPART5'};my $EVTPART6=   $evalSpecials->{'%EVTPART6'};my $EVTPART7=   $evalSpecials->{'%EVTPART7'};my $EVTPART8=   $evalSpecials->{'%EVTPART8'};my $EVTPART9=   $evalSpecials->{'%EVTPART9'};my $NAME=   $evalSpecials->{'%NAME'};my $SELF=   $evalSpecials->{'%SELF'};my $TYPE=   $evalSpecials->{'%TYPE'};{return undef; {if (Value("statusWeckersTaN") eq "on") {my $timeWeckersTaN = Value("timeWeckersTaN");;fhem"defmod BA_Heizung_AutoOn at {POSIX::strftime("$timeWeckersTaN ",localtime(time-15*60))} set WT_Bad desiredTemperature auto comfort ; set WT_Bad desiredTemperature auto"}}}: syntax error at (eval 15549400) line 1, near ""defmod BA_Heizung_AutoOn at {POSIX::strftime("$timeWeckersTaN "
2021.02.13 17:51:54 1:  PERL WARNING: (Missing operator before ",localtime(time-15*60))} set WT_Bad desiredTemperature auto comfort ; set WT_Bad desiredTemperature auto"?)
2021.02.13 17:51:54 1:  PERL WARNING: String found where operator expected at (eval 15549400) line 1, near "$timeWeckersTaN ",localtime(time-15*60))} set WT_Bad desiredTemperature auto comfort ; set WT_Bad desiredTemperature auto""
2021.02.13 17:51:54 1:  PERL WARNING: Scalar found where operator expected at (eval 15549400) line 1, near ""defmod BA_Heizung_AutoOn at {POSIX::strftime("$timeWeckersTaN"


Gruß
sTaN


Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: Otto123 am 13 Februar 2021, 18:01:14
uiuiui
Ganz langsam: Was steht in Value("timeWeckersTaN")?
Dann das hier beachten https://fhem.de/commandref_DE.html#command
ZitatFür jede weitere Indirektion muss man die Strichpunkte verdoppeln.
Dann nicht defmod sondern modify verwenden. Du willst doch ein existierendes at ändern oder ein neues anlegen?

Und der Befehl {POSIX::strftime("%H:%M:%S",localtime(time-45*60))} hat vorn eine Formatangabe, da hat Dein Reading nix zu suchen! Du musst den Wert für time liefern in sekunden. Also Deine Zeit kommt anstatt time!
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 18:18:26
Zitat von: Otto123 am 13 Februar 2021, 18:01:14
uiuiui
Ganz langsam: Was steht in Value("timeWeckersTaN")?

Das ist der Dummy timeWeckersTaN, der über den Siri Kurzbefehl gesetzt wird und die iPhone Wecker Uhrzeit bekommt z.B.: 06:00:00.

Zitat von: Otto123 am 13 Februar 2021, 18:01:14
Dann das hier beachten https://fhem.de/commandref_DE.html#command
Dann nicht defmod sondern modify verwenden. Du willst doch ein existierendes at ändern oder ein neues anlegen?

Mit modify ändert er mir aber nicht die Uhrzeit des AT, dass passiert nur bei defmod. Ich habe es so verstanden, dass ich in meinem Notify "Notify_BA_Heizung_AutoOn", ja nur temporär das AT "BA_Heizung_AutoOn" anlege, sobald der Dummy statusWeckersTaN sich ändert, weshalb ich nach dem AT und vor dem $timeWeckersTaN auch kein + setze, damit er es nicht in die fhem.cfg schreibt, sondern nur in state. So war zumindest mein Verständnis.

Siehe Screenshot sieht momentan das funktionierende Notify, mit den aktuellsten Werten aus.

Gruß
sTaN
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: Otto123 am 13 Februar 2021, 18:34:11
Also modify ändert doch gerade die Uhrzeit? https://fhem.de/commandref_DE.html#modify
Aber egal, Du hast nur eine Zeit Du brauchst noch das Datum und dann erzeugst Du z.B. mit
Zitattimelocal(<Sekunden>, <Minuten>, <Stunden>, <Tag des Monats>, <Monat>, <Jahr>) wandelt einen Satz von Zeitelementen (Sekunden, Minuten, Stunden usw.) in Sekunden um [3]
Die "Sekunden" der Weckzeit.

Oder Du nimmst einfach diese Zeit 06:00:00 und errechnest die Sekunden
Alles für den Test in der Kommandozeile
{my $val="06:00:00");;(split(":",$val))[0]*3600+(split(":",$val))[1]*60+(split(":",$val))[2]}
Und subtrahierst die 15*60
{my $val=Value("timeWeckersTaN");;(split(":",$val))[0]*3600+(split(":",$val))[1]*60+(split(":",$val))[2]-15*60}
Und machst daraus die neue Zeit
{my $val="06:00:00";;my $sec=(split(":",$val))[0]*3600+(split(":",$val))[1]*60+(split(":",$val))[2]-15*60;;my $result=POSIX::strftime("%H:%M:%S",gmtime($sec))}

Das funktioniert aber nicht direkt im at, das müsstest Du als Sub auslagern (es dürfen keine Leerzeichen im Code sein!):
define test_zeit at {POSIX::strftime("%H:%M:%S",gmtime((split(":","06:00:00"))[0]*3600+(split(":","06:00:00"))[1]*60+(split(":","06:00:00"))[2]-15*60))} {}

Aber das kann schief gehen wenn Du früh aufstehst!
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 18:47:22
Zitat von: Otto123 am 13 Februar 2021, 18:34:11
Oder Du nimmst einfach diese Zeit 06:00:00 und errechnest die Sekunden
Alles für den Test in der Kommandozeile
{my $val="06:00:00");;(split(":",$val))[0]*3600+(split(":",$val))[1]*60+(split(":",$val))[2]}
Und subtrahierst die 15*60
{my $val=Value("timeWeckersTaN");;(split(":",$val))[0]*3600+(split(":",$val))[1]*60+(split(":",$val))[2]-15*60}
Und machst daraus die neue Zeit
Aber das kann schief gehen wenn Du früh aufstehst!

Wao Otto, danke für deine Geduld und Mühe. Daran merke ich immer wieder, dass ich trotz commandref lesen, die verschachtelte Syntax mit Perl nicht verstanden habe und mich damit wahnsinnig schwer tue. Ich scheitere sogar daran, deinen vorbereiteten Code in mein Notify einzubauen!  :-[

Beim Versuch folgendes zu bauen:
statusWeckersTaN:.* {if (Value("statusWeckersTaN") eq "on") {my $timeWeckersTaN = Value("timeWeckersTaN");;fhem"defmod BA_Heizung_AutoOn at {POSIX::strftime("%H:%M:%S",my $val=Value("timeWeckersTaN");;(split(":",$val))[0]*3600+(split(":",$val))[1]*60+(split(":",$val))[2]-15*60))} set WT_Bad desiredTemperature auto comfort ; set WT_Bad desiredTemperature auto"}}

Erhalte ich folgenden Fehler:
syntax error at (eval 28994) line 1, near "H:"
Global symbol "%M" requires explicit package name (did you forget to declare "my %M"?) at (eval 28994) line 1.
Global symbol "%S" requires explicit package name (did you forget to declare "my %S"?) at (eval 28994) line 1.
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: Otto123 am 13 Februar 2021, 18:56:16
Du scheiterst daran: Achtung: {perlfunc()} darf keine Leerzeichen enthalten.
Siehe mein Edit oben.
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 18:56:31
Otto du bist mein Held!!! Nachdem du deinen Beitrag editiert hast, konnte ich den Code erfolgreich implementieren und es funktioniert!!!

statusWeckersTaN:.* {if (Value("statusWeckersTaN") eq "on") {my $val=Value("timeWeckersTaN");;my $sec=(split(":",$val))[0]*3600+(split(":",$val))[1]*60+(split(":",$val))[2]-15*60;;my $result=POSIX::strftime("%H:%M:%S",gmtime($sec));;fhem"defmod BA_Heizung_AutoOn at $result set WT_Bad desiredTemperature auto comfort ; set WT_Bad desiredTemperature auto"}}

Genial!!! Ich hätte wirklich gedacht es geht einfacher, aber immerhin es funktioniert!

Gruß
sTaN
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag 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?
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 20:14:47
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
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: Otto123 am 13 Februar 2021, 20:20:21
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  ;)
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 20:22:01
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
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 21:12:28
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
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: Otto123 am 13 Februar 2021, 21:19:48
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.
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 13 Februar 2021, 21:23:19
 ::) 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
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 15 Februar 2021, 11:09:42
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
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: Otto123 am 15 Februar 2021, 11:39:22
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
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: sTaN am 15 Februar 2021, 11:58:54
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
Titel: Antw:Suche Uhrzeit Offset Funktion für variable Heizungssteuerung nach iPhone Wecker
Beitrag von: Otto123 am 15 Februar 2021, 12:04:16
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