HMIP-SWDO Sabotagekontakt auslesen

HMIP lokale Installation

Moderator: Co-Administratoren

gab
Beiträge: 5
Registriert: 12.09.2019, 11:58

HMIP-SWDO Sabotagekontakt auslesen

Beitrag von gab » 12.09.2019, 15:01

Hallo zusammen,

wie kann man beim Homematic IP Gerät SWDO den Sabotagekontakt auslesen?
Bei normalen Homematic Geräten war es ja über .DPByHssDP("ERROR") möglich.
Ich habe keine Dokumentation dazu gefunden.

Danke!
Zuletzt geändert von Roland M. am 12.09.2019, 15:39, insgesamt 1-mal geändert.
Grund: Thema verschoben

Matsch
Beiträge: 178
Registriert: 30.05.2019, 11:37
Wohnort: Chemnitz
Hat sich bedankt: 2 Mal
Danksagung erhalten: 12 Mal

Re: HMIP-SWDO Sabotagekontakt auslesen

Beitrag von Matsch » 12.09.2019, 16:29

Dazu gibt es doch die "Homematic IP Devices Technical Documentation". Steht auf Seite 8526:

SABOTAGE

dondaik
Beiträge: 10246
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 45 Mal
Danksagung erhalten: 25 Mal

Re: HMIP-SWDO Sabotagekontakt auslesen

Beitrag von dondaik » 12.09.2019, 16:34

sauber, endlich mal einer der die doku gelesen hat !
-------
wer schreibfehler findet darf sie behalten.

gab
Beiträge: 5
Registriert: 12.09.2019, 11:58

Re: HMIP-SWDO Sabotagekontakt auslesen

Beitrag von gab » 12.09.2019, 16:44

Danke für die Antwort, ich hatte nur eine alte Doku gefunden, in der dieser Punkt noch nicht aufgenommen war.
Wie kann ich jetzt den Wert auslesen wenn ich durch eine Liste von Gewerken iteriere?
Mit .DPByHssDP("SABOTAGE") scheint es nicht zu funktionieren.

Matsch
Beiträge: 178
Registriert: 30.05.2019, 11:37
Wohnort: Chemnitz
Hat sich bedankt: 2 Mal
Danksagung erhalten: 12 Mal

Re: HMIP-SWDO Sabotagekontakt auslesen

Beitrag von Matsch » 12.09.2019, 16:55

Ich weiß ja nicht was und wie du das machst, aber ich kann den Datenpunkt genau so abfragen.

gab
Beiträge: 5
Registriert: 12.09.2019, 11:58

Re: HMIP-SWDO Sabotagekontakt auslesen

Beitrag von gab » 12.09.2019, 17:26

So sieht mein Skript aus:

Code: Alles auswählen

var sec = (dom.GetObject(ID_FUNCTIONS)).Get("funcLock");
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()=="HMIP-SWDO") || (dev.HssType()=="HmIP-SWDO-I")) 
            {
            var state=item.DPByHssDP("SABOTAGE"); 
            if(state.Value())
               {
               list=list+dev.Name() + "\n";
               }
            }
      }
   }
WriteLine(list);

Matsch
Beiträge: 178
Registriert: 30.05.2019, 11:37
Wohnort: Chemnitz
Hat sich bedankt: 2 Mal
Danksagung erhalten: 12 Mal

Re: HMIP-SWDO Sabotagekontakt auslesen

Beitrag von Matsch » 12.09.2019, 17:37

Ist der Gerätetyp nicht "HmIP-SWDO"? (Groß/Kleinschreibung)

gab
Beiträge: 5
Registriert: 12.09.2019, 11:58

Re: HMIP-SWDO Sabotagekontakt auslesen

Beitrag von gab » 12.09.2019, 21:34

Nein, das passt:
Unbenannt.png
Unbenannt.png (6.35 KiB) 137 mal betrachtet

Hat sonst noch jemand eine Idee?

Matsch
Beiträge: 178
Registriert: 30.05.2019, 11:37
Wohnort: Chemnitz
Hat sich bedankt: 2 Mal
Danksagung erhalten: 12 Mal

Re: HMIP-SWDO Sabotagekontakt auslesen

Beitrag von Matsch » 13.09.2019, 14:34

Dein Script setzt ja voraus, dass auch alle Kanäle 0 der Sensoren dem Gewerke "funcLock" zugeordnet sind, sind sie das?
Wenn nicht, kann er den Datenpunkt "SABOTAGE" nicht finden.

Ich habe dein (angepasstes) Script mal bei mir ausprobiert und es tauchte von 4 Sensoren nur einer auf. Ursache war, dass die Kanäle 0 der drei fehlenden Sensoren keinem Gewerke zugeordnet waren.

Sehe ich in die Liste "Geräte", steht da sehr wohl das richtige Gewerke für die Geräte drin, schaue ich in die Liste "Gewerke", dann stehen die 3 Geräte Kanal 0 eben nicht unter diesem Gewerke, ich kann sie auch nicht hinzufügen, die Kanäle 0 werden mir gar nicht angeboten.

Jetzt bin ich etwas überfragt, die einzige Besonderheit der Geräte ist, dass sie alle eine Direktverknüpfung mit einer Heizungsgruppe haben, der eine richtig erkannte Sensor aber nicht!

Matsch
Beiträge: 178
Registriert: 30.05.2019, 11:37
Wohnort: Chemnitz
Hat sich bedankt: 2 Mal
Danksagung erhalten: 12 Mal

Re: HMIP-SWDO Sabotagekontakt auslesen

Beitrag von Matsch » 13.09.2019, 23:14

Kann es sein, dass es ein Problem mit der CCU-Firmware gibt und es nicht möglich ist, die Kanäle 0 einem Gewerke zuzuweisen?
Damit würde dein Vorhaben, so wie es jetzt ist, generell nicht funktionieren.

Ich bin zugegeben nicht gerade ein Script-Profi, aber ich habe es mal versucht, in deinem Programm zwangsweise immer auf Kanal 0 zuzugreifen, auch wenn dieser nicht gelistet wird. Ich vermute, es gibt elegantere Lösungen, aber zumindest scheint es erstmal zu funktionieren.

Code: Alles auswählen

var sec = (dom.GetObject(ID_FUNCTIONS)).Get("Verschluss");
string i;
string list;
list="";
integer Device=0;

foreach(i,sec.EnumUsedIDs())
   {
   var item=dom.GetObject(i);
   if(item.IsTypeOf(OT_CHANNEL) && (Device!=item.Device()))
        ! Ausschluss doppelter Auflistung von Geräten
      {
        var dev=dom.GetObject(item.Device());
        Device = item.Device();   ! Geräte-ID speichern
         if ((dev.HssType()=="HMIP-SWDO") || (dev.HssType()=="HmIP-SWDO-I")) 
            {
            var state;
            ! Vom vorgefundenen Gerät immer Kanal 0 DP SABOTAGE abfragen
            string Kanal = item.Address();
            Kanal = (dom.GetObject(item.Interface())).Name() +"." + Kanal.Substr(0,Kanal.Length()-1) + "0.SABOTAGE";
            state=dom.GetObject(Kanal);
            if(state.Value())
               {
               list=list+dev.Name() + "\n";
               }
            }
      }
   }
WriteLine(list);

Antworten

Zurück zu „HomeMatic IP mit CCU“