[Modul] GeraeteStatus (Fertigmelder) mit Energiemessung

Anfangs hatte ich das Modul von traxanos verwendet, jedoch immer das Problem das die Fertigmeldung vom Wäschetrockner mal kam, mal nicht, mal doppelt. Da traxanos anscheinend keine Zeit für die Weiterentwicklung seines Moduls hat habe ich:
Zwar nach seiner Grundidee <<< Aus(0) > An(1) > Läuft(2) > Fertig(3) > Aus(0) >>> aber mit neuer Logik, ein neues Modul erstellt.

[ul]
[li]Kein überspringen von Zuständen mehr
[/li][li]Die eingestellte Verzögerungszeit gilt immer (Wert 0 deaktiviert die Verzögerung)
[/li][li]Nach Ende der Verzögerungszeit findet erneute Überprüfung des Power/Watt Wertes statt
[/li][li]Der Energiezähler beginnt bei Status Läuft(2) zu zählen, mit Vorrausssetzung der Status zuvor Aus(0) war.
[/li][li]Der Wechsel von ‚Aus(0)‘ zu ‚An(1)‘ setzt den Zählerstatus nicht zurück
[/li][/ul]

Die Wäschetrockner Knitterschutz Problematik (mehrfach Fertigmeldung) habe ich mit folgenden Werten nicht mehr:
Die Debug-Mode Ausgabe hilft dabei, die richtigen Werte zu finden

[ul]
[li]Fertig: 3 Watt, Verzögerung: 60
[/li][li]Aus: 0,5 Watt, Verzögerung: 180
[/li][/ul]

Das Modul GeraeteStatus ist hier zu finden

Modul lasse ich vorerst noch im Beta-Status, gerne Rückmeldungen :slight_smile:

Hi,
nette Idee. Ich benutze so was Ähnliches zum Zählen meiner Kaffeeaufzüge:-)

Modul habe ich installiert aber erstellen einer Instanz klappt bei mir irgendwie nicht:-( GeraeteStatus wird nirgends angezeigt.

Vielleicht könnte man noch einen 3. Wert einbauen für den Zustand „Timer läuft“. Ich benutze Timer damit Nachts bei mir etwas arbeiten kann. <1W wäre aus. >2W wäre Timer aktiv und >5W Maschine läuft.

Ralf

Hallo
Such mal nach „Maschine fertig“ .

Hi,

da muss man drauf kommen:-) Jetzt habe ich es auch gefunden.

Ralf

Habs auch nicht gefunden und deshalb mal in module.json geschaut.

"aliases": [ "Maschine fertig", "Waschmaschine", "Wäschetrockner", "Geschirrspüler" ],

Ich ging davon aus das die Suche mit Modulnamen immer funktioniert, egal ob Aliases hinzugefügt wurden :rolleyes:

Soeben im Repository korrigiert:

"aliases": [ "GeraeteStatus", "GeräteStatus", "Fertigmeldung", "Waschmaschine", "Wäschetrockner", "Geschirrspüler" ]

:slight_smile:

…das hab ich auch immer so angenommen…

@paresy: Bug? Alias ist für mich ein Alias und keine komplette Liste :confused:

-Chris-

Sofern vorhanden werden die Werte bei Alias genommen - nur falls diese Leer ist, wird der Modulname in der Liste aufgeführt. Das ist so gewollt, da manche Modulnamen doof sind und man diese sonst gar nicht aus der Liste bekäme.

paresy

Hi.
Hab dein Modul mal getestet, als alternative zu dem von traxanos.
Das mit der Zeit und Verbrauchserfassung finde ich gut!

Allerdings ändern sich bei mir nicht wie erwartet die Stati.
Der eingestellte Wert wird unterschritten, die Zeit läuft auch ab und dennoch passiert nix.

Erst wenn ich dann den Debug aktiviere um zu sehen was da los ist, funktioniert es plötzlich!? :confused:

Grüße!

Das aktivieren oder deaktiveren des Debugs ändert nichts am Ablauf des Programmcodes.

Das Problem wird wohl eher das späte eintreffen des Events gewesen sein.
Siehe FAQ

Tja, irgendwie leider nicht. Die Variablen mit den Werten werden alle 30sek geschrieben, auch sehe ich dass deine Variablen unterhalb des Moduls im selben Zyklus aktualisieren, passieren tut aber nix.
Gerade wieder getestet, Waschmaschine war komplett aus, Verbrauch 0,0Watt, Modul sagt immer noch „Fertig“ auch nach 10min noch.
Gehe ich ins Modul aktiviere den Debug-Schalter unten, zack nach der eingestellen Zeit von 120sek springt er auf „Aus“.

Ich denke wir sind bei der geänderten Programmlogik angelangt :slight_smile:

Zustand: Aus
…gilt nach Status Fertig, und Unterschreitung des Wertes und Ablauf der Verzögerungszeit…

Aus -> Watt -> 0,1 ?

ps. ansonsten bitte gerne ein debug log per pn.

So hab ich es auch verstanden, dein Modul folgt aber der Logik nicht :wink: Oder ich stehe mal grade völlig auf dem Schlauch:

Beispiel hier 2Watt, Waschmaschine fertig. Waschmaschine wird ausgeschaltet 0Watt, nix passiert.


TXT: 19.03.2020, 19:47:07 |           CurPower() | 2
HEX: 19.03.2020, 19:47:07 |           CurPower() | 32 
TXT: 19.03.2020, 19:47:37 |           CurPower() | 0
HEX: 19.03.2020, 19:47:37 |           CurPower() | 30 
TXT: 19.03.2020, 19:47:37 |    Update(Old-State) | Down (3) [if=2]
HEX: 19.03.2020, 19:47:37 |    Update(Old-State) | 44 6F 77 6E 20 28 33 29 20 5B 69 66 3D 32 5D 
TXT: 19.03.2020, 19:47:37 |      StartTimerOff() | 120 seconds
HEX: 19.03.2020, 19:47:37 |      StartTimerOff() | 31 32 30 20 73 65 63 6F 6E 64 73 
TXT: 19.03.2020, 19:48:07 |           CurPower() | 0
HEX: 19.03.2020, 19:48:07 |           CurPower() | 30 
TXT: 19.03.2020, 19:48:07 |    Update(Old-State) | Down (3) [if=2]
HEX: 19.03.2020, 19:48:07 |    Update(Old-State) | 44 6F 77 6E 20 28 33 29 20 5B 69 66 3D 32 5D 
TXT: 19.03.2020, 19:48:07 |      StartTimerOff() | 120 seconds
HEX: 19.03.2020, 19:48:07 |      StartTimerOff() | 31 32 30 20 73 65 63 6F 6E 64 73 
TXT: 19.03.2020, 19:48:37 |           CurPower() | 0
HEX: 19.03.2020, 19:48:37 |           CurPower() | 30 
TXT: 19.03.2020, 19:48:37 |    Update(Old-State) | Down (3) [if=2]
HEX: 19.03.2020, 19:48:37 |    Update(Old-State) | 44 6F 77 6E 20 28 33 29 20 5B 69 66 3D 32 5D 
TXT: 19.03.2020, 19:48:37 |      StartTimerOff() | 120 seconds
HEX: 19.03.2020, 19:48:37 |      StartTimerOff() | 31 32 30 20 73 65 63 6F 6E 64 73 
TXT: 19.03.2020, 19:49:07 |           CurPower() | 0
HEX: 19.03.2020, 19:49:07 |           CurPower() | 30 
TXT: 19.03.2020, 19:49:07 |    Update(Old-State) | Down (3) [if=2]
HEX: 19.03.2020, 19:49:07 |    Update(Old-State) | 44 6F 77 6E 20 28 33 29 20 5B 69 66 3D 32 5D 
TXT: 19.03.2020, 19:49:07 |      StartTimerOff() | 120 seconds
HEX: 19.03.2020, 19:49:07 |      StartTimerOff() | 31 32 30 20 73 65 63 6F 6E 64 73 
TXT: 19.03.2020, 19:49:37 |           CurPower() | 0
HEX: 19.03.2020, 19:49:37 |           CurPower() | 30 
TXT: 19.03.2020, 19:49:37 |    Update(Old-State) | Down (3) [if=2]
HEX: 19.03.2020, 19:49:37 |    Update(Old-State) | 44 6F 77 6E 20 28 33 29 20 5B 69 66 3D 32 5D 
TXT: 19.03.2020, 19:49:37 |      StartTimerOff() | 120 seconds
HEX: 19.03.2020, 19:49:37 |      StartTimerOff() | 31 32 30 20 73 65 63 6F 6E 64 73 
TXT: 19.03.2020, 19:50:07 |           CurPower() | 0
HEX: 19.03.2020, 19:50:07 |           CurPower() | 30 
TXT: 19.03.2020, 19:50:07 |    Update(Old-State) | Down (3) [if=2]
HEX: 19.03.2020, 19:50:07 |    Update(Old-State) | 44 6F 77 6E 20 28 33 29 20 5B 69 66 3D 32 5D 
TXT: 19.03.2020, 19:50:07 |      StartTimerOff() | 120 seconds
HEX: 19.03.2020, 19:50:07 |      StartTimerOff() | 31 32 30 20 73 65 63 6F 6E 64 73 
TXT: 19.03.2020, 19:50:37 |           CurPower() | 0
HEX: 19.03.2020, 19:50:37 |           CurPower() | 30 
TXT: 19.03.2020, 19:50:37 |    Update(Old-State) | Down (3) [if=2]
HEX: 19.03.2020, 19:50:37 |    Update(Old-State) | 44 6F 77 6E 20 28 33 29 20 5B 69 66 3D 32 5D 
TXT: 19.03.2020, 19:50:37 |      StartTimerOff() | 120 seconds
HEX: 19.03.2020, 19:50:37 |      StartTimerOff() | 31 32 30 20 73 65 63 6F 6E 64 73 
TXT: 19.03.2020, 19:51:07 |           CurPower() | 0
HEX: 19.03.2020, 19:51:07 |           CurPower() | 30 
TXT: 19.03.2020, 19:51:07 |    Update(Old-State) | Down (3) [if=2]
HEX: 19.03.2020, 19:51:07 |    Update(Old-State) | 44 6F 77 6E 20 28 33 29 20 5B 69 66 3D 32 5D 
TXT: 19.03.2020, 19:51:07 |      StartTimerOff() | 120 seconds
HEX: 19.03.2020, 19:51:07 |      StartTimerOff() | 31 32 30 20 73 65 63 6F 6E 64 73 
TXT: 19.03.2020, 19:51:37 |           CurPower() | 0
HEX: 19.03.2020, 19:51:37 |           CurPower() | 30 
TXT: 19.03.2020, 19:51:37 |    Update(Old-State) | Down (3) [if=2]
HEX: 19.03.2020, 19:51:37 |    Update(Old-State) | 44 6F 77 6E 20 28 33 29 20 5B 69 66 3D 32 5D 
TXT: 19.03.2020, 19:51:37 |      StartTimerOff() | 120 seconds
HEX: 19.03.2020, 19:51:37 |      StartTimerOff() | 31 32 30 20 73 65 63 6F 6E 64 73 

Hast du versucht wie vorgeschlagen den Aus Wert auf 0,1 Watt zu setzen?

Ich werde im Debug noch erweitern, die eingestellten Werte des Modules mit ausgeben, sieht dann so aus:

TXT: 20.03.2020, 07:28:53 |           CurPower() | 2,94
TXT: 20.03.2020, 07:28:53 |     Update(Settings) | Done: 0,8w (3sec.) | Off: 0,6w (10sec.)
TXT: 20.03.2020, 07:28:53 |    Update(Old-State) | Off (0) [if=4]
TXT: 20.03.2020, 07:28:53 |        EnergyMeter() | Reset duration
TXT: 20.03.2020, 07:28:53 |        EnergyMeter() | Reset energy (85,6)
TXT: 20.03.2020, 07:28:53 | UpdateState(New-State) | Machine running (2)
TXT: 20.03.2020, 07:28:53 |                      | -------------------------------------------------
TXT: 20.03.2020, 07:29:02 |           CurPower() | 3,32
TXT: 20.03.2020, 07:29:02 |     Update(Settings) | Done: 0,8w (3sec.) | Off: 0,6w (10sec.)
TXT: 20.03.2020, 07:29:02 |        EnergyMeter() | Set energy: 0
TXT: 20.03.2020, 07:29:30 |           CurPower() | 2,57
TXT: 20.03.2020, 07:29:30 |     Update(Settings) | Done: 0,8w (3sec.) | Off: 0,6w (10sec.)
TXT: 20.03.2020, 07:29:30 |        EnergyMeter() | Set energy: 0
TXT: 20.03.2020, 07:29:38 |           CurPower() | 1,56
TXT: 20.03.2020, 07:29:38 |     Update(Settings) | Done: 0,8w (3sec.) | Off: 0,6w (10sec.)
TXT: 20.03.2020, 07:29:38 |        EnergyMeter() | Set energy: 0
TXT: 20.03.2020, 07:29:46 |           CurPower() | 0,52
TXT: 20.03.2020, 07:29:46 |     Update(Settings) | Done: 0,8w (3sec.) | Off: 0,6w (10sec.)
TXT: 20.03.2020, 07:29:46 |    Update(Old-State) | Machine running (2) [if=1]
TXT: 20.03.2020, 07:29:46 |        EnergyMeter() | Set energy: 0
TXT: 20.03.2020, 07:29:46 |     StartTimerDone() | 3 seconds
TXT: 20.03.2020, 07:29:49 |           CurPower() | 0,52
TXT: 20.03.2020, 07:29:49 |  EndTimer(Old-State) | 2
TXT: 20.03.2020, 07:29:49 | UpdateState(New-State) | Down (3)
TXT: 20.03.2020, 07:29:49 |                      | -------------------------------------------------
TXT: 20.03.2020, 07:31:11 |           CurPower() | 0,52
TXT: 20.03.2020, 07:31:11 |     Update(Settings) | Done: 0,8w (3sec.) | Off: 0,6w (10sec.)
TXT: 20.03.2020, 07:31:11 |    Update(Old-State) | Down (3) [if=2]
TXT: 20.03.2020, 07:31:11 |      StartTimerOff() | 10 seconds
TXT: 20.03.2020, 07:31:21 |           CurPower() | 0,52
TXT: 20.03.2020, 07:31:21 |  EndTimer(Old-State) | 3
TXT: 20.03.2020, 07:31:21 | UpdateState(New-State) | Off (0)
TXT: 20.03.2020, 07:31:21 |                      | -------------------------------------------------

Gerade mal von 0,5Watt auf 0,1Watt umgestellt, jetzt hat er ihn deaktiviert. Könnte aber Zufall sein, hat in der Vergangenheit ja auch immer mal geklappt, wenn ich im Konfig Dialog was geändert habe.
Zumal ich ja 0,0Watt im liefernden Wert habe, warum sollte das einen Unterschied machen?
In meinem Debug scheint es, als würde er den Timer immer wieder auf´s neue starten!?

@ChristianL

Bitte auf Version v1.2 Build: 200320 BETA updaten, und nochmals ein Debug-Log (am besten nur die TXT Zeilen) posten.

Zumal ich ja 0,0Watt im liefernden Wert habe, warum sollte das einen Unterschied machen?

Das hatte ich schon geschrieben, der Hilfetext im Modul ist doch eindeutig.

Zustand Aus:
… gilt nach Status Fertig, und Unterschreitung des Wertes und Ablauf der Verzögerungszeit, Überschreitung = Zustand Ein

Stichwort = Unterschreitung

Ja aber sorry, was ist denn falsch an der Logik:
Waschine fertig = 2 Watt, Moduleinstellung 4Watt / 90sek.
OK
Waschine aus = 0 Watt, Moduleinstellung 0,5Watt / 120sek.
NOK?!

In beiden Fällen handelt es eindeutg um eine Unterschreitung

Beim Update habe ich eine Fehlermeldung im Log:

20.03.2020, 08:18:36 | ScriptEngine | Result for Event 30006
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>185</b><br />
<br />
<b>Warning</b>:  Variable #0 existiert nicht in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>186</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>322</b><br />
<br />
<b>Warning</b>:  Variable #0 existiert nicht in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>187</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>154</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>155</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>322</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>322</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>279</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>192</b><br />
<br />
<b>Warning</b>:  Variable #0 existiert nicht in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>194</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>322</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>192</b><br />
<br />
<b>Warning</b>:  Variable #0 existiert nicht in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>194</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>288</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>224</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>225</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>249</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>250</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>322</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/var/lib/symcon/modules/GeraeteStatus/GeraeteStatus/module.php</b> on line <b>322</b><br />

Nichts falsch, alles ok.
Der Instanz Check war bis jetzt nur im Apply Teil des Moduls, habe ich geändert, so das dies bei jedem Update gecheckt wird.

Etwas irrefürhrend könnte auch sein das nach erreichen des Zustandes: Fertig,
die Verzögerung für „Zustand: Aus“ erst gestartet wird, wenn vom Energiemesser wieder ein neuer Wert gesendet wird !
habe diesen Umstand im FAQ Teil der Readme eingetragen.

Hi Simon.

So, gerade nochmal ne Wäsche durchgelaufen, mit dem gleichen Ergebnis.
Am Ende bleibt er immer im Status Fertig hängen.
Alle Bedingungen sind erfüllt, aber so geht es nun unendlich weiter…da passt irgendwas nicht :-/
Debug im Anhang.

dump-2.txt (4.97 KB)