(Gelöst) Waschmaschinenbenachrichtigung tut nicht wie sie soll

Begonnen von micomat, 11 Januar 2017, 14:08:56

Vorheriges Thema - Nächstes Thema

kumue

([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

l2r

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
Wissen ist Macht.
Ich weiß nix.
Macht nix.

micomat

#17
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!)
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

automatisierer

zu simpel aber auch nicht - beim cmd_2 fehlt noch der Vergleichswert.

micomat

natürlich, der ist beim kopieren abhanden gekommen. bei mir ist er da :) habs korrigiert

Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

Per

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.

micomat

Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

l2r

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
Wissen ist Macht.
Ich weiß nix.
Macht nix.

micomat

Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

tlasrich

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

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

tlasrich

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

Damian

#27
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


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

tlasrich

Danke für die ausführliche Erklärung, ich werde morgen mal versuchen das für meine Maschine umzusetzen.

Noch einen ruhigen Abend,

Thorsten

Damian

#29
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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF