HowTo: Node Red / FritzBox – Anwesenheitserkennung mit der FritzBox

Ein wichtiges Ereignis auf das Euer SmartHome reagieren können sollte ist der Anwesenheitsstatus der Bewohner. So könnt Ihr zum Beispiel Lampen bei Abwesenheit ausschalten oder Heizkörper bei Anwesenheit einschalten.
Seid Ihr zufällig noch im Besitz einer FritzBox wird diesen Anwesenheitserkennung besonders leicht.

Alles was Ihr dazu benötigt ist eine FritzBox, NodeRed und die MAC-Adresse(n) der Bewohner-Smartphones.

Wie Ihr die Anwesenheitserkennung mit der FritzBox in NodeRed umsetzt ist im folgenden Artikel beschrieben.


Sicherheitshinweise

Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/

Affiliatelinks/Werbelinks

Die hier in aufgeführten Links zu Online-Shops sind sogenannte Affiliate-Links. Wenn Du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekommt Nerdiy.de von dem betreffenden Online-Shop oder Anbieter eine Provision. Für Dich verändert sich der Preis nicht. Falls Du Deine Einkäufe über diese Links tätigst unterstützt Du Nerdiy.de dabei auch in Zukunft weitere nützliche Projekte anbieten zu können. 🙂 


Voraussetzungen

Hilfreiche Artikel:
Damit Ihr diese Konfiguration übernehmen  könnt sollte NodeRed natürlich schon installiert sein.
Wie ihr einen RaspberryPi dazu vorbereitet und dann NodeRed darauf installiert ist in den folgenden Artikeln beschrieben.

Die folgenden Artikel beschreiben was zu tun ist um den RaspberryPi soweit vorzubereiten:
RaspberryPi – Einrichten für Nerdiys!
RaspberryPi – Die Erste Konfiguration!
RaspberryPi – Den RaspberryPi über SSH steuern

NodeRed – Installation von NodeRed auf dem RaspberryPi
NodeRed – Neue Nodes installieren

Benötigtes Werkzeug
-keins-

Benötigtes Material:

In der folgenden Liste findet Ihr alle Teile die Ihr zur Umsetzung dieses Artikels benötigt.


In die NodeRed Konfigurationsoberfläche einloggen

Bevor Ihr eure NodeRed Konfiguration bearbeiten könnt müsst Ihr Euch - falls aktiviert - zunächst in die NodeRed Konfigurationsoberfläche einloggen.

Ansicht des Login Dialogs. Hier müsst Ihr die Login Daten eingeben die Ihr während der Konfiguration des Logins angegeben habt. Infos dazu findet Ihr im Artikel NodeRed - Benutzerlogin einrichten.

FritzBox-Node installieren

Damit NodeRed mit Eurer FritzBox kommunizieren kann müsst Ihr die Node “node-red-contrib-fritz” installieren. Wie Ihr Nodes installiert ist im Artikel NodeRed – Neue Nodes installieren beschrieben.


FritzBox-Node-Konfiguration eintragen

Damit die soeben installierte FritzBox-Node auch mit Eurer FritzBox kommunizieren kann, müsst Ihr Eure FritzBox-Login-Daten in die Konfiguration der Node angeben.

Klickt dazu auf die Node “Fritz!Box Callmonitor”. Daraufhin öffnet sich ein neues Fenster in dem Ihr in der Zeile “Device” “Add new fritzbox-config” in der Drop-Down-Liste auswählen könnt. Wählt dies aus und klickt dann auf das Stift-Icon rechts davon.
In dem sich nun öffnenden Fenster müsst Ihr die Login-Daten zu Eurer FritzBox eingeben. Also zuerst den Namen, damit die Konfiguration nicht namenlos bleibt und dann den Benutzernamen und das Passwort. Falls die FritzBox in Eurem privaten Netzwerk steht könnt Ihr die Angaben bei Host so stehen lassen. Nur falls Ihr auf eine entfernte FritzBox zugreift müsst Ihr hier die URL zur FritzBox eintragen. Dann solltet Ihr auch dafür sorgen, dass diese Verbindung per HTTPS verschlüsselt ist.In diesem Fall muss dann auch der Haken bei “Is SSL connection” gesetzt werden. habt Ihr alles eingegeben bestätigt Ihr dies mit einem Klick auf “Add”.
Dadurch werdet Ihr wieder ins vorherige Fenster weitergeleitet. Die Neue FritzBox-Konfiguration ist nun schon ausgewählt. Ihr müsst das Fenster nur noch mit einem Klick auf “Done” bestätigen.

Node-Code zur Anwesenheitserkennung

Die Anwesenheitserkennung über dir FritzBox funktioniert im Prinzip darüber, dass geprüft wird, welche Smartphones im W-Lan bzw. Netzwerk der FritzBox angemeldet sind.

Als erstes müsst ihr dazu den unten aufgeführten Node-Code in Eure NodeRed-Konfiguration einführen.
Dann benötigt Ihr die MAC-Adressen der Smartphones deren Anwesenheit Ihr erkennen wollt. Dies müsst Ihr dann in einem weiteren Schritt in die Konfiguration der Fritz!Box-Node eintragen.

Node-Aufbau in der NodeRed-Konfiguration

Node-Code:

[
    {
        "id": "cf98613.60e11a",
        "type": "comment",
        "z": "7289f257a02aeac1",
        "name": "AnwesenheitHandy1",
        "info": "",
        "x": 210,
        "y": 720,
        "wires": []
    },
    {
        "id": "eedc08fb.12b8f8",
        "type": "inject",
        "z": "7289f257a02aeac1",
        "name": "AnwesenheitHandy1",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "60",
        "crontab": "",
        "once": true,
        "onceDelay": "1",
        "topic": "",
        "payload": "{'NewMACAddress': 'XX: XX: XX: XX: XX: XX'}",
        "payloadType": "jsonata",
        "x": 260,
        "y": 780,
        "wires": [
            [
                "38b70c39.68f504"
            ]
        ]
    },
    {
        "id": "c546f3f1.387d1",
        "type": "debug",
        "z": "7289f257a02aeac1",
        "name": "AnwesenheitHandy1",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload.NewActive",
        "x": 680,
        "y": 760,
        "wires": []
    },
    {
        "id": "1c07ae94.c6b621",
        "type": "trigger",
        "z": "7289f257a02aeac1",
        "name": "",
        "op1": "AnwesenheitHandy1 ist im Netzwerk angemeldet",
        "op2": "0",
        "op1type": "str",
        "op2type": "str",
        "duration": "0",
        "extend": false,
        "units": "ms",
        "reset": "0",
        "bytopic": "all",
        "outputs": 1,
        "x": 950,
        "y": 780,
        "wires": [
            [
                "38b38282.c0058e"
            ]
        ]
    },
    {
        "id": "3c25ea32.a803d6",
        "type": "change",
        "z": "7289f257a02aeac1",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.NewActive",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 700,
        "y": 840,
        "wires": [
            [
                "1c07ae94.c6b621",
                "379d6bd2.312594"
            ]
        ]
    },
    {
        "id": "379d6bd2.312594",
        "type": "trigger",
        "z": "7289f257a02aeac1",
        "name": "",
        "op1": "AnwesenheitHandy1 ist nicht mehr im Netzwerk angemeldet",
        "op2": "0",
        "op1type": "str",
        "op2type": "str",
        "duration": "0",
        "extend": false,
        "units": "ms",
        "reset": "1",
        "bytopic": "all",
        "outputs": 1,
        "x": 950,
        "y": 860,
        "wires": [
            [
                "59fcf739.918c68"
            ]
        ]
    },
    {
        "id": "38b38282.c0058e",
        "type": "pushbullet",
        "z": "7289f257a02aeac1",
        "config": "274f4530.883c1a",
        "pushtype": "note",
        "title": "Anwesenheit",
        "chan": "",
        "name": "",
        "x": 1170,
        "y": 780,
        "wires": []
    },
    {
        "id": "59fcf739.918c68",
        "type": "pushbullet",
        "z": "7289f257a02aeac1",
        "config": "274f4530.883c1a",
        "pushtype": "note",
        "title": "Anwesenheit",
        "chan": "",
        "name": "",
        "x": 1170,
        "y": 860,
        "wires": []
    },
    {
        "id": "38b70c39.68f504",
        "type": "fritzbox-in",
        "z": "7289f257a02aeac1",
        "device": "eef817a2.74b848",
        "name": "",
        "service": "urn:dslforum-org:service:Hosts:1",
        "action": "GetSpecificHostEntry",
        "arguments": "{'NewMACAddress':'value'}",
        "x": 460,
        "y": 780,
        "wires": [
            [
                "c546f3f1.387d1",
                "3c25ea32.a803d6"
            ]
        ]
    }
]

Wichtig ist, dass Ihr nach dem importieren des NodeCodes die in der FritzBox-Node eingetragene MAC-Adresse aktualisiert. Diese sollte natürlich dem Gerät entsprechen dessen Anwesenheit Ihr damit überwachen wollt. Wie Ihr die MAC-Adresse(n) von Geräten in Eurem Netzwerk herausfinden könnt ist in dem Artikel IP-Adresse der Geräte im Netzwerk anzeigen/herausfinden erwähnt.

Ansicht der FritzBox-Node in der Ihr die MAC-Adresse des zu überwachenden Gerätes festlegen solltet.

Eine feste MAC Adresse für das Smartphone festlegen

Einige Smartphone-Hersteller sind mittlerweile dazu übergegangen die MAC-Adressen Ihrer Geräte zufällig wechseln zu lassen. Dies ist ein Sicherheitsfeature damit Euer Smartphone in potentiell fremden WLANs nicht verfolgt werden kann.

In unserem Fall ist es aber hinderlich, da wir die Smartphones an der festen MAC-Adresse identifizieren. Deshalb solltet Ihr diese Funktion für Euer WLAN deaktivieren.

Zufällige MAC-Adresse deaktivieren unter Android 11:

Wechselt zu:

  • Einstellungen
  • Verbindungen
  • WLAN
  • Klickt auf das Zahnrad neben Eurem (verbundenem) WLAN
  • Erweitert
  • MAC-Adresstyp -> Einstellen auf “Telefon-MAC”

Zufällige MAC-Adresse deaktivieren unter iOS:

Unter iOS verbirgt sich diese FUnktion etwas kryptisch unter dem begriff “Private WLAN-Adresse”. Ihr findet Sie unter:

  • Einstellungen
  • WLAN
  • Netzwerk (das mit dem Ihr aktuell verbunden seid)
  • Private WLAN-Adresse -> deaktivieren

Viel Spaß mit dem Projekt

Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂

P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂

Buy Me a Coffee at ko-fi.com       

8 Kommentare

  1. Hallo zusammen,

    habe Eure Anleitung wie oben beschrieben angewendet.
    Leider erscheint bei mir in der “debug” Leiste folgendes:

    “No credentials set for pushbullet config.”

    wo kann ich die Anmeldeinformationen für die Pushbullet-Konfiguration festgelegen?
    Und was muss ich da genau einstellen?
    Hoffe Ihr könnt mir weiterhelfen 🙂
    Mit freundlichem Gruß
    Jürgen

    1. Hallo Jürgen,
      die Fehlermeldung wird dir angezeigt, weil bei der Erkennung einer Anwesenheit oder Abwesenheit eine Pushbullet-Nachricht gesendet wird. Dies ist ein Push-Benachrichtigungsservice. Mehr Infos und wie man diesen einrichtet findest du auch hier: https://nerdiy.de/nodered-pushbullet-nachrichten-bei-ereignissen-senden/
      Wenn du den Service nicht nutzen willst, kannst du die Nodes natürlich auch einfach löschen. 🙂
      Beste Grüße
      Fabian

  2. Hallo ich hoffe das dieser Bereich noch in Beobachtung ist. Wenn ich den Node Code importieren möchte schreibt mir Node RED an diversen Stellen einen Syntax Fehler

      1. Der Inject-Typ ist falsch. Der muss auf “JSONata” stehen für die MAC-Adresse, nicht auf “JSON”. Dann funktioniert der Spaß auch, wie er soll 🙂

        Aber danke für den Tipp mit Pushbullet, das ist genau das, was ich noch gesucht habe.

        1. Hi,
          oh dann muss sich etwas an der Implementierung geändert haben. Hatte den Code so bisher genutzt. Hab es aber jetzt angepasst.
          Danke dir für den Hinweis. 🙂
          Beste Grüße
          Fabian

  3. Hallo Fabian, ich habe eine Frage; Alles funktioniert einwandfrei, allerdings erhalte ich keine Push-Nachricht, wenn das iPhone wieder im Netzwerk ist. Ich sehe, dass sich unter dem anderen Knoten „Trigger and Block“ ein quadratisches Kästchen befindet. Meine zweite Frage ist, dass ich eine andere Fritzbox (gleiche SSID, kein DHCP usw.) in meinem Netzwerk habe, um mein Netzwerk zu stärken. Wenn mein iPhone dorthin geht, erhalte ich auch eine Benachrichtigung vom Netzwerk

    1. Hi Bert,
      hast du den Punkt mit der Mac Adresse beim iPhone beachtet? Um unauthorisierte Verfolgung zu verhindern simuliert das iPhone standardmäßig unterschiedliche Mac Adressen wenn es sich in ein WLAN einloggt. Dies solltest du für dein WLAN deaktivieren. Ich glaube ich habe das im Artikel beschrieben. (Kann aktuell leider nicht nachgucken). Hast du diesen Punkt schon beachtet? 🙂
      Beste Grüße
      Fabian

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.