Hauptmenü

Testen einer Notify

Begonnen von cc13, 23 Januar 2017, 12:16:18

Vorheriges Thema - Nächstes Thema

cc13

Hallo,

ich rufe per SYSSTAT verschiedene Werte meines QNAP NAS ab (NASStat). Das läuft gut. Mit dabei sind u.A. die Smartinfo-Werte der Festplatten, die im Augenblick alle "GOOD" ausgeben. Dieser Wert wird per Reading (z.B. smartinfo_hdd1) angezeigt.

Ich habe mir nun eine Notify angelegt, die auf einer Änderung dieses Readings reagiert und mir per Telegram eine Nachricht schickt. Für Vorschläge, das Besser zu lösen, bin ich offen und dankbar.


define n_NASStat_smartinfo_hdd1 notify NASStat.smartinfo_hdd1:.* { if ($EVENT !~ m/GOOD/) {fhem("set telegram message $EVENT")}}


Um nun zu testen, ob das Notify funktioniert, suche ich eine Möglichkeit und benötige eure Hilfe. Ich habe es mit einem Trigger probiert:


trigger NASStat:smartinfo_hdd1 BAD
trigger NASStat:smartinfo_hdd1:.* BAD


Beides hat leider nicht funktioniert.

VG
Carsten

Syrex-o

Hey cc13,

ZitatIch habe mir nun eine Notify angelegt, die auf einer Änderung dieses Readings reagiert und mir per Telegram eine Nachricht schickt. Für Vorschläge, das Besser zu lösen, bin ich offen und dankbar.

Funktioniert denn dein Code nicht, mit dem du eine Nachricht bekommen möchtest, oder willst du das einfach testen?

Ich würde dir ein einfaches DOIF empfehlen.
Benutze ich auch und stelle Stück für Stück alle Notify´s darauf um.
Dann nimmst du dir einfach beide events die eintreten können und packst sie in dein DOIF.

Wenn du das dann einfach testen willst, dann bau einfach ein DOIF mit einer zeit um zu gucken ob du eine Nachricht bekommst.

Hoffe das hilft dir.

Grüße

Otto123

Hallo Carsten,

was bekommst Du mit deinem trigger denn für einen Fehler?

Schau Dir im Eventmonitor an was passiert und schlussfolgere daraus wie dein trigger aussehen muss.
Schau Dir auch an wie die normalen Events aussehen die triggern sollen.
Und lies die Beschreibung in der commandref und im Wiki zu notify genau!

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

cc13

Ich kann im Moment nur vermuten, ob/dass mein Notify funktioniert. Da der Smartinfo-Wert (zum Glück) im Moment auf GOOD steht und sich nicht ändert, habe ich es damit getan, dass ich die if-Abfrage umgekehrt habe, also auf "eq GOOD" geprüft. Telegram hat die Nachricht verschickt.

Leider weiß ich nicht, welcher Wert im Reading erscheint, wenn die Platte nicht mehr GOOD ist. Deshalb wollte ich jetzt per Trigger eine Änderung des Werts GOOD simulieren, das Notify einfach nur testen. Also Fehlermeldung beim Trigger kam


Please define NASStat:smartinfo_hdd1 first


Ok, wenn ich auf DOIF umstelle, wie kann ich das dann testen, wenn die Smartinfo-Werte sich im Moment nicht verändern? Quasi vorbeugend testen.

Syrex-o

ZitatOk, wenn ich auf DOIF umstelle, wie kann ich das dann testen, wenn die Smartinfo-Werte sich im Moment nicht verändern? Quasi vorbeugend testen.

Naja wenn du einfach nur erfassen möchtest, dass sich der Wert geändert hat, dann benutze doch:
define n_NASStat_smartinfo_hdd1 DOIF ([NASStat.smartinfo_hdd1:] ne "GOOD" )
("dein set Befehl")


Dabei benutzt du einfach "ne" und sagst somit: not equal.
Dann sollte es funktionieren.  ;)

Grüße

KölnSolar

Zitatdefine n_NASStat_smartinfo_hdd1 notify NASStat.smartinfo_hdd1:.*
Zitattrigger NASStat:smartinfo_hdd1 BAD
trigger NASStat:smartinfo_hdd1:.* BAD

Das define des notify müsste meines Erachtens so aussehen:
define n_NASStat_smartinfo_hdd1 notify NASStat:smartinfo_hdd1.*
und der trigger
trigger NASStat smartinfo_hdd1 BAD

Grüße Markus
Edit: So triggert aber jedes event und nicht nur BAD das notify !!!
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

Otto123

Zitat von: cc13 am 23 Januar 2017, 12:58:06
Ich kann im Moment nur vermuten, ob/dass mein Notify funktioniert. Da der Smartinfo-Wert (zum Glück) im Moment auf GOOD steht und sich nicht ändert, habe ich es damit getan, dass ich die if-Abfrage umgekehrt habe, also auf "eq GOOD" geprüft. Telegram hat die Nachricht verschickt.

Leider weiß ich nicht, welcher Wert im Reading erscheint, wenn die Platte nicht mehr GOOD ist. Deshalb wollte ich jetzt per Trigger eine Änderung des Werts GOOD simulieren, das Notify einfach nur testen. Also Fehlermeldung beim Trigger kam


Please define NASStat:smartinfo_hdd1 first


Ok, wenn ich auf DOIF umstelle, wie kann ich das dann testen, wenn die Smartinfo-Werte sich im Moment nicht verändern? Quasi vorbeugend testen.
Mir ist es letztlich völlig egal wie du das machst, aber ein notify solltest Du auch verstehen. Und ich finde notify ist der richtigere Ansatz für Deine Aufgabenstellung.

Und was sagt Deine Fehlermeldung? -> Du triggerst ein device was es gar nicht gibt!
Also die erste Richtigstellung wäre: -> hinter trigger das notify welches Du triggern willst. Danach könntest du noch weitere Argumente packen.
trigger n_NASStat_smartinfo_hdd1

Aber ich denke Dein regEx im notify stimmt auch nicht. Wie gesagt Eventmonitor hilft!

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

cc13

#7
Ob das Regex in meiner Notify falsch ist, kann ich noch gegenprüfen (siehe dazu der nächste Absatz). Ich möchte noch einmal ausholen und erklären, worum es mir geht.

Der Wert "GOOD" im Reading ist so und verändert sich hoffentlich nie. Allerdings weiß jeder, der mit Festplatten zu tun hat, dass die Dinger alt werden und der Wert sich dann ändert. In welchen Wert, weiß ich (jetzt noch) nicht. Und auf diese Änderung soll mein Notify reagieren. Getestet habe ich das jetzt, indem ich nicht auf !"GOOD" teste (Es ist ja "GOOD" und somit würde mein Notify nicht WAHR ergeben), sondern auf !"BAD". Da das Reading "GOOD" enthält, war es !"BAD". Das hat funktioniert, das Notify wurde ausgelöst.

Nun möchte ich aber den Gegentest machen, bzw. für einen Test den Wert des Readings ändern, damit !"GOOD" WAHR ergibt. Man könnte es auch Unit-Testing nennen. Ok, das wäre zu viel verlangt, aber es sollten alle Möglichkeiten und Eventualitäten getestet werden und deshalb möchte ich den Fall, dass das Reading nicht mehr "GOOD" ist, testen.