Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabotage

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

dedel

Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabotage

Beitrag von dedel » 06.12.2016, 19:55

Moin Moin!

Erst einmal eine kleine Vorstellung.
Ich bin dedel (aus den 60’ern) aus dem Norden der Republik. Nach dem ich mit meinen Comet DECTs (Heizkörperthermostat für die Fritz!Box) sehr zufrieden war, kam der Wunsch nach mehr, mehr Smart Home. Bei AVM geht es da nicht wirklich weiter, also hab ich mich etwas auf dem Markt umgeguckt und bin auf Homematic gestoßen. Meine erste Überlegung war, via homee die Comet DECTs und Homematic zu verbinden. Als ich dann jedoch die Homematic Bausätze entdeckte, war klar ich steige richtig um. Die Comet DECTs waren schnell verkauft und der Erlös reichte locker für die neuen Bausätze. Zusätzlich habe ich mir noch Bausätze für eine CCU2 und für Tür-/Fensterkontakte (optisch) bestellt. Seit einer Woche sind jetzt alle Bausätze zusammengebaut und an der vorgesehenen Position montiert. Auch die Programmierung mit Heizung Fokus war schnell erledigt. Nun möchte ich die Tür-/Fensterkontakte (optisch) natürlich auch für die Sicherheit einsetzen. Und hier habe ich dann eine erste Frage.

Mein Script sieht so aus:

Code: Alles auswählen

object o_channel = dom.GetObject ("$src$");

if (o_channel) {
   object o_device = dom.GetObject (o_channel.Device());

   if (o_channel.Value() == '1') {
      string s_push = "sound(2)" # o_device.Name() # " ist offen!";
   }
   else {
      if (o_channel.Value() == '7') {
         string s_push = "sound(3)Sabotage an " # o_device.Name() # "!";
      }
      else {
         string s_push = "sound(4)" # o_device.Name() # " ist geschlossen!";
      }
   }
}

dom.GetObject ("pocketControlPushMessage").State (s_push);
Es funktioniert soweit ganz gut, Fenster offen bzw. geschlossen werden problemlos via Push an mein Smartphone übermittelt. Nur bei Sabotage bekomme ich keine Push Mitteilung. Ändere ich im Programm "bei Änderung auslösen" in "bei Aktualisierung auslösen", funktioniert dass Script wie gewünscht... aber, jetzt bekomme ich permanent in intervallen "Fenster ist geschlossen" Meldungen.

Wer kann mir weiterhelfen? - Danke!

Benutzeravatar
robbi77
Beiträge: 13842
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 737 Mal

Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabotage

Beitrag von robbi77 » 06.12.2016, 20:12

Was bitte soll das Programm bewirken??
Aktionen aber keine Reaktionen?
Auf ein WENN folgt eigentlich ein DANN.

Bitte den Anfängerthread lesen und die Logik der ccu.


Gruß
Roberto
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

dedel

Re: Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabo

Beitrag von dedel » 06.12.2016, 20:22

robbi77 hat geschrieben:Was bitte soll das Programm bewirken??
Aktionen aber keine Reaktionen?
Auf ein WENN folgt eigentlich ein DANN.
Das Programm soll bei Abwesenheit an mein Smartphone Push Meldungen senden, wenn sich am Tür-/Fensterkontakt etwas tut.
Mein Fensterschuß ist nur ein Ausschnitt, die "Aktivität: Dann..." führt das angegebene Script aus.
robbi77 hat geschrieben:Bitte den Anfängerthread lesen und die Logik der ccu.
Anfänger Fred, sowie die Logik der CCU sind mir bekannt.

Benutzeravatar
robbi77
Beiträge: 13842
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 737 Mal

Re: Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabo

Beitrag von robbi77 » 06.12.2016, 20:26

Wenn
Abwesend
Und
Fenster 1 auf
Oder
Fenster 2 auf
Oder
.....
Dann
Push my Handy

Dann zeig die Programme wie du sie zusammen geklickt hast. Das gezeigte Programm von dir bewirkt nix.


Gruß
Roberto
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

dedel

Re: Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabo

Beitrag von dedel » 06.12.2016, 20:41

robbi77 hat geschrieben:Dann zeig die Programme wie du sie zusammen geklickt hast. Das gezeigte Programm von dir bewirkt nix.
Wie geschrieben, dass Programm funktioniert soweit, nur die Sabotage bekomme ich nicht hin.

Die erste Bedinung "unscharf bei Änderung auslösen" nutze ich lediglich als Trigger um das Programm zu Starten. Dafür braucht es keine Aktion, so dass ich gleich mit "Sonst, wenn..." weiter mache. Erst am Ende von "Sonst, wenn..." kommt die Aktion, in dem das Script aufgerufen wird.

Benutzeravatar
robbi77
Beiträge: 13842
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 737 Mal

Re: Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabo

Beitrag von robbi77 » 06.12.2016, 20:46

Die ccu mag keine leeren Zeilen.
Wieso klickst du so komische Programme?
Der Screenshot ist immer noch unvollständig nach deiner Beschreibung.
Leg es so an wie ich schrieb.
(Logik der ccu doch nicht verstanden?)
Oder hab ich einen Glühwein zu viel getrunken?


Gruß
Roberto
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

dedel

Re: Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabo

Beitrag von dedel » 06.12.2016, 21:08

robbi77 hat geschrieben:Die ccu mag keine leeren Zeilen.
Wieso klickst du so komische Programme?
Der Screenshot ist immer noch unvollständig nach deiner Beschreibung.
Leg es so an wie ich schrieb.
(Logik der ccu doch nicht verstanden?)
Oder hab ich einen Glühwein zu viel getrunken?
Roberto
Die Logik der CCU besagt dass ein Programm komplett ausgeführt wird, egal von welcher Bedingung dieses angestoßen wird.
Damit die CCU nur die eine Bedingung prüft, besteht diese lediglich aus "Systemzustand Alarmanlage bei unscharf bei Änderung auslösen". Erst wenn diese Bedingung zutrifft, eine Änderung von unscharf in etwas anderes, wird das Programm ausgeführ und zwar jetzt komplett. Sollte Dich dies weiter stören, dann stell Dir einfach vor, dass die Aktion zur ersten Bedingung einfach irgend eine Variable setzt.

Wie gesagt das Programm funktioniert so wie es abgebildet ist korrekt, bis auf bei Sabotage versagt es.

P.S.: Auf dem Foto ist "Sabotage nur prüfen" gesetzt, dies ist an dieser Stelle natürlich nicht korrekt - hatte ich nur gesezt, damit keine flaschen Push Nachrichten versandt werden.

BadenPower

Re: Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabo

Beitrag von BadenPower » 06.12.2016, 21:21

Das Skript kann so nicht funktionieren, da der Auslöser eines Programmes kein Kanal, sondern immer ein Datenpunkt ist.

Also es "funktioniert" schon, aber es macht eben nicht das, was Du Dir gedacht hast, sondern leider das, was Du programmiert hast.

.

dedel

Re: Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabo

Beitrag von dedel » 06.12.2016, 21:36

BadenPower hat geschrieben:Das Skript kann so nicht funktionieren, da der Auslöser eines Programmes kein Kanal, sondern immer ein Datenpunkt ist.

Also es "funktioniert" schon, aber es macht eben nicht das, was Du Dir gedacht hast, sondern leider das, was Du programmiert hast.
Du sprichst in Rätseln, da kann ich Dir leider nicht folgen.
Ich möchte (habe mir gedacht), dass ich eine Push Nachricht bei Fenster auf, eine bei Fenster geschlossen und eine bei Sabotage bekomme. Dies habe ich hier so auch programmiert:

Code: Alles auswählen

   if (o_channel.Value() == '1') {
      string s_push = "sound(2)" # o_device.Name() # " ist offen!";
   }
   else {
      if (o_channel.Value() == '7') {
         string s_push = "sound(3)Sabotage an " # o_device.Name() # "!";
      }
      else {
         string s_push = "sound(4)" # o_device.Name() # " ist geschlossen!";
      }
   }
Würde mich freuen, wenn Du mir direkte Hinweise / Beispiele gibst - Danke

BadenPower

Re: Tür-/Fensterkontakte (optisch): offen, geschlossen, Sabo

Beitrag von BadenPower » 06.12.2016, 22:34

dedel hat geschrieben:Du sprichst in Rätseln, da kann ich Dir leider nicht folgen.
...
Würde mich freuen, wenn Du mir direkte Hinweise / Beispiele gibst - Danke
Den entscheidenden Hinweis hatte ich Dir bereits gegeben.

Aber gerne nochmals:
Ein Programm wird durch einen Datenpunkt ausgelöst und nicht durch einen Kanal.

Schaue wir einmal die ersten 3 Zeilen Deines Codes an.

Code: Alles auswählen

object o_channel = dom.GetObject ("$src$");
if (o_channel) {
   object o_device = dom.GetObject (o_channel.Device());
In Zeile 1 holst Du dem Auslöser des Programmes mit "$src$".
Das ist ein Datenpunkt.
In der 3. Zeile versuchst Du das Objekt des Gerätes zu ermitteln.
Das funktioniert aber nicht, da Deine Variable "o_channel" kein Kanal ist, sondern eben ein Datenpunkt. Und die Methode .Device() auf einen Datenpunkt angewandt, ist keine gültige Methode. Der Aufruf erzeugt zwar keinen Fehler, gibt Dir aber nicht die ID des Gerätes zurück.

Folglich erhäst Du dann mit "o_device.Name()" nicht den Namen des Gerätes, sondern mehr oder weniger zufällig den des Kanals.

Jetzt klar?


Das war jetzt das, was mir auf die Schnelle beim Überfliegen des Skriptes aufgefallen ist.

Ausserdem lößt Dein Programm beim Auslösen einer Sabotagemeldung nicht aus, denn dort steht "nur prüfen".

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“