Hallo,
Ich möchte in einen Dummy die Zeit in Stunden setzen, die seid einen bestimmten Zeitpunkt vergangen sind. Zb ab dem 01.05.2019 das benötige um zu wissen wieviel Grundgebür für einen Zeitraum angefallen sind. Wie mache ich das am besten?
Gruß
Thorsten
Du schreibst Dir eine Funktion, die die Stunden seit einer als Parameter übergebenen Zeit berechnet.
Was löst das Berechnen aus?
Einmal die Stunde über ein DOIF
Gesendet von iPhone mit Tapatalk
fhem> { time_str2num("2019-05-01 01:00:00") }
1556665200
fhem> defmod dummy_at at +*01:00 setreading dummy stundenSeit20190501 {(int((time()-1556665200)/3600))}
Hey, danke wie packe ich das am besten in einen doif welches dann den Wert in ein dummy setzt?
Will nicht so klappen.
Gruß
Thorsten
Damit dem at kappt leider nicht....
ZitatHey, danke wie packe ich das am besten in einen doif welches dann den Wert in ein dummy setzt?
Wie ist den Deine nicht beste Varinte?
Hey,
ein doif mit diesen inhalt funktioniert nicht
([+01:00])(set Muster2 { time_str2num("2019-05-01 01:00:00") } )
Im Dummy Muster2 steht unter state dann dies: { time_str2num("2019-05-01 01:00:00") }
Wenn ich das mit den vorgeschlagenen at mache: +*01:00 setreading Muster2 Stunden {(int((time()-1556665200)/3600))}
Dann steht im Dummy Muster2 unter den reading Stunden: { int((time-1556665200)/3600))}
vielen dank
Abgesehen davon, dass die {} sich nicht auflösen.
Weißt Du was time_str2num macht?
Zitat([+01:00])(set Muster2 { time_str2num("2019-05-01 01:00:00") } )
Setze den Dummy Muster2 auf die Unix-Zeit von "2019-05-01 01:00:00".
Zitat von: jailbreaker07 am 18 Februar 2020, 16:35:38
Hey,
ein doif mit diesen inhalt funktioniert nicht
([+01:00])(set Muster2 { time_str2num("2019-05-01 01:00:00") } )
Im Dummy Muster2 steht unter state dann dies: { time_str2num("2019-05-01 01:00:00") }
Wenn ich das mit den vorgeschlagenen at mache: +*01:00 setreading Muster2 Stunden {(int((time()-1556665200)/3600))}
Dann steht im Dummy Muster2 unter den reading Stunden: { int((time-1556665200)/3600))}
vielen dank
define zeit DOIF {[+01:00]; set_Reading ("stunden",int((time()-1556665200)/3600))}
Wenn du es über die Kommandozeile eingibst, musst du das Semikolon verdoppeln.
Auf die Stunden kannst du über [zeit:stunden] zugreifen, einen Dummy brauchst du dafür nicht.
Edit:
Alternativ kannst du die Stunden im Status des DOIFs darstellen:
define stunden DOIF {[+01:00]; set_State (int((time()-1556665200)/3600))}
ZitatDann steht im Dummy Muster2 unter den reading Stunden:
Wann wurde FHEM zuletzt aktualisiert (Stichwort FHEM update Befehl)?
Auf was steht "attr global featurelevel"?
Zitat{ int((time-1556665200)/3600))}
das passt nicht zu seiner at-Definition, er hat vermutlich bei der at-Definition die Klammer auf vergessen:
{
(int...
Klingt plausibel. Seufz.
da war wohl die control-c taste kaputt :)
Hallo zusammen,
jetzt funktionieren beide Varianten:
DOIF
{[+00:01]; set_Reading ("stunden",int((time()-[$SELF:Stunden_unix])/3600))}
at
+*01:00 setreading Muster2 Stunden {(int((time-1556665200)/3600))}
Schon übel wenn man von der Materie fast keine Ahnung hat und sich alles irgendwie zusammen bastelt..... da fallen solche Sachen wie ein fehlende klammer nicht auf....
Vielen dank für eure Unterstützung 8)