Steckdose mit Verbrauchsmessung - idle Status ermitteln

Begonnen von Waldmensch, 07 November 2018, 15:12:04

Vorheriges Thema - Nächstes Thema

Waldmensch

Sorry für den etwas holperigen Betreff.

Problemstellung:
- Eine Blitzwolf Schaltsteckdose mit Strommessung und Tasmota geflasht
- Daran hängt eine Waschmaschine, es soll ermittelt werden, wann die Waschmaschine fertig ist
- Wenn Strom fließt, kommen alle Sekunde Sensordaten mit dem aktuellen Stromverbrauch

Leider ist es so, dass die Waschmaschine einen ständig wechselnden verbrauch hat, der auch schon mal unter 5W geht, was gleichzeitig dem Zustand "fertig" entspricht. Gesucht wird eine Möglichkeit, zu ermitteln, ob der Stromverbrauch für Zeitspanne X (evtl. 2 Minuten) unter 10W liegt

Momentan habe ich ein Userreading "Idlestate", welches eine Perl Funktion in 99_myUtils nutzt und die Werte "off", "idle", "running" haben kann. Diese werden in FTUI inForm eines blinkenden Icons angezeigt. Das Problem ist nun halt, dass sehr oft fälschlicherweise "idle" gesetzt wird, wenn die Waschmaschine eine programmbedingte Pause macht und der Stromverbrauch unter 10W fällt.

Ich hatte schon überlegt, mit einem Notify ein temporäres at zu setzen, was nach 2 Minuten nochmal nachschaut und dann erst den Idlestate setzt. Nur würde dann alle Sekunde (Sensordaten) ein neues at erstellt, also 120 at's bei 2 Minuten. Das kann es ja nicht sein. Zweite, praktikabelere Idee, wäre eine Art Ringbuffer aus 120 Werten, aus dem ein Durchschnittswert errechnet wird. Leider weiß ich nicht, wie ich sowas realisieren kann.

Beim Idlestate würde 2 Minuten Genauigkeit voll ausreichen, da es nur darum geht, im FTUI anzuzeigen, wenn die Waschmaschine fertig ist.

Hat da jemand eine Idee?


Istzustand:

Userreading:
Idlestate { idlestate(ReadingsVal("stadtweg.eg.waschmaschine","ENERGY_Power",0));; }

Funktion
#############identify idle state########
sub
idlestate($)
{
my($value) = @_;
if ($value == 0) {
return "off";
} elsif ($value > 0 && $value < 10) {
return "idle";
} else {
return "running";
}
}

sledge

Vergleichbare Aufgabenstellung habe ich hier mit einem DOIF gelöst - via "wait" Attribut. Klappt einwandfrei. Lasse dabei einfach prüfen, ob die Steckdose rund 5 Minuten < Schwellenwert bleibt, dann wird das Signal entsprechend ausgegeben.
FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

RaspiLED

Hi,
Gibt es Dich schon x-mal! Suchen hilft ,,Steckdose Waschmaschine"

Z.B. hier: https://forum.fhem.de/index.php/topic,26339.msg193391.html#msg193391
Gruß Arnd


Gesendet von iPhone mit Tapatalk
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Papaloewe

Das ständige Senden von Tasmota kannst du auch mit PowerDelta 0 ganz abschalten. Dann kommt der Wert nur noch alle 5 Minuten mit den Tele String. Das Intervall kann man aber auch noch verändern.
Ansonste habe ich das auch bei meinem DOIF mit dem wait-Attribut gelöst.

Waldmensch