NEWS
Laufzeit eines Gerätes erfassen
-
Guten Abend Allerseits, ich möchte mir ein Blockly-Script basteln, mit dem ich die Laufzeit des Ölbrenner von meiner Hybrid-Heizung erfassen kann. Vom Brenner selbst kann ich nichts auslesen. Über die Wärmepumpe mit Modbus kann ich das aber sehen und zwar wenn die Betriesart auf 4=Betrieb die momentan Leistung der Wärmepumpe 0 ist. Jetzt möchte ich erfassen wie lange der Zustand besteht, sprich der Brenner läuft und die Zeit wegschreiben und da komme ich nicht weiter. Ich habe schon einiges versucht, aber ohne Erfolg. Ich stelle mal die letzte Version rein, um zu veranschaulichen was ich möchte. Wie gesagt das funktioniert aber nicht. Vielleicht kann mir hier jemand auf die Sprünge helfen.
-
nimm anstatt "solange" ein "interval" (alle x sekunden abfragen) und
im interval fragst du den wert ab und stoppst das interval -
@liv-in-sky Danke, probiere ich gleich mal.
Edit: So schaut jetzt aus.
-
@winni und funktioniert es
-
die beiden unteren bausteine - außerhalb des triggers werden nur einmal beim start des scriptes ausgeführt - ist das gewollt
-
@liv-in-sky nein, ist nicht gewollt. Ich schieb sie gleich in den Trigger. Wenn das funktioniert, will ich dann alle "Durchläufe" des laufendenTages zusammen zählen und ebenfalls ausweisen.
-
@liv-in-sky sagte in Laufzeit eines Gerätes erfassen:
nimm anstatt "solange" ein "interval" (alle x sekunden abfragen) und
interval ist nicht so gut.
besser ist einen trigger auf den start des brenners, die zeit und den status (start) sich merken (idealerweise in datenpunkten) und dann einen trigger auf das ende des brenners, dann die differenz errechnen und das wieder speichern, bzw. mit dem bisherig aufgelaufenen wert aufrechnen.
datenpunkte deshalb, das wenn der iobroker oder der adapter mal abbricht, kann nahtlos weitergehorcht werden.
bei interval geht bei einem restart der interval verloren.
ausserdem ist bei interval alle paar sekunden wieder extra ressourcenverbrauch. klar bei einem fällt das nicht so auf, aber später summiert sich das ggfs. -
@oliverio danke für den Hinweis, werde ich auf alle Fälle als Alternative ausprobieren.
-
Leider beendet das Blockly-Script die Schleife nicht. Seltsam, die Bedingung zum beenden ist erfüllt. Die Betriebsart ist jetzt auf 0.
-
ist der dp ein e zeichenkette oder eine number
-
@liv-in-sky der Datenpunkt ist eine Zahl
-
@winni
nur zur sicherheit: ist er so definiert in den object-eigenschaften -
@liv-in-sky ja, ganz sicher
-
ach ja- das interval gehört eins höher - in den if rein - soll ja nur gestartet werden, wenn es eingeschalten wird - sonst wird es jedesmal ausgeführt, wenn getriggert wird
-
@liv-in-sky hatte ich schon gesehen und korrigiert
-
und am einfachsten eine schaltung zu überprüfen ist, wenn du dir einen debug block reinlegst - damit du im log beobachten kannst, was los ist - dadurch verseht man besser , wie es abläuft
also eine debug in das interval rein und in den if
zeig mal deine korrektur, damit wir das gleiche sehen
-
@liv-in-sky so schauts aktuell aus
Momentan läuft noch ein Zyklus, den will ich noch abwarten, dann bau ich den debug ein. Testen geht aber erst wieder morgen, die Heizung ist dann in der Nachtabsenkung.
-
setze öl2 gehört aber in das interval, bevor der stop kommt - erst dann macht es sinn
setze öl3 und test gehört dann unter setze öl2 und vor das stop -
wenn ich sachen ausprobiere, wie z.b. so eine neue schaltug, nehme ich testdatenpunkte, die ich dnn von hand schalte - so kann ich das ganze testen ohne auf die betriebsmodi warten zu müssen
noch ein hinweis - jedesmal, wenn ds ganze aktiv ist und zählt, und du das script neustartest oder den server neustartest, werden deine variablen verloren gehen - daher ist es manchmal besser, anstatt variablen auch eigene dp zu nutzen !!!!
wa auch noch fehlt: jetzt bekommst du nur eine schaltung angezeigt - wenn du mehrere schaltungen am tag hast und wissen willlst, wie lange das insgesamt an einem tag lief, fehlt noch einiges
-
@liv-in-sky meinst du so?