Das erwartet dich in diesem Artikel
Grundprinzip
Das Grundprinzip besteht aus drei Komponenten: Dem Klingelknopf an der Haustüre außen inkl. Sprechanlage, den Gegensprechstellen mit Türklingel und Türöffner im Haus und der Steuereinheit, welche im Sicherungskasten verbaut ist. Alle diese Systeme sind mit Busleitungen miteinander verbunden und kommunizieren über ein proprietäres Protokoll, an das man zunächst nicht herankommt.
Voraussetzung
- Idealerweise sollte deine Türkommunikation über ein GIRA TK-System mit BUS-Eingang verfügen (Bspw. 128800).
- Zusätzlich benötigst du einen Fenstersensor. Für dieses Beispiel habe ich den Aqara Fensterkontakt mit Zigbee verwendet.
- Außerdem solltest du den Gira 121100 Türkommunikations-Unterputz-Schaltaktor kaufen.
Umbau des Fenstersensors
Hülle entfernen und Sensor freilegen
Zuerst musst du den Fenstersensor an der Unterseite öffnen und die Batterieabdeckung (grau) sowie die Batterie entfernen, sodass du den schwarzen Sensor entnehmen kannst. Achte darauf, dass der kleine (wirklich kleine) weißen Taster, der zum Reset des Sensors dient, nicht aus der Hülle fällt (gegebenenfalls einfach wieder einsetzen):
Kabel anschließen
Verbinde dann die Punkte „GND“ und „DI+“ mit einem dünneren, 1-adrigen Kabel. Hier kannst du im Prinzip auch direkt den GIRA 1211 00 UP-Schaltaktor anschließen.
Wenn du die Batterie nun einsetzt und beide Kabel zusammenführst, sollte der Sensor „geschlossen“ anzeigen. Ist das der Fall, hast du alles richtig angeschlossen und du kannst die Kabel anlöten. Entferne anschließend wieder die Batterie für die weiteren Schritte.
Setze den Sensor wieder zurück in die Hülle und führe die Kabel nach hinten oben heraus:
Schaltaktor am Gira TKS-Bus anschließen
Bevor du den Schaltaktor am GIRA TKS-Steuergerät anschließt, trenne vorher das Steuergerät vom Strom, indem du die Sicherung für die Türkommunikation rausnimmst.
Schließe dann mit Hilfe zweier Klingeldrähte den GIRA 1211 00 UP-Schaltaktor an den die beiden Bus-Klemmstellen des Steuergeräts an. Die Reihenfolge der Kabel spielt dabei keine Rolle:
Den Schaltaktor selbst habe ich direkt neben das Steuergerät an die Hutschiene geklebt:
Türsensor mit Schaltaktor verbinden
Anschließend verbindest du den grünen und grauen Draht des Schaltaktors mit den Kabeln des Türsensors oder verdrahtest diese direkt wie oben beschrieben am Sensor.
Programmierung des Steuergeräts
Wie du den GIRA 1211 00 UP-Schaltaktor korrekt an das Steuergerät anlernst, kannst du dem GIRA-Datenblatt entnehmen. Hier solltest du dich an das Anwendungsbeispiel „Zusatz-Signalisierung“ halten:
Die zusätzliche Signalisierung (externe Klingel, Rüttelkissen etc.) soll nach Ruftasten-Betätigung parallel zur gerufenen Wohnungsstation aktiviert werden. https://partner.gira.de/data3/12111210.pdf
Sobald deine Türklingel jetzt betätigt wird, springt der Türsensor auf true
und anschließend wieder auf false
.
Funktion und Benachrichtigung
Neuen Datenpunkt anlegen
Um die Türklingel anschließend über YAHKA in HomeKit oder anderen Adaptern nutzen zu können, habe ich einen neuen Datenpunkt angelegt. Erstelle einen neuen Datenpunkt. Wähle als Typ „Logikwert“ und als Name „Türklingel“:
Das könnte dich auch interessieren: ioBroker: Datenpunkte verknüpfen und Alias-Datenpunkte anlegen
Blockly-Script erstellen
Füge zuerst einen neuen Trigger mit dem Zustand ist größer als letztes
ein. Dadurch reagiert der Trigger nur, wenn der Datenpunkt einmalig auf „wahr“ gesetzt wurde (mehr dazu erfährst du in diesem Artikel). Als Objekt ID wählst du den Status deines Fenstersensors, den du für die Türklingel verwendet und am BUS angeschlossen hast:
Als nächstes erstellst du im Bereich Variablen eine neue Variable „Entpreller“. Diese benötigen wir im Script, um nach einem Klingelkontakt ein paar Sekunden zu warten, bevor wir den Klingeldatenpunkt erneut auf true
setzen:
Anschließend setzt du in den Trigger eine falls
-Abfrage ein. An den Eingang steckst du einen nicht
-Block (Bereich Logik) und daran aus dem Bereich Variablen deine eben erstelle Variable „Entpreller“:
Durch diese „falls“-Logik wird die folgende Aktion nur ausgeführt, wenn die Variable „Entpreller“ noch nicht „wahr“ ist. Ziehe jetzt einen steuere
-Block aus dem Bereich System in den „mache“-Bereich. Als Objekt ID wählst du den neuen Datenpunkt „Türklingel“ und setzt in das „mit“-Feld einen wahr
-Block:
Um Benachrichtigen beiDoppel- oder Dauerklingeln zu reduzieren, kommt jetzt der „Entpreller“ zum Einsatz. Ziehe dir aus dem Bereich Variable 2 Blöcke setze Entprller auf
in dein Script unterhalb des steuere
-Blocks und stecke an den Eingang jeweils einen wahr
– und einen falsch
-Block aus dem Bereich Logik. Zuletzt ziehst du dir einen Pause
-Block aus dem Bereich Timeouts zwischen die beiden Blöcke und setzt die Pause auf 10 Sekunden
:
Da ich den Datenpunkt über YAHKA in HomeKit nutze, steuere ich diesen ausschließlich mit dem Zustand wahr
. Das erneute Setzen des Zustands reicht HomeKit bereits, um mir anzuzeigen, dass es geklingelt hat. Würde ich den Datenpunkt anschließend wieder auf false
setzen, zeigt HomeKit mir erneut eine Türklingel-Benachrichtigung an.
Fertiges Script
Blockly
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id=":t_%.X$Ck;01V3$dTt,:">Entpreller</variable>
</variables>
<block type="on" id="9%KIQ;1]Et`,1.Ey2yI[" x="-937" y="-588">
<field name="OID">deconz.0.Sensors.38.open</field>
<field name="CONDITION">lt</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="]mC=XGyD1rRj/[?J(:=,">
<value name="IF0">
<block type="logic_negate" id="rAgw7)3Q1$9hzJvRAj0}">
<value name="BOOL">
<block type="variables_get" id="U;yYhxg1!ATgzEKVPo{(">
<field name="VAR" id=":t_%.X$Ck;01V3$dTt,:">Entpreller</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="Jg]}XT;Pz;NT)W^)GssX">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Homekit.Türklingel</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="ULpg$Z]c|vdAmNU84+on">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="variables_set" id="8u9JHvXzzHn^!Bw1Y[4O">
<field name="VAR" id=":t_%.X$Ck;01V3$dTt,:">Entpreller</field>
<value name="VALUE">
<block type="logic_boolean" id="](m$4~pD3`BDzI!g#DQF">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="timeouts_wait" id="/OAC=]K2?8{zxH_(BZ$z">
<field name="DELAY">10</field>
<field name="UNIT">sec</field>
<next>
<block type="variables_set" id="!}s6H)2[GL9z~v9ERf$,">
<field name="VAR" id=":t_%.X$Ck;01V3$dTt,:">Entpreller</field>
<value name="VALUE">
<block type="logic_boolean" id="bzV@27qIf.oP1m,dG_|q">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Javascript
var Entpreller;
on({id: "deconz.0.Sensors.38.open"/*GIRA_Klingelschnittstelle open*/, change: "lt"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (!Entpreller) {
setState("0_userdata.0.Homekit.Türklingel"/*Türklingel*/, true);
Entpreller = true;
await wait(10000);
Entpreller = false;
}
});