Auslösenden Rauchmelder erkennen

Begonnen von chaot4ever, 16 Dezember 2013, 16:46:08

Vorheriges Thema - Nächstes Thema

chaot4ever

Gibt es eine Möglichkeit/Skript wie man den auslösenden Rauchmelder equivalent zu Homematic-Inside (http://www.homematic-inside.de/tecbase/homematic/scriptlibrary/item/ausloesenden-rauchmelder-erkennen) in FHEM erkennen kann?

Wuppi68

wenn alle Rauchmelder mit dem Team Master in FHEM gepeert sind, dann gibt es dort auch den auslösenden Rauchmelder zu sehen ...

sollte also kein Problem sein, da ich aktuell im Büro bin kann ich Dir nicht den genauen State dazu sagen :-(

Wenn an dem auslösenden RM der Alarm gelöscht wird, herscht auch wieder Ruhe in der Bude
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

martinp876

hast du Probleme es zu sehen?
smoke_detect zeigt an, wer aktuell ausgelöst hat
recentAlarm zeigt an, wer zuletzt gemeldet hat (also falls der Alarm schon wieder gelöscht ist)

Wenns nicht so ist, bitte melden

chaot4ever

smoke _detect wäre also der triggernde Status, aber ich kann bei bestem Willen und meinem bescheidenen Wissen kein Perl-/Fhem-Skript erstellen, welches den auslösenden Smokedetector als Textbaustein in eine Meldung über z.B. Pushover, Prowl oder Mail einbindet. (z.B. Feueralarm, der Rauchmelder xy hat ausgelöst!)  :-[
(Pushover, Prowl und Mail, wie auch SMS habe ich in FHEM perfekt zum laufen gebracht.)

martinp876

nun - da habe ich auch Probleme, da ich nicht weiss, was du kannst.


man kann alle Readings bekommen - in diesen Fall mit
ReadingsVal("sdTeam","smoke_detect","-")

das ist nicht anders als bei allen andere Readings auch

chaot4ever

Hallo Martin

Nach tagelangem Basteln ist mir keine einzige Meldung bezüglich des auslösenden Rauchmelders gelungen:

define Feueralarm_Mail notify (SD.*:*alarm.*) { DebianMail('xy@@gmx.net', 'FEUERALARM FHEM', ReadingsVal("SDTeam","smoke_detect",""), ' Rauchmelder hat ausgeloest!') }
attr Feueralarm_Mail room Rauchmelder

define Feueralarm_Prowl notify (SD.*:*alarm.*) {prowl("FEUERALARM FHEM\nRauchmelder hat ausgelöst!","ReadingsVal("SDTeam","smoke_detect","")","1")}
attr Feueralarm_Prowl room Rauchmelder

define Feueralarm_Pushover notify (SD.*:*alarm.*) set PushoverFire msg 'Achtung Feuer' 'Rauchmelder hat ausgelöst!' '' 0 ''

define Feueralarm_SendSMS notify (SD.*:*alarm.*) {SendSMS('http://www.sms-revolution.ch/API/httpsms.php?user=xy&password=xxxxxxxxxxxxxxxxxxtext=FEUERALARM+FHEM+INTERN!+Rauchmelder+ReadingsVal("SDTeam","smoke_detect","")+hat+ausgeloest.&to=0122345678');;}
attr Feueralarm_SendSMS room Rauchmelder

Die Mails sowie das Prowl wie auch Pushover und SMS funktionieren auf trigger perfekt, immer nur solange kein ReadingsVal vorhanden ist.

Was zum Teufel mach ich falsch, oder besser wie kann ich die Readings in eine Meldung packen?

Grüsse Richi

martinp876

so auf die Schnelle - da fehlt ein Punkt

(SD.*:*alarm.*)

kennst du regexp?
*  - beliebig oft das Zeichen davor
. - beliebiges zeichen
.* - beliebig oft beliebiges Zeichen
:* - beliebig oft doppelpunkte

probiere
(SD.*:.*alarm.*)
oder
(SD.*:.alarm.*)

chaot4ever

Danke für die Info, die Alarmauslösung hat aber schon funktioniert,trotzdem habe ich den Punkt noch gesetzt; einfach der Rauchmelder wurde nicht angezeigt, nur der von mir geschriebene Text: ReadingsVal("SDTeam","smoke_detect","" wurde im Mail und in Prowl angezeigt.

martinp876

kontroliere einmal deine hochkomma
define Feueralarm_Prowl notify (SD.*:*alarm.*) {prowl("FEUERALARM FHEM\nRauchmelder hat ausgelöst!",\
           ,"ReadingsVal("SDTeam","smoke_detect","")"\
           ,"1")}

ReadingsVal ist eine Funktion, keine Variable. Wie sollen die "" zusammenpassen?

vielleicht besser so?
define Feueralarm_Prowl notify (SD.*:*alarm.*) {prowl("FEUERALARM FHEM\nRauchmelder hat ausgelöst!",\
           ,ReadingsVal("SDTeam","smoke_detect","")\
           ,"1")}

Für die email gilt das gleich - lese erst ReadingsVal in eine Variable und baue dann deinen Link.

chaot4ever

Hallo Martin

Herzlichen Dank für deine Info.
Endlich kriege ich bei Prowl nicht mehr die Funktion ReadingsVal("SDTeam","smoke_detect","") als Text angezeigt.
Trotzdem verstehe ich deinen folgenen Satz nicht:
ZitatFür die email gilt das gleich - lese erst ReadingsVal in eine Variable und baue dann deinen Link.
Wäre für eine Erläuterung oder einen Verweis zu einem Beschrieb sehr dankbar.

Gruss Richi

martinp876

Zitat...xxxxxtext=FEUERALARM+FHEM+INTERN!+Rauchmelder+ReadingsVal("SDTeam","smoke_detect","")+hat+ausgeloest.&to=0122345678');;}

wird die Funktion ReadingsVal ausgeführt oder nur als text weiter gegeben? Wie sollen die " geparst werden? Da Erste ist ja dann bei sVal("SDT zu Ende.

mache ein
my $alarm = ReadingsVal("SDTeam","smoke_detect","");;\
und schicke $alarm weg

Gruss Martin

chaot4ever

Also hab ich folgenden code verwendet:
define Feueralarm_Mail notify (SD.*:.*alarm.*) { my $alarm = ReadingsVal("SDTeam","smoke_detect","");; DebianMail('xx@@yyyy.gmx', 'FEUERALARM FHEM ', 'Rauchmelder $alarm hat ausgeloest!') }
attr Feueralarm_Mail room Rauchmelder

Dann erhalte ich folgendes Mail: Header: FEUERALARM FHEM, Text: Rauchmelder $alarm hat ausgeloest!

martinp876

my $alarm = "sirene"
'$alarm'  => $alarm
"$alarm" => sirene

dopplete Hochkomma

chaot4ever

Aber auch mit doppeltem Hochkomma geht nichts: Syntax Error

{ my $alarm = "ReadingsVal("SDTeam","smoke_detect","")" ;; DebianMail('xx@@yyyyy.gmx', '12FEUERALARM FHEM', 'Rauchmelder "$alarm" hat ausgeloest!') }

Ich glaub ich bin einfach zu blöd!

chaot4ever

PS: Müssten nicht 2x == nach my $alarm stehen?

chaot4ever

und
{ my $alarm = ReadingsVal("SDTeam","smoke_detect","") ;; DebianMail('xx@@yyyyy.gmx', '12FEUERALARM FHEM', 'Rauchmelder "$alarm" hat ausgeloest!') }
ergibt im Mail ebenfalls: Rauchmelder "$alarm" hat ausgeloest!

crissiloop

Hallo,
ich hatte bei einer Frage zum Notify auch ein Problem mit den Anführungszeichen und dem Extrahieren der Variablen.
Lösung siehe: http://forum.fhem.de/index.php/topic,17698.msg116583.html#msg116583
Müsste dann bei dir wie folgt sein:
{ my $alarm = ReadingsVal("SDTeam","smoke_detect","") ;; DebianMail('xx@@yyyyy.gmx', '12FEUERALARM FHEM', "Rauchmelder ".$alarm." hat ausgeloest!") }

Gruß
Christian
FHEM 5.5 auf Cubietruck

1x HMLAN, 1x HMUSB, 12x HM-LC-Bl1 PBU-FM, 5x HM-LC-Sw1-Pl, 1x HM-LC-Sw1-FM, 2x HM-LC-Sw2-FM, 2x HM-SEC-RHS, 3x HM-SEC-SD, 8x HM-SEC-SC, 3x HM-RC-4-2, 1x HM-RC-8, 1x HM-Sec-SFA-SM, Jeelink, 7x Technoline TX 29 DTH-IT

martinp876

Hallo Christian,

du solltest dich ein bisschen mit perl syntax beschäftigen:
= ist eine Zuweisung
== ist ein Vergleich von Zahlen (nicht strings)

my $alarm = "ReadingsVal("SDTeam","smoke_detect","")" ;;

in hochkomma... ReadingsVal ist eine funktion - und soll nicht als text ausgewertet werden
die Hochkomma erzeugen folgende Gruppen:

my $alarm = "ReadingsVal("
                     SDTeam
                     ","
                     smoke_detect
                     ","
                     ")"
                     ;;

damit kann keiner etwas anfangen
daher sollte es so sein:

my $alarm = ReadingsVal("SDTeam","smoke_detect","");;

ein Funktionsaufruf mit 2 inputs, alle 3 strings.

Gruss Martin

crissiloop

Hallo Martin,

ich glaub jetzt verwechselst du mich wohl.
Ich habe nie etwas von == geschrieben und auch nicht von "ReadingsVal. Der Unterschied zwischen = und == ist mir auch klar.
Ich habe lediglich den Codeschnipsel von Richi ergänzt und zwar im hinteren Teil!
{ my $alarm = ReadingsVal("SDTeam","smoke_detect","") ;; DebianMail('xx@@yyyyy.gmx', '12FEUERALARM FHEM', "Rauchmelder ".$alarm." hat ausgeloest!") } stand in meinem Post.

Gruß und nix für ungut
Christian
FHEM 5.5 auf Cubietruck

1x HMLAN, 1x HMUSB, 12x HM-LC-Bl1 PBU-FM, 5x HM-LC-Sw1-Pl, 1x HM-LC-Sw1-FM, 2x HM-LC-Sw2-FM, 2x HM-SEC-RHS, 3x HM-SEC-SD, 8x HM-SEC-SC, 3x HM-RC-4-2, 1x HM-RC-8, 1x HM-Sec-SFA-SM, Jeelink, 7x Technoline TX 29 DTH-IT

martinp876