Gelöst: Übersetzung von "Next:" bei at möglich?

Begonnen von itchako, 07 Oktober 2014, 20:17:12

Vorheriges Thema - Nächstes Thema

itchako

hallo,

habe mehrere Timer gesetzt, Bsp:

define Heizung_anschalten at *06:00:00 set Heizung_Toilette_EG,Heizung_Kueche,Heizung_Bad value 50
attr Heizung_anschalten alias Heizung anschalten
attr Heizung_anschalten group Timer
attr Heizung_anschalten room Timer,Übersicht

Anzeige auf der Webseite ist sauber und zeigt "Heizung anschalten" an. Allerdings folgt dann ein "Next:" mit der Uhrzeit des nächsten Events.

Lässt sich dieses "Next" irgendwie anpassen wie z.B. mit dem alias attribut des define parts?

Gruss
itchako

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

itchako

hallo Dietmar,

hab mir die Doku von stateFormat angesehen. Vorab, ich habe bis dato nicht in Perl programmiert, verstehe aber prinzipiell was stateFormat hier machen soll ...

Hier die Internals des At-Timers (wie heisst das Teil eigentlich richtig in "FHEM Sprache"??? .. ;-)):

Internals:
   DEF        *06:00:00 set Heizung_Toilette_EG,Heizung_Kueche,Heizung_Bad value 50
   NAME       Heizung_anschalten
   NR         24
   REP        -1
   STATE      Next: 06:00:00
   TRIGGERTIME 1412827200
   TRIGGERTIME_FMT 2014-10-09 06:00:00
   TYPE       at
Attributes:
   alias      Heizung anschalten
   group      Timer
   room       Timer,Übersicht

Der "Next" Text ist also im STATE reading des At-Events und sollte dann mit stateFormat und der korrekten sprintf Funktion ausgetauscht/updated werden.

Da ich mehrfach gelesen habe man soll die fhem.cfg nicht direkt händisch ändern, hab ich es über die Commandline in der WebGUI versucht und zwar mit folgendem Eintrag (ich weiss das die sprintf argumente nicht stimmen, wollte nur sehen was prinzipiell passiert):

attr Heizung_anschalten stateFormat { sprintf("%s", ReadingsVal("Heizung_anschalten","STATE",0)) ;; }

FHEM sagt mir aber bereits hier, dass dieses Attribut nicht unterstützt wird ...
Kann es sein das stateFormat nur bei physischen Devices funktioniert und nicht bei at-Events?

Oder ist der Ansatz mit der Commandline prinzipiell falsch und ich komme ums programmieren nicht herum? Falls letzteres der Fall ist: Gibt es sowas wie eine "Einführung für angehende FHEM Programmierer"?

Gruss
Jakob

karl0123

Das at hat kein Reading. Somit wird stateFormat auch nicht funktionieren, da stateFormat nur mit Readings gefüttert werden kann. Man könnte nun denken, dass ein UserReading helfen könnte. Aber diese würde ohne eine Reading, dass aktualisiert wird, nicht triggern.

frank

ZitatFHEM sagt mir aber bereits hier, dass dieses Attribut nicht unterstützt wird ...
du kannst dir das attribut über attr global userattr auch für notifys freischalten.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

karl0123

Das hilft aber nicht, wenn das at (um das geht es hier, nicht um ein notify) kein Reading hat mit dem man stateFormat füttern könnte.

frank

Zitat von: karl0123 am 08 Oktober 2014, 13:43:36
Das hilft aber nicht, wenn das at (um das geht es hier, nicht um ein notify) kein Reading hat mit dem man stateFormat füttern könnte.
kann man doch mit setreading einfügen.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

karl0123

Dann müsste man ja jedem at ein setreading mit der nächsten Ausführungszeit zufügen. Der neue STATE kann ja nur angezeigt werden, wenn er durch ein Reading getriggert wird. Ein einfaches setreading hilft da nicht.

frank

wenn sich das at wiederholt, wie in deinem fall, müsste dies funktionieren (def des at):

*06:00:00 {
  fhem("set Heizung_Toilette_EG,Heizung_Kueche,Heizung_Bad value 50");
  fhem('define my_at at +00:00:01 {my $myState = InternalVal("Heizung_anschalten","NTM","???");;fhem("setreading Heizung_anschalten myState $myState");;}');
}


dadurch wird ein reading myState im at erzeugt, dass dann im stateformat genutzt werden kann. zb:

attr Heizung_anschalten stateFormat die nächste aktion ist um myState

hoffentlich kein schreibfehler. bei einem at bei mir hat es funktioniert. der eigene state ist natürlich erst nach der ersten ausführung des at vorhanden.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

karl0123

Das ist ja das, was ich oben beschreibe. Ob es aber wirklich sinnvoll ist so einen Overhead in jedem at zu haben, damit das stateFormat funktioniert, halte ich für sehr fraglich.

frank

die frage war ja ob "möglich". nicht ob "sinnvoll".  :)

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

itchako

hi und zunächst Merci!

Den ersten codeschnipsel hab ich jetzt ins DEF genommen und modify gedrückt, schein auch angenommen zu sein.
Jedenfalls kriege ich keine Fehlermeldungen.

Wie kriege ich aber die attr Zeile rein? In der Weboberfläche mit dem attr Button ist das Attribut nicht gelistet und somit nicht auswählbar.... Wenn ich es im Eingabefeld eingebe oder direkt mit nem Editor in die fhem.cfg eintrage kriege ich immer:

Heizung_anschalten: unknown attribute stateFormat. Type 'attr Heizung_anschalten ?' for a detailed list.

Gruss
Jakob

Puschel74

Hallo,

das Attribut zur liste der userattr bei global hinzufügen.
Dann solltest du das auch auswählen können.
Lässt sich über das Frontend eintragen  ;)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

itchako

#13
merci Puschel, habs grad selbst gemerkt aber direkt in die fhem.cfg eingetragen....  :)
Wollte grade meinen Beitrag löschen aber Du warst schneller...

Bin schon sehr gespannt ob ich morgen im kalten oder warmen Badezimmer duschen werde ...  :) :) :)

hmm, konnte nicht warten und hab die Zeit umgestellt. Der Text ist geändert aber anstatt der Uhrzeit stehen da jetzt drei Fragezeichen... mal checken ob ich's selbst finde ...  ROTFL... Aber die Heizungsventile sind jedenfalls auf 50% gegangen, von daher gibt's schonmal keine kalten Füsse ... 8)

Gruss
j

Puschel74

Hallo,

hast du direkt in der fhem.cfg die Zeit geändert?
Lass das und änder das DEF - das funktioniert auf alle Fälle inkl. der Anzeige  ;)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.