Eingestellte Zeit wird nicht übernommen

Begonnen von kutschi, 10 März 2013, 06:53:44

Vorheriges Thema - Nächstes Thema

kutschi

Hallo,

Warum wird meine eingestellt Zeit von 7_Zeit_So nicht im ReadingsVal ausgelesen. Der Rolladen fährt immer
um 10:00 hoch, egal was ich an meiner Zeitangabe einstelle.



define 7_Zeit_So dummy
attr 7_Zeit_So group Rolladen Schlafzimmer
attr 7_Zeit_So room x_Einstellung_Rollos
attr 7_Zeit_So setList state:time
attr 7_Zeit_So webCmd state

#define Rolladen_Schlafzimmer_hoch at *10:15 set Rolladen_Schlafzimmer hoch
define Rolladen_Schlafzimmer_hoch at *{ReadingsVal("7_Zeit_So","state","10:00")} set Rolladen_Schlafzimmer hoch
attr Rolladen_Schlafzimmer_hoch group Rolladen
attr Rolladen_Schlafzimmer_hoch room Schlafzimmer


Gruß
Kutschi

eppi

Hi kutschi
Kennst du dieses Beispiel?
Dieses sollte genau deiner Anwendung entsprechen.

Gruss Dani

MisterEltako

schau doch einfach was da ausgelesen wird, indem du den Wert loggst:
...
define Rolladen_Schlafzimmer_hoch at *{ReadingsVal("7_Zeit_So","state","10:00")} {\
attr Rolladen_Schlafzimmer_hoch group Rolladen
attr Rolladen_Schlafzimmer_hoch room Schlafzimmer

define Test dummy
define n_Test notify Test {\
my $Zeit = ReadingsVal("7_Zeit_So","state","10:00");;\
Log 3,"Zeit Uebergabe: $Zeit";;\
fhem("define Rolladen_Schlafzimmer_hoch at *{ReadingsVal('7_Zeit_So','state','10:00')} set Rolladen_Schlafzimmer hoch");;\
}

Dann "trigger Test" in die Kommandozeile von Fhemweb eingeben und danach ins Logfile schauen und posten.

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

eppi

Hallo kutschi
Da ich gerade auch eine Anwendung für den Timerslider hatte, habe ich für dich den fertigen Code:

define 7_Zeit_So dummy
attr 7_Zeit_So group Rolladen Schlafzimmer
attr 7_Zeit_So room x_Einstellung_Rollos
attr 7_Zeit_So setList state:time
attr 7_Zeit_So webCmd state

define Rolladen_Schlafzimmer_hoch at *10:00:00 set Rolladen_Schlafzimmer hoch
attr Rolladen_Schlafzimmer_hoch group Rolladen
attr Rolladen_Schlafzimmer_hoch room Schlafzimmer

define n_Change_7_Zeit_So notify 7_Zeit_So {fhem("modify Rolladen_Schlafzimmer_hoch *%");;}

Ich hoffe, dass ich dir helfen konnte.

Gruss Dani

kutschi

Hallo,

danke für die Hilfe. Mit modify klappt das schon ganz gut. Kann verhindern das nach einem Neustart von Fhem der Default Wert wieder als Zeit eingetragen wird. Man müsste sonst ja wieder alles einstellen.

Gruß
Kutschi

Groby

Hallo kutschi,

Du könntest notify verwenden und bei jeder Änderung deiner Variablen/Uhrzeiten modifizieren:


define SetVariables notify global:INITIALIZED.* setstate ...


Gruss, Groby

Mr. P

Hej hej,

ich hab mich jetzt auch ein Weilchen damit beschäftigt, nach dem Neustart den wakeUp auf den zuletzt eingestellten Wert zu setzen, komme allerdings auf keinen grünen Zweig.

Grundsätzlich war meine Überlegung, einfach schon beim setzen von wakeUp das Reading - soweit vorhanden - zu übergeben:
define wakeUp at *{ ReadingsVal("wakeupChange","state","05:30").":00" }

Bekomme beim aufrufen der Config zwar keinen Fehler, wakeUp wird aber auch nicht erstellt.

Wenn ich das Reading händisch eingebe, klappt alles wunderbar:
{ ReadingsVal("wakeupChange","state","05:30").":00" }
05:32:00


Sobald ich aber das ganze define ausführen möchte, passiert folgendes:
define wakeUp at *{ ReadingsVal("wakeupChange","state","05:30").":00" }
Wrong timespec {: either HH:MM:SS or {perlcode}


Selbiges auch bei:
define wakeUp at *{ ReadingsVal("wakeupChange","state","05:30") }      
Wrong timespec {: either HH:MM:SS or {perlcode}


Wie es scheint, stören FHEM die Doppelpunkte in der Variable und an diesem Punkt bin ich am Ende mit meinem Latein.
Hat jemand eine Idee, wie man das umgehen kann oder was ich möglicherweise auch einfach nur falsch mache und nicht sehe?

Vielen Dank für Eure Tipps! :-)

Greetz,
   Mr. P
Greetz,
   Mr. P

hckoe

Hallo kutschi,

ohne Leerzeichen funktioniert der Code bei mir:


define wakeUp at *{ReadingsVal("wakeupChange","state","05:30").":00"} set ...


Gruß
Helmut
# CT mit Debian Buster / FHEM aktuell / EnOcean TCM310 / Eltako FSA12, FUD12NPN, FSB12, FRW, FSRP-230V
# Permundo PCS234, Nodon NO-SIN-2-2-00, GTAGS

Mr. P

Hej Helmut,

vielen Dank für den Hinweis. Interessant, was so ein Leerzeichen alles bewirkt... da hätte ich wohl noch eine Zeitlang gesucht. :-/

Leider war es aber nur die halbe Miete.
Das "at" wird jetzt zwar akzeptiert, jedoch wird beim Initialisieren immer nur der Fallback-Wert verwendet. Also sowohl beim Starten als auch beim "rereadcfg".
Lösche ich allerdings den "at" und lege ihn händisch wieder an, bekomme ich den gewünschten Wert aus dem Readings.

Vielleicht hat jemand noch einen guten Ratschlag für mich?

Thx a lot! :-)

Greetz,
   Mr. P
Greetz,
   Mr. P

hckoe

Hallo Mr. P,

wie wäre es hiermit:

define wakeupChange dummy
define wakeUp at *{ReadingsVal("wakeupChange","state","05:30").":00"} set ...
define notify_wakeupChange notify (wakeupChange|global:INITIALIZED|global:REREADCFG).* \
       modify wakeUp *{ReadingsVal("wakeupChange","state","05:30").":00"}


Dann wird wakeUp auf 05:30:00 gesetzt, solange wakeupChange undefiniert ist. Bei einer Änderung von wakeupChange bzw. wenn FHEM neugestartet oder die Konfig neu gelesen wird, dann wird wakeUp angepasst.

Gruß
Helmut
# CT mit Debian Buster / FHEM aktuell / EnOcean TCM310 / Eltako FSA12, FUD12NPN, FSB12, FRW, FSRP-230V
# Permundo PCS234, Nodon NO-SIN-2-2-00, GTAGS

Mr. P

Hej Helmut,

vielen Dank für den Hinweis, damit hat es prima geklappt. :-)

Hab mir erlaubt, deine Hinweis im fhemwiki festzuhalten. Könnte mir gut vorstellen, dass es auch ein paar andere Leute gibt, die daran Interesse haben könnten. :-)

Nochmals vielen Dank!
Greetz,
   Mr. P

Mr. P

Jetzt muss ich den Thread nochmals hoch holen.

Seit ein paar Tagen funktioniert das Ändern der Zeit für meinen Wecker nicht mehr:

define notify_wakeUpChange notify (wakeUpChange|global:INITIALIZED|global:REREADCFG).* \
   modify wakeUp *{ReadingsVal("wakeUpChange","state","05:30")}


Bekomme im Log folgenden Fehler:
2013.11.22 08:36:22 5: Cmd: >
   modify wakeUp *{ReadingsVal("wakeUpChange","state","05:30")}<
2013.11.22 08:36:22 3: notify_wakeUpChange return value: Unknown command
, try help.


Geändert hab ich ich mWn nichts und wenn ich das modify händisch ausführe, wird das Reading ausgelesen und der neue Wert auch gesetzt.

Jemand eine Ahnung, was geändert wurde, das zu diesem Effekt führen kann?

Vielen Dank! :-)
Greetz,
   Mr. P

Mr. P

Und schon hab ich mir die Frage selbst beantwortet.
Grund dafür ist eine neue Version (r4251 - fhem.pl: newline-escaping-fix, FHEMWEB: column fix), die Rudi am 19.11. eingecheckt hat.
Da ändert sich etwas am Handling, wodurch jetzt beim Zeilenumbruch zwei Backslash notwendig werden.

Der Code ändert sich daher auf:
define notify_wakeUpChange notify (wakeUpChange|global:INITIALIZED|global:REREADCFG).* \\
   modify wakeUp *{ReadingsVal("wakeUpChange","state","05:30")}


Alternativ kann man natürlich auch einfach alles in eine Zeile schreiben, macht die Angelegenheit aber schnell einmal recht unübersichtlich. ;-)
Greetz,
   Mr. P