Fritzbox CheckPresence

Der Adapter prüft die Anwesenheit von Familienmitgliedern über die Fritzbox.

Aktueller Release
1.4.2
Entwickler
Achim Fürhoff
Lizenz
MIT

fb-checkpresence-Adapter für ioBroker

Der Adapter prüft, ob Familienmitglieder über die Fritzbox verbunden sind. Sie müssen den Namen des Familienmitglieds und die MAC-Adresse (oder IP-Adresse) des verwendeten Geräts angeben. Der Kommentar ist optional; Sie können das Familienmitglied aktivieren oder deaktivieren. Der Datenpunkt basiert auf dem Namen des Familienmitglieds.

Verwendeter Open-Source-Code

npm dateformat v4.5.3

© 2007–2009 Steven Levithan <stevenlevithan.com> npm: https://www.npmjs.com/package/dateformat github: https://github.com/felixge/node-dateformat Lizenz: MIT

Adapter-Vorbedingungen

Für die korrekte Funktion müssen Sie einen Verlaufsadapter installieren. Sie können einen der folgenden Adapter auswählen:

  • Geschichte
  • SQL
  • InfluxDB

Verwendetes Gerät

Für diesen Adapter wird die AVM Fritzbox verwendet. Informationen zur Fritzbox finden Sie hier : https://avm.de/produkte/fritzbox/ . Die Fritzbox-Dienste werden über das TR-064-Protokoll genutzt.

Fritzbox-Bedingungen

Die verwendete TR-064-Schnittstelle der Fritzbox wird hier beschrieben: https://avm.de/service/schnittstellen/ . Folgende TR-064-Dienste und -Aktionen werden verwendet:

  • Hosts:1 - X_AVM-DE_GetHostListPath (unterstützt seit 2017-01-09)
  • Hosts:1 - X_AVM-DE_GetMeshListPath
  • Hosts:1 - GetSpecificHostEntry
  • Hosts:1 - X_AVM-DE_GetSpecificHostEntryByIP (unterstützt seit 18.05.2016)
  • Geräteinformationen:1 - GetSecurityPort
  • Geräteinformationen:1 - GetInfo
  • WANPPPConnection:1 - GetInfo
  • WANIPConnection:1 - GetInfo
  • WLANConfiguration3 - SetEnable
  • WLANConfiguration3 - GetInfo
  • WLANConfiguration3 - GetSecurityKeys
  • X_AVM-DE_HostFilter - DisallowWANAccessByIP
  • X_AVM-DE_HostFilter - GetWANAccessByIP
  • Gerätekonfiguration:1 - Neustart
  • LANConfigSecurity1 - X_AVM-DE_GetCurrentUser

Die TR-064-Schnittstelle ist standardmäßig deaktiviert. Dies lässt sich jedoch ganz einfach über die FritzBox-Weboberfläche ändern. Melden Sie sich dazu an Ihrer FritzBox an und stellen Sie sicher, dass die Expertenansicht aktiviert ist. Unter „Heimnetzwerk » Heimnetzwerkübersicht » Netzwerkeinstellungen“ finden Sie den Punkt „Zugriff für Anwendungen erlauben“. Aktivieren Sie dort das Kontrollkästchen und starten Sie die FritzBox anschließend neu.

Hinweis: Vergessen Sie nicht, die Fritzbox nach dem Ändern der Optionen neu zu starten!

Konfigurationsdialog

Allgemein

Die Konfigurationswerte werden überprüft und nur korrekte Werte können gespeichert werden. Andernfalls ist die Schaltfläche „Speichern“ deaktiviert.

Fritzbox-IP-Adresse, Benutzername und Passwort

Die Konfiguration von IP-Adresse, Benutzername und Passwort ist erforderlich, um die Gerätedaten von der Fritzbox abzurufen. Daher muss ein Benutzer in der Fritzbox angelegt werden. Dies ist ab der Firmware-Version 7.25 der Fritzbox notwendig. Weitere Informationen finden Sie hier: https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/Empfehlungen%20zur%20Benutzerfu%CC%88hrung%20bei%20der%20Anmeldung%20an%20einer%20FRITZ%21Box_v1.1.pdf Das Passwort ist verschlüsselt und wurde nicht im Klartext gespeichert. Benutzername und Passwort dürfen maximal 32 Zeichen lang sein. Weitere Informationen finden Sie unter: https://service.avm.de/help/de/FRITZ-Box-Fon-WLAN-7490/014/hilfe_zeichen_fuer_kennwoerter#:~:text=Namen%20f%C3%BCr%20Benutzer,Kennwortfeld%20darf%20nicht%20leer%20sein . Hinweis: In manchen Fällen kann es vorkommen, dass die Fritz!Box den Benutzer gesperrt hat, weil das Passwort nicht korrekt eingegeben wurde. Oft findet sich im Protokoll eine Timeout-Meldung. Bitte überprüfen Sie anschließend, ob Sie den korrekten Benutzernamen und das korrekte Passwort eingegeben haben. Starten Sie die Fritz!Box dann neu.

SSL-Option

In manchen Fällen konnte der Adapter keine Verbindung zur Fritzbox herstellen. Es kann helfen, diese Option zu deaktivieren. In diesem Fall versucht der Adapter, eine Verbindung ohne HTTPS herzustellen.

Intervall

Sie können separate Intervalle für Familienmitglieder und Fritzbox-Geräte festlegen. Das Intervall für Fritzbox-Geräte lässt sich von 10 Sekunden bis 3600 Sekunden konfigurieren. Normalerweise ist ein Wert zwischen 60 und 300 Sekunden optimal, um die Fritzbox-Daten auszulesen. Für Familienmitglieder können Intervalle von 10 Sekunden bis 600 Sekunden eingestellt werden. Jeder neue Zyklus beginnt, sobald der vorherige abgeschlossen ist.

Filterzeit

Ist die Filterzeit größer als 0 Sekunden, wird der Status eines Familienmitglieds zweimal (nach Ablauf der Filterzeit) überprüft, falls er sich auf „falsch“ ändert. Ist der Status „wahr“, wird er sofort gesetzt.

Verlaufsadapter

Über den History-Adapter werden einige Werte berechnet. Sie können auswählen, ob für diese Berechnungen der History-, der SQL- oder der InfluxDB-Adapter verwendet werden soll. Der History-Adapter muss zuvor installiert werden und kann anschließend im Konfigurationsdialog ausgewählt werden. Wenn die History-Konfiguration deaktiviert ist, können einige Werte nicht berechnet werden.

Datumsformat

Die Optionen für die Datumsformatmaske werden auf dieser Webseite beschrieben: https://www.npmjs.com/package/dateformat . Die Formatmaske wird zur Formatierung von HTML- und JSON-Tabellenobjekten verwendet.

Erstellung von FB-Geräten

Wenn diese Option aktiviert ist, werden Objekte für jedes Gerät in der Fritzbox-Geräteliste erstellt. Wenn diese Option deaktiviert ist, werden auch die Mesh-Informationen deaktiviert.

Resynchronisierung von FB-Geräteobjekten (einmalig)

Wenn diese Option aktiviert ist, werden die FB-Geräteobjekte einmalig mit der Geräteliste von Fritzbox neu synchronisiert.

Automatische Resynchronisierung von FB-Geräteobjekten

Wenn diese Option aktiviert ist, werden die FB-Geräteobjekte alle x Tage mit der Geräteliste von Fritzbox neu synchronisiert.

Erstellung von Netzinformationen

Diese Option kann aktiviert werden, wenn die Erstellung von FB-Geräten erlaubt ist. Wenn diese Option aktiviert ist, werden die Mesh-Objekte für jedes Gerät in der Fritzbox-Geräteliste erstellt.

Gästeinformationen

Wenn diese Option aktiviert ist, werden die Zustände für Gäste erstellt.

QR-Code-Generierung

Wenn diese Option aktiviert ist, wird der QR-Code des Gast-WLANs generiert. Sie können diesen QR-Code in Ihrem VIS mit dem Widget „Basic Boolesches SVG“ anzeigen. Bitte verwenden Sie die folgenden Einstellungen:

Einstellungen für Familienmitglieder

Für ein konfiguriertes Familienmitglied geben Sie den Mitgliedsnamen, den Hostnamen, die MAC- und IP-Adresse sowie einen Kommentar ein. Anschließend können Sie das Mitglied aktivieren oder deaktivieren. Eine Gruppe ist optional. Wenn Sie die Gruppe leer lassen und das Kompatibilitätsflag auf „true“ setzen, verhält sich der Adapter wie eine ältere Version. Sie können den Anwesenheitsstatus des Familienmitglieds oder den direkt dem Familienmitgliedsnamen zugeordneten Status verwenden. In einer zukünftigen Version müssen Sie den Anwesenheitsstatus verwenden. Dieses Verhalten lässt sich über das Kompatibilitäts-Kontrollkästchen aktivieren/deaktivieren: -> Kompatibilität = true: Verhalten wie in der älteren Version mit leerer Gruppe. -> Kompatibilität = true und Gruppe nicht leer: Neues Verhalten. Alle Status im Ordner „Familienmitglieder“. -> Kompatibilität = false: Neues Verhalten. Alle Status im Ordner „Familienmitglieder“.

Für jedes Mitglied erstellt der Adapter einen Anwesenheitsstatus und prüft, ob das Mitglied vorhanden oder abwesend ist. Der Status ändert sich, wenn sich der Anwesenheitsstatus ändert. Sie können auch die Filterung für ein Mitglied aktivieren. Ist der Status „wahr“, ändert sich der Status sofort auf „wahr“. Ist er „falsch“, wird der Wert nach der Filterzeit erneut geprüft. Ist der Status in beiden Fällen „falsch“, ändert er sich auf „falsch“. Andernfalls bleibt er unverändert.

Um die Geschwindigkeitsinformationen in den Objekten zu erhalten, müssen Sie die Option fb-devices auswählen.

Anwesenheit manuell auslösen

In JavaScript können Sie die Anwesenheitserkennung manuell auslösen. Wenn Sie eine Nachricht an den Adapter senden, wird jede neue Nachricht für 10 Sekunden blockiert. Sie erhalten ein negatives Ergebnis (false), wenn die Nachricht blockiert wird, und ein „true“, wenn die Nachricht vom Adapter empfangen wird.sendTo('fb-checkpresence.0', 'triggerPresence', {} , function (result) { log(result, 'info'); });

Whitelist-Einstellungen

In die Positivliste können Sie alle bekannten Geräte eintragen. Unbekannte Geräte werden in der Negativliste aufgeführt. Wenn Sie das Kontrollkästchen in der Tabellenüberschrift aktivieren, werden alle Geräte ausgewählt.

In JavaScript können Sie ein Element zur Whitelist hinzufügen. Die gesendeten Daten (Hostname, MAC-Adresse) werden mit der Geräteliste der Fritzbox verglichen. Ist der Eintrag vorhanden, wird geprüft, ob er bereits in der Whitelist gespeichert ist. Falls nicht, wird der Eintrag in der Whitelist-Konfigurationstabelle gespeichert.

sendTo('fb-checkpresence.0', 'addDeviceToWhitelist', { hostname: 'devicename', mac: '00:00:00:00:00:00' } , function (result) { log(result, 'info'); });

Merkmale

AVM-Unterstützungsprüfung

Die Funktion prüft die Verfügbarkeit der verwendeten Fritzbox-Funktionen. Die Verfügbarkeit wird als Information protokolliert. Bei Problemen prüfen Sie, ob alle Funktionen auf „true“ gesetzt sind. Außerdem werden die Zugriffsrechte des Benutzers geprüft und die Funktion auf „false“ gesetzt, falls die Zugriffsrechte nicht korrekt sind.

Gast-WLAN ein-/ausschalten

Im Ordner „Gast“ können Sie den Status „wlan“ auf „true“ oder „false“ setzen, wodurch das WLAN des Gastes ein- oder ausgeschaltet wird.

QR-Code des Gast-WLANs

Der QR-Code des Gast-WLANs wird im Ordner „gast“ unter dem Status „wlanQR“ gespeichert. Der QR-Code kann im SVG-Widget „basic - Bool“ angezeigt werden.

Internetzugriff der Fritzbox-Geräte ein-/ausschalten

Im Ordner FB-Geräte können Sie den deaktivierten Status auf wahr oder falsch setzen, und der Internetzugriff dieses Geräts wird in der Fritzbox gesperrt.

Gäste empfangen, Blacklist

Diese Funktion prüft, ob ein Benutzer als Gast angemeldet ist. Außerdem wird geprüft, ob sich ein Gerät nicht auf der Positivliste befindet. Diese Geräte werden der Negativliste hinzugefügt.

Werde aktiv

Wenn ein Verlaufsadapter ausgewählt ist, werden für jedes Familienmitglied die Anwesenheit, die Ankunfts- und Abreisedaten sowie verschiedene andere Informationen berechnet und im Mitgliedsobjekt gespeichert.

Hostnummer, aktive Geräte

Die Anzahl der Geräte und wie viele davon aktiv sind, werden von der Fritzbox abgerufen.

Objekte

Objektpräsenz Alle

Wenn alle Familienmitglieder anwesend sind, dann ist die Aussage wahr.

Objektpräsenz

Wenn ein Familienmitglied anwesend ist, dann ist die Aussage wahr.

Objektgeräte

Dies sind alle in der Fritzbox aufgeführten Geräte.

Objekt aktiveGeräte

Dies ist die Anzahl aller aktiven Geräte in der Fritzbox.

Objekt HTML, JSON

Bei diesen Objekten handelt es sich um Tabellen (JSON und HTML), die die Ankunfts- und Abgangsinformationen aller Familienmitglieder enthalten.

Objektinformationen

Hier finden Sie Informationen zum letzten Update und zum Verbindungsstatus des Adapters.

Objekt Gast

Hier finden Sie Informationen über die Anzahl der aktiven Gäste und Tischobjekte mit den dazugehörigen Geräteinformationen.

Objekt-Blacklist

Hier sind Informationen über die Anzahl unbekannter Geräte und Tabellenobjekte aufgelistet, die Informationen über unbekannte Geräte enthalten.

Objektmitglied.präsent

Hier finden Sie Informationen über die Anwesenheit eines Mitglieds am aktuellen Tag und darüber, wie lange der Status des Mitglieds seit der letzten Änderung bereits „wahr“ ist.

Objektmitglied.abwesend

Hier finden Sie Informationen über die Abwesenheit eines Mitglieds am aktuellen Tag und darüber, wie lange der Status des Mitglieds seit der letzten Änderung „falsch“ ist.

Objekt member.comming, member.going

Hier finden Sie Informationen zur Ankunft und Abreise des Familienmitglieds.

Objekt member.history, member.historyHtml

Hier finden Sie Informationen zur Geschichte des heutigen Tages.

Changelog

WORK IN PROGRESS

  • (copilot) Adapter requires node.js >= 22 now
  • (afuerhoff) dependencies updated
  • (afuerhoff) dependabot.yml fixed #358
  • (afuerhoff) new fb-devices sync option integrated
  • (afuerhoff) readme updated
  • (softwarecrash) PR398 fixes a crash in newfilter mode

1.4.2 (2025-10-30)

  • (afuerhoff) dependencies updated
  • (afuerhoff) package.json issues fixed #350
  • (afuerhoff) npm security changes
  • (afuerhoff) filter time extended to 300s
  • (afuerhoff) guest wlan bug fixed #353
  • (afuerhoff) deprecated functions changed

1.4.1 (2025-09-19)

  • (afuerhoff) dependencies updated
  • (afuerhoff) repository checker & code scanning issues fixed

1.4.0 (2025-05-28)

  • (afuerhoff) dependencies updated
  • (afuerhoff) error handling optimized
  • (afuerhoff) enhancement #336
  • (afuerhoff) issue #337
  • (afuerhoff) issue #335

1.3.1 (2025-03-02)

  • (afuerhoff) dependencies updated
  • (afuerhoff) bug fixed #333
  • (afuerhoff) bug fixed #305

1.3.0 (2025-02-14)

  • (afuerhoff) dependencies updated
  • (afuerhoff) eslint setup changed
  • (afuerhoff) ipv6 ip-address and prefix added

License

MIT License

Copyright (c) 2019-2026 Achim Fürhoff achim.fuerhoff@outlook.de

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.