NEWS
Eine Stunde am Tag, aber wie merken? Prüfen?
-
Ziel: Ein Gerät soll nur eine Stunde am Tag laufen.
Besonderheit: Das Gerät wird bei Abwesenheit aktiviert und wird bei Anwesenheit wieder deaktiviert. Das Script funktioniert auch soweit. Aber wie merke ich mir global? dass die gewünschte Laufzeit bereits erreicht ist?
Welchen Ansatz soll man da verwenden?
PS: Hintergrund, es geht um einen Luftfilter der sonst bei Abwesenheit durchgehend laufen würde. Oder ein Luftentfeuchter. Und diese Solen auch eher 3 Std laufen, aber der Einfachheit halber, und eventuell fragen andere danach, habe ich eine Stunde im Titel geschrieben.
Aktuell schaut es so bei mir aus:

-
Ziel: Ein Gerät soll nur eine Stunde am Tag laufen.
Besonderheit: Das Gerät wird bei Abwesenheit aktiviert und wird bei Anwesenheit wieder deaktiviert. Das Script funktioniert auch soweit. Aber wie merke ich mir global? dass die gewünschte Laufzeit bereits erreicht ist?
Welchen Ansatz soll man da verwenden?
PS: Hintergrund, es geht um einen Luftfilter der sonst bei Abwesenheit durchgehend laufen würde. Oder ein Luftentfeuchter. Und diese Solen auch eher 3 Std laufen, aber der Einfachheit halber, und eventuell fragen andere danach, habe ich eine Stunde im Titel geschrieben.
Aktuell schaut es so bei mir aus:

Du kannst in einem Intervall (zB jede min) abfragen obd as Gerät läuft. Wenn ja, einen Datenpunkt hochzählen.
Den intervall kannst du starten, wenn das Gerät auf true geht und stoppen wenn auf false.
Abends den Datenpunkt dann wieder auf 0 setzen.
Mache ich bei ein paar Sachen so.
EDIT
Ist ja genau das, was du machst. Mehr brauchst du doch nicht oder? -
Ziel: Ein Gerät soll nur eine Stunde am Tag laufen.
Besonderheit: Das Gerät wird bei Abwesenheit aktiviert und wird bei Anwesenheit wieder deaktiviert. Das Script funktioniert auch soweit. Aber wie merke ich mir global? dass die gewünschte Laufzeit bereits erreicht ist?
Welchen Ansatz soll man da verwenden?
PS: Hintergrund, es geht um einen Luftfilter der sonst bei Abwesenheit durchgehend laufen würde. Oder ein Luftentfeuchter. Und diese Solen auch eher 3 Std laufen, aber der Einfachheit halber, und eventuell fragen andere danach, habe ich eine Stunde im Titel geschrieben.
Aktuell schaut es so bei mir aus:

@dave83 vielleicht gibt das eine idee zu deinem thema

in testzahl ist der zeitstempel, wenn gerät auf true gegangen ist
in testzahl 2 sind die gesammelten minuten zwischen true und false vom gerät (testlogic) -
Ziel: Ein Gerät soll nur eine Stunde am Tag laufen.
Besonderheit: Das Gerät wird bei Abwesenheit aktiviert und wird bei Anwesenheit wieder deaktiviert. Das Script funktioniert auch soweit. Aber wie merke ich mir global? dass die gewünschte Laufzeit bereits erreicht ist?
Welchen Ansatz soll man da verwenden?
PS: Hintergrund, es geht um einen Luftfilter der sonst bei Abwesenheit durchgehend laufen würde. Oder ein Luftentfeuchter. Und diese Solen auch eher 3 Std laufen, aber der Einfachheit halber, und eventuell fragen andere danach, habe ich eine Stunde im Titel geschrieben.
Aktuell schaut es so bei mir aus:

Der Ansatz von @liv-in-sky ist gut. Leider Protokolliert der Ansatz die Laufzeit nur. Anbei ein Beispiel welches die Laufzeit protokolliert UND nach 1 Stunde abschaltet, und nur einen State (Die bisher vom Gerät verbrauchte Laufzeit) benötigt.

Im Spoiler findest du das auch als XML Import. Wichtig ist: Die Bausteine
state value,state timestampundprevious timestampsind identisch - der mitObjekt IDvoreingestellte Baustein aus dem Triggerbereich, nur auf die jeweiligen Werte umgestellt.Das Zurücksetzen via Zeitplan habe ich nicht nachgebaut - das brauchst du ggf. auch - zumindest zu anzeigezwecken oder in dem weiter unten beschriebenen Fall. Das Skript funktioniert aber auch ohne diesen Zeitplan.
Das Zurücksetzen der gespeicherten Laufzeit findet Statt sobald der Status des Gerätes sich das erste mal am "Folgetag" ändert.
Daraus folgt auch das
- die Berechnete Laufzeit des Gerätes davon abhängt wie lange es am Einschalttag schon Gelaufen ist
- die Laufzeit des Gerätes dem Ausschalttag zugeordnet wird.
Das ist interessant für Fälle wo das Gerät kurz vor Mitternacht eingeschaltet wird.
Nebenbei wird das Gerät auch direkt wieder ausgeschaltet sofern es irgendwie eingeschaltet wurde und die Laufzeit bereits erreicht war (extern)
Dadurch kann sich die Laufzeit um ein paar ms pro Versuch erhöhen. Wenn das Abschalten nicht gewünscht ist muss der else Zweig beim Vergleich von currentRunTime und MaxRunTime entfallen. In diesem Fall muss extern geprüft werden ob noch Laufzeit verfügbar ist bevor das Gerät eingeschaltet wird - Das erfordert dann wahrscheinlich das Rücksetzen der Laufzeit via Zeitplan um Mitternacht.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden