Waschmaschine fertig

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

Vorheriges Thema - Nächstes Thema

Damian

#75
Zitat von: romakrau am 25 Januar 2022, 22:18:23
In den Tiefen des Wiki's habe ich die Lösung gefunden. Das Attribut heisst "timestamp-on-change-reading" . Dadurch wird eine Aktualiserung des Timestamp des Readings unterdrückt wenn kein Event ausgelöst wird. Genial  :D

Wäre da nicht besser event-on-change-reading zu setzen? Da wird auch kein Timestamp gesetzt, vor allem wird kein Event erzeugt, wenn sich das Reading nicht ändert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

romakrau

#76
Hallo Damian,

Danke das Du dir nochmals Gedanken gemacht hast. Der Sachverhalt ist nicht ganz einfach und ich versuche es mal so zu erklären wie ich es verstanden habe.

Das MQTT-Device "Trockner" wird alle 30 Sekunden von der Messdose aktualisiert wobei der Timestamp immer neu gesetzt. Es wird aber kein "Event" erzeugt da "event-on-change-reading" gesetzt ist. Die Abfrage "[?Trockner:SENSOR_ENERGY_Power:sec] > 300" konnte also niemals > 30 werden. Außerdem ist zum Auslösen des Kommandos immer ein Event in Verbindung mit der Abfrage des Alters des Timestamps vonnöten. Das mit dem Fragezeichen lt. Commandref erwies sich auch als falsch. Durch das Setzen des Attributs "timestamp-on-change-reading" konnte die Aktualisierung des Timestamps unterbunden werden. Theoretisch funktioniert es mittels Setzen des cmd_3 jetzt. Praktisch muss sich noch erweisen, da ich nicht die Hausbewohner wecken wollte  ;D. Das DOIF sieht mittlerweile so aus:

([Trockner:SENSOR_ENERGY_Power] > 0.9 and ([DF_Trockner:state] eq "cmd_4" or [DF_Trockner:state] eq "initialized"))
(set $SELF Status an, set $SELF Dauer 0, set $SELF Startkw [Trockner:SENSOR_ENERGY_Total] , ({Log 3, "Trockner: Ein"}))
DOELSEIF
([Trockner:SENSOR_ENERGY_Power] > 20 and [DF_Trockner:state] eq "cmd_1")
(set $SELF Status ProgStart, ({Log 3, "Trockner: Programmstart"}))
DOELSEIF ([Trockner:SENSOR_ENERGY_Power] < 1 and [DF_Trockner:state] eq "cmd_2")
(set $SELF Dauer {(split(' ', gmtime(ReadingsAge("$SELF","Status",0))))[3]}, set $SELF Status ProgEnde, set $SELF Endkw [Trockner:SENSOR_ENERGY_Total], set DY_Trockner on, ({Log 3, "Trockner: Programmende"}))
DOELSEIF
((([+00:03] and [Trockner:SENSOR_ENERGY_Power:sec] > 300) or [Trockner:SENSOR_ENERGY_Power] > 20 )and [DF_Trockner:state] eq "cmd_3" )
(set $SELF Status aus, set DY_Trockner off, ({Log 3, "Trockner: Aus"}))


Gruß
Roman

Damian

Naja, ich sehe hier:

([+00:03] and [Trockner:SENSOR_ENERGY_Power:sec] > 300)..

eine Angabe, die über einen Timer triggert, daher braucht die Abfrage der Zeit nicht zu triggern, also

([+00:03] and [?Trockner:SENSOR_ENERGY_Power:sec] > 300)..

bei den anderen Abfragen, z. B.:

[Trockner:SENSOR_ENERGY_Power] > 20

braucht man auch keinen Trigger, wenn sich der Wert von SENSOR_ENERGY_Power nicht ändert.

Daher, sollte event-on-change auf das Reading kein Problem darstellen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

romakrau

Das mit dem [? funktioniert nicht bei mir. Weisst du warum.

Damian

Zitat von: romakrau am 26 Januar 2022, 13:42:44
Das mit dem [? funktioniert nicht bei mir. Weisst du warum.

nein, wahrscheinlich ist der Wert nicht über 300
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Rheingold

Zitat von: Ellert am 21 Januar 2022, 18:24:15
## 3
DOELSEIF (["^PIR2(4|5)$:^Counter: "] and [?Waschmaschine_Pwr:power] < 0.1 and [?$SELF] eq "cmd_2")
   (set sag1 tts :gong: Die Waesche ist gewaschen und geschleudert)


Mal ganz blöd gefragt, was macht das " ["^PIR2(4|5)$:^Counter: "] "?  :o
Fhem auf Raspi 3; Jeelink mit 6x TX29DTH; CUL433 mit 9x RCS 1000 N und Somfy-Steuerung; CUL868; MAX-Cube + Thermostate; Philips Hue & Ikea Tradfri; Google Home Assistant; FTUI für Tablet und SmartPhone via Reverse-Proxy

Damian

Zitat von: Rheingold am 18 März 2022, 12:40:45
Mal ganz blöd gefragt, was macht das " ["^PIR2(4|5)$:^Counter: "] "?  :o

Wenn das Device "PIR24" oder "PIR25" beginnend mit dem Event  "Counter:" triggert ...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF