Fritzbox für Anwesenheit integrieren

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Fritzbox für Anwesenheit integrieren

Beitrag von ptweety » 25.10.2018, 20:02

Edit: gelöst. Zur Anleitung etwas weiter runter scrollen zu Beiträgen 6-7

Hallo zusammen,

ich würde gerne die Anwesenheit durch Erkennung der im Heimnetz angemeldeten Geräte bestimmen. Ich habe hier eine recht neue Fritz!Box 7580 mit aktuellem Fritz!OS 7.0 laufen. Ein Nutzer ist speziell für die Kommunikation mit RedMatic/Node-Red angelegt und auch mit Rechten versehen.

In Node-Red habe ich dann mal mit node-red-contrib-fritz die Box versucht einzubinden. Und hier komme ich nicht weiter ...
Im config-node selber habe ich natürlich user / password mehrfach geprüft, die IP selber oder fritz.box eingetragen und auch mit oder ohne SSL getestet. Ergebnis ist: es kommt die debug-Meldung "Device not ready".

Ein Blick ins Log lässt mich nun nichts Gutes ahnen:

Code: Alles auswählen

Oct 25 19:38:54 ccu3-webui daemon.err node-red: Unhandled rejection ReferenceError: msg is not defined
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at /usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritz/fritz.js:71:74
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at tryCatcher (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritz/node_modules/bluebird/js/release/util.js:16:23)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at Promise._settlePromiseFromHandler (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritz/node_modules/bluebird/js/release/promise.js:512:31)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at Promise._settlePromise (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritz/node_modules/bluebird/js/release/promise.js:569:18)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at Promise._settlePromise0 (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritz/node_modules/bluebird/js/release/promise.js:614:10)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at Promise._settlePromises (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritz/node_modules/bluebird/js/release/promise.js:690:18)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at _drainQueueStep (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritz/node_modules/bluebird/js/release/async.js:138:12)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at _drainQueue (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritz/node_modules/bluebird/js/release/async.js:131:9)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at Async._drainQueues (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritz/node_modules/bluebird/js/release/async.js:147:5)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at Immediate.Async.drainQueues (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritz/node_modules/bluebird/js/release/async.js:17:14)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at runCallback (timers.js:810:20)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at tryOnImmediate (timers.js:768:5)
Oct 25 19:38:54 ccu3-webui daemon.err node-red:     at processImmediate [as _immediateCallback] (timers.js:745:5)
und die entsprechende Code-Zeile in fritz.js von dem node-red-contrib-fritz Node lautet dann:

Code: Alles auswählen

66	node.reinit = function() {
67		Promise.all([node.fritzbox.initIGDDevice(), node.fritzbox.initTR064Device()])
68			.then(function() {
69				updateStatus("ready");
70			}).catch(function(error) {
71				node.error("Initialization of device failed. Check configuration.", msg);
72				updateStatus("error");
73			});
74	};
Und jetzt die Fragen:
  • Kann das jemand so nachvollziehen?
  • Hat jemand das gleiche Problem?
  • Ist dies RedMatic spezifisch?
  • Oder ist einfach der Node kaputt (evtl. mit Fritz!OS 7.x)
Zuletzt geändert von ptweety am 26.10.2018, 13:03, insgesamt 1-mal geändert.

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: Fritzbox für Anwesenheit integrieren

Beitrag von nicolas-eric » 25.10.2018, 20:53

Ich denke mal, der Node ist 8 Monte alt und kommt mit Version 7 nicht klar.
Genauso war es auch beim Fritzbox Script, da hatte AVM irgendwann mal den Zugang zur Abfrage gesperrt bzw. stark geändert und danach funktionierten diverse Sachen nicht mehr.

Das Fritz Anwesenheit CCU Addon (hier im Forum zu finden) soll aber auch mit der aktuellen 7er Version funktionieren.
Damit lassen sich in der CCU Systemvariablen auf "true/false" bzw. "anwesend/abwesend" setzen.

Die hier scheinbar verwendete TR064 Abfrage unterstützt wohl auch nur noch die Fernkonfiguration und nicht viel mehr.
Eventuell ist das bei neueren FB auch ab Werk deaktiviert.
Genauere Infos und wo man TR064 an/aus macht, steht hier:
https://avm.de/fileadmin/user_upload/Gl ... TR-064.pdf

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Fritzbox für Anwesenheit integrieren

Beitrag von hobbyquaker » 25.10.2018, 21:31

Hab grad mal bisschen rumgeguggt, es gibt da noch andere FritzBox-Anwesenheits-Erkennungs-Nodes. Z.B. den hier:
https://github.com/oliverlorenz/node-re ... x-presence

Für den hat erst vor 2 Tagen jemand ein PR gestellt wegen FritzOS 7 Kompatibilität: https://github.com/derpicknicker1/node- ... 0b6dce58d4
Ist allerdings noch nicht gemerged, müsstest Du wenn Du es eilig hast manuell reinfrickeln oder den Fork mit dem Patch direkt von Github installieren via:

Code: Alles auswählen

export PATH=/usr/local/addons/redmatic/bin:$PATH
cd /usr/local/addons/redmatic/var
npm install --save --no-package-lock --global-style --save-prefix="~" --production https://github.com/derpicknicker1/node-red-contrib-fritzbox-presence#patch-1

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: Fritzbox für Anwesenheit integrieren

Beitrag von ptweety » 25.10.2018, 22:02

Hi Sebastian,

der node-red-contrib-fritzbox-presence Node ist leider kaputt (für mich). Ob mit oder ohne den von dir genannten Patch gibt er nur die lustige Fehlermeldung:
Error: Unvaild session id
Man beachte die Schreibweise :shock:

@nicolas-eric: Tja, outdated ist das wohl. Allerdings kann man mit dem TR-064 Interface noch deutlich mehr machen. Man muss "nur" den Service "urn:dslforum-org:service:Hosts:1" mit Action "GetSpecificHostEntry" und einer MAC aufrufen und schon hat man die Antwort. Aber wie das in "roh" nur mit den Standard Todes von Node-Red gehen soll ist mir ein Rätsel.

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: Fritzbox für Anwesenheit integrieren

Beitrag von ptweety » 25.10.2018, 22:24

Und ich muss mich korrigieren. node-red-contrib-fritzbox-presence liefert nun doch ein Ergebnis zurück. Ich musste in den Netzwerkeinstellungen der Fritte zusätzlich zum "Zugriff für Anwendungen zulassen" noch "Statusinformationen über UPnP übertragen"

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: Fritzbox für Anwesenheit integrieren

Beitrag von nicolas-eric » 25.10.2018, 22:30

Wenn das funktioniert, magst Du eventuell mal eine kurze Anleitung schreiben, wie das zu konfigurieren ist?
Direkt die Anwesenheit in der FB würde ich auch gerne abfragen und dieses FB Script funktioniert was das angeht schon ewig nicht mehr.

Gibt es eigentlich auch einen Node, mit dem es möglich ist, der FB zu sagen, sie soll eine bestimmte Nummer anrufen? Das ging mit dem alten Script echt gut.
Da gingen z. B. auch Spielereien, wie die aktuelle Außentemperatur auf einem Fritzfon anstatt des Telefon namens anzuzeigen. Oder das Telefon zu bestimmten Zeiten leise zu schalten.

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: Fritzbox für Anwesenheit integrieren

Beitrag von ptweety » 25.10.2018, 23:08

Ja klar. Bis dato bin ich aber noch nicht weiter als das ich ein array der Geräte im debug-Node sehe. Trotzdem hier schon mal die ersten Schritte:
  • Anlegen eines Benutzers auf der Fritz!Box für den Zugriff -> System :- Fritz!Box Benutzer (Benutzername und Kennwort wählen; Zugang aus dem Internet deaktivieren!)
  • Zugang im Heimnetzt erlauben -> Heimnetz -> Netzwerk -> Netzwerkeinstellungen :- beiden Haken bei den Heimnetzfreigaben aktivieren
  • Unter RedMatic den erforderlichen node-red-contrib-fritzbox-presence installieren -> Burger Menu -> Manage palette -> Install
  • Mit ssh auf die CCU3 oder Derivat einloggen und folgenden patch ausführen:

    Code: Alles auswählen

    sed -i -e '43s/active/net.devices/g' /usr/local/addons/redmatic/var/node_modules/node-red-contrib-fritzbox-presence/fritzbox-presence.js
Jetzt kann der Node genutzt werden. In der Konfiguration ist natürlich erstmal die IP der Fritz!Box einzutragen und dann braucht es nur noch einen inject-Node und einen debug-Node für die ersten Tests:
Dateianhänge
fb.png

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: Fritzbox für Anwesenheit integrieren

Beitrag von ptweety » 26.10.2018, 13:00

Hi nicolas-eric,

hier jetzt der Rest der Anleitung (zumindest, wie ich es bis dato umgesetzt habe):
flow.png
Auf Basis des von Sebastian in RedMatic mitgelieferten Beispiel-Flows Variablen geht es los. Als erstes braucht es noch den --> node-red-contrib-throttle <--

Dann wird der folgende Flow eingebunden:

Code: Alles auswählen

[{"id": "9d3175ae.4ad96","type": "redmatic-homekit-switch","z": "48c35f38.159eb8","bridgeConfig": "","name": "Anwesenheit","x": 910,"y": 80,"wires": [["6cf070ff.29f538"]]},{"id": "ada7446b.d73db8","type": "ccu-rpc-event","z": "48c35f38.159eb8","name": "motion","iface": "HmIP-RF","ccuConfig": "","rooms": "","roomsRx": "str","functions": "","functionsRx": "str","device": "","deviceRx": "str","deviceName": "","deviceNameRx": "str","deviceType": "HmIP-SMI|HmIP-SPI","deviceTypeRx": "re","channel": "","channelRx": "str","channelName": "","channelNameRx": "str","channelType": "","channelTypeRx": "str","datapoint": "MOTION|PRESENCE_DETECTION_STATE","datapointRx": "re","change": false,"working": false,"cache": true,"topic": "${CCU}/${Interface}/${channelName}/${datapoint}","x": 430,"y": 200,"wires": [["6c38b5df.f9f574"]]},{"id": "2635e28a.461e5e","type": "throttle","z": "48c35f38.159eb8","name": "","throttleType": "time","timeLimit": "5","timeLimitType": "seconds","countLimit": 0,"blockSize": 0,"locked": false,"x": 720,"y": 160,"wires": [["6cf070ff.29f538"]]},{"id": "6c38b5df.f9f574","type": "switch","z": "48c35f38.159eb8","name": "true?","property": "payload","propertyType": "msg","rules": [{"t": "true"}],"checkall": "true","repair": false,"outputs": 1,"x": 570,"y": 200,"wires": [["2635e28a.461e5e"]]},{"id": "cf00ea70.bb3ce8","type": "fritzbox-presence","z": "48c35f38.159eb8","fritz": "","x": 380,"y": 120,"wires": [["37c0b734.cbdbf"]]},{"id": "821416b5.7ca45","type": "inject","z": "48c35f38.159eb8","name": "5m","topic": "","payload": "","payloadType": "date","repeat": "300","crontab": "","once": true,"onceDelay": 0.1,"x": 190,"y": 120,"wires": [["cf00ea70.bb3ce8"]]},{"id": "37c0b734.cbdbf","type": "function","z": "48c35f38.159eb8","name": "filter","func": "return { payload:\n  msg.payload.some(\n    f => f.name.search(/phone/gi) > -1\n  )\n}","outputs": 1,"noerr": 0,"x": 570,"y": 120,"wires": [["2635e28a.461e5e"]]}]
Jetzt in den Nodes "Anwesenheit", "motion", "Fritz!Box presence" und "Switch" die jeweilige Konfiguration anpassen. Im wesentlichen ist CCU, Bridge und Fritzbox auszuwählen oder zu erstellen.

Zusätzlich in "motion" nachschauen, ob du die passenden HmIP-Geräte hast oder andere auswählen musst und dann ggfs. auch noch das Interface für HM umgestellt werden muss.

Letzter Schritt ist noch die korrekte Identifikation deiner Geräte im WLan. Dazu im "filter" den regulären Ausdruck /phone/gi anschauen und ggfs. umbauen. Hilfe dazu gibt es --> Hier <--

Code: Alles auswählen

return { payload:
  msg.payload.some(
    f => f.name.search(/phone/gi) > -1
  )
}

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: Fritzbox für Anwesenheit integrieren

Beitrag von nicolas-eric » 26.10.2018, 16:26

Danke!
Dann hab ich ja morgen wieder was zum rumprobieren.

Raducanu
Beiträge: 1
Registriert: 20.02.2019, 17:03

Re: Fritzbox für Anwesenheit integrieren

Beitrag von Raducanu » 20.02.2019, 17:09

ptweety hat geschrieben:
25.10.2018, 20:02

In Node-Red habe ich dann mal mit node-red-contrib-fritz die Box versucht einzubinden. Und hier komme ich nicht weiter ...
Im config-node selber habe ich natürlich user / password mehrfach geprüft, die IP selber oder fritz.box eingetragen und auch mit oder ohne SSL getestet. Ergebnis ist: es kommt die debug-Meldung "Device not ready".
Ich bin über Google auf das Problem hier hin gekommen: Daher krame ich diesen etwas älteren Beitrag mal wieder nach oben.
Die Meldung "Device not Ready" hatte (zumindest in meinen Fall" mit was anderem zu tun.

In der node-red-contrib-fritz Version 1.3.1 ist in der Node Konfig für die Fritzbox der TR064 Port anzugeben (default 49000).
Leider nicht dokumentiert, aber dann sollte es auch funktionieren....
2019-02-20 17_07_56-Node-RED _ 192.168.0.6.png
2019-02-20 17_07_56-Node-RED _ 192.168.0.6.png (6.55 KiB) 8235 mal betrachtet

Antworten

Zurück zu „RedMatic“