Problem mit Notify zur Waschmaschinenüberwachung

Begonnen von szoller, 14 November 2018, 17:06:05

Vorheriges Thema - Nächstes Thema

szoller

Hallo zusammen,

wie es schon oft gemacht wurde, versuche ich auch, die Waschmaschinen im Haushalt etwas "smarter" zu machen und würde mich gerne informieren lassen, wenn die Waschmaschine fertig ist.

Im Haus gibt es zwei Waschmaschinen und einen Trockner, alle drei Geräte hängen jeweils an einem Sonoff POW mit Tasmota.

Ich habe schon mit verschiedenen Varianten an DOIF/Notify rumprobiert, irgendwie führt keine davon zum Erfolg, entweder erhalte ich keine Meldung oder - wie bei meinem letzten Versuch (siehe unten) Benachrichtigungen, obwohl die Waschmaschine noch läuft.
Ich habe es schon mit verschiedenen Werten für den Stromverbrauch als auch für die Verzögerungszeit versucht, es kommt immer auf's Gleiche raus.
Auch das Ändern der Telemetrieperiode in Tasmota ändert leider nichts (Eingestellt ist der Wert 10).

Angehängt sind für jede der beiden Waschmaschinen eine Textdatei, die die Log-Ausgaben während eines Waschgangs, das definierte Notify und den zeitlichen Ablauf enthalten (ist zuviel, um des in den Forenpost einzubinden, zwei Paste-Dienste haben auch gestreikt, daher so. Auf Wunsch versuche ich aber wieder, es bei Pastebin o.Ä. hochzuladen).

MQTT_ISWM_BAD_1:ENERGY_Power:.* {
    # Wenn die Spülmaschine eingeschaltet wurde
    if (ReadingsNum($NAME, "ENERGY_Power", 0) > 12 && ReadingsVal($NAME, "running", "off") eq "off") {
        fhem("setreading $NAME running on");
    }

    # Wenn die Waschmaschine länger als 5 Minuten lief und dann keinen Strom mehr verbraucht -> Notification
    if (ReadingsNum($NAME, "ENERGY_Power", 0) < 11 && ReadingsVal($NAME, "running", "off") eq "on") {
        if (secondsSinceReadingChange($NAME, "running") > 300) {
            fhem("msgtelegram @-298582359 @00000000 ??Die Waschmaschine rechts ist fertig.");
#fhem("set WEB_Pushover msg 'Spülmaschine' 'Die Spülmaschine ist fertig'");
            #fhem("set lametric msg 'i1167' 'Spülmaschine fertig' 'notifications:water1' '1'");
            #fhem("set Wunderlist addTask Spülmaschine ausräumen");
        }

        fhem("setreading $NAME running off");
    }

    # Wenn Fehler aufgetreten ist, und die Waschmaschine nach 4 Stunden nicht automatisch ausgegangen ist
    if (secondsSinceReadingChange($NAME, "running") > 14400 && ReadingsVal($NAME, "running", "off") eq "on") {
        fhem("setreading $NAME running off");
fhem("msgtelegram @-298582359 @00000000 ??Die Waschmaschine rechts läuft seit 4 Stunden und ist nicht ausgegangen.");
        #fhem("set WEB_Pushover msg 'Spülmaschine' 'Die Spülmaschine läuft seit 4 Stunden und ist nicht ausgegangen'");
    }
}


Ich werde schon aus den Log-Dateien nicht so recht schlau, im Standby sind da Werte um die 60 Watt aufgetaucht (?).

Vielleicht hat da jemand den Durchblick, Dankbarkeit wäre gewiss!

Viele Grüße

Sebastian

loescher

Hi!

Naja, bei dem Stromverbrauch im Standby kann ich dir auch nicht helfen, das muss man sich anschauen und dann die Logik entsprechend bauen.
Evtl. hilft dir mein Setup als Startpunkt:
http://www.loescher-online.de/smarthome.html#waschmaschine
Wie du bei meinem Trockner siehst, muss ich da auch die untere Schwelle auf 200 Watt setzen.

LG,
Stephan.

abc2006

Gude,
mittlerweile bevorzuge ich für sowas doif. Da sind nämlich alle Mittel an Bord:

([MQTT_ISWM_BAD_1:ENERGY_Power] > 12)
(
set $SELF running on,
set telegramBot message Wama läuft!
)
DOELSEIF([MQTT_ISWM_BAD_1:ENERGY_Power] < 5)
(
set $SELF running finish,
set telegramBot message Wama fertig!
)
DOELSEIF([MQTT_ISWM_BAD_1:ENERGY_Power] > 12 && [$SELF:running] eq "on"  && [$SELF:running:sec] > 14400  )
(
set $SELF running error,
set telegramBot message Wama Fehler!
)

attr <doif-Name> wait 0,300,0


Wobei ich nicht weiss, ob  [$SELF:running:sec] > 14400   jemals wahr wird (weil das Reading evtl mit aktualisiert wird).

Alternativ zu
secondsSinceReadingChange($NAME, "running")
möchte ich dich auf
ReadingsAge()
hinweisen. Syntax identisch zu ReadingsVal()...

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

abc2006

Zu den Messwerten:
Ich würde dir vorschlagen, z.B. mit event-on-change-reading:4 die kleinen Änderungen etwas einzuschränken.
Wenn du dann das wait von cmd_1 hochsetzt auf 10 Sekunden, sollte das die Fehlalarme schon deutlich reduzieren.

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

szoller

@abc2006:

Entschuldige, ich war ein wenig eingespannt, daher eine sehr späte Antwort! Vielleicht war die Motivation auch etwas eingeschränkt durch die vielen Fehlversuche, aber irgendwann muss es ja funktionieren  ;D

Danke zunächst für deine Hilfe, DOIF geht natürlich auch :-)

Nun wären da noch Verständnisfragen, möcht das ja nicht einfach stupide reinkloppen und hoffen :-D
attr <doif-Name> wait 0,300,0
Bedeutet das, dass das DOIF das erste IF direkt ausführt, das DOELSEIF aber erst, wenn die Bedingung fürs IF (Energie > 12) 5 Minuten lang nicht erfüllt wird?

Bei deiner Variante brauche ich ReadingsAge() dann ja nicht, oder?

Bei meinem Notify ist scheinbar vor allem das Problem, dass der garnicht abwartet... ich versteh's aber auch nicht so richtig...

event-on-change-reading:4
Das besagt, dass maximal alle 4 Sekunden der gleiche Wert geschrieben werden darf?

@loescher
Das ist ja eine weiterführende Variante, reizt mich sicher, gerade auch das Dokumentieren der Läufe, aber erstmal muss das Grundlegende funktionieren, deine Seite ist auf jeden Fall in den Bookmarks :-)

Die Werte sind leider querbeet, immer so dämliche Ausreißer drin...

szoller

Also irgendwas stimmt da bei mir nicht. Ich erhalte wieder Meldungen zwischendrin, teils im Minutentakt, er scheint das Wait einfach zu ignorieren?

Die Raw-Definition:
defmod BAD.DOIF.ISMWM3 DOIF ([MQTT_ISWM_BAD_3:ENERGY_Power] > 25)\
(\
set $SELF running on,\
set TeleBot message Wama links läuft!\
)\
DOELSEIF([MQTT_ISWM_BAD_3:ENERGY_Power] < 5)\
(\
set $SELF running finish,\
set TeleBot message Wama links fertig!\
)\
DOELSEIF([MQTT_ISWM_BAD_3:ENERGY_Power] > 12 && [$SELF:running] eq "on"  && [$SELF:running:sec] > 14400  )\
(\
set $SELF running error,\
set TeleBot message Wama links Fehler!\
)
attr BAD.DOIF.ISMWM3 group Regeln
attr BAD.DOIF.ISMWM3 room System
attr BAD.DOIF.ISMWM3 wait 0,300,0

setstate BAD.DOIF.ISMWM3 cmd_1
setstate BAD.DOIF.ISMWM3 2019-01-12 12:28:45 Device MQTT_ISWM_BAD_3
setstate BAD.DOIF.ISMWM3 2019-01-12 12:28:18 cmd 1
setstate BAD.DOIF.ISMWM3 2019-01-12 12:28:18 cmd_event MQTT_ISWM_BAD_3
setstate BAD.DOIF.ISMWM3 2019-01-12 12:28:18 cmd_nr 1
setstate BAD.DOIF.ISMWM3 2019-01-12 12:28:45 e_MQTT_ISWM_BAD_3_ENERGY_Power 101
setstate BAD.DOIF.ISMWM3 2019-01-12 12:20:00 mode enabled
setstate BAD.DOIF.ISMWM3 2019-01-12 12:28:18 state cmd_1


Otto123

#6
Hi,

Zitatevent-on-change-reading:4
Das besagt, dass maximal alle 4 Sekunden der gleiche Wert geschrieben werden darf?
Nein! Völlige Fehl"interpretation"  :'(

Das besagt, das das Reading 4 nur noch events beim Ändern erzeugt. Alle anderen Readings erzeugen keine Events mehr!

Einfach Doku lesen. Tipp: Mit ctrl+f im Browser nach dem gewünschten Begriff suchen. ;D
Zitatevent-on-change-reading
The attribute takes a comma-separated list of readings. You may use regular expressions in that list. If set, only changes of the listed readings create events. In other words, if a reading listed here is updated with the new value identical to the old value, no event is created.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

szoller

ZitatDas besagt, das das Reading 4 nur noch events beim Ändern erzeugt. Alle anderen Readings erzeugen keine Events mehr!

Einfach Doku lesen. Tipp: Mit ctrl+f im Browser nach dem gewünschten Begriff suchen. ;D
Danke, ich hatte da ne andre Erklärung gefunden, aus der ich aber nicht schlau wurde, so hab ichs verstanden :-)
Wenn ich mir nun die Logs anschaue, werden scheinbar auch nur geänderte Einträge erfasst (evtl. sendet der Sonoff auch nur bei Änderung), allerdings ist die Frequenz recht hoch :-)

ZitatAlso irgendwas stimmt da bei mir nicht. Ich erhalte wieder Meldungen zwischendrin, teils im Minutentakt, er scheint das Wait einfach zu ignorieren?
Da war ich wohl der Fehler, die Werte bei wait trennt man laut Doku mit : statt , :-)

Damian

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

szoller

Danke Damian, werde ich ausprobieren!

Ist schon absehbar, wann das seinen Weg in die Releaseversion findet?

Damian

Zitat von: szoller am 15 Januar 2019, 16:13:18
Danke Damian, werde ich ausprobieren!

Ist schon absehbar, wann das seinen Weg in die Releaseversion findet?

Bald, ich warte noch auf Erfahrungsberichte, ggf. muss ich noch ein paar Anpassungen vornehmen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF