FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: micomat am 11 Januar 2017, 14:08:56

Titel: (Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 11 Januar 2017, 14:08:56
Hallo zusammen,

ich habe folgende DOIFs die jeweils den dummy Waschmaschinenstatus bedienen bzw die Benachrichtigung durchfuehren.

define doif_an DOIF (([Strom_Waschmaschine_Pwr:power]>30) and ([Waschmaschinenstatus:state] ne "on")) (set Waschmaschinenstatus on)
attr doif_an do always


define doif_fertig DOIF (([Strom_Waschmaschine_Pwr:power]<5 ) and ([Waschmaschinenstatus:state] eq "on")) (set Waschmaschinenstatus off,set telegrambot message Waschmaschine ist fertig!)
attr doif_fertig wait 300
attr doif_fertig do always


Mein Problem ist jetzt, dass trotz des wait timers die Benachrichtigung kommt, 5 Minuten nachdem die 5Watt Schwelle unterschritten und wieder überschritten wurde...

Beispiellog:
2017-01-11_13:54:05 Strom_Waschmaschine_Pwr power: 552.08
2017-01-11_13:54:14 Strom_Waschmaschine_Pwr power: 512.04
2017-01-11_13:55:12 Strom_Waschmaschine_Pwr power: 161.28
2017-01-11_13:55:20 Strom_Waschmaschine_Pwr power: 20.16
2017-01-11_13:55:43 Strom_Waschmaschine_Pwr power: 37.8
2017-01-11_13:55:51 Strom_Waschmaschine_Pwr power: 3.68
2017-01-11_13:55:59 Strom_Waschmaschine_Pwr power: 3.66
2017-01-11_13:56:07 Strom_Waschmaschine_Pwr power: 3.68
2017-01-11_13:56:15 Strom_Waschmaschine_Pwr power: 32.92
2017-01-11_13:56:23 Strom_Waschmaschine_Pwr power: 27.76
2017-01-11_13:56:31 Strom_Waschmaschine_Pwr power: 34.37
2017-01-11_13:56:39 Strom_Waschmaschine_Pwr power: 30.99
2017-01-11_13:56:47 Strom_Waschmaschine_Pwr power: 35.34
2017-01-11_13:56:51 Strom_Waschmaschine_Pwr power: 39.14
2017-01-11_13:56:55 Strom_Waschmaschine_Pwr power: 33.66
2017-01-11_13:57:03 Strom_Waschmaschine_Pwr power: 38.45
2017-01-11_13:57:14 Strom_Waschmaschine_Pwr power: 35.78
2017-01-11_13:57:19 Strom_Waschmaschine_Pwr power: 42.02
2017-01-11_13:57:27 Strom_Waschmaschine_Pwr power: 34.91
2017-01-11_13:57:35 Strom_Waschmaschine_Pwr power: 42.05
2017-01-11_13:57:43 Strom_Waschmaschine_Pwr power: 266.45
2017-01-11_13:57:51 Strom_Waschmaschine_Pwr power: 1224.62
2017-01-11_13:58:00 Strom_Waschmaschine_Pwr power: 1204.85
2017-01-11_13:58:08 Strom_Waschmaschine_Pwr power: 1219
2017-01-11_13:58:16 Strom_Waschmaschine_Pwr power: 1172.27
2017-01-11_13:58:24 Strom_Waschmaschine_Pwr power: 1186.75
2017-01-11_13:58:38 Strom_Waschmaschine_Pwr power: 1166.85
2017-01-11_13:58:46 Strom_Waschmaschine_Pwr power: 1178.88
2017-01-11_13:58:54 Strom_Waschmaschine_Pwr power: 1140.67
2017-01-11_13:59:02 Strom_Waschmaschine_Pwr power: 1190.35
2017-01-11_13:59:20 Strom_Waschmaschine_Pwr power: 1176.99
2017-01-11_13:59:24 Strom_Waschmaschine_Pwr power: 1201.4
2017-01-11_13:59:31 Strom_Waschmaschine_Pwr power: 1156.58
2017-01-11_13:59:32 Strom_Waschmaschine_Pwr power: 1156.59
2017-01-11_13:59:40 Strom_Waschmaschine_Pwr power: 1171.9
2017-01-11_13:59:54 Strom_Waschmaschine_Pwr power: 1157.04
2017-01-11_14:00:02 Strom_Waschmaschine_Pwr power: 1179.8
2017-01-11_14:00:10 Strom_Waschmaschine_Pwr power: 1146.27
2017-01-11_14:00:21 Strom_Waschmaschine_Pwr power: 1191.31
2017-01-11_14:00:32 Strom_Waschmaschine_Pwr power: 1164.77
2017-01-11_14:00:40 Strom_Waschmaschine_Pwr power: 1198.47
2017-01-11_14:00:49 Strom_Waschmaschine_Pwr power: 1157.66
2017-01-11_14:00:56 Strom_Waschmaschine_Pwr power: 1163.65
2017-01-11_14:01:10 Strom_Waschmaschine_Pwr power: 1144.87
2017-01-11_14:01:18 Strom_Waschmaschine_Pwr power: 1173.44
2017-01-11_14:01:26 Strom_Waschmaschine_Pwr power: 1145.42
2017-01-11_14:01:34 Strom_Waschmaschine_Pwr power: 1193.53
2017-01-11_14:01:48 Strom_Waschmaschine_Pwr power: 1159.18
2017-01-11_14:01:56 Strom_Waschmaschine_Pwr power: 1199.11


Um 13:51:51 war die Aufnahme unter 5Watt um 14:01:55 habe ich die Benachrichtigung erhalten obwohl die Leistung danach wieder hoeher war?
Habe ich hier einen Gedankenfehler?
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: CoolTux am 11 Januar 2017, 14:18:09
DOIF arbeitet Zustandbedingt. Das gilt aber nur pro DOIF Instanz. Du hast aber für beide Zustände jeweils ein DOIF.
Packe beides in eine DOIF Instanz und es wird funktionieren.
Schaue Dir die diversen Beispiele dazu an. Gerade Waschmaschine und DOIF findest Du hier zu Hauf.
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 11 Januar 2017, 14:52:08
Ich tat wie mir aufgetragen... Leider mit dem gleichen Resultat.

define doif_WaMa DOIF ([Strom_Waschmaschine_Pwr:power] == 0 and [?Waschmaschinenstatus] ne "off") (set Waschmaschinenstatus off)
DOELSEIF ([Strom_Waschmaschine_Pwr:power] > 25 and [?Waschmaschinenstatus] ne "on") (set Waschmaschinenstatus on)
DOELSEIF ([Strom_Waschmaschine_Pwr:power] < 5 and [?Waschmaschinenstatus] eq "on") (set Waschmaschinenstatus state off,set telegrambot message Waschmaschine fertig!)
attr doif_WaMa do always
attr doif_waMa wait 60:0:300


2017-01-11_14:37:49 Strom_Waschmaschine_Pwr power: 1.46
2017-01-11_14:39:19 Strom_Waschmaschine_Pwr power: 1.06
2017-01-11_14:42:10 Strom_Waschmaschine_Pwr power: 14.52


Um 14:42:49 bekam ich die Nachricht "Fertig" obwohl Leistung mit 14.52 > 5 ist.
:o
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: CoolTux am 11 Januar 2017, 15:08:05
Er habe sich nicht genug belesen. So lösche er so always und staune.
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 11 Januar 2017, 15:09:33
er lösche und freue sich :)
danke fuers denkfehler aufloesen
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: Per am 11 Januar 2017, 15:11:03
Zitat von: micomat am 11 Januar 2017, 14:52:08Um 14:42:49 bekam ich die Nachricht "Fertig" obwohl Leistung mit 14.52 > 5 ist.
Aber kleiner als 25 W. Und nur das setzt den Timer zurück.
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: automatisierer am 11 Januar 2017, 15:30:02
Ich nehme mal an, dass du einen HM-ES-PMSw1-Pl nutzt. Die Events kommen im 8 Sekunden Takt, ich hab bei mir mal die Einstellungen angepasst, so dass statt ~2000 €vents/h nur noch gute 150 kommen. Zum einen muss das Device nicht alle 8 Sekunden Funken und somit den Funk überstrapazieren - zum anderen hat das System dann auch nicht mehr so viel zu tun. Wir haben 2 Waschmaschinen und nen Trockner... ~6000 Events/h...
Alle 2 oder 3 Minuten senden das Device ja so oder so.


R-txMinDly 16 s
R-txThrCur 3000 mA
R-txThrFrq 1 Hz
R-txThrPwr 400 W
R-txThrVlt 10 V


Und dann halt noch event-on-change-reading etsprechend dem was man so braucht...

p.s. bin dem mit Ellerts neuem Modul DOIFtools auf die Schliche gekommen.
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 11 Januar 2017, 15:37:09
Zitat von: Per am 11 Januar 2017, 15:11:03
Aber kleiner als 25 W. Und nur das setzt den Timer zurück.

Aber ich frage doch nach groesser 25W im ersten DOELSEIF
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 11 Januar 2017, 15:38:17
Zitat von: automatisierer am 11 Januar 2017, 15:30:02
Ich nehme mal an, dass du einen HM-ES-PMSw1-Pl nutzt. Die Events kommen im 8 Sekunden Takt, ich hab bei mir mal die Einstellungen angepasst, so dass statt ~2000 €vents/h nur noch gute 150 kommen. Zum einen muss das Device nicht alle 8 Sekunden Funken und somit den Funk überstrapazieren - zum anderen hat das System dann auch nicht mehr so viel zu tun. Wir haben 2 Waschmaschinen und nen Trockner... ~6000 Events/h...
Alle 2 oder 3 Minuten senden das Device ja so oder so.


R-txMinDly 16 s
R-txThrCur 3000 mA
R-txThrFrq 1 Hz
R-txThrPwr 400 W
R-txThrVlt 10 V


Und dann halt noch event-on-change-reading etsprechend dem was man so braucht...

p.s. bin dem mit Ellerts neuem Modul DOIFtools auf die Schliche gekommen.

Danke fuer den Tip, das TXmindelay war mir noch unbekannt :)
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 11 Januar 2017, 15:55:06
Zitat von: CoolTux am 11 Januar 2017, 15:08:05
Er habe sich nicht genug belesen. So lösche er so always und staune.

Sorry.. staune das es immer noch so ist wie vorher =(

2017-01-11_15:45:33 Strom_Waschmaschine_Pwr power: 16.21
2017-01-11_15:48:33 Strom_Waschmaschine_Pwr power: 1.95
2017-01-11_15:51:18 Strom_Waschmaschine_Pwr power: 16.09

Um 15:53:33 kommt die Meldung. "do always" wars also wohl nicht
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: CoolTux am 11 Januar 2017, 15:58:49
Gib mal bitte ein list vom DOIF Device
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: kumue am 11 Januar 2017, 16:05:34
Zitat von: micomat am 11 Januar 2017, 14:08:56
define doif_fertig DOIF (([Strom_Waschmaschine_Pwr:power]<5 ) and ([Waschmaschinenstatus:state] eq "on")) (set Waschmaschinenstatus off,set telegrambot message Waschmaschine ist fertig!)
attr doif_fertig wait 300
attr doif_fertig do always


Wenn du mit wait arbeitest, musst du doch die eine Befehlssequenz aufsplitten...
Also aus
(set Waschmaschinenstatus off,set telegrambot message Waschmaschine ist fertig!)
mache
(set Waschmaschinenstatus off) (set telegrambot message Waschmaschine ist fertig!)

Wenn Du mit dem off noch 5min warten willst. dann sollte das Attribut so aussehen.
attr doif_fertig wait 300,0
300sec mit dem off warten und sofort nach dem off gleich die Message rausschicken.
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 11 Januar 2017, 16:07:14
Ich hab jetzt die Schwelle mal auf 12W einstellt damit ich mit einer LED-Lampe testen kann.
Hier das list:

Internals:
   CFGFN
   DEF        ([Strom_Waschmaschine_Pwr:power] == 0 and [?Waschmaschinenstatus] ne "off") (set Waschmaschinenstatus off) DOELSEIF ([Strom_Waschmaschine_Pwr:power] > 12 and [?Waschmaschinenstatus] ne "on") (set Waschmaschinenstatus on) DOELSEIF ([Strom_Waschmaschine_Pwr:power] < 5 and [?Waschmaschinenstatus] eq "on") (set Waschmaschinenstatus  off,set telegrambot message Waschmaschine fertig!)
   NAME       doif_Waschmaschine
   NR         4489
   NTFY_ORDER 50-doif_Waschmaschine
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2017-01-11 16:03:36   Device          Strom_Waschmaschine_Pwr
     2017-01-11 15:53:49   cmd             2
     2017-01-11 15:53:49   cmd_event       Strom_Waschmaschine_Pwr
     2017-01-11 15:53:49   cmd_nr          2
     2017-01-11 16:03:36   e_Strom_Waschmaschine_Pwr_power 15.91
     2017-01-11 15:53:49   state           cmd_2
     2017-01-11 15:53:33   wait_timer      no timer
   Condition:
     0          ReadingValDoIf($hash,'Strom_Waschmaschine_Pwr','power','','',AttrVal($hash->{NAME},'notexist',undef)) == 0 and InternalDoIf($hash,'Waschmaschinenstatus','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) ne "off"
     1          ReadingValDoIf($hash,'Strom_Waschmaschine_Pwr','power','','',AttrVal($hash->{NAME},'notexist',undef)) > 12 and InternalDoIf($hash,'Waschmaschinenstatus','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) ne "on"
     2          ReadingValDoIf($hash,'Strom_Waschmaschine_Pwr','power','','',AttrVal($hash->{NAME},'notexist',undef)) < 5 and InternalDoIf($hash,'Waschmaschinenstatus','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on"
   Devices:
     0           Strom_Waschmaschine_Pwr
     1           Strom_Waschmaschine_Pwr
     2           Strom_Waschmaschine_Pwr
     all         Strom_Waschmaschine_Pwr
   Do:
     0:
       0          set Waschmaschinenstatus off
     1:
       0          set Waschmaschinenstatus on
     2:
       0          set Waschmaschinenstatus  off,set telegrambot message Waschmaschine fertig!
     3:
   Helper:
     event      boot: off,current: 130,eState: E: 1929 P: 15.91 I: 130 U: 227.4 f: 50.02,energy: 1929,energyCalc: 1989,frequency: 50.02,power: 15.91,1929,voltage: 227.4
     globalinit 1
     last_timer 0
     sleepdevice Strom_Waschmaschine_Pwr
     sleepsubtimer -1
     sleeptimer -1
     timerdev   Strom_Waschmaschine_Pwr
     timerevent boot: off,current: 131,eState: E: 1926.4 P: 16 I: 131 U: 227 f: 50.01,energy: 1926.4,energyCalc: 1986.4,frequency: 50.01,power: 16,1926.4,voltage: 227
     triggerDev Strom_Waschmaschine_Pwr
     timerevents:
       boot: off
       current: 131
       eState: E: 1926.4 P: 16 I: 131 U: 227 f: 50.01
       energy: 1926.4
       energyCalc: 1986.4
       frequency: 50.01
       power: 16
       1926.4
       voltage: 227
     timereventsState:
       boot: off
       current: 131
       eState: E: 1926.4 P: 16 I: 131 U: 227 f: 50.01
       energy: 1926.4
       energyCalc: 1986.4
       frequency: 50.01
       power: 16
       state: 1926.4
       voltage: 227
     triggerEvents:
       boot: off
       current: 130
       eState: E: 1929 P: 15.91 I: 130 U: 227.4 f: 50.02
       energy: 1929
       energyCalc: 1989
       frequency: 50.02
       power: 15.91
       1929
       voltage: 227.4
     triggerEventsState:
       boot: off
       current: 130
       eState: E: 1929 P: 15.91 I: 130 U: 227.4 f: 50.02
       energy: 1929
       energyCalc: 1989
       frequency: 50.02
       power: 15.91
       state: 1929
       voltage: 227.4
   Internals:
     0           Waschmaschinenstatus:STATE
     1           Waschmaschinenstatus:STATE
     2           Waschmaschinenstatus:STATE
     all         Waschmaschinenstatus:STATE
   Itimer:
   Readings:
     0           Strom_Waschmaschine_Pwr:power
     1           Strom_Waschmaschine_Pwr:power
     2           Strom_Waschmaschine_Pwr:power
     all         Strom_Waschmaschine_Pwr:power
   Regexp:
     0:
     1:
     2:
     All:
   State:
   Trigger:
Attributes:
   wait       60:0:300
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: automatisierer am 11 Januar 2017, 16:18:30
alternative - den dummy Waschmaschinestatus weg lassen und das DOIF selber zum anzeigen des Status nutzen.

define Waschmaschine DOIF
([Strom_Waschmaschine_Pwr:power] == 0 )
DOELSEIF
([Strom_Waschmaschine_Pwr:power] > 12)
DOELSEIF
([Strom_Waschmaschine_Pwr:power] < 5) (set telegrambot message Waschmaschine fertig!)

attr Waschmaschine cmdState aus|laeuft|fertig
attr Waschmaschine wait 60:0:300



bei 'wait 300,0' wird der zweite Teil des aufgespitteten Ausführungsteils sofort nach dem ersten ausgeführt - bringt also eigentlich nix...
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: automatisierer am 11 Januar 2017, 16:32:21
Zitat von: micomat am 11 Januar 2017, 16:07:14
Ich hab jetzt die Schwelle mal auf 12W einstellt damit ich mit einer LED-Lampe testen kann.
Hier das list:

Internals:
   CFGFN
   DEF        ([Strom_Waschmaschine_Pwr:power] == 0 and [?Waschmaschinenstatus] ne "off") (set Waschmaschinenstatus off) DOELSEIF ([Strom_Waschmaschine_Pwr:power] > 12 and [?Waschmaschinenstatus] ne "on") (set Waschmaschinenstatus on) DOELSEIF ([Strom_Waschmaschine_Pwr:power] < 5 and [?Waschmaschinenstatus] eq "on") (set Waschmaschinenstatus  off,set telegrambot message Waschmaschine fertig!)


Funktionieren müsste deins allerdings auch - sehe keinen Fehler, bis auf die zwei Leerzeichen im 3. Ausführungsteil hinter Waschmaschinenstatus, sollte aber kein Problem darstellen.
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: kumue am 11 Januar 2017, 16:37:55
([Strom_Waschmaschine_Pwr:power] == 0 and [?Waschmaschinenstatus] ne "off")
(set Waschmaschinenstatus off)
DOELSEIF ([Strom_Waschmaschine_Pwr:power] > 12 and [?Waschmaschinenstatus] ne "on")
(set Waschmaschinenstatus on)
DOELSEIF ([Strom_Waschmaschine_Pwr:power] < 5 and [?Waschmaschinenstatus] eq "on")
(set Waschmaschinenstatus  off) (set telegrambot message Waschmaschine fertig!)

attr doif_fertig wait 60:0:300,0
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: l2r am 11 Januar 2017, 16:48:19
das mit dem aufsplitten erschließt sich mir noch nicht ganz... Er kann es ja auch in einer Befehlssequenz machen und hat somit auch noch 5 min Zeit bis off geschaltet wird, wenn die Maschine mal kurz das Programm wechselt oder aus irgendeinem anderen Grund kurz unter 5w geht. Und ich denke dieser Fall soll mit den 5 Min Wartezeit abgefangen werden...


ZitatSorry.. staune das es immer noch so ist wie vorher =(

2017-01-11_15:45:33 Strom_Waschmaschine_Pwr power: 16.21
2017-01-11_15:48:33 Strom_Waschmaschine_Pwr power: 1.95
2017-01-11_15:51:18 Strom_Waschmaschine_Pwr power: 16.09

Um 15:53:33 kommt die Meldung. "do always" wars also wohl nicht

ist meiner Meinung nach vollkommen logisch:

um 15:48 wird bedingung 3 wahr (<5 W), der Timer für den Versand startet (Müsste auch im DOIF ersichtlich sein).
Um 15:51 ist der Strom wieder >5W, was aber durch keine Bedingung von dir abgefangen wird. Es müsste >25W sein, damit Bedinung 2 wieder greift. Erst wenn eine andere Bediungung als 3 Wahr wird, dann wird der Timer gelöscht, und NICHT, wenn Bedingung 3 nicht mehr wahr ist.

Gruß Michael
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 11 Januar 2017, 16:57:57
Ich danke euch allen :)

Man sollte dem Motto "keep it simple" einfach treu bleiben.
Dummy weg, Status im DOIF anzeigen und schon laeufts.

([Strom_Waschmaschine_Pwr:power] == 0)
DOELSEIF
([Strom_Waschmaschine_Pwr:power]>12)
DOELSEIF ([Strom_Waschmaschine_Pwr:power]<5)
(set telegrambot message Waschmaschine fertig!)
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: automatisierer am 11 Januar 2017, 17:11:54
zu simpel aber auch nicht - beim cmd_2 fehlt noch der Vergleichswert.
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 11 Januar 2017, 20:13:40
natürlich, der ist beim kopieren abhanden gekommen. bei mir ist er da :) habs korrigiert

Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: Per am 12 Januar 2017, 11:41:09
Zitat von: micomat am 11 Januar 2017, 15:37:09
Aber ich frage doch nach groesser 25W im ersten DOELSEIF
Eben, solange kein anderer Vergleich erfüllt ist, ändert DOIF seine Lage nicht und der Wait-Timer zählt weiter und weiter und weiter...
Also einfach wieder größer 5 W reicht nicht.
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 12 Januar 2017, 18:30:18
öh... doch. funktioniert jetzt einwandfrei :)
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: l2r am 12 Januar 2017, 20:47:29
ja richtig. pers Das Zitat bezog sich ja auch auf eine Beitrag von ziemlich am Anfang und wollte glaube ich nur nochmal verdeutlichen dass du zwischen 5 und 25W einen Bereich hast, für den keine Bedingung im DOIF greift.

Jetzt hast du den Bereich zwischen 5 und 12.

Gruß Michael
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: micomat am 12 Januar 2017, 20:48:33
das macht dann sinn  8)
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: tlasrich am 24 Januar 2017, 20:32:19
Ich hätte nun aber noch eine Frage zum Verständnis. Im finalen Code wird der interne Status des Moduls zur Anzeige genutzt. Die Meldung das die Maschine fertig ist aber erst zeitlich verzögert, das würde aber für mein Verständnis bedeuten, das in fhem während des Timerablauf möglicher Weise ein falscher Zustand angezeigt wird. Habe ich das soweit richtig verstanden?

Zum Grund der Frage: Bei unserer neuen Maschine, legt die Maschine immer wieder Pausen ein, in denen die Leistungsaufnahme unter den Grenzwert sinkt.

Gruß
Thorsten
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: Damian am 24 Januar 2017, 21:21:18
Zitat von: tlasrich am 24 Januar 2017, 20:32:19
Ich hätte nun aber noch eine Frage zum Verständnis. Im finalen Code wird der interne Status des Moduls zur Anzeige genutzt. Die Meldung das die Maschine fertig ist aber erst zeitlich verzögert, das würde aber für mein Verständnis bedeuten, das in fhem während des Timerablauf möglicher Weise ein falscher Zustand angezeigt wird. Habe ich das soweit richtig verstanden?

Zum Grund der Frage: Bei unserer neuen Maschine, legt die Maschine immer wieder Pausen ein, in denen die Leistungsaufnahme unter den Grenzwert sinkt.

Gruß
Thorsten

Mit einer Verzögerung durch das Attribut wait wird ja gerade versucht die Anzeige eines falschen Zustands zu vermeiden.

Ohne Wait würde bei jeder Pause der Zustand "Waschmaschine fertig" kommen, obwohl sie sich gerade eine "Strompause" gönnt. Durch das Attribut wait schafft man es diesen kurzen "falschen" Zustand zu vermeiden und den Zustand "Waschmaschine fertig" erst dann zu liefern, wenn die Pause längere Zeit anhält und man so tatsächlich sicher sein kann, dass sie wirklich fertig ist.

Würde man eine Lampe an der Waschmaschine abgreifen, die den tatsächlichen Zustand (fertig) anzeigt, dann bräuchte man die Verzögerung nicht und wüsste ein paar Minuten früher, ob sie wirklich fertig ist.
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: tlasrich am 24 Januar 2017, 21:27:30
Zitat von: kumue am 11 Januar 2017, 16:37:55
([Strom_Waschmaschine_Pwr:power] == 0 and [?Waschmaschinenstatus] ne "off")
(set Waschmaschinenstatus off)
DOELSEIF ([Strom_Waschmaschine_Pwr:power] > 12 and [?Waschmaschinenstatus] ne "on")
(set Waschmaschinenstatus on)
DOELSEIF ([Strom_Waschmaschine_Pwr:power] < 5 and [?Waschmaschinenstatus] eq "on")
(set Waschmaschinenstatus  off) (set telegrambot message Waschmaschine fertig!)

attr doif_fertig wait 60:0:300,0


Also nur damit ich das richtig verstanden habe, wenn das zweite DOELSEIF erfüllt ist beginnt der Timer zu laufen und es wird noch nicht der Status / state Fertig ausgegeben? Der Status wird erst ausgegeben wenn alle Befehle nach Ablauf der Timer ausgegeben?

Sorry wenn ich deshalb noch einmal Nachfrage, mir war / ist einfach noch nicht klar, wann der Status des Moduls aktualisiert wird.

Gruß
Thorsten
Titel: Antw:Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: Damian am 24 Januar 2017, 22:02:16
Zitat von: tlasrich am 24 Januar 2017, 21:27:30
Also nur damit ich das richtig verstanden habe, wenn das zweite DOELSEIF erfüllt ist beginnt der Timer zu laufen und es wird noch nicht der Status / state Fertig ausgegeben? Der Status wird erst ausgegeben wenn alle Befehle nach Ablauf der Timer ausgegeben?

Sorry wenn ich deshalb noch einmal Nachfrage, mir war / ist einfach noch nicht klar, wann der Status des Moduls aktualisiert wird.

Gruß
Thorsten

Mit

wait 60:0:300,0

gibt es beim zweiten Zustand "on" keine Verzögerung. D. h. sobald Strom über 12 Watt und noch nicht im Zustand "on" wird sofort auf Zustand "on" geschaltet.

beim dritten Zustand geht es in den Zustand "off" nach 5 Minuten wenn nicht genügen Strom da war.
im ersten Zustand geht es ebenfalls in den Zustand "off" nach einer Minute, wenn Strom auf Null geht und sie noch nicht "off" war.

Diese Definition mag bei manchen Waschmaschinen gut funktionieren bei manchen gar nicht, je nach dem wie deren Stromverbrauch funktioniert.

Ich persönlich würde versuchen nach Möglichkeit nur mit zwei Zuständen eines DOIF-Moduls auszukommen on/off, denn in diesem Beispiel entspricht sowohl cmd_1 wie auch cmd_3 dem Zustand off. Allerdings wird hier eher der Zustand des Dummys Waschmaschine von Bedeutung sein und nicht der des DOIF-Moduls


Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: tlasrich am 24 Januar 2017, 22:05:49
Danke für die ausführliche Erklärung, ich werde morgen mal versuchen das für meine Maschine umzusetzen.

Noch einen ruhigen Abend,

Thorsten
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: Damian am 24 Januar 2017, 22:09:27
Zitat von: tlasrich am 24 Januar 2017, 22:05:49
Danke für die ausführliche Erklärung, ich werde morgen mal versuchen das für meine Maschine umzusetzen.

Noch einen ruhigen Abend,

Thorsten

Du kannst es erstmal mit einer einfachen Definition anfangen, wie ich sie in der Commandref formuliert habe:

define di_washer DOIF ([power:watt]<2) ({system("wmail washer finished")})
attr di_washer wait 300


Hier sollte der Zustand  des Moduls ohne Dummy ausreichen cmd_1 = steht und cmd_2=läuft
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: Per am 25 Januar 2017, 10:57:34
Zitat von: Damian am 24 Januar 2017, 21:21:18Würde man eine Lampe an der Waschmaschine abgreifen, die den tatsächlichen Zustand (fertig) anzeigt
Ich hatte mal überlegt, mit einem optischen HM-Fenstersensor den Schalter abzutasten. Aber noch nicht umgesetzt, meine vorhandenen Sensoren sind alle mit Magnet.
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: tlasrich am 29 Januar 2017, 20:40:48
Hallo,

danke für die Hilfe, ich wollte noch kurz melden, dass es nun funktioniert! Eine Kopie des DOOIFs für den Trockner leider noch nicht, aber das wird auch noch.

Gruß
Thorsten
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: KaiK am 04 April 2017, 13:24:37
Hallo zusammen,

ich möchte euch einmal darum bitten, einen Blick auf meinen Waschmaschinen-Melder zu werfen, da er leider auch noch mit dem Problem zu kämpfen hat, dass er für mich nicht nachvollziehbar auslöst.
Besonderheit ist, dass mir der Stecker (EDIPLUG) keinen numerischen Wert, sondern einen String für die Leistung liefert (bspw. "185.46 W"). Die Auswertung mache ich dann nicht mit bspw. < 2 sondern mit lt "2". (dies hatte ich hier irgendwo mal gelesen..., vermutlich ist das aber genau das Problem).


define DOIF_Switch_KellerWaschmachine DOIF ([Switch_KellerWaschmachine:power_now] lt "2") (set PushbulletKai message Waschmaschine fertig|Waschmaschine, set PushbulletLucy message Waschmaschine fertig|Waschmaschine)

atrr DOIF_Switch_KellerWaschmachine wait 180


Das Log von Switch_KellerWaschmachine:power_now sieht wie folgt aus

2017-04-04_12:29:55 Switch_KellerWaschmachine power_now: 0.07 W
2017-04-04_12:30:55 Switch_KellerWaschmachine power_now: 0.07 W
2017-04-04_12:31:55 Switch_KellerWaschmachine power_now: 1.57 W
2017-04-04_12:32:55 Switch_KellerWaschmachine power_now: 10.22 W
2017-04-04_12:33:55 Switch_KellerWaschmachine power_now: 3.93 W
2017-04-04_12:34:55 Switch_KellerWaschmachine power_now: 168.22 W
2017-04-04_12:35:55 Switch_KellerWaschmachine power_now: 1841.14 W
2017-04-04_12:36:56 Switch_KellerWaschmachine power_now: 1841.42 W
2017-04-04_12:37:56 Switch_KellerWaschmachine power_now: 1841.35 W
2017-04-04_12:38:56 Switch_KellerWaschmachine power_now: 1846.07 W
2017-04-04_12:39:56 Switch_KellerWaschmachine power_now: 1846.00 W
2017-04-04_12:40:56 Switch_KellerWaschmachine power_now: 1846.00 W
2017-04-04_12:41:56 Switch_KellerWaschmachine power_now: 1846.86 W
2017-04-04_12:42:56 Switch_KellerWaschmachine power_now: 1840.13 W
2017-04-04_12:43:56 Switch_KellerWaschmachine power_now: 2025.17 W
2017-04-04_12:44:56 Switch_KellerWaschmachine power_now: 2029.82 W
2017-04-04_12:45:56 Switch_KellerWaschmachine power_now: 2015.87 W
2017-04-04_12:46:56 Switch_KellerWaschmachine power_now: 2030.61 W
2017-04-04_12:47:56 Switch_KellerWaschmachine power_now: 2018.95 W
2017-04-04_12:48:56 Switch_KellerWaschmachine power_now: 2017.37 W
2017-04-04_12:49:56 Switch_KellerWaschmachine power_now: 2013.87 W
2017-04-04_12:50:56 Switch_KellerWaschmachine power_now: 192.68 W
2017-04-04_12:51:56 Switch_KellerWaschmachine power_now: 163.57 W
2017-04-04_12:52:56 Switch_KellerWaschmachine power_now: 169.44 W
2017-04-04_12:53:56 Switch_KellerWaschmachine power_now: 188.25 W
2017-04-04_12:54:56 Switch_KellerWaschmachine power_now: 199.41 W
2017-04-04_12:55:56 Switch_KellerWaschmachine power_now: 188.25 W
2017-04-04_12:56:56 Switch_KellerWaschmachine power_now: 194.12 W
2017-04-04_12:57:56 Switch_KellerWaschmachine power_now: 170.58 W
2017-04-04_12:58:56 Switch_KellerWaschmachine power_now: 204.56 W
2017-04-04_12:59:56 Switch_KellerWaschmachine power_now: 167.44 W
2017-04-04_13:00:56 Switch_KellerWaschmachine power_now: 165.22 W
2017-04-04_13:01:56 Switch_KellerWaschmachine power_now: 182.39 W
2017-04-04_13:02:56 Switch_KellerWaschmachine power_now: 178.31 W
2017-04-04_13:03:56 Switch_KellerWaschmachine power_now: 184.67 W
2017-04-04_13:04:56 Switch_KellerWaschmachine power_now: 193.83 W
2017-04-04_13:05:56 Switch_KellerWaschmachine power_now: 180.17 W
2017-04-04_13:06:56 Switch_KellerWaschmachine power_now: 172.80 W
2017-04-04_13:07:56 Switch_KellerWaschmachine power_now: 185.46 W
2017-04-04_13:08:56 Switch_KellerWaschmachine power_now: 179.45 W
2017-04-04_13:09:56 Switch_KellerWaschmachine power_now: 175.73 W
2017-04-04_13:10:56 Switch_KellerWaschmachine power_now: 174.95 W
2017-04-04_13:11:56 Switch_KellerWaschmachine power_now: 164.43 W
2017-04-04_13:12:56 Switch_KellerWaschmachine power_now: 169.51 W
2017-04-04_13:13:56 Switch_KellerWaschmachine power_now: 173.44 W
2017-04-04_13:14:56 Switch_KellerWaschmachine power_now: 169.15 W
2017-04-04_13:15:56 Switch_KellerWaschmachine power_now: 178.38 W


Im vorliegenden Fall hat er bspw. auf Basis des Wertes
2017-04-04_12:59:56 Switch_KellerWaschmachine power_now: 167.44 W
ausgelöst.

Hat jemand eine Idee, wie ich das in den Griff bekomme? Etwas Perl-Magie z.B.?

Danke und VG
Kai
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: automatisierer am 04 April 2017, 14:23:23
define DOIF_Switch_KellerWaschmachine DOIF ([Switch_KellerWaschmachine:power_now:d] < "2") (set PushbulletKai message Waschmaschine fertig|Waschmaschine, set PushbulletLucy message Waschmaschine fertig|Waschmaschine)

probier mal so.

durch das ':d' sollte das 'W' weg gefiltert werden.
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: Per am 04 April 2017, 16:48:01
Zitat von: KaiK am 04 April 2017, 13:24:37Die Auswertung mache ich dann nicht mit bspw. < 2 sondern mit lt "2". (dies hatte ich hier irgendwo mal gelesen..., vermutlich ist das aber genau das Problem).
Natürlich, weil zwar 2<136 aber "2" gt "136" (und auch "2" gt "136 W" oder kurz -> "2" gt "1"!).
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: KaiK am 05 April 2017, 09:36:26
Zitat von: automatisierer am 04 April 2017, 14:23:23
define DOIF_Switch_KellerWaschmachine DOIF ([Switch_KellerWaschmachine:power_now:d] < "2") (set PushbulletKai message Waschmaschine fertig|Waschmaschine, set PushbulletLucy message Waschmaschine fertig|Waschmaschine)

probier mal so.

durch das ':d' sollte das 'W' weg gefiltert werden.

Super, das war genau die Lösung! Danke!
Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: mrfloppy am 08 April 2017, 20:33:26
Hänge mich mal dran.
Will auch meine Waschmaschinen Meldung bekommen.
defmod di_Waschmaschine DOIF ([HM_KE_KG_PMS1 2.POWER] == 0 )  DOELSEIF  ([HM_KE_KG_PMS1 2.POWER] > 12)  DOELSEIF  ([HM_KE_KG_PMS1 2.POWER] < 5) (set pushmsg msg 'Waschmaschine fertig!')
attr di_Waschmaschine cmdState aus|laeuft|fertig
attr di_Waschmaschine room Waschmaschine
attr di_Waschmaschine wait 60:0:90


Wieso meckert DOIF bei der Zeit?

timer_01_c01 error: Wrong timespec HM_KE_KG_PMS12.POWER: either HH:MM:SS or {perlcode} 2017-04-08 18:27:00
timer_02_c02 error: Wrong timespec HM_KE_KG_PMS12.POWER: either HH:MM:SS or {perlcode} 2017-04-08 18:27:00
timer_03_c03 error: Wrong timespec HM_KE_KG_PMS12.POWER: either HH:MM:SS or {perlcode} 2017-04-08 18:27:00
wait_timer no timer 2017-04-08 18:27:22


Wer einen Tipp für mich.

Danke LG

Titel: Antw:(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll
Beitrag von: Damian am 08 April 2017, 20:37:52
Leerzeichen im Device-Namen sind unzulässig: HM_KE_KG_PMS1 2.POWER