Waschmaschine fertig

Begonnen von moes, 07 Februar 2016, 09:19:27

Vorheriges Thema - Nächstes Thema

romakrau

Nachdem ich die in Post #76 beschriebenen Änderung vorgenommen habe funktionierte das DOIF einwandfrei. Ich musste jetzt allerdings die Steckdose wechseln und habe diese nach der Anleitung bei Tasmota kalibriert. Der gemeldete Wert SENSOR_ENERGY_Power pendelt im Zustand "Maschine fertig" um eine Ziffer. Dies habe ich mittels dem Attribut event-on-change-reading SENSOR_ENERGY_Power:2 unterbunden. Die Aktualisierung des Timestamps habe ich mittels timestamp-on-change-reading unterbunden. Allerdings funktioniert die Erkennung im DOIF nicht. Wird der Timestamp trotz Threshold von 2 ermittelt?

Auszug log-File:
2024-08-15_10:19:17 Waschmaschine SENSOR_ENERGY_Power: 3
2024-08-15_10:29:17 Waschmaschine SENSOR_ENERGY_Power: 16

Gruß Roman

superverbleit

Hallo Zusammen,

ich hätte jetzt nochmals eine Frage.
Ich habe mein Konstrukt jetzt soweit zusammen und es funktioniert eigentlich auch soweit alles.

define Trockner DOIF ([UG.Technik.Trockner.SchaltLeistung:state:d] > 4 and [?Trockner] =~ "cmd_6|initialized|initialize")
   (({Log 3, "Trockner: Ein Step1"}))
   (set Stefan_Pushnachricht msg 'Trockner: Ein Step1')
DOELSEIF ([UG.Technik.Trockner.SchaltLeistung:state:d] > 4 and [?$SELF] =~ "cmd_1")
   (({Log 3, "Trockner: Ein Step2"}))
   (set Stefan_Pushnachricht msg 'Trockner: Ein Step2')
DOELSEIF ([UG.Technik.Trockner.SchaltLeistung:state:d] > 100 and [?Trockner] eq "cmd_2")
   (({Log 3, "Trockner: Programmstart"}))
   (set Stefan_Pushnachricht msg 'Trockner: Programmstart')
DOELSEIF ([UG.Technik.Trockner.SchaltLeistung:state:d] > 100 and [?Trockner] =~ "cmd_3|cmd_4")
   (({Log 3, "Trockner: Doch noch nicht fertig"}))
   (set Stefan_Pushnachricht msg 'Trockner: Doch noch nicht fertig')
DOELSEIF ([UG.Technik.Trockner.SchaltLeistung:state:d] < 5 and [?Trockner] =~ "cmd_3|cmd_4")
   (({Log 3, "Trockner: Programmende"}))
   (set Stefan_Pushnachricht msg 'Trockner: Programmende')
DOELSEIF ([UG.Technik.Trockner.SchaltLeistung:state:d] < 2 or [UG.Technik.Trockner.SchaltLeistung:state:d] > 100 and [?Trockner] eq "cmd_5")
   (({Log 3, "Trockner: Aus"}))
   (set Stefan_Pushnachricht msg 'Trockner: Aus')

Einen Schönheitsfehler hat es aber noch, wie bekomme ich es hin, das die Meldung Trockner:Aus nur gemeldet wird, wenn ich alle Schleifen ab dem 2. DOELSEIF durchlaufen habe.
Kann ich mir da eine Hilfsvariable setzen und iim letzten DOELSIF eine verschachtelte IF Abfrage einbauen.
Der Grund ist, das ich des öfteren Trockner: Ein Step1 und dann gleich Trockner: Aus bekomme. Diese 2 Meldungen will ich unterdrücken und nur melden, wenn der Trockner auch wirklich läuft.

Ich bräuchte dann irgendwie so ein Konstrukt:
DOELSEIF ([UG.Technik.Trockner.SchaltLeistung:state:d] < 2 or [UG.Technik.Trockner.SchaltLeistung:state:d] > 100 and [?Trockner] eq "cmd_5")
   if(Status Trockner:Programmstart durchlaufen)
      (({Log 3, "Trockner: Aus"}))
      (set Stefan_Pushnachricht msg 'Trockner: Aus')


Danke schon mal für einen kleinen Programmiertipp.:-)