"Kaffee ist fertig"-Meldung

Begonnen von FunkOdyssey, 03 Februar 2017, 16:08:08

Vorheriges Thema - Nächstes Thema

FunkOdyssey

Hmm, ich dachte, dass ich mir relativ zügig eine "Kaffee ist fertig"-Meldung per DOIF entwickeln kann.
Aber leider ist der Stromverbrauch der Maschine nicht eindeutig interpretierbar (siehe Grafik).

Ich habe es auf folgender Art und Weise versucht. Leider ohne Erfolg.


(
[zw_sw_kaffee:state] eq "on" and
[zw_sw_kaffee:state:sec] > 300 and
[zw_sw_kaffee:state:sec] < 900 and
[zw_sw_kaffee:power:d] <= 1 and
[zw_sw_kaffee:power:sec] > 100
)
(
(msg push)
)


Es hat nicht zufällig jemand so etwas ähnliches entwickelt?

Ich vermute mal, dass ich die verschiedenen Modi der Kaffeemaschine in einem Dummy speichern muss und darauf weitere Abfragen setzen, oder?

Oder ich habe einfach nur ein Brett vor dem Kopf.

Idee?

KernSani

spontane Idee: wait Attribut eund die Meldung erst raus, wenn power über einen bestimmten Zeitraum < x?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

MadMax-FHEM

Hmmm schwierig...

Es ist da wohl ein "dummer" Bimetallschalter: an/aus/an/aus/an/aus...

Da müsste man halt wissen wann die Kaffeemaschine tatsächlich fertig ist...

Werden dann die Schaltzyklen länger?
Also "nur noch warm halten"???

Ist zugegebenermaßen bei einem PI oder meiner Waschmaschine deutlich einfacher...

Sorry für die nicht wirkliche Hilfe...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

suppenesser

So wie ich das interpretiere, startet (kocht) die Maschine von 15Uhr bis 15:12Uhr Kaffee, danach hält sie warm.  In der "koch" Zeit ist doch aber die Zeit zwischen den 800Watt Peaks sehr kurz..... Und heizt länger......

Das kann man sicher logisch abfragen....

Gesendet von meinem HUAWEI GRA-L09 mit Tapatalk

Raspberry PI B+ | HM-LAN-CFG | HM-LC-Sw1PBU-FM | HM-TC-WM-W-EU | DECT 200 | DHT22 | 1 Wire Temp.Sensoren

Papaloewe

Ja, genau!

Wenn 2 Minuten (nahezu) 0 Watt, dann fertig und das auch nur beim ersten Auftreten.

KernSani

Zitat von: Papaloewe am 03 Februar 2017, 17:17:32
Ja, genau!

Wenn 2 Minuten (nahezu) 0 Watt, dann fertig und das auch nur beim ersten Auftreten.
Dann sollte etwa sowas funktionieren (mal vorausgesetzt

(
[zw_sw_kaffee:state] eq "on" and
[zw_sw_kaffee:power:d] <= 1 and
)
(
(msg push)
)
DOELSE ()

und ein
attr wait 120
Durch das wait wird die Ausführung verzögert. wenn die erste Bedingung nicht mehr zutrifft während der waittimer läuft, wird der timer abgebrochen.  Bin mir jetzt nicht ganz sicher ob das DOELSE notwendig ist... Commandref hat ähnliche Beispiele.

Grüße,

Oli



RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

FunkOdyssey

Das ist ja so geil.
Ich habe vermutlich um die 50 DOIFs und in fast allen auch das wait-Attribut unterschiedlich im Einsatz.
Und dann denke ich bei einer solchen simplen Aufgabe so kompliziert. :-)
Danke. Manchmal hat man einfach ein Brett vor dem Kopf.

Ich muss mir jetzt nur noch etwas einfallen lassen, damit die Nachricht nicht kommt, wenn die Steckdose einfach so eingeschaltet wird.
Ansonsten würde das DOIF direkt x Sekunden nach dem Einschalten der Steckdose (und dem Nichteinschalten der Kaffeemaschine) auslösen.
Irgendwie muss ich prüfen, ob vorher eine Last dagewesen ist.

bartman121

Gibt es statt der dummen Messung der aktuellen Leistung ggfs. auch ein anderes Reading, welches die elektrische Arbeit (das ist einfach das Integral über die Leistung für einen Zeitraum) über einen bestimmten Zeitraum ausgibt?

Daran könnte man das sicher erkennen?
Beispielsweise beim ESA 2000
wenn
act_value("hour") - oldvalue("hour")  < $sinnvollen Wert einstellen

FunkOdyssey

Zitat von: bartman121 am 06 Februar 2017, 11:24:19
Gibt es statt der dummen Messung der aktuellen Leistung ggfs. auch ein anderes Reading, welches die elektrische Arbeit (das ist einfach das Integral über die Leistung für einen Zeitraum) über einen bestimmten Zeitraum ausgibt?

Daran könnte man das sicher erkennen?
Beispielsweise beim ESA 2000
wenn
act_value("hour") - oldvalue("hour")  < $sinnvollen Wert einstellen

Ja, ich habe ein Energy-Reading. Aber dann müsste ich über die Userreadings gehen und den Wert beim Einschalten einfrieren.
Ansonsten habe ich ja keine Möglichkeit auf die historischen Daten zuzugreifen.
Da kann ich wahrscheinlich besser ein DOIF in folgender ähnlicher Form bauen:
- cmd1: Power > x Watt und dann per waitsame die Zyklen abfragen
- cmd2: wie bisher. nur dann auch prüfen, ob [?$SELF:cmd] =~ "1|xxx" oder ähnlich.
Evtl. muss ich noch selfTrigger aktivieren. Aber vermutlich ist das nicht notwendig.

Mal schauen.

Nur: Je länger ich darüber nachdenke, desto weniger brauche ich das eigentlich. Denn meistens sitze ich in der Nähe der Kaffeemaschine. Dennoch will ich es jetzt wissen. :-)

bartman121

Schlussendlich führen viele Wege nach Rom, du kannst aber wirklich mit oldvalue arbeiten ohne über userreadings zu gehen...

https://forum.fhem.de/index.php/topic,53570.msg452412.html#msg452412

FunkOdyssey

Wow. Das kannte ich noch gar nicht. Muss ich mir dringend merken für die Zukunft.
Ich merke gerade, dass der Weg über "energy" schwierig werden könnte.
Das ist ein Z-Wave-Gerät, bei welchem der Threshold ein wenig ungünstig eingestellt ist bzw. nicht jedesmal die Änderung der kWh mitteilt. (Sollte eigentlich im 0,01 kWh-Einheiten melden). Abgesehen davon wird halt in kWh (mit zwei Dezimalstellen) gerechnet. Das ist mir vermutlich zu ungenau. Die Sprünge sind jedenfalls zu groß.