INSTAR Deutschland GmbH

Homematic IP CCU3 Zentrale und RedMatic



Sensoren an der Zentrale anlernen

Um Ihre Homematic oder Homematic IP Geräte softwarebasiert steuern und konfigurieren sowie in Zentralenprogrammen nutzen zu können, müssen Sie die Geräte über die WebUI ins System einbinden. Gehen Sie dazu wie folgt vor:

  1. Starten Sie die WebUI Bedienoberfläche im Webbrowser Ihres PCs.
  2. Klicken Sie auf den Button „Geräte anlernen“ im rechten oberen Bereich des Browserfensters.

Homematic IP


  1. Aktivieren Sie den passenden Anlernmodus des Geräts, das Sie anlernen möchten. Weitere Informationen dazu können Sie der jeweiligen Bedienungsanleitung entnehmen.

Homematic IP


  1. Warten Sie, bis der Anlernvorgang abgeschlossen ist. Zur Bestätigung eines erfolgreichen Anlernvorgangs leuchtet die LED des Geräts grün. Leuchtet die LED rot, versuchen Sie es erneut.
  2. Nach kurzer Zeit erscheint das neu angelernte Gerät im Posteingang Ihrer WebUI.

Homematic IP


Anlegen von Systemvariablen und Programmen

Um mit unseren Sensoren zu kommunizieren - wir möchten im Beispiel den Homematic Funk-Bewegungsmelder, außen installieren und einen Systemalarm bei Bewegung auslösen, müssen wir eine Systemvariablen erstellen:


Homematic IP


Klicken Sie hier unten auf Neu um eine neue Variable anzulegen:


Homematic IP


Geben Sie hier das folgende ein, um eine Systemvariable mit dem Namen PIR Sensor anzulegen, klicken Sie danach auf Ok und in der folgenden Listenansicht auf Programme:


Homematic IP

Homematic IP


In dem folgenden Fenster klicken Sie wieder auf Neu - hier können wir uns jetzt das folgende Programm zusammenklicken und bestätigen:


Homematic IP


Hier haben wir bei der Bedingung in der Geräteauswahl den Bewegungsmelder und ausgewählt und in der Spalte Aktivität bei Systemzustand die Auslösung unserer Systemvariable: PIR Sensor gesetzt.

Wenn wir jetzt eine Bewegungserkennung auslösen, werden wir eine Alarmmeldung erhalten:


Homematic IP


Installation von Node-RED

Wir haben bereits Node-RED forgestellt und im Zusammenspiel mit dem MQTT Protokoll Prozesse auf unserer IP Kamera automatisiert. Auf der Homematic Zentrale ist Node-RED sehr einfach zu installieren mit Hilfe des RedMatic Addons.

RedMatic fasst mehrere Softwarekomponenten zu einem CCU Addon zusammen, einem Softwarepaket, dass auf einer Homematic CCU3 als Zusatzsoftware komfortabel über das WebUI installiert werden kann.

Die Grundlage bildet Node-RED mit den CCU Nodes für Node-RED. Hiermit ist es auf einfache, visuelle Weise möglich Regeln, Automationen, Scripte und Anbindungen von externen Services und Systemen für ein Homematic System zu realisieren - und das weitgehend auch ohne Programmierkenntnisse.

Für die Visualisierung und Steuerung sind RedMatic WebApp und Node-RED Dashboard enthalten. RedMatic WebApp ist eine Bedienoberfläche die ohne weitere Konfiguration sofort genutzt werden kann. Node-RED Dashboard ist ein konfigurierbares User Interface, kann mehr Möglichkeiten als die RedMatic WebApp bieten, ist aber mit Konfigurationsaufwand verbunden.

  1. Zunächst müssen wir die neueste Version von Github herunterladen. Es wird die Datei redmatic-<version>.tar.gz benötigt:

Homematic IP


  1. In der Homematic WebUI unter Systemsteuerung Zusatzsoftware aufrufen:

Homematic IP

Homematic IP


  1. Heruntergeladene Datei auswählen und installieren (kann bis zu 10min dauern):

Homematic IP

Homematic IP


  1. Im Anschluss abwarten bis sich die CCU neu gestartet hat - hier ist Geduld erforderlich. Die Installation von RedMatic benötigt einige Zeit. Node-RED ist unter http://<ccu-adresse>/addons/red erreichbar. Node-RED Dashboard ist unter http://<ccu-adresse>/addons/red/ui erreichbar:

Homematic IP

Homematic IP


Das Standard Login ist Admin (mit großem A) und das admin Kennwort auf Ihrem CCU3!

Das Kennwort können Sie unter Systemsteuerung / Zusatzsoftware auch von Hand festlegen - ändern Sie dort die Authentifizierung von ReGaHSS auf Credentials:


Homematic IP

Homematic IP


Installation eines MQTT Servers

MQTT ist ein Kommunikationsprotokoll das speziell für IoT Geräte entwickelt wurde und uns einige Vorteile bietet. Es ist jedoch etwas kompliziert es unter Windows oder einem Raspberry Pi einzurichten, da dafür ein extra MQTT Server benötigt wird. Dies ist zum Glück bei der Homematik Zentrale genau so einfach wie die Installation von Node-RED.

Dennoch ist die Nutzung des MQTT Protokolls rein optional - für die Beispiele die wir unten aufführen wird es z.B. nicht benötigt (man kann die verwendeten MQTT Nodes auch durch Link Nodes ersetzen und erhält das gleiche Ergebnis!). MQTT wird in dem Moment wichtig wenn man noch eine weitere Heimautomatisierungszentralen, wie z.B. OpenHAB oder ioBroker einsetzt oder Drittanbieter Sensoren verwenden möchte, die nicht direkt in der Homematic eingebunden werden können. MQTT, im Zusammenspiel mit Node-RED, kann hier das Bindeglied sein, dass alle Bausteine Ihrer Automatisierung zusammenbringt.

Um das MQTT Protokoll mit der Homematic nutzen zu können, müssen wir den Mosquitto Server als Addon für die Homematic CCU3 installieren. Gehen Sie dafür auf die Release Seite auf Github und laden Sie dort die aktuellste mosquitto-<version>.tar.gz Datei herunter. Diese können Sie danach unter Systemsteuerung / Zusatzsoftware in der WebUI der CCU3 installieren:


Homematic IP


Aktivieren des SSH Zugriffs (Optional)

Per default lauscht Mosquitto auf den Ports 1883/mqtt und 1884/ws. Falls auf der CCU ein Zertifikat vorhanden ist werden automatisch auch TLS listener geöffnet (8883/mqtts und 8884/wss).

Das Addon installiert außer dem Broker auch die Kommandozeilenwerkzeuge mosquittopub und mosquittosub und verlinkt diese nach /usr/local/bin/.

Um den SSH Zugriff zu aktivieren gehen Sie bitte auf Systemsteuerung / Sicherheit, aktivieren Sie den Dienst und hinterlegen Sie ein Kennwort. Im Anschluß muss die CCU3 neugestartet werden:


Homematic IP

Homematic IP


Nach dem Neustart können Sie Ihr Terminal - unter Windows kann z.B. das kostenlose Terminus verwendet werden - nutzen um sich mit dem Benutzernamen root und dem oben festgelegten Kennwort auf der IP Adresse Ihrer CCU anzumelden:


Homematic IP


Die Mosquitto Konfiguration ist unter /usr/local/addons/mosquitto/etc/conf.d/*.conf zu finden. Neustart via /etc/config/rc.d/mosquitto restart.

Per default lauscht Mosquitto auf den Ports 1883/mqtt und 1884/ws. Falls auf der CCU ein Zertifikat vorhanden ist werden automatisch auch TLS listener geöffnet (8883/mqtts und 8884/wss).

Das Addon installiert außer dem Broker auch die Kommandozeilenwerkzeuge mosquitto_pub und mosquitto_sub und verlinkt diese nach /usr/local/bin/.

Bei Aufrufen von mosquittopub via CUxD Exec muss dem Aufruf das setzen des lib Pfades vorangestellt werden, z.B.: `LDLIBRARYPATH=/usr/local/lib /usr/local/bin/mosquittopub -t 'test' -m 'test'`


Homematic IP


Testen des MQTT-Servers

Der SSH Zugriff (oben) erlaubt es den MQTT Server direkt auf dem Betriebsystem der CCU3 zu testen. In diesem Abschnitt wollen wir uns das ganze einmal ausgehend von einem Windows Rechner ansehen. Wir können dafür das Tool MQTT.fx herunterladen und unter Windows 10 installieren.

Klicken Sie in der Benutzerobefläche auf das Zahnrad um die Konfiguration für den MQTT Server auf der Homatic Zentrale hinzuzufügen:


Homematic IP


Geben Sie hier die IP Adresse Ihrer Homatic Zentrale als Broker Address an und behalten Sie den Port bei. Wenn Sie im vorherigen Schritt per SSH den Port geändert haben oder eine Benutzerauthentifizierung hinzugefügt haben, müssen Sie dies hier entsprechen berücksichtigen:


Homematic IP


Bestätigen Sie die Eingaben und klicken Sie auf Connect neben dem Zahnrad vom vorherigen Schritt. Wechseln Sie danach darunter auf den Subscribe Tab, geben Sie ein # in die Zeilen neben dem Subscribe Button ein und betätigen Sie danach den Button um ein Abo für alle MQTT Meldungen, die unser Server empfängt, anzulegen.


Homematic IP


Wechseln Sie danach auf den Publish Tab und geben Sie hier ein MQTT Topic - z.B. /test/ - ein und darunter einen Wert - {"val" : "1"} - den Sie unter dem Topic veröffentlichen möchten:


Homematic IP


Wenn im Anschluß den Publish Button bestätigen und wieder zum Subscribe Tab wechseln, sollte die Meldung von unserem MQTT Server empfangen und wieder zurück zu MQTT.fx gesendet wurden, da wir angegeben hatten über alle Meldungen informiert werden zu wollen:


Homematic IP


Wenn Sie diese Meldung sehen, wurde der Server korrekt eingerichtet und ist in Ihrem Netzwerk aktiv.

Achtung:

Wir hatten keine Benutzerauthentifizierung beim MQTT Server hinterlegt. D.h. jedes Gerät, das in Ihr lokales Netzwerk eingebunden ist, kann über den Server MQTT Meldungen empfangen und auch welche versenden!

Sie sollten unter keinen Umständen eine Portweiterleitung auf dem Port 1883 in Ihrem Router anlegen!

Wenn außer Ihnen noch andere Personen Zugriff auf das Netzwerk haben, sollten Sie per SSH Zugriff die Konfigurationsdateien des MQTT Servers (s.o.) mit einem Admin Login versehen!

Homematic -> INSTAR IP Kamera

Jetzt haben wir alle Vorbereitungen getroffen um unsere INSTAR IP Kamera in das Homematic System einzubinden. Und dies kann jetzt vollständig über Node-RED passieren, das wesentlich flexibler ist als das was einem die Homematic Zentrale zur Verfügung stellt. Hierfür können wir uns im Prinzip aus den folgenden Tutorials bedienen, in denen wir diese Integration bereits durchgeführt hatten:

  1. Node-RED und MQTT Projekte
  2. Projekte für den Raspberry Pi
  3. Node-RED unter Debian

Diese können wir eigentlich komplett recyceln mit einer kleinen Ergänzung, wir werden die bereits vorinstallierten CCU Nodes nutzen um den Status unserer Sensoren an der Homematic Zentrale abzufragen. Der folgenden Node-RED Flows verwenden jedoch einen speziellen Node mit dem Namen node-red-contrib-string, der nicht in Node-RED vorinstalliert ist. Sie können diese über das Palettenmenü nachinstallieren.

Homematic Sensoren (Bewegungsmelder)

  1. Wir beginnen damit einen CCU Value Node auf die Arbeitsfläche zu ziehen und einen Doppelklick auf diesen auszuführen, um die Konfigurationsseite zu öffnen.
  2. Wählen Sie hier BidCos-RF als interface aus um Ihren Homematic PIR Bewegungsmelder einzubringen.
  3. Wenn Sie in das Channel Feld klicken, werden Ihnen alle mit Ihrer Homematic Zentrale verbundenen RF Geräte angezeigt. Als wir unseren Bewegungsmelder an die Zentrale angelernt hatten, haben wir gesehen, daß der Name des Melders mit NEQ1545018 beginnt. Uns stehen hiervon stehen uns zwei Einträge zur Verfügung - der erste endet auf :0 und der zweite auf :1. Wir wählen hier den zweiten aus (Sie können testweise auch einmal den ersten nehmen und werden sehen, dass Ihnen dort andere Variablen zur Verfügung stehen - unter anderem LOWBAT, wo Sie die Warnung eines niedrigen Batteriestandes im Melder in Node-RED einfließen lassen können.)
  4. Als Datenpunkt wählen wir Motion. Dieser wird uns immer einen Wert true geben, sobald der Sensor eine Bewegung erkannt hat.

Homematic IP


Jetzt werden wir bei Bewegungserkennung immer eine Meldung in Node-RED erhalten und müssen darauf reagieren. Dies können wir mit dem folgenden Flow realisieren, den Sie kopieren und in Node-RED importieren können (dieser Flow beinhaltet die Konfiguration meines Bewegungsmelders - diesen müssen Sie durch Ihren eben erstellten ersetzen):

[{"id":"1cb03303.2daf2d","type":"ccu-value","z":"654e5181.3b745","name":"PIR Sensor","iface":"BidCos-RF","channel":"NEQ1545018:1 HM-Sen-MDIR-O-2 NEQ1545018:1","datapoint":"MOTION","mode":"","start":true,"change":true,"cache":false,"queue":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":90,"y":60,"wires":[["aed51eec.42084"]]},{"id":"560c0d74.11df54","type":"change","z":"654e5181.3b745","name":"Alarm","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"triggered\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":368,"y":36,"wires":[["cbb0f690.7d1e18"]]},{"id":"cbb0f690.7d1e18","type":"mqtt out","z":"654e5181.3b745","name":"","topic":"/homematic/pir/alarm","qos":"1","retain":"false","broker":"32d092dd.920b8e","x":554,"y":59,"wires":[]},{"id":"aed51eec.42084","type":"switch","z":"654e5181.3b745","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":240,"y":60,"wires":[["560c0d74.11df54"],["40c14a0b.811054"]]},{"id":"40c14a0b.811054","type":"change","z":"654e5181.3b745","name":"Alarm","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"idle\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":368,"y":87,"wires":[["cbb0f690.7d1e18"]]},{"id":"38263145.35ea0e","type":"ccu-connection","z":"","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048"},{"id":"32d092dd.920b8e","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"nodered","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

Homematic IP


Bei dem Ausgangs-Knoten auf der rechten Seite handelt es sich um einen MQTT Sender. Achten Sie bitte darauf, dass dieser als Server localhost:1883 eingetragen hat - dies ist der MQTT Server den wir zuvor installiert haben].


Homematic IP


Wenn Sie nach dem Kopieren auf den roten Deploy Button klicken und danach einen Alarm bei Ihrem Bewegungsmelder auslösen, sollten Sie in MQTT.fx die Meldung {"val":"triggered"} auf dem MQTT Topic /homematic/pir/alarm sehen.


Homematic IP


INSTAR IP Kamera

Jetzt müssen wir diese Bewegungsmeldung so umsetzen, dass sie einen Alarm in unserer Kamera auslöst. Dafür können wir einen Flow aus den vorherigen Node-RED Tutorials wiederverwenden:


Homematic IP


[{"id":"476976cd.d97608","type":"mqtt in","z":"654e5181.3b745","name":"Push Alarm","topic":"ipcam/alarm/pushalarm","qos":"1","broker":"be559f9e.42004","x":90,"y":400,"wires":[["dc4b5e6c.55524"]]},{"id":"dc4b5e6c.55524","type":"function","z":"654e5181.3b745","name":"Alarm","func":"var ip = \"192.168.2.111\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd  = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm  = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss  = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"pushalarm\";\nmsg.payload = ip+\"/param.cgi?cmd=pushhostalarm&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":224,"y":400,"wires":[["80da80c4.b3952"]]},{"id":"17925b0a.f59825","type":"string","z":"654e5181.3b745","name":"toJSON","methods":[{"name":"replaceAll","params":[{"type":"str","value":"[Succeed]set ok."},{"type":"str","value":"{ \"pushalarm\": \"triggered\" }"}]},{"name":"replaceAll","params":[{"type":"str","value":"[Error]Param error."},{"type":"str","value":"{ \"pushalarm\": \"Error\" }"}]}],"prop":"payload","propout":"payload","object":"msg","objectout":"msg","x":663,"y":400,"wires":[["1b3013a2.b7b63c"]]},{"id":"1b3013a2.b7b63c","type":"json","z":"654e5181.3b745","name":"","property":"payload","action":"","pretty":false,"x":533,"y":443,"wires":[["f9f0d5ea.ab4548","360e56b2.29d25a"]]},{"id":"f9f0d5ea.ab4548","type":"ui_text","z":"654e5181.3b745","group":"9c82c990.e99ad8","order":2,"width":0,"height":0,"name":"UI Alarm","label":"Alarm Push","format":"{{msg.payload.pushalarm}}","layout":"row-spread","x":708,"y":444,"wires":[]},{"id":"80da80c4.b3952","type":"change","z":"654e5181.3b745","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":349,"y":400,"wires":[["a93cf3a0.83f78"]]},{"id":"a93cf3a0.83f78","type":"http request","z":"654e5181.3b745","name":"pushhostalarm","method":"GET","ret":"txt","url":"","tls":"","x":506,"y":400,"wires":[["17925b0a.f59825"]]},{"id":"948c7b7b.3fad08","type":"mqtt out","z":"654e5181.3b745","name":"Push Alarm","topic":"ipcam/alarm/pushalarm","qos":"1","retain":"false","broker":"be559f9e.42004","x":551,"y":353,"wires":[]},{"id":"15f29651.6e0e4a","type":"ui_button","z":"654e5181.3b745","name":"Alarm","group":"9c82c990.e99ad8","order":0,"width":0,"height":0,"passthru":true,"label":"Trigger Alarm!","tooltip":"","color":"#ffffff","bgcolor":"#f3100b","icon":"fa-bell","payload":"{\"pushalarm\" : \"triggered\"}","payloadType":"json","topic":"pushalarm","x":412,"y":353,"wires":[["948c7b7b.3fad08"]]},{"id":"7b5307f4.e001b8","type":"mqtt in","z":"654e5181.3b745","name":"","topic":"/homematic/pir/alarm","qos":"1","broker":"be559f9e.42004","x":120,"y":353,"wires":[["6526d51a.a2ae3c"]]},{"id":"360e56b2.29d25a","type":"delay","z":"654e5181.3b745","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":366,"y":487,"wires":[["d1f9e81.78b3218"]]},{"id":"d1f9e81.78b3218","type":"change","z":"654e5181.3b745","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"pushalarm\" : \"\"}","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":524,"y":487,"wires":[["271157e1.7d77e8"]]},{"id":"de5c11ca.bd2cd","type":"comment","z":"654e5181.3b745","name":"Trigger an Alarm","info":"","x":101,"y":310,"wires":[]},{"id":"271157e1.7d77e8","type":"json","z":"654e5181.3b745","name":"","property":"payload","action":"","pretty":false,"x":674,"y":487,"wires":[["f9f0d5ea.ab4548"]]},{"id":"6526d51a.a2ae3c","type":"switch","z":"654e5181.3b745","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"{\"val\":\"triggered\"}","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":287,"y":353,"wires":[["15f29651.6e0e4a"]]},{"id":"be559f9e.42004","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"9c82c990.e99ad8","type":"ui_group","z":"","name":"Trigger","tab":"fa59fc29.87608","disp":true,"width":"6","collapse":false},{"id":"fa59fc29.87608","type":"ui_tab","z":"","name":"Homatic","icon":"dashboard","disabled":false,"hidden":false}]

Beachten Sie hier, dass Sie den oben markierten Knoten editieren müssen und die IP Adresse und das Administrator Login Ihrer INSTAR FullHD Kamera eintragen müssen (der Befehl zum manuellen Auslösen des Alarms - /param.cgi?cmd=pushhostalarm - steht Ihnen nur bei Full HD Kamera Modellen zur Verfügung. Wenn Sie ein HD oder VGA Kameramodell einsetzen, können Sie den CGI Befehl im Flow jedoch durch einen anderen ersetzen, der für Ihr Kameramodell einsetzbar ist):


Homematic IP


Wenn Sie jetzt eine Bewegungserkennung bei Ihrem Homematic Bewegungsmelder auslösen, werden Sie in Ihrer Kamera einen Audioalarm im System Logbuch finden - dieser wird alle Alarmaktionen auslösen, die Sie in der WebUI Ihrer Kamera aktiviert haben - z.B. einen Alarmaufnahme auf die interne SD Karte oder das Versenden einer Alarmemail.


Homematic IP


Homematic Sensoren (Türkontakt)

Als zweites Beispiel können wir den Homematic Funk-Tür/Fensterkontakt, optisch hinzufügen und unsere Kamera damit dazu bewegen sich zur Tür auszurichten, sobald diese geöffnet wird. Das Einbinden des Sensors in die Homematik Software und in Node-RED ist identisch zu dem vorherigen Beispiel (den kompletten Node-RED Flow können Sie sich am Ende dieser Seite kopieren und in Node-RED importieren):


Homematic IP


Im folgenden Part können Sie sehen, daß wir den Tür-Sensor mit unserem Push-Alarm gekoppelt haben. So kann sowohl der PIR Bewegungsmelder als auch der Tür-Sensor einen Alarm auf der Kamera auslösen. Des Weiteren wurde eine Sequenz hinzugefügt, die beim Öffnen der Tür unsere Full HD PTZ Kamera (z.B. IN-8015 Full HD oder IN-9020 Full HD) in Richtung der Türe schwenkt (diese Position muß in der Kamera WebUI unter Position 1 gespeichert werden: /param.cgi?cmd=preset&-act=goto&-number=0) und beim Schließen der Tür die Kamera wieder in die Ruheposition (auf Position 2 gespeichert: /param.cgi?cmd=preset&-act=goto&-number=1) fährt. Damit dies funktioniert, müssen Sie in den beiden Nodes unter dem roten Pfeil die IP Adresse und das Login Ihrer Kamera eintragen (wie bereits zuvor auch):


Homematic IP


INSTAR IP Kamera -> Homematic

Anlegen der Systemvariablen

Bislang haben wir die Kamera über die Homematic Zentrale gesteuert indem wir Homematic Sensoren nutzten um Aktionen auf der Kamera auszulösen. Den umgekehrten Fall können wir über den Alarmserver auf der Kamera realisieren. Im Folgenden wollen wir die Systemvariable: Anwesenheit - die vom Typ her eine Logikwert darstellt und in der Homematic vorangelegt ist - in der Homematic Zentrale nutzen, um eine selbst angelegte Alarmvariable (Eingangsbereich) zu schalten.

Diese Variablen können wir wie zuvor unter Einstellungen > Systemvariable wie folgt anlegen:


Homematic IP

Homematic IP

Homematic IP


Um diese Variablen zu verknüpfen, müssen wir - oben im Bild mit einem roten Pfeil gekennzeichnet - auf den Programme Button klicken und das folgende Programm anlegen:


Homematic IP


Dieses Programm achtet darauf wenn der Systemzustand Anwesenheit auf anwesend geschaltet wird und schaltet in diesem Fall den Systemzustand Eingangsbereich auf ausgelöst.

Oder einfach formuliert, wenn unsere Kamera eine Person erkennt (über den internen Bewegungsmelder oder die Bewegungs-/ Audioerkennung), soll der Homematic Zentrale die Anwesenheit einer Person gemeldet werden und daraufhin ein Alarm für den Eingangsbereich ausgelöst werden.

Sinnvollerweise können wir noch ein Zeitfenster bestimmen indem diese Regel aktiv sein soll, indem man bei UND auf das grüne + klickt, Zeitsteuerung auswählt und danach im Zeitmodul ein Zeitfenster auswählt:


Homematic IP

Homematic IP


In dem Beispiel wurde festgelegt, dass der Alarm nur ausgelöst wird, wenn die Kamera zwischen 18:00 und 8:30 Uhr eine Bewegung erkennt.

Konfiguration von Node-RED

Wir können jetzt in Node-RED einen sysvar Knoten nehmen und ihn über zwei Inject Knoten mit den Boolean true oder false zu speisen.


Homematic IP

Homematic IP


Oben gezeigt ist die Konfiguration des True Inject Knotens - für den zweiten muß hier entsprechend false ausgewählt werden.

Im sysvar Knoten können wir hier unsere Anwesenheit Systemvariable auswählen:


Homematic IP


Wenn wir jetzt unsere true und false Knoten anklicken wird die Systemvariable Anwesenheit in der Homematic Zentrale auf jeweils true oder false gestellt. Im Bild unten haben wir einen Debug Knoten ans Ende der Sequenz gestellt der uns eine Textausgabe auf der Rechte Seite gibt - so können wir genau sehen, was gerade zur CCU geschickt wurde:


Homematic IP


Sie können diesen Flow von hier kopieren und in Node-RED einfügen (beachten Sie, daß Sie nach dem kopieren noch Ihre eigene Systemvariable im sysvar Knoten festlegen müssen):

[{"id":"b3f13ca9.05d1e","type":"debug","z":"654e5181.3b745","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":370,"y":853,"wires":[]},{"id":"692ab837.89e6a8","type":"inject","z":"654e5181.3b745","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":813,"wires":[["3d291fff.a2c3b"]]},{"id":"3d291fff.a2c3b","type":"ccu-sysvar","z":"654e5181.3b745","name":"Anwesenheit","ccuConfig":"38263145.35ea0e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":220,"y":853,"wires":[["b3f13ca9.05d1e"]]},{"id":"5e80cc6f.f25da4","type":"inject","z":"654e5181.3b745","name":"","topic":"","payload":"false","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":893,"wires":[["3d291fff.a2c3b"]]},{"id":"f38ce21d.2de39","type":"comment","z":"654e5181.3b745","name":"Alarmserver Test","info":"","x":100,"y":769,"wires":[]},{"id":"38263145.35ea0e","type":"ccu-connection","z":"","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048"}]

Da wir die Systemvariable Anwesenheit mit unserer Alarmvariable Eingangsbereich per Programm gekoppelt haben, sehen wir jetzt auch jedes Mal einen System Alarm in der Homematic, wenn wir den true Inject Knoten anklicken:


Homematic IP


Wir hatten bereits in einem früheren Tutorial einen Webhook in Node-RED erstellt, den wir als Alarmserver verwenden können, um mit unserer Kamera eine Node-RED Sequenz anzustoßen. Diesen Code können wir hier - in vereinfachter Form - recyceln:


Homematic IP


[{"id":"b79554c0.4b0938","type":"http in","z":"654e5181.3b745","name":"Alarmserver","url":"/alarm/eingang","method":"get","upload":false,"swaggerDoc":"","x":90,"y":1059,"wires":[["e7e1fe7c.d917e","db35556e.deb218","7a713636.05ca38"]]},{"id":"e7e1fe7c.d917e","type":"change","z":"654e5181.3b745","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":264,"y":1059,"wires":[["ac29789f.fd0688"]]},{"id":"ac29789f.fd0688","type":"ccu-sysvar","z":"654e5181.3b745","name":"Anwesenheit","ccuConfig":"38263145.35ea0e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":454,"y":1058,"wires":[[]]},{"id":"263551c7.fba44e","type":"http response","z":"654e5181.3b745","name":"Status Received","statusCode":"","headers":{"content-type":"text/html"},"x":386,"y":1019,"wires":[]},{"id":"db35556e.deb218","type":"template","z":"654e5181.3b745","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n    <head></head>\n    <body>\n        <h1>Presence:</h1>\n        <p>Cellar alarm {{req.query.alarm}}!</p>\n        <p>Trigger {{req.query.active}}!</p>\n    </body>\n</html>","x":237,"y":1019,"wires":[["263551c7.fba44e"]]},{"id":"7a713636.05ca38","type":"delay","z":"654e5181.3b745","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":243,"y":1104,"wires":[["cf961dde.8fa7f"]]},{"id":"cf961dde.8fa7f","type":"change","z":"654e5181.3b745","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":403,"y":1104,"wires":[["ac29789f.fd0688"]]},{"id":"4bd4fb38.6e1224","type":"comment","z":"654e5181.3b745","name":"Alarmserver Webhook","info":"","x":121,"y":977,"wires":[]},{"id":"38263145.35ea0e","type":"ccu-connection","z":"","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048"}]

Diese Sequenz stellt einen HTTP Eingangsknoten bereit mit dem, wenn die Kamera den Alarmserver kontaktiert, eine HTML Seite als Antwort gesendet wird. Im Knoten können Sie sehen, daß dieser einen Webhook auf der URL alarm/eingang aufbaut - beachten Sie hierbei jedoch, daß diese URL relative zur Adresse von Node-RED ist. Der vollständige Pfad, um auf den Webhook zuzugreifen lautete entsprechend /addons/red/alarm/eingang:


Homematic IP


Wenn diese Meldung reinkommt verwenden wir einen Change Knoten um ein true zum Anwesenheit sysvar Knoten zu senden - also genau wie wir es oben manuell über den Inject Knoten gemacht hatten. Darunter haben wir noch einen Delay Knoten der automatisch nach 5s den Status wieder auf false setzt und damit den Alarm wieder scharf stellt.

Alarmserver Einstellung auf der Kamera

Jetzt müssen wir noch in unserer Kamera den erstellten Alarmserver hinterlegen. Das Ganze sollte dann so ausschauen:


Homematic IP


Die Adresse unseres Alarmservers ist die lokale IP Adresse der CCU, der Port ist 80 und der Server Pfad lautet /addons/red/alarm/eingang. Der Parameter darunter ist optional und wird nur für die Webseite verwendet, die unser Webhook bereitstellt. Auch wurde in der WebUI der Kamera aktiviert, daß der Alarmauslöser mit angehangen werden soll - wenn Sie z.B. nur den internen PIR Sensor Ihrer Kamera zur Bewegungserkennung verwenden, wird dann ein &active=5 an die URL angehangen (welche Zahl für welchen Auslöser steht können Sie hier nachlesen). Sie können die URL testen indem Sie die Adresse in Ihrem Webbrowser aufrufen http://<IP Adresse der CCU>/addons/red/alarm/eingang?alarm=ausgelöst&active=5:


Homematic IP


Das Aufrufen dieser URL simuliert hier natürlich das Auslösen des Alarmservers durch die Kamera. Wir sollten entsprechend erwarten, daß wir einen Alarm in der CCU sehen:


Homematic IP


Jedes Mal wenn die Kamera jetzt einen Alarm auslöst und den Alarmserver kontaktiert, wird jetzt in der Homematic Zentrale die Anwesenheit einer Person registriert und außerhalb der Arbeitszeiten von 18:00 bis 8:30 Uhr sofort ein Alarm ausgelöst - beachten Sie allerdings, daß diese Funktion auf der Kamera einen Cooldown von 60s hat - es kann also nur max. 1 mal pro Minute ein Alarm ausgelöst werden! Diesen Alarm können Sie jetzt mit jeder Variable in Ihrem Hausautomatisierungssystem koppeln und somit Reaktionen auf das Eindringen automatisieren.

Vollständiger Node-RED Flow

[{"id":"1cb03303.2daf2d","type":"ccu-value","z":"654e5181.3b745","name":"PIR Sensor","iface":"BidCos-RF","channel":"NEQ1545018:1 HM-Sen-MDIR-O-2 NEQ1545018:1","datapoint":"MOTION","mode":"","start":true,"change":true,"cache":false,"queue":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":90,"y":98,"wires":[["aed51eec.42084"]]},{"id":"560c0d74.11df54","type":"change","z":"654e5181.3b745","name":"Alarm","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"triggered\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":368,"y":74,"wires":[["cbb0f690.7d1e18"]]},{"id":"cbb0f690.7d1e18","type":"mqtt out","z":"654e5181.3b745","name":"","topic":"/homematic/pir/alarm","qos":"1","retain":"false","broker":"32d092dd.920b8e","x":542,"y":98,"wires":[]},{"id":"cbf3c696.ca53c8","type":"ccu-value","z":"654e5181.3b745","name":"Door Sensor","iface":"BidCos-RF","channel":"OEQ1985716:1 HM-Sec-SCo OEQ1985716:1","datapoint":"STATE","mode":"","start":true,"change":true,"cache":false,"queue":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":90,"y":205,"wires":[["35ee1096.27b0f"]]},{"id":"aed51eec.42084","type":"switch","z":"654e5181.3b745","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":240,"y":98,"wires":[["560c0d74.11df54"],["40c14a0b.811054"]]},{"id":"40c14a0b.811054","type":"change","z":"654e5181.3b745","name":"Alarm","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"idle\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":368,"y":125,"wires":[["cbb0f690.7d1e18"]]},{"id":"35ee1096.27b0f","type":"switch","z":"654e5181.3b745","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":230,"y":205,"wires":[["94280d47.14851"],["38ed727d.f46e3e"]]},{"id":"94280d47.14851","type":"change","z":"654e5181.3b745","name":"Alarm","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"open\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":363,"y":178,"wires":[["9253d1fd.dbffe"]]},{"id":"9253d1fd.dbffe","type":"mqtt out","z":"654e5181.3b745","name":"","topic":"/homematic/door/alarm","qos":"1","retain":"false","broker":"32d092dd.920b8e","x":536,"y":202,"wires":[]},{"id":"38ed727d.f46e3e","type":"change","z":"654e5181.3b745","name":"Alarm","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"closed\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":363,"y":229,"wires":[["9253d1fd.dbffe"]]},{"id":"476976cd.d97608","type":"mqtt in","z":"654e5181.3b745","name":"Push Alarm","topic":"ipcam/alarm/pushalarm","qos":"1","broker":"be559f9e.42004","x":90,"y":452,"wires":[["dc4b5e6c.55524"]]},{"id":"dc4b5e6c.55524","type":"function","z":"654e5181.3b745","name":"Alarm","func":"var ip = \"192.168.2.111\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd  = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm  = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss  = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"pushalarm\";\nmsg.payload = ip+\"/param.cgi?cmd=pushhostalarm&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":224,"y":452,"wires":[["80da80c4.b3952"]]},{"id":"17925b0a.f59825","type":"string","z":"654e5181.3b745","name":"toJSON","methods":[{"name":"replaceAll","params":[{"type":"str","value":"[Succeed]set ok."},{"type":"str","value":"{ \"pushalarm\": \"triggered\" }"}]},{"name":"replaceAll","params":[{"type":"str","value":"[Error]Param error."},{"type":"str","value":"{ \"pushalarm\": \"Error\" }"}]}],"prop":"payload","propout":"payload","object":"msg","objectout":"msg","x":663,"y":452,"wires":[["1b3013a2.b7b63c"]]},{"id":"1b3013a2.b7b63c","type":"json","z":"654e5181.3b745","name":"","property":"payload","action":"","pretty":false,"x":533,"y":495,"wires":[["f9f0d5ea.ab4548","360e56b2.29d25a"]]},{"id":"f9f0d5ea.ab4548","type":"ui_text","z":"654e5181.3b745","group":"9c82c990.e99ad8","order":2,"width":0,"height":0,"name":"UI Alarm","label":"Alarm Push","format":"{{msg.payload.pushalarm}}","layout":"row-spread","x":708,"y":496,"wires":[]},{"id":"80da80c4.b3952","type":"change","z":"654e5181.3b745","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":349,"y":452,"wires":[["a93cf3a0.83f78"]]},{"id":"a93cf3a0.83f78","type":"http request","z":"654e5181.3b745","name":"pushhostalarm","method":"GET","ret":"txt","url":"","tls":"","x":506,"y":452,"wires":[["17925b0a.f59825"]]},{"id":"948c7b7b.3fad08","type":"mqtt out","z":"654e5181.3b745","name":"Push Alarm","topic":"ipcam/alarm/pushalarm","qos":"1","retain":"false","broker":"be559f9e.42004","x":551,"y":380,"wires":[]},{"id":"15f29651.6e0e4a","type":"ui_button","z":"654e5181.3b745","name":"Alarm","group":"9c82c990.e99ad8","order":0,"width":0,"height":0,"passthru":true,"label":"Trigger Alarm!","tooltip":"","color":"#ffffff","bgcolor":"#f3100b","icon":"fa-bell","payload":"{\"pushalarm\" : \"triggered\"}","payloadType":"json","topic":"pushalarm","x":412,"y":380,"wires":[["948c7b7b.3fad08"]]},{"id":"7b5307f4.e001b8","type":"mqtt in","z":"654e5181.3b745","name":"","topic":"/homematic/pir/alarm","qos":"1","broker":"be559f9e.42004","x":120,"y":405,"wires":[["6526d51a.a2ae3c"]]},{"id":"360e56b2.29d25a","type":"delay","z":"654e5181.3b745","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":366,"y":539,"wires":[["d1f9e81.78b3218"]]},{"id":"d1f9e81.78b3218","type":"change","z":"654e5181.3b745","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"pushalarm\" : \"\"}","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":524,"y":539,"wires":[["271157e1.7d77e8"]]},{"id":"de5c11ca.bd2cd","type":"comment","z":"654e5181.3b745","name":"Trigger an Alarm","info":"","x":101,"y":309,"wires":[]},{"id":"271157e1.7d77e8","type":"json","z":"654e5181.3b745","name":"","property":"payload","action":"","pretty":false,"x":674,"y":539,"wires":[["f9f0d5ea.ab4548"]]},{"id":"16eb7e29.270fb2","type":"mqtt in","z":"654e5181.3b745","name":"","topic":"/homematic/door/alarm","qos":"1","broker":"be559f9e.42004","x":120,"y":357,"wires":[["196d5004.ae1d8"]]},{"id":"83c4f592.0eb038","type":"switch","z":"654e5181.3b745","name":"Push","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"{\"val\":\"open\"}","vt":"str"},{"t":"eq","v":"{\"val\":\"closed\"}","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":290,"y":654,"wires":[["622a1870.7599b8"],["1ec9ed97.043b82"]]},{"id":"622a1870.7599b8","type":"function","z":"654e5181.3b745","name":"Alarm Pos 1","func":"var ip = \"192.168.2.111\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd  = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm  = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss  = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"pushalarm\";\nmsg.payload = ip+\"/param.cgi?cmd=preset&-act=goto&-number=0&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":430,"y":630,"wires":[["da5b2ed7.12a7b"]]},{"id":"da5b2ed7.12a7b","type":"change","z":"654e5181.3b745","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":578,"y":630,"wires":[["f1bd868.ce72c78"]]},{"id":"f1bd868.ce72c78","type":"http request","z":"654e5181.3b745","name":"pushhostalarm","method":"GET","ret":"txt","url":"","tls":"","x":735,"y":630,"wires":[[]]},{"id":"34254a4a.5ca5d6","type":"comment","z":"654e5181.3b745","name":"Go to Position","info":"","x":90,"y":614,"wires":[]},{"id":"fb1c3fd5.b4b6e","type":"mqtt in","z":"654e5181.3b745","name":"","topic":"/homematic/door/alarm","qos":"1","broker":"be559f9e.42004","x":120,"y":654,"wires":[["83c4f592.0eb038"]]},{"id":"1ec9ed97.043b82","type":"function","z":"654e5181.3b745","name":"Alarm Pos 2","func":"var ip = \"192.168.2.111\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd  = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm  = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss  = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last update: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"pushalarm\";\nmsg.payload = ip+\"/param.cgi?cmd=preset&-act=goto&-number=1&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":430,"y":677,"wires":[["ffc4e8f9.34d5b8"]]},{"id":"ffc4e8f9.34d5b8","type":"change","z":"654e5181.3b745","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":578,"y":677,"wires":[["3b35d14d.42014e"]]},{"id":"3b35d14d.42014e","type":"http request","z":"654e5181.3b745","name":"pushhostalarm","method":"GET","ret":"txt","url":"","tls":"","x":738,"y":677,"wires":[[]]},{"id":"196d5004.ae1d8","type":"switch","z":"654e5181.3b745","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"{\"val\":\"open\"}","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":288,"y":357,"wires":[["15f29651.6e0e4a"]]},{"id":"6526d51a.a2ae3c","type":"switch","z":"654e5181.3b745","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"{\"val\":\"triggered\"}","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":287,"y":405,"wires":[["15f29651.6e0e4a"]]},{"id":"b3f13ca9.05d1e","type":"debug","z":"654e5181.3b745","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":370,"y":853,"wires":[]},{"id":"692ab837.89e6a8","type":"inject","z":"654e5181.3b745","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":813,"wires":[["3d291fff.a2c3b"]]},{"id":"3d291fff.a2c3b","type":"ccu-sysvar","z":"654e5181.3b745","name":"Anwesenheit","ccuConfig":"38263145.35ea0e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":220,"y":853,"wires":[["b3f13ca9.05d1e"]]},{"id":"5e80cc6f.f25da4","type":"inject","z":"654e5181.3b745","name":"","topic":"","payload":"false","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":893,"wires":[["3d291fff.a2c3b"]]},{"id":"b79554c0.4b0938","type":"http in","z":"654e5181.3b745","name":"Alarmserver","url":"/alarm/eingang","method":"get","upload":false,"swaggerDoc":"","x":90,"y":1059,"wires":[["e7e1fe7c.d917e","db35556e.deb218","7a713636.05ca38"]]},{"id":"e7e1fe7c.d917e","type":"change","z":"654e5181.3b745","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":264,"y":1059,"wires":[["ac29789f.fd0688"]]},{"id":"ac29789f.fd0688","type":"ccu-sysvar","z":"654e5181.3b745","name":"Anwesenheit","ccuConfig":"38263145.35ea0e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":454,"y":1058,"wires":[[]]},{"id":"263551c7.fba44e","type":"http response","z":"654e5181.3b745","name":"Status Received","statusCode":"","headers":{"content-type":"text/html"},"x":386,"y":1019,"wires":[]},{"id":"db35556e.deb218","type":"template","z":"654e5181.3b745","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n    <head></head>\n    <body>\n        <h1>Anwesenheit:</h1>\n        <p>Eingang Alarm {{req.query.alarm}}!</p>\n        <p>Auslöser {{req.query.active}}!</p>\n    </body>\n</html>","x":237,"y":1019,"wires":[["263551c7.fba44e"]]},{"id":"7a713636.05ca38","type":"delay","z":"654e5181.3b745","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":243,"y":1104,"wires":[["cf961dde.8fa7f"]]},{"id":"cf961dde.8fa7f","type":"change","z":"654e5181.3b745","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":403,"y":1104,"wires":[["ac29789f.fd0688"]]},{"id":"f38ce21d.2de39","type":"comment","z":"654e5181.3b745","name":"Alarmserver Test","info":"","x":100,"y":769,"wires":[]},{"id":"4bd4fb38.6e1224","type":"comment","z":"654e5181.3b745","name":"Alarmserver Webhook","info":"","x":121,"y":977,"wires":[]},{"id":"3aa805a9.15656a","type":"comment","z":"654e5181.3b745","name":"Homematic Sensors","info":"","x":110,"y":50,"wires":[]},{"id":"38263145.35ea0e","type":"ccu-connection","z":"","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048"},{"id":"32d092dd.920b8e","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"nodered","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"be559f9e.42004","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"9c82c990.e99ad8","type":"ui_group","z":"","name":"Trigger","tab":"fa59fc29.87608","disp":true,"width":"6","collapse":false},{"id":"fa59fc29.87608","type":"ui_tab","z":"","name":"Homatic","icon":"dashboard","disabled":false,"hidden":false}]