Tür Fensterkontakt HM-Sec-SC Sabotage Status abfragen

Begonnen von R_Fhem, 16 Dezember 2013, 22:55:10

Vorheriges Thema - Nächstes Thema

R_Fhem

Ich habe einen Homatic Tür-Fensterkontakt und möchte dort den Sabotagekontakt abfragen. Das Abfragen des Status des HM-Sec.SC ist mir gelungen mit:

define Fenster_Kontakt_Notify_Closed notify Fenster_Kontakt_01:closed {fhem("set TestState $NAME: ZU");;}
define Fenster_Kontakt_Notify_Open notify Fenster_Kontakt_01:open {fhem("set TestState $NAME: AUF");;}

ich habe alles möglich versucht und gegoogled. Ich finde keine Info wie der Notify aussehen muss.

Danke im Voraus für eine Antwort. Rainer

Grisu

Hoi Reiner
Ich habe es folgendermassen gelöst


# Sabotage Alarm
define sabotage_chk notify .*:[Ss]abotage.* { if("%" !~ m/off/) { \
FBMail('name@@gmx.ch',' @ SabotageError %',' @ SabotageError %');;\
if ( Value("Alarmanlage") eq "on") {fhem("trigger Alarm @_ist_%")};;\
Log 3, "@: SabotageError %";; \
} \
}


Zeile 1: Notify bei Sabotage ungleich off reagiert auf alle Melder
Zeile 2: Email Funktion aufrufen  @ = Name des Aktors % = Status des Aktors
Zeile 3: Alarm auslösen wenn die Alarmanlage eingeschaltet ist
Zeile 4: Logeintrag

Gruss Grisu
2x RPI B+ 1x FritzBox7390 1x USV
1x HM-Lan 1x cul433 1x cul868
9x HM Türkontakt 1x Heizzyklen Überw. 1x Ultraschall Öl Pegel 1x Regens. 15x IT Z.stecker 2x HM Dimmer 6x FS20 Dimmer 1x Stromzähler 1x FS20 to Infrarot 3x HM Rauchmelder 3x Temp 10x Sender
Alarmanlage Aquariumst. Terrariumst.

martinp876

Hi,

nur als Hinweis (ich kanns nicht lassen.. . sorry)
HMInfo bietet die Möglichkeit, alarme zu sammeln.
Attribut sumERROR beinhaltet den filter-string - da ist einigs drin, was "mailenswert" ist.
Kann man auch anpassen.

Ein notify könnte man auf das entsprechend Reading setzen.
Gruss Martin

R_Fhem

Hi Grisu,

Danke, damit kann ich was anfangen.

Hallo Martin,

guter Hinweis. Ich habe allerdings ein Problem da ich zwar Technick behersche und auch Programmieren kann, jedoch vermisse ich eine Art von Programmersguide / Reference für FHEM (angelehnt an Heimautomatisierung-mit-fhem.pdf) wo man Grundlagen nachlesen kann und auch Tipps findet. Darin sollte z.B. auch auf die Hardware Komponenten Steuerung und Abfrage eingegangen werden.

Ich habe erst Fhem und drei HomeMatic Komponenten seit ein paar Tagen. Die meiste Zeit habe ich gebraucht mein FHEM Overload frei zu bekommen, dann erst konnte ich vernünftige Einstellungen und Programmierungen durchführen. Was mir aber noch überhauptt nicht verständlich ist ist die Abfrage der Statien und deren Syntax. Z.B. notify .*:[Ss]abotage.* Welche Namen und wie???
Desweiteren suche ich ein Liste der feststehenden Variablen und deren Bedeutung. z.B. $NAME, %

Alles Themen für einen Programmersguide.

Danke und Gruß Rainer

Jaydee

Und wenn du es etwas aufgeräumter haben willst, sprich weniger einzelne Notifies in der Liste, kannst du auch ein Notify für ein Gerät anlegen und mit $EVENT alle eventualitäten abfangen...


define Fenster_Kontakt_Notify notify Fenster_Kontakt_01 {
  if ("$EVENT" eq "closed") {
    fhem("set TestState $NAME: ZU");}
  if ("$EVENT" eq "open") {
    fhem("set TestState $NAME: AUF");}

...
}

(DEF-Schreibweise)

Gruß
Jan

R_Fhem

Danke Yaydee,

dies vereinfacht meine Abfragen. Leider kann ich damit nicht den Sabotagekontakt abfragen.

Gibt es dafür eine Variable?

Gruß Rainer

Grisu

Hoi Rainer

Vielleicht ist es nicht richtig rüber gekommen aber das Sabotage Statement wird nur einmal für Alle Aktoren verwendet! Mit dem .* werden alle Aktoren ausgewertet die ein "Sabotage" oder "sabotage" senden.

define sabotage_chk notify .*:[Ss]abotage.* { if("%" !~ m/off/) { \

Ebenenso wird ein Batterie Alarn definiert der für sämtliche devicetypen funktioniert:

define batt_chk notify .*:[Bb]attery.* { if("%" !~ m/ok/) { \

Ebenso ist die Kontakt Auswertung sofern deine Namensgebung ein wenig strukturiert ist...
Im folgenden Beispiel werden alle Türkontakte mit TC. beginnend ausgewertet.
Also 1 notify für alle Aktoren

# Alarm Ausloesen
define Tuer_Alarm notify TC.* {\
  if ("%" eq "open") {\
    if ( Value("Alarmanlage") eq "on") {fhem("trigger Alarm @_ist_%")};;\
    if ( Value("Alarmanlage") eq "xx") {fhem("trigger email Alarm_@_ist_%")};;\
  }\
}


Gruss Grisu
2x RPI B+ 1x FritzBox7390 1x USV
1x HM-Lan 1x cul433 1x cul868
9x HM Türkontakt 1x Heizzyklen Überw. 1x Ultraschall Öl Pegel 1x Regens. 15x IT Z.stecker 2x HM Dimmer 6x FS20 Dimmer 1x Stromzähler 1x FS20 to Infrarot 3x HM Rauchmelder 3x Temp 10x Sender
Alarmanlage Aquariumst. Terrariumst.

Mr. P

Zitat von: Grisu am 17 Dezember 2013, 14:02:38# Alarm Ausloesen
define Tuer_Alarm notify TC.*:open {\
  if ( Value("Alarmanlage") eq "on") {fhem("trigger Alarm @_ist_%")};;\
  if ( Value("Alarmanlage") eq "xx") {fhem("trigger email Alarm_@_ist_%")};;\
}

Ist jetzt zwar ungetestet, aber müsste doch eigentlich so auch genügen. ;-)
Greetz,
   Mr. P

martinp876

Hallo Rainer,

ich stehe aktuell nur für HM.
Ich gehe davonaus, dass du im forum gestöbert hast und

http://www.fhemwiki.de/wiki/Hauptseite
beinhalt etwas versteckt ein

http://fhem.de/Heimautomatisierung-mit-fhem.pdf

den HM-Anhang habe ich noch einmal überarbeitet. Bis er wieder eingearbeitet ist steht der auch in
http://forum.fhem.de/index.php?action=dlattach;topic=16563.0;attach=8796

Die Variablen zu den Notifies findest du im Commandref
http://fhem.de/commandref.html
unter notify
http://fhem.de/commandref.html#notify
Ich empfehle die englische Version, so du dessen mächtig bist. Deutsch ist nicht vollständig.

Soweit ich weiss wird hier ein tutorial erarbeitet (was sicher notwendig ist) - bin ich aber nicht beteiligt.

So für diese Forum sollte es reichen.
Hier gerne Fragen zu HM. Generelle Fragen (notify, at,...) an die Platfrom Jungs, so dass sie  mitbekommen, wo sie ihre Docu verbessern müssen.

Gruss Martin

R_Fhem

Hi Grisu Und Martin,

Grisu,

ich glaub ich habs verstanden, aber es will nicht funktionieren. Folgendes ist mein einfacher Notify:
sabotage_chk notify .*:[Ss]abotage.* {

fhem("set TestState_C $NAME: $EVENT ZU @ cc %");
  if($EVENT !~ m/off/) {
    fhem("set TestState_C $NAME:$EVENT ZU @ cc %");
}
}

Es erfolgt kein Triggern wenn ich den Sabotagekontakt auf und zu mache. Der Event zeigt es an:

2013-12-17 16:05:06.419 dummy TestState Fenster_Kontakt_01: AUF
2013-12-17 16:05:06.434 CUL_HM Fenster_Kontakt_01 alive: yes
2013-12-17 16:05:06.434 CUL_HM Fenster_Kontakt_01 battery: ok
2013-12-17 16:05:06.434 CUL_HM Fenster_Kontakt_01 sabotageError: on
2013-12-17 16:05:06.434 CUL_HM Fenster_Kontakt_01 open
2013-12-17 16:05:06.434 CUL_HM Fenster_Kontakt_01 contact: open (to hmUSB)
2013-12-17 16:05:07.112 dummy TestState_B Fenster_Kontakt_01: event: alive: yes
2013-12-17 16:05:07.115 dummy TestState_B Fenster_Kontakt_01: event: battery: ok
2013-12-17 16:05:07.118 dummy TestState_B Fenster_Kontakt_01: event: sabotageError: off
2013-12-17 16:05:07.127 dummy TestState_B Fenster_Kontakt_01: event: open
2013-12-17 16:05:07.133 dummy TestState_A Fenster_Kontakt_01: AUF
2013-12-17 16:05:07.143 dummy TestState_B Fenster_Kontakt_01: event: contact: open (to hmUSB)
2013-12-17 16:05:07.148 dummy TestState Fenster_Kontakt_01: AUF
2013-12-17 16:05:07.163 CUL_HM Fenster_Kontakt_01 alive: yes
2013-12-17 16:05:07.163 CUL_HM Fenster_Kontakt_01 battery: ok
2013-12-17 16:05:07.163 CUL_HM Fenster_Kontakt_01 sabotageError: off
2013-12-17 16:05:07.163 CUL_HM Fenster_Kontakt_01 open
2013-12-17 16:05:07.163 CUL_HM Fenster_Kontakt_01 contact: open (to hmUSB)

Auch in den Readings von dem Kontakt ändert sich sabotageError auf on und off dabei. Nur der Notify geht einfach nicht.

Irgend eine Idee.

Martin,

Danke für die Info die Einleitung hatte ich schon, ohne die hätte ich Fhem nicht ans laufen gekriegt. Und wg. Doku wende ich mich noch mal an die Plattform. Leider klappt mein Notify mit dem Sabotage Kontakt nicht.

Irgend eine Idee?

Danke Rainer

martinp876

sabotage_chk notify .*:[Ss]abotage.* {
sabotage ist immer klein geschrieben
sabotage_chk notify .*:sabotage.* {
sollte reichen, - eigentlich auch
sabotage_chk notify sabotage.* {

fhem("set TestState_C $NAME: $EVENT ZU @ cc %");
macht ein
set TestState_C <name>: ...

was ist den TestState_C? Kennt das den Befehl <name:>?


hast du den Befehl schon einmal manuell probiert? Logge es einmal
Log 1,"cmd:set TestState_C $NAME: $EVENT ZU @ cc %";

um zu sehen,was  gestartet wird. Das log kommt ins  logfile

Gruss Martin

R_Fhem

Hallo Martin,

Test_State_C ist ein Dummy und es lässt sich auch mit dem Befehl set Test_State_C xxxx setzen. Dies sehe ich und benutze ich zum testen und Verständnis.

Ich habe mehere notify definiert. Und diese setzen zum debuggen die Test_State_x Dummies. Das notify für Open und Close funktionert, das mit dem sabotage nicht.

Hier mein jetzt ganz kleines notify:
sabotage.* {

fhem("set TestState_C $NAME: $EVENT ZU @ cc %");

}

bzw in der fhem.cfg:
# Sabotage Alarm
define sabotage_chk notify sabotage.* { \
\
fhem("set TestState_C $NAME: $EVENT ZU @ cc %");;\
\
}\


Hier die Anzeige meiner Dummies:
dummy
TestState                               Fenster_Kontakt_01: AUF
TestState_A                           Fenster_Kontakt_01: AUF
TestState_B         Fenster_Kontakt_01: event: contact: open (to hmUSB)
TestState_C                                           xxxxx

Das xxxxxx kommt von meinem händischen set, es war davor ???

Was kann ich noch tun?

Gruß Rainer

martinp876

Hallo Reiner,

das .* brauchst du wohl vorher - men Fehler

define sabotage_chk notify .*sabotage.* { \
\
fhem("set TestState_C $NAME: $EVENT ZU @ cc %");;\
\
}\


Der Event kommt schon - oder? Kannst du mit "inform on" live ansehen

Gruss Martin

R_Fhem

Hallo Martin,

ich habe .* hinzu gefügt. Immer noch kein Ergebnis. In einem Telnet hatte ich schon vorher mit inform timer den sabotage Event gesehen. Siehe meinen Eintrag von 16:10Uhr.
Dabei habe ich den Kontakt einmal geöffnet und dann geschlossen.

Gruß Rainer

R_Fhem

Hallo Zusammen,

ich habe den Fehler gefunden. Es ist nicht zu Glauben. Der Fehler ist nur in der fhem.cfg zu sehen:

Fehlerhafte fhem.cfg:
# Sabotage Alarm
define sabotage_chk notify .*sabotage.* { \
\
fhem("set TestState_C $NAME: $EVENT ");;\
\
}\


Funktionierende fhem.cfg:
# Sabotage Alarm
define sabotage_chk notify .*sabotage.* { \
\
fhem("set TestState_C $NAME: $EVENT ");;\
\
}


Der Unterschied ist der zusätzliche Backslash \ hinter der letzten geschweiften Klammer. In der Weboberfläche ist der nicht zu sehen.

Ich habe es nicht glauben wollen und habe es mehrmals hin und her gestest.

Ist wohl ein Pinazfehler? Oder?

Gruß Rainer