Ein Notify auf mehrere Geräte

Begonnen von skycrack, 20 Januar 2018, 21:21:51

Vorheriges Thema - Nächstes Thema

skycrack

Hallo,
klare Anfängerfrage:
Ich schreib mal was rauskommen soll, da das meist Lösungsorientierter ist.
Ich habe 20 Rauchmelder, deren Alias alle mit RM_ beginnen. Mir reicht ein simples Notify was mir eine Nachricht schickt mit dem Zeitstempel und den Wert des Aliasnamen.

z.B heißt einer RM_EG_WZ_50 ect.

Wäre über kurze Hilfestellung dankbar.
Gruß Rene

CoolTux

Der Alias hilft hier nicht. Auf Alias kann man nicht triggern. Wie sind die korrekten Devicenamen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

skycrack

Hallo, danke für die Antwort. Ich befürchtete es schon fast. die Devicenamen sind per Autocreate angelegt. IT_1527x6be7a.
So muss ich diese wohl doch alle renamen, genau wie die Logfiles. ?
Gruß

CoolTux

Sollte man eh machen.
Kannst aber auch alle in die RegEx setzen

(,Fgfggf|fgfgfds|fgfgdse|...)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

KernSani

Es mach m.E. generell Sinn, Devices "sprechend" zu benennen. Du wirst das noch öfter brauchen und dann bist du froh, wenn du dir den Namen merken kannst.

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

skycrack

OK, danke für diesen Tip, angenommen die heissen dann alle als Devicenamen RM_Geschoss_Zimmer_Nummer , wie setzte ich dann ein Notify um benachrichtig zu werden sobald einer der Rauchmelder auslöst? notify .*RM_*:on ??

KernSani

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

skycrack

Besten Dank,

define ntfy_Rauchmelder notify RM_.*:on {fhem ("set pushmsg msg Rauchmelder $NAME wurde ausgelöst")};

funktioniert soweit. Kann ich in meine NAchricht auch noch das readingsdatum mit einfügen?
Gruß Rene

KernSani

Hi again,

btite code tags (das # über den Smilies) verwenden.
Die Perl-Funktion ReadingsTimestamp (https://fhem.de/commandref.html#perl) hilft dir da...

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

skycrack

Hallo,
habe ich versucht, leider ohne Erfolg.
Sieht jetzt so aus:

RM_.*:on {my $temp=ReadingsVal($NAME,"nanoCUL433_TIME","0");;
fhem ("set pushmsg msg Rauchmelder $NAME wurde $temp ausgelöst") ;; fhem DebianMail('email@email.de','Feueralarm','Rauchmelder `$NAME` wurde $temp ausgelöst')};;


Pushnachricht sieht so aus:
Rauchmelder RM_DG_SZ wurde 0 ausgelöst.
(hier zieht die $NAME variable aber das $temp geht nicht da das ReadingVal wohl auch mit der Übergabe der Variable nicht klar kommt)

Mailnachricht sieht so aus:
Rauchmelder $NAME wurde ausgelöst
( hier zieht die Variable $NAME nicht und $Temp scheint es gar nicht zu geben )

Bin eben kein Perlprofi :-/

KernSani

Ich hatte ja auch auf ReadingsTimestamp verwiesen ;-)

Probier mal:my $temp=ReadingsTimestamp($NAME,"value","0")

das Problem mit $NAME im Email kann ich mir nur durch die "backticks" erklären. Wenn das entfernen der `nicht hilft mach's mal so:
'Rauchmelder'.$NAME.'wurde $temp ausgelöst'


RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

skycrack

@KernSani
Danke für den Denkanstoss, es gibt zumindest einen Teilerfolg. Ich habe die Phushmsg und das versenden der Mail mal in 2 seperate notify gesteckt. Das senden über Pushover funktioniert jetzt mit Datum und dem übergebenen Devicenamen.
RM_.*:on {my $temp=ReadingsTimestamp($NAME,"state","0") ;; fhem ("set pushmsg msg 'Rauchmelder' '$NAME wurde $temp ausgelöst' '' sound=siren priority=2 retry=30 expire=3600")};

aber per debianmail modul bekomme ich es einfach nicht hin, dass dort die Variablen eingesetzt werden.
Ich hatte da alle Möglichen Variationen ausprobiert.

RM_.*:on {my $temp=ReadingsTimestamp($NAME,"state","0") ;; fhem DebianMail('email@email.de' , 'Feueralarm' , 'Rauchmelder $NAME wurde $temp ausgelöst')};

bringt ernüchternd immer noch eine Mail mit "Rauchmelder $NAME wurde $temp ausgelöst. Ich denke es liegt irgendwie an der Übergabeeigenschaft der Argumente an das debianmail... Aber irgendwer muss dort doch schon mal Variablen reingepackt haben...?

KernSani

was ist DebianMail eigentlich? Eine Perl sub? Dann gehört kein FHEM vorne dran.
Probier mal sowas:

my $text ="Rauchmelder $NAME wurde $temp ausgelöst";;DebianMail('email@email.de' , 'Feueralarm' , $text)}; 
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

skycrack

Danke dir sehr,
debianmail ist eine sub, angelegt nach https://wiki.fhem.de/wiki/E-Mail_senden
dort stand da auch
ZitatBei allen Feldern können generell doppelte " oder einfache ' Anführungszeichen verwendet werden. Innerhalb von "" müssen Sonderzeichen wie @ aber maskiert werden, da sie sonst als Steuerzeichen interpretiert werden:
"email\@email.domain" oder 'email@email.domain'

Demnach probierte ich es nun so, was zu gewünschten Erfolg führte.
RM_.*:on {my $temp=ReadingsTimestamp($NAME,"state","0") ;; DebianMail('email@email.de' , 'Feueralarm' , "Rauchmelder $NAME wurde $temp ausgeloest" )};

Danke für die Hilfsbereitschaft. LG Rene