Befehl ausführen wenn sich Leistungsaufnahme ändert.

Begonnen von NewbieNew, 15 August 2020, 09:38:19

Vorheriges Thema - Nächstes Thema

NewbieNew

Hallo an alle,
ich habe einen Blackout.

Folgendes:
Ich lasse mir immer nach 30 min die Leistungsaufnahme eines Gerätes schicken.

defmod VDR_Kontrolle at +*00:30:00 set Telegram message VDR-Server [VDR_ST:ENERGY_Power] Watt

Dies möchte ich mir nun nur noch bei Änderungen zusenden lassen. So etwa bei einem Schwellwert um 40 Watt, darüber "ein" darunter "aus"

Mein Notify läuft nicht:

defmod Telegram_notify_1 notify VDR_ST:ENERGY_Power<40 set Telegram message.VDR-Server Aus

Wo könnte mein Fehler liegen? Gerne hätte ich noch die Zeit dazu übermittelt.

Und kann man das notify per Hand "auslösen", da ich an die Messsteckdose nicht so einfach rankomme.

Dankeschön


Otto123

#1
Moin,

an der Stelle VDR_ST:ENERGY_Power<40 muss ein Trigger stehen, ein Vergleich geht dort nicht. Du kannst Dir das Gerüst mit dem Trigger im Eventmonitor erstellen lassen. Könnte so aussehen:
VDR_ST:ENERGY_Power:.*
Danach hast Du im $EVENT irgendwo den Wert stehen, eventuell im $EVTPART1
dann kannst Du einen Vergleich machen:
IF ($EVTPART1 < 40)(Tu was)
Wenn Du mehr machen willst ist es meist besser im Ausführungsteil direkt auf PERL zu gehen:
{if ($EVTPART1 < 40){fhem("FHEM Befehl")}}

Von Hand auslösen kannst Du ein notify mit dem trigger Befehl.
trigger VDR_ST ENERGY_Power: 39

Wie gesagt das  mit den Events muss alles nicht stimmen, das ist von mir geraten.

Ich will mal noch nachtragen: In engen Grenzen kann man eine Art Größenvergleich auch mit regExp im Trigger machen:
Das hier würde auf den Wertebereich 10-39 triggern
VDR_ST:ENERGY_Power:.[1-3][0-9]

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

NewbieNew

Moin,
ganz so einfach ist es doch nicht.

defmod Telegram_notify_1 notify VDR_ST:ENERGY_Power:.* {if ($EVTPART1 < 40){fhem("set Telegram message VDR-Server Aus")}}


Da das Gerät VDR_ST die Werte aller 2 Minuten sendet (über MQTT) bekomme ich die Werte auch im 2-Minuten Abstand gesendet.

Gibts da eventuell noch eine Lösung?

Danke

Damian

Zitat von: NewbieNew am 20 August 2020, 07:29:25
Moin,
ganz so einfach ist es doch nicht.

defmod Telegram_notify_1 notify VDR_ST:ENERGY_Power:.* {if ($EVTPART1 < 40){fhem("set Telegram message VDR-Server Aus")}}


Da das Gerät VDR_ST die Werte aller 2 Minuten sendet (über MQTT) bekomme ich die Werte auch im 2-Minuten Abstand gesendet.

Gibts da eventuell noch eine Lösung?

Danke

ja, siehe https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

Zitat von: NewbieNew am 20 August 2020, 07:29:25
Gibts da eventuell noch eine Lösung?
Moin,

nein, eine Lösung gibt es nicht. Es gibt wahrscheinlich hunderte.  :) Die Frage was willst Du denn: Einmal ein Nachricht? Jede halbe Stunde?

Grundlegend: event-on-change-reading ist immer eine gute Maßnahme um die Flut an Events einzudämmen.
Du kannst andere Kriterien mit in die Auswertung nehmen.
Du kannst im Gerät einfach ein UserReadings definieren und dieses auswerten.

Wenn es einfach nur den Zustandswechsel informieren soll: (nicht getestet)
attr VDR_ST event-on-change-reading .*
attr VDR_ST userReadings Zustand:ENERGY_Power.* {ReadingsNum($name,'ENERGY_Power',0)<40?'aus':'ein'}
defmod Telegram_notify_1 notify VDR_ST:Zustand:(aus|ein) set Telegram message VDR-Server $EVTPART1


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