FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: chaot4ever am 16 Dezember 2013, 16:46:08

Titel: Auslösenden Rauchmelder erkennen
Beitrag von: chaot4ever am 16 Dezember 2013, 16:46:08
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?
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: Wuppi68 am 16 Dezember 2013, 16:51:14
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
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: martinp876 am 16 Dezember 2013, 18:46:09
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
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: chaot4ever am 16 Dezember 2013, 19:04:04
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.)
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: martinp876 am 17 Dezember 2013, 08:26:10
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
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: chaot4ever am 18 Dezember 2013, 18:09:00
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
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: martinp876 am 18 Dezember 2013, 23:40:03
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.*)
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: chaot4ever am 19 Dezember 2013, 09:09:22
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.
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: martinp876 am 19 Dezember 2013, 11:19:41
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.
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: chaot4ever am 19 Dezember 2013, 14:45:18
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
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: martinp876 am 19 Dezember 2013, 15:10:08
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
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: chaot4ever am 19 Dezember 2013, 15:34:39
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!
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: martinp876 am 19 Dezember 2013, 17:48:16
my $alarm = "sirene"
'$alarm'  => $alarm
"$alarm" => sirene

dopplete Hochkomma
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: chaot4ever am 19 Dezember 2013, 17:58:36
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!
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: chaot4ever am 19 Dezember 2013, 18:00:18
PS: Müssten nicht 2x == nach my $alarm stehen?
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: chaot4ever am 19 Dezember 2013, 18:05:44
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!
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: crissiloop am 19 Dezember 2013, 19:00:29
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
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: martinp876 am 20 Dezember 2013, 11:39:27
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
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: crissiloop am 20 Dezember 2013, 14:34:50
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
Titel: Antw:Auslösenden Rauchmelder erkennen
Beitrag von: martinp876 am 20 Dezember 2013, 15:05:27
sorry, ja