DOIF und HourCounter Problem

Begonnen von fl_Indigo, 19 Februar 2018, 20:16:51

Vorheriges Thema - Nächstes Thema

fl_Indigo

wenns nicht hierher passt, bitte entsprechend verschieben, ich bin mir nicht ganz sicher wos am besten hingehört, danke!

folgendes problem, ich möchte mit hilfe vom HourCounter Modul und telegram die Brennerstarts und Laufzeit unsere Pelletskessels verschicken.

Folgendes DOIF kommt zum einsatz


([Temperaturen:AnforderungPelletsofen] eq "EIN") (sleep 61; set TelegramBot message Pelletsofen gestartet! Kesselstart {([HC_Pelletsofen:countsPerDay]);} heute)
DOELSEIF
([Temperaturen:AnforderungPelletsofen] eq "AUS") (sleep 61; set TelegramBot message Pelletsofen gestoppt! Laufzeit {(my $langezahl=([HC_Pelletsofen:pulseTimeEdge]/3600); my $kurzezahl=sprintf "%.1f", $langezahl;
return $kurzezahl;)} Stunden)


das hourcounter modul hält zum zeitpunkt des triggerns noch die aktuellen werte vom letzten start/stopintervall bereit (beim ersten brennerstart des tages hatte die telegram nachricht kesselstart 0 ausgegeben und bei brennerstop die laufzeit vom vorletzten intervall)
deshalb versuche ich erstmal mit sleep die nachricht zu verzögern, was im fall der startnachricht zum richtigen ergebnis in der benachrichtigung führte, allerdings bei der stopnachricht immer noch die zeit des vorletzten intervalls ausspuckte.
auf anraten von CoolTux änderte ich das DOIF dahingehend, das anstatt von sleep das wait attribut verwendet wird.
allerdings immer noch mit demselben ergebnis.
wie bringe ich das DOIF dazu, die richtige brennerlaufzeit auszugeben?

das HourCounter device dazu sieht folgendermaßen aus:

Internals:
   CFGFN      2_heizung.cfg
   DEF        Temperaturen:AnforderungPelletsofen:.EIN Temperaturen:AnforderungPelletsofen:.AUS
   NAME       HC_Pelletsofen
   NR         131
   NTFY_ORDER 50-HC_Pelletsofen
   STATE      <align=left>Laufzeit Tag/Woche/Monat/Jahr: 3.8/0.0/70.2/70.2 Stunden | Kesselstarts Heute 1
   TYPE       HourCounter
   VERSION    1.0.1.2 - 24.12.2014
   READINGS:
     2018-02-19 00:00:00   appCountsPerDay 0
     2018-02-19 20:00:00   appCountsPerHour 0
     2018-02-19 20:00:00   appCountsPerHourTemp 0
     2018-02-19 15:27:48   appCountsPerMonthTemp 14
     2018-02-18 00:00:00   appCountsPerWeek 12
     2018-02-19 15:27:48   appCountsPerWeekTemp 1
     2018-02-19 15:27:48   appCountsPerYearTemp 14
     2018-02-19 00:00:00   appOpHoursPerDay 0
     2018-02-19 20:15:50   appOpHoursPerDayTemp 3.83388888888889
     2018-02-19 00:00:00   appOpHoursPerMonthTemp 70.2347222222223
     2018-02-18 00:00:00   appOpHoursPerWeek 58.706111111111
     2018-02-19 00:00:00   appOpHoursPerWeekTemp 0
     2018-02-19 00:00:00   appOpHoursPerYearTemp 70.2347222222223
     2018-02-19 00:00:00   appUtilization  0
     2018-02-19 20:15:50   appUtilizationTemp 18.9198080877313
     2018-02-19 20:15:50   appUtilizationTempOld 18.9979353062629
     2018-02-19 20:15:50   countsOverall   16
     2018-02-19 20:15:50   countsPerDay    1
     2018-02-19 20:15:50   pauseTimeEdge   261082
     2018-02-19 20:15:50   pauseTimeIncrement 3480
     2018-02-19 20:15:50   pauseTimeOverall 672073
     2018-02-19 20:15:50   pauseTimePerDay 59148
     2018-02-19 20:15:50   pulseTimeEdge   13802
     2018-02-19 20:15:50   pulseTimeIncrement 13802
     2018-02-19 20:15:50   pulseTimeOverall 266647
     2018-02-19 20:15:50   pulseTimePerDay 13802
     2018-02-19 20:15:50   state           1
     2018-02-19 19:17:50   tickChanged     32
     2018-02-19 00:00:00   tickDay         3
     2018-02-19 20:00:00   tickHour        78
     2018-02-16 14:10:33   tickMonth       0
     2018-02-19 20:15:50   tickUpdated     149
     2018-02-18 00:00:00   tickWeek        1
     2018-02-16 14:10:33   tickYear        0
     2018-02-19 20:15:50   value           0
   helper:
     OFF_Regexp Temperaturen:AnforderungPelletsofen:.AUS
     ON_Regexp  Temperaturen:AnforderungPelletsofen:.EIN
     calledByEvent
     changedTimestamp 2018-02-19 20:15:50
     forceClear
     forceDayChange
     forceHourChange
     forceMonthChange
     forceWeekChange
     forceYearChange
     isFirstRun
     sdRoundHourLast 1519066800
     value      0
     cmdQueue:
Attributes:
   alias      Laufzeit Pelletsofen
   group      1 Pelletsofen
   room       03_Heizung
   sortby     5
   stateFormat {sprintf("<align=left>Laufzeit Tag/Woche/Monat/Jahr: %.1f/%.1f/%.1f/%.1f Stunden | Kesselstarts Heute %d", (ReadingsVal("HC_Pelletsofen", "appOpHoursPerDayTemp",0)), (ReadingsVal("HC_Pelletsofen", "appOpHoursPerWeekTemp",0)), (ReadingsVal("HC_Pelletsofen", "appOpHoursPerMonthTemp",0)), (ReadingsVal("HC_Pelletsofen", "appOpHoursPerYearTemp",0)), (ReadingsVal("HC_Pelletsofen", "countsPerDay",0)))}

Ellert

Ich kenne HourCounter nicht.
Wann stehen die richtigen Werte zur Verfügung?
Erzeugen diese Werte Events?


Alternativ etwa so
bei EIN den Zweig mit setreading $SELF D_auer {(time)} ergänzen

bei  AUS im Befehl die Zeitdifferenz berechnen set telegramm ... {(time-[$SELF:D_auer])}

fl_Indigo

hat sich bereits erledigt...
wait 5:5 hat das problem beseitigt, man sollte doch vorher die commandref studieren

zur erläuterung: wait 5 setzt den timer nur für das erste kommando des doifs... 5:5 macht dann 5 sekunden für den ersten und 5 sekunden für den zweiten teil des kommandos...