Skript zur Ermittlung offener TF.Kontakte funktioniert nach Migration von CCU2 auf RasoberryMatic nicht mehr

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Antworten
mikesch40
Beiträge: 2
Registriert: 30.07.2018, 16:49

Skript zur Ermittlung offener TF.Kontakte funktioniert nach Migration von CCU2 auf RasoberryMatic nicht mehr

Beitrag von mikesch40 » 30.07.2018, 16:58

Hallo,

Ich habe einen Skript, der auf der CCU2 einwandfrei funktionierte und dieser Skript legt die Zustände aller Fensterkontakte (sofern offen) sowie die der Bewegungsmelder und Rauchmelder in einer Systemvariablen vom Typ String ab. auf dem PI funktioniert das Skript leider nicht mehr!

Die Textvariable wird bei einem Alarm via Push und E-Mail verschickt, damit ich aus der Ferne den verantwortlichen Sensor erkennen kann.

Bin für jede Idee hierzu dankbar!

Hier der Skript:

Code: Alles auswählen

  string i;
  string slist;
  var sec=dom.GetObject("Sensoren");
  foreach(i,sec.EnumUsedIDs())
{
  var ch = dom.GetObject(i.Channel());
  var dev = dom.GetObject(ch.Device());
  var chType = ch.HssType();
  var devType = dev.HssType();
  var room = dom.GetObject(ch.ChnRoom());
  var since = ch.LastTimestamp().ToString("%d %H:%M:%S");
  if (since == "01 01:00:00") {since = " unbekannt ";}
if(chType == 'SHUTTER_CONTACT')
{
  var status = ch.DPByHssDP("STATE").Value();
  if (status != 0) {slist=slist # dev.Name() #"\n"# since #"\n"; }
}
else
{
  if(chType == 'SMOKE_DETECTOR')
  {
    var status = ch.DPByHssDP("STATE").Value();
    if (status != 0) {slist=slist # dev.Name() #"\n"# since #"\n"; }
  }
}
}

var motion = "B01 Keller";
var status = dom.GetObject(motion).DPByHssDP("MOTION").Value();
if (status) { slist = slist # motion #"\n"; }

var motion = "B02 Buero";
var status = dom.GetObject(motion).DPByHssDP("MOTION").Value();
if (status) { slist = slist # motion #"\n"; }

var motion = "B03 Lager";
var status = dom.GetObject(motion).DPByHssDP("MOTION").Value();
if (status) { slist = slist # motion #"\n"; }


var motion = "Zeitsperre";
var status = dom.GetObject(motion).Value();
if (status) { slist = slist # motion #"\n"; }
string message = (slist);
dom.GetObject("Tuerinfo").State(message);


mikesch40
Beiträge: 2
Registriert: 30.07.2018, 16:49

Re: Skript zur Ermittlung offener TF.Kontakte funktioniert nach Migration von CCU2 auf RasoberryMatic nicht mehr

Beitrag von mikesch40 » 01.08.2018, 15:47

So nach einiger Einarbeitung durch mich in die Objektstrukturen der Homematic Skript-Sprache hier eine Lösung die auf RasoberryMatic und CCU2 läuft:

Code: Alles auswählen

  string i;
  string obj;
  string status;
  string name;
  string chtype;
  string slist = "";
  var sec=dom.GetObject("Sensoren");
  foreach(i,sec.EnumUsedIDs())
{
  obj = dom.GetObject(i);
  chtype = obj.HssType();
  name = obj.Name();
  status = obj.State();

if(dom.GetObject(i).HssType() == 'SHUTTER_CONTACT') 
{  if (status != 0) {slist=slist # name # "\n"; }}

if(dom.GetObject(i).HssType() == 'MOTION_DETECTOR') 
{  var wert = dom.GetObject(name).DPByHssDP("MOTION").Value();
    if (wert) {slist=slist # name # "\n"; }}

if(dom.GetObject(i).HssType() == 'SMOKE_DETECTOR') 
{  var wert = dom.GetObject(name).DPByHssDP("STATE").Value();
    if (wert != 0) {slist=slist # name # "\n"; }}

} ! of loop

var target = "Zeitsperre";
var status = dom.GetObject(target).Value();
if (status) { slist = slist # target #"\n"; }
dom.GetObject("Tuerinfo").State(slist);

Antworten

Zurück zu „RaspberryMatic“