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)))}
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])}
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...