Auslösenden Rauchmelder finden

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

morpheus999
Beiträge: 30
Registriert: 21.08.2013, 14:07

Re: Auslösenden Rauchmelder finden

Beitrag von morpheus999 » 03.01.2014, 00:11

Hallo zusammen.

Ich verwende dieses Script für die Erkennung, welcher Fensterkontakt bei der Alarmanlage ausgelöst hat und funktioniert super.
Da ich dies auch bei meinen 2 Bewegungsmeldern machen will, aber irgendwie nicht funktioniert. Muss ich da im Script sonst noch was umschreiben außer den SENSORTYP nach dem er suchen soll ?

Weil das vom Status her was andres ist... oder ?

Das ist das Script der Fensterkontakte (HM-Sec-RHS), da habe ich nur die GRUPPE geändert und den TYPE:

Code: Alles auswählen

var sec=dom.GetObject("Alarm");
string i;
string list;
list="";
foreach(i,sec.EnumUsedIDs())
{
  var item=dom.GetObject(i);
  if(item.IsTypeOf(OT_CHANNEL))
  {
    var dev=dom.GetObject(item.Device());
    if(dev.HssType()=="HM-Sec-RHS")
    {
       var state=item.DPByHssDP("STATE");
       if(state.Value())
       {
          list=list+dev.Name();
       }
    }
  }
}
if(list!="")
{
  string stdout;
  string stderr;
  system.Exec("/etc/config/addons/email/email 03 '"+list+"'",&stdout,&stderr);
}
Das ist der von den Bewegungsmeldern (HM-Sec-MDIR), muss ich da was zusätzlich ändern ?

Code: Alles auswählen

var sec=dom.GetObject("Alarm");
string i;
string list;
list="";
foreach(i,sec.EnumUsedIDs())
{
  var item=dom.GetObject(i);
  if(item.IsTypeOf(OT_CHANNEL))
  {
    var dev=dom.GetObject(item.Device());
    if(dev.HssType()=="HM-Sec-MDIR")
    {
       var state=item.DPByHssDP("STATE");
       if(state.Value())
       {
          list=list+dev.Name();
       }
    }
  }
}
if(list!="")
{
  string stdout;
  string stderr;
  system.Exec("/etc/config/addons/email/email 03 '"+list+"'",&stdout,&stderr);
}
mfg Georg

homey21
Beiträge: 1113
Registriert: 17.11.2013, 01:54
System: CCU
Hat sich bedankt: 36 Mal
Danksagung erhalten: 3 Mal

Re: Auslösenden Rauchmelder finden

Beitrag von homey21 » 03.01.2014, 00:21

Code: Alles auswählen

var state=item.DPByHssDP("STATE");
der BwM hat MOTION

alchy
Beiträge: 10756
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 674 Mal

Re: Auslösenden Rauchmelder finden

Beitrag von alchy » 03.01.2014, 00:36

Bewegungsmmelder können HM-Sen-MDIR-O oder HM-Sec-MDIR heissen,
und haben den Datenpunkt MOTION zur Abfrage einer Auslösung.
Zusätzlich noch den Tipp, die Mails über CUxD zu versenden, damit du gleich am Anfang schon etwas richtig machst

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

homey21
Beiträge: 1113
Registriert: 17.11.2013, 01:54
System: CCU
Hat sich bedankt: 36 Mal
Danksagung erhalten: 3 Mal

Re: Auslösenden Rauchmelder finden

Beitrag von homey21 » 03.01.2014, 00:37

Hi, bietet CUxD denn mehr als dieser "klassische" Email-Code?

alchy
Beiträge: 10756
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 674 Mal

Re: Auslösenden Rauchmelder finden

Beitrag von alchy » 03.01.2014, 00:45

CUxD kann viel mehr, aber das werd ich jetzt hier nicht zum Thema machen.
Fakt ist, man sollte die system.exec Aufruf vermeiden. Und wenn sich hier User in sehr kurzer Zeit immer wieder den Zustand
von irgendwas zumailen / pushen .... lassen wollen, dann muss ich leider auch davor warnen dazu den exec Befehl zu benutzen.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

homey21
Beiträge: 1113
Registriert: 17.11.2013, 01:54
System: CCU
Hat sich bedankt: 36 Mal
Danksagung erhalten: 3 Mal

Re: Auslösenden Rauchmelder finden

Beitrag von homey21 » 03.01.2014, 00:49

Ok danke, was macht exec denn "falsch" dann?

morpheus999
Beiträge: 30
Registriert: 21.08.2013, 14:07

Re: Auslösenden Rauchmelder finden

Beitrag von morpheus999 » 10.01.2014, 10:51

Hallo.

Nach einigen Berichten soll die System.exec öfters zu Abstürzen der CCU geführt haben daher der Tipp zum Umstieg auf CUXD.

Eine Anleitung dazu steht hier: http://homematic-forum.de/forum/viewtop ... em#p131051

mfg Georg

morpheus999
Beiträge: 30
Registriert: 21.08.2013, 14:07

Re: Auslösenden Rauchmelder finden

Beitrag von morpheus999 » 10.01.2014, 21:13

Hallo nochmal...


So, ich habe jetzt die Programme so laufen, wie die SCRIPTS so beschrieben sind nur auf CUXD und auf PUSH Nachricht umgeschrieben, nur hab ich ein Problem.

Bei mir kommt die Meldung nur mit "Fenster" oder "Bewegungsmelder" an je nachdem welches der Scripts auslöst, aber nicht welcher.
Heißen tun die Geräte "Fenster Wohnzimmer" oder "Bewegungsmelder EG". Kann das was mit dem Leerzeichen zu tun haben ?

Code: Alles auswählen

var sec=dom.GetObject("Alarm");
string i;
string list;
list="";
foreach(i,sec.EnumUsedIDs())
{
  var item=dom.GetObject(i);
  if(item.IsTypeOf(OT_CHANNEL))
  {
    var dev=dom.GetObject(item.Device());
    if(dev.HssType()=="HM-Sec-RHS")
    {
       var state=item.DPByHssDP("STATE");
       if(state.Value())
       {
          list=list+dev.Name();
       }
    }
  }
}
if(list!="")
{
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -d token=a9sSFgCfNjzeHHTUpotPFwHyXEKbue -d user=uimDCe1tMMjUR1ffhqQ9xLaJQr1y2g -d message='"+list+"' http://api.pushover.net/1/messages.json");
 }
mfg Georg

homey21
Beiträge: 1113
Registriert: 17.11.2013, 01:54
System: CCU
Hat sich bedankt: 36 Mal
Danksagung erhalten: 3 Mal

Re: Auslösenden Rauchmelder finden

Beitrag von homey21 » 10.01.2014, 21:26

Hi,
ich hatte auch mal Probleme mit den Leer- und Sonderzeichen, seit dem nur noch Geräte mit Unterstrich trennen sowie in den Mails keine Umlaute.
Ferner habe ich nicht

Code: Alles auswählen

list=""
sondern

Code: Alles auswählen

list="Ausloesung blabla\n\n"
damit ich in der ersten Zeile immer noch eine Extrameldung mitgeben kann und dann eine Zeile frei lassen - wenn benötigt. So zB habe ich in der Mail dann nur noch die $variable drin stehen, den anderen Text steuere ich aus dem Code im jeweiligen Programm.
Ansonsten habe ich das genauso wie Du, nur halt in der letzten Zeile die klassische Ausdrucksweise aus der Vorlage. Wenn man noch einen Text NACH der $variable sehen möchte, schreibt man ihn in die Anführungszeichen nach dem #list# und darin NACH dem Hochkomma.

grinch317
Beiträge: 6
Registriert: 25.06.2015, 19:50

Re: Auslösenden Rauchmelder finden

Beitrag von grinch317 » 25.06.2015, 20:08

Hallo,

ich bin seit einigen Tagen Besitzer der CCU2, vorerst primär um meine Rauchmelder zu überwachen.
Die Erweiterung der Hausautomatisierung werde ich mit der Zeit sicher weiterentwickeln, davon gehe ich schon jetzt aus...

Ich habe mir aus diesem Forum das Script kopiert, um den auslösenden Rauchmelder per Email gemeldet zu bekommen.
Nach anfänglichen Schwierigkeiten bei der Übergabe der Variablen (Emails kamen mit leeren Inhalt), klappt das versenden nun auch fast komplett.
Was nicht funktioniert: Ich bekomme fast immer eine Liste mehrerer Rauchmelder geschickt, wobei nicht einmal der zum Test ausgelöste RM an erster Stelle stand.
EIn- oder zweimal nur wurde mir bisher alleinig der zuerst ausgelöste Rauchmelder geschickt, ansonsten ist es eben immer eine Liste mehrerer Rauchmelder.

Daher meine Frage, ob sich jemand mein Script samt Einstellungen mal ansehen würde um evtl. Fehler zu finden...

Code: Alles auswählen

    var sec=dom.GetObject("Feuer");
    string i;
    string list;
    list="";
    foreach(i,sec.EnumUsedIDs())
    {
      var item=dom.GetObject(i);
      if(item.IsTypeOf(OT_CHANNEL))
      {
        var dev=dom.GetObject(item.Device());
        if(dev.HssType()=="HM-Sec-SD")
        {
           var state=item.DPByHssDP("STATE");
           if(state.Value())
           {
              list = list # dev.Name();
           }
        }
      }
    }
    dom.GetObject('Brandmelder').State(list);
string stdout;
    string stderr;
    system.Exec("/etc/config/addons/email/email 02", &stdout, &stderr);
01_Programm.JPG
02_Programmübersicht.JPG
03_Gewerk.JPG
04_Systemvariable.JPG
05_Systemvariable.JPG

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“