[Gelöst] Steckdose abschalten wenn Leistung für n Minuten kleiner n Watt

Begonnen von The Grue, 22 September 2017, 21:31:16

Vorheriges Thema - Nächstes Thema

The Grue

Servus,

als FHEM-Anfänger habe ich versucht, einen Watchdog o.ä. zu bauen, der eine Steckdose abschaltet, wenn die dort abgegebene Leistung über einen bestimmten Zeitraum kleiner als ein bestimmter Wert ist (also: Abschalten bei Gerät im Standby).

2017-09-22_17:47:53 Buero.Drucker power: 5.4 W


Leider habe ich noch nicht recht begriffen, wie das geht. Der Watchdog möchte z.B. einen regulären Ausdruck haben. Nun bin ich mit REs recht fit, aber  "power<10" als RE ist doch recht unpraktisch...

Dann vielleicht eher als DOIF. Aber wie sage ich dem, daß erst nach 10 Minuten abgeschaltet werden soll?

Im Wiki habe ich leider auch nichts gefunden, was so genau passt...

Über Hinweise würde ich mich sehr freuen. Auch Pointer auf die Doku sind höchst willkommen (solange sie passen ;) )!

cu
Markus

Damian

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

The Grue

Danke, auf die Attribute bin ich gar nicht gekommen.

Ich hab' halt doch noch viel zu lesen :)

cu
Markus

ahstax

Hallo,

ich habe versucht, das genannte auf die Verwendung einer AVM-Steckdose (200) zu übertragen.
Die Steckdose liefert nur alle 15 Minuten einen Wert. Das Reading ist ein Betrag und ein Buchstabe (bspw. 25.43 W). Daher ist es wohl notwendig, das "W" abzuschneiden.
Ich habe insgesamt folgenden Code:

define Media.Watt dummy

define Media.Watt.Set.notify notify FBDECT_9100_dev_FritzBox_08761_0481133 {\
my $power_w=ReadingsVal("FBDECT_9100_dev_FritzBox_08761_0481133","power","");;\
my $power=substr($power_w, 0,length($power_w)-2);;\
fhem ("set Media.Watt $power");;\
}

define Media.di DOIF ({\
ReadingsVal("Media.Watt","state","") <= 30\
}) ({\
fhem ("set 9200_tebo_TelegramBot message \@xxx 'DoIf: Media seit 60 Sekunden in Standby'");;\
fhem ("set FBDECT_9100_dev_FritzBox_08761_0481133 off");;\
})
attr Media.di wait 60


Sieht jemand einen/den Fehler?

Neugierige Grüße,
Andreas

PS.: ich bin ganz gut bei Copy&Paste, versuche auch, zu verstehen, was nicht funktioniert und lerne viel aus (leider vielen) Fehlern...

Byte09

Zitat von: ahstax am 26 Januar 2019, 18:42:34
Hallo,

ich habe versucht, das genannte auf die Verwendung einer AVM-Steckdose (200) zu übertragen.
Die Steckdose liefert nur alle 15 Minuten einen Wert. Das Reading ist ein Betrag und ein Buchstabe (bspw. 25.43 W). Daher ist es wohl notwendig, das "W" abzuschneiden.
Ich habe insgesamt folgenden Code:

define Media.Watt dummy

define Media.Watt.Set.notify notify FBDECT_9100_dev_FritzBox_08761_0481133 {\
my $power_w=ReadingsVal("FBDECT_9100_dev_FritzBox_08761_0481133","power","");;\
my $power=substr($power_w, 0,length($power_w)-2);;\
fhem ("set Media.Watt $power");;\
}

define Media.di DOIF ({\
ReadingsVal("Media.Watt","state","") <= 30\
}) ({\
fhem ("set 9200_tebo_TelegramBot message \@xxx 'DoIf: Media seit 60 Sekunden in Standby'");;\
fhem ("set FBDECT_9100_dev_FritzBox_08761_0481133 off");;\
})
attr Media.di wait 60


Sieht jemand einen/den Fehler?

Neugierige Grüße,
Andreas

PS.: ich bin ganz gut bei Copy&Paste, versuche auch, zu verstehen, was nicht funktioniert und lerne viel aus (leider vielen) Fehlern...

ohne deinen code überflogen zu haben könnte hier "ReadingsNum" dein freund sein , wenn es nur darum geht den reinen numerischen wert zu erhalten.

https://wiki.fhem.de/wiki/DevelopmentModuleAPI#ReadingsNum

gruss Byte09