Hauptmenü

Meldung Stromausfall

Begonnen von lt1014, 19 Juni 2019, 23:14:21

Vorheriges Thema - Nächstes Thema

lt1014

Hallo,

ich habe Erfolgreich eine UPS mit NUT eingebunden, funktiniert alles.

define UPS NUT powerwalker localhost:3493

Ich bekomme unter anderem folgende Readings:

battery.charge
state

der "state" kennt die Zustände "OL DISCHRG" und "OL CHRG" das heist hier kann ich sehen, ob Stromausfall oder nicht.
Über ein notify möchte ich mir per "Pushover" eine Mitteilung aufs Handy schicken lassen. Das geht im Prinzip, aber:

define usv_alarm notify UPS:.* {push_usv()}
push_usv() = Funktion in 99_myUtils.pm, die funktioniert.

bewirkt, dass ich Meldungen bekomme, auch wenn sich das Reading "battery.charge" ändert, und das macht es immer wenn nicht 100% geladen.
Das erscheint mit auch logisch.
Das hab ich geändert in:

define usv_alarm notify UPS:state:.* {push_usv()}

in der Hoffnung das nur gemeldet wird, wenn sich der "state" ändert, aber jetzt kommt gar keine Meldung mehr.
Wo liegt mein Denkfehler, ich dachte ich hätte das halbwegs begriffen, aber...

Danke für eure Hilfe
Willi

Nachtrag:

Zusätzlich schreibe ich ich "battery.charge" noch in ein Filelog, um das dann in einer Kurve darzustellen.
Um nur Änderungen abzuspeichern, habe ich folgendes gemacht:

attr UPS event-on-change-reading battery.charge

Das Filelog wird dann auch geschrieben, wie ich das möchte. Kann es sein dass sich das dann so auswirkt, dass eine Änderung des "state" im notify oben nicht durch kommt?
Wie kann ich das dann lösen?

Nochmal Danke
Willi


Fritzbox 7490
Raspberry 3
Eigenbau 433MHz Sender
Rolläden Rohrmotor24

KölnSolar

Hallo Willi,
event-on-change-reading battery.charge dürfte keinen Einfluss auf state haben.
Ich denke, Dein regexp im notify passt nicht. Am besten im event monitor die events prüfen und regexp generieren lassen.
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Frank_Huber

Nimm state mit in den event-on-change auf.
Dein state produziert gerade keine Events und somit triggert das notify nicht.

Und für die zukunft:
Es ist immer besser ein komplettes list zu posten anstatt einzelner brocken davon. [emoji6]

Gesendet von meinem Telekom Puls mit Tapatalk


rcmcronny

#3
Hallo,

ich bin mir ziemlich sicher, das bei einem Stromausfall dann ein Status "ON BATTERY" kommt, das Sollte mit dem Flag OB gekennzeichnet sein (prüf das doch per "Stecker ziehen" :) ).
Dann könntest Du darauf triggern, das OL ist "ON-LINE"

EDIT: Schau mal hier: https://forum.fhem.de/index.php/topic,27172.msg771352.html#msg771352

Ronny

lt1014

Danke euch allen.

Ich hab's geschaft, und zwar so:
defmod UPS NUT powerwalker localhost:3493
attr UPS event-on-change-reading battery.charge,state

defmod UPS_STATUS dummy
attr UPS_STATUS event-on-change-reading .*

defmod usv_alarm notify UPS:.* {copy_usv()}
defmod UPSstate_OB notify UPS_STATUS:OB.* set Push msg Stromausfall
defmod UPSstate_OL notify UPS_STATUS:OL.* set Push msg Strom ok


und in 99_myUtils.pm
sub copy_usv
  {
  my $t = ReadingsVal( "UPS", "state", 0 );
  fhem( "set UPS_STATUS $t" );
  }


Allso über eine dummy Variable. Vielleich umständlich aber so funktionierts.

Eine Frage hätte ich noch:

In meiner Funktion copy_usv wird der Inhalt einer Variable erst in die temporäre Variable $t gespeichert und diese dann in die dummy Variable übertragen.
Ich wollte nun den Umweg über $t weglassen und habs so versucht:
sub copy_usv
  {
  fhem( "set UPS_STATUS ReadingsVal( "UPS", "state", 0 )" );
  }


Das geht so aber nicht. Auch in fhem direkt funktionierts so nicht:
{fhem( "set UPS_STATUS ReadingsVal( "UPS", "state", 0 )" );}

Könnte mir bitte jemand erklären warum nicht bzw. wies denn gehen würde?

Gruß
Willi
Fritzbox 7490
Raspberry 3
Eigenbau 433MHz Sender
Rolläden Rohrmotor24