Autor
Logo

Status

Version1.1.2
Downloadhttps://github.com/svethi/Loxberry-Plugin-Fritz.Lox/archive/fritzlox-1.1.2.zip
Min. LB Version

Zweck

Das Fritz.Lox Plugin bietet die Möglichkeit einen Callmonitor sowie controller services der AVM-Fritzbox im Loxone MiniServer zur Verfügung zu stellen.

LanguagesEN, DE, ES
Diskussionhttps://www.loxforum.com/forum/projektforen/loxberry/plugins/68376-loxberry-fritz-lox-plugin-verf%C3%BCgbar



Version 0.1.0

  • Alpha-Status: Es wird der erste konfigurierte MiniServer verwendet

Version 0.2.5

  • Stableversion
  • Multi-MiniServer Support hinzugefügt

Version 0.3.4

  • Option zur Rufnummerübesetzung über das Telefonbuch der Fritzbox hinzugefügt

Version 0.4.0

  • Fehlerbeseitigung: Bei einem anonymen Anruf wurde die Telefonnummer des vorherigen Anrufers nicht zurück gesetzt
  • Fehlerbeseitigung: Die FritzApp stellt bei mir eine Raute ans Ende der Nummer was die Befehlserkennung abbrechen lässt. Rauten werden nun entfernt
  • Fehlerbeseitigung: Bei abgehenden Anrufen wurde beim Verbindungsaufbau der angerufene zusätzlich als Anrufer übergeben
  • Helperservice WLAN aktivieren/deaktivieren hinzugefügt

Version 0.5.0

  • Erweiterung zum Schalten von DECT Aktoren sowie Abfrage der Informationen

Version 0.5.1

  • Bugfix - blanker Bildschirm bei Öffnen der Pluginseite
  • erweitertes Errorhandling in der SOAP-Kommunikation

Version 0.5.2

  • libjson-perl in die Installation eingefügt

Version 0.5.3

  • Verbesserung der Einrichtungshilfe in Bezug auf die User und Passwort Benutzung
  • vorerst deutsches Plugin-Interface in die englische Version eingebunden

Version 0.5.4

  • bei anonymen Anrufen wird nun 'anonym' als Anrufer übergeben, damit der MiniServer den vorherigen Anrufer überschreibt

Version 0.5.5

  • Abruf der DSL-Verbindungsinformation hinzugefügt

Version 0.5.6

  • Abruf der öffentlichen IP-Adresse (Danke an AlexP für die Erweiterung)

Version 0.5.7

  • Das Modul php-soap zur Installation hinzugefügt

Version 0.5.8

  • Anpassungen an jQuery des LoxBerry V1

Version 0.5.9

  • Abfragen des WLAN Status hinzugefügt (hinzugefügt von TorstenF vom Loxforum)
  • Das ist die letzte Version die den Loxberry < 1 unterstützen wird

Version 1.0.0

  • Erste Version die nur den LoxBerry 1.2.3 und höher unterstützt
  • Spanisch hinzugefügt (Danke @madito für die Übersetzung; Muchas gracias @madito por la traducción al español)
  • Logverhalten an LB 1 angepasst und erweitert
  • Funktionen zur ermitteln der notwendigen IP Adressen auf LoxBerry Funktionen umgestellt (example.com/google.com Problem)
  • Auto Update Funktionalität hinzugefügt

Version 1.0.1

  • behebt ein Problem, bei dem die Pluginseite nicht mehr aufgerufen werden kann
  • Behebt ein Problem, bei dem der Schalter für die Benutzung des Telefonbuches nicht richtig dargestellt wird

Version 1.1.2

  • behebt ein Problem mit Sonderzeichen im Passwort
  • MQTT publishing Support in Verbindung mit dem MQTT-Gateway hinzugefügt
  • Steuerung der DECT Ventilantriebe hinzugefügt

Inhalt


Konfigurationsoptionen


Werden Daten zu einem MiniServer geändert, wird der "Angaben speichern"-Button aktiviert. Sollen die Änderungen verworfen werden, muss nur an anderer MiniServer ausgewählt oder die Seite verlassen werden. Das Speichern der Angaben erfolgt stets nur für den ausgewählten MiniServer.

Achtung: Es wurde festgestellt, dass der MiniServer bestimmte Port blockiert. Diese können nicht als Empfangsport genutzt werden. Leider wird man von der Konfig hier nicht darüber informiert. So geht z.B. in der Version 8.1.11.11 der Port 7777 nicht als UDP-Empfangsport. Sollten also an einem gewählten Port keine Informationen ankommen (UDP-Monitor in der Konfig), einfach andere Ports ausprobieren.


Einrichtungshilfe

DSL Informationen abrufen

Der hier enthaltene Link wird bei einem HTTP-Eingang in der Loxone-Config als URL angegeben.
Als Rückgabe erhält man 2 Arrays mit den gewünschten Information zu Verbindungsgeschwindigkeit der DSL-Leitung sowie der aktuellen Übertragungsdaten.
Die Rückgabe könnte in etwa so aussehen:

Array
(
    [NewWANAccessType] => DSL
    [NewLayer1UpstreamMaxBitRate] => 10047000
    [NewLayer1DownstreamMaxBitRate] => 51392000
    [NewPhysicalLinkStatus] => Up
)
Array
(
    [NewByteSendRate] => 1855
    [NewByteReceiveRate] => 1556
    [NewPacketSendRate] => 0
    [NewPacketReceiveRate] => 0
    [NewTotalBytesSent] => 797936112
    [NewTotalBytesReceived] => 2067940879
    [NewAutoDisconnectTime] => 0
    [NewIdleDisconnectTime] => 0
    [NewDNSServer1] => 217.237.149.142
    [NewDNSServer2] => 217.237.150.205
    [NewVoipDNSServer1] => 217.237.149.142
    [NewVoipDNSServer2] => 217.237.150.205
    [NewUpnpControlEnabled] => 0
    [NewRoutedBridgedModeBoth] => 1
)

Über die Befehlserkennung können dann z.B. folgende Werte ausgelesen werden.

Bei diesen Angaben handelt es sich im Byteangaben. Diese können bei Belieben durch 1024 dividiert werden um zu kB →  MB zu kommen.
Zu beachten ist, dass die Gesamtwerte zu groß für die interne Verarbeitung im Miniserver sein können. Bei 4.294.967.296 ist hier Schluss.

Wlan aktivieren/deaktivieren

Hier findet man Einstellungsbeispiele für virtuelle Ausgänge um vom MiniServer aus das WLAN zu aktivieren oder deaktivieren.

Um diese Funktion nutzen zu können ist ein Login für die Fritzbox notwendig welche die Berechtigung hat die WLAN Einstellungen zu ändern. Zum Einen kann das Adminpasswort verwendet werden, es ist hier nicht nötig einen Benutzernamen anzugeben. Zum Anderen kann ein spezieller User angelegt werden. Dies kann unter System->FRITZ!Box-Benutzer erledigt werden. Weiterhin muss der Zugriff für Anwendungen freigegeben sein. Dies kann man unter Heimnetz→Heimnetzübersicht und dann im rechten Fenster den Register Netzwerkeinstellungen. Hier müssen die entsprechenden Zugriffe freigegeben werden.

Ist diese geschehen, legt man in der Loxone-Config einen virtuellen Ausgang an. Die Adresse die hier anzugeben ist, ist http://<IP-des-Loxberry> (kann aus der Einrichtungshilfe entnommen werden). Damit nicht jeder über den Loxberry das WLAN oder sonstiges schalten kann, muss auch der Loxberry Benutzer und das dazugehörige Passwort eingegeben werden. In diesem virtuellen Ausgang wird dann ein virtueller Ausgang Befehl angelegt. Die Befehle die hier einzutragen sind, können aus der Einrichtungshilfe entnommen werden. Die Befehle aus der Einrichtungshilfe enden mit WLAN=. Hier fehlt am Ende noch eine Zahl von 1-3. Diese Zahl stellt das WLAN dar, welches geändert werden soll. Die Zahlen stehen für:

Das Ende eine Befehls sieht dann z.B. so aus ....&WLAN=1

DECT Aktoren schalten

Hier werden Befehle aufgelistet, die in der Config verwendet werden können um vom MiniServer aus Aktoren zu schalten oder Informationen dazu abzufragen.

Das Ganze funktioniert analog zum aktivieren/deaktivieren des WLAN.
Im Anschluss sind dann die Links zum An-und Abschalten des Aktoren. Die Abfrage der Informationen funktioniert etwas anders. Hier sollen ja auch die Rückgabewerte verarbeitet werden, als benutzt man dafür einen virtuellen HTTP-Eingang und verwendet die hierfür angegebene URL. Auch hier wird der Loxberry-Benutzer mit seinem Passwort benötigt. Als Rückgabe kommt dann eine Ausgabe wie Folgende:

Array
  (
   [NewDeviceId] => 16
   [NewFunctionBitMask] => 896
   [NewFirmwareVersion] => 03.59
   [NewManufacturer] => AVM
   [NewProductName] => FRITZ!DECT 200
   [NewDeviceName] => FRITZ!DECT 200 #1
   [NewPresent] => CONNECTED
   [NewMultimeterIsEnabled] => ENABLED
   [NewMultimeterIsValid] => VALID
   [NewMultimeterPower] => 0
   [NewMultimeterEnergy] => 17
   [NewTemperatureIsEnabled] => ENABLED
   [NewTemperatureIsValid] => VALID
   [NewTemperatureCelsius] => 220
   [NewTemperatureOffset] => 0
   [NewSwitchIsEnabled] => ENABLED
   [NewSwitchIsValid] => VALID
   [NewSwitchState] => OFF
   [NewSwitchMode] => MANUAL
   [NewSwitchLock] => 0
   [NewHkrIsEnabled] => DISABLED
   [NewHkrIsValid] => INVALID
   [NewHkrIsTemperature] => 0
   [NewHkrSetVentilStatus] => CLOSED
   [NewHkrSetTemperature] => 0
   [NewHkrReduceVentilStatus] => CLOSED
   [NewHkrReduceTemperature] => 0
   [NewHkrComfortVentilStatus] => CLOSED
   [NewHkrComfortTemperature] => 0
  )

Über die Befehlserkennung können dann z.B. folgende Werte ausgelesen werden.

Die Werte für Temperatur, Leistung und Verbrauch sind durch 10 zu teilen.

Sollten keine Aktoren vorhanden sein aber Informationen von anderen DECT Geräten abgefragt werden, muss sich die entsprechende URL selbst zusammengebaut werden. Ein Beispiel hierfür wäre: 

http://loxberry:DEIN-loxberry-PASSWORT@loxberry/admin/plugins/fritzlox/FBHelper.php?cmd=DECTgetInfo&DECTAIN=DEINE+AIN

Das Leerzeichen in der AIN ist wie im Beispiel durch ein + zu ersetzen.

DECT Modul auslesen

Mit dem Befehl

DECT Ventilantriebe

Mit der Version 1.1.2 wurde die Steuerung der Ventilantriebe hinzugefügt. Hiermit ist es möglich die Solltemperatur des Antriebes zu setzen. Wie auch bei den DECT Aktoren, werden auch hier die Links für die Config im Plugin-GUI bereitgestellt.

Achtung! Das Plugin ist NICHT schneller als die Fritzbox selbst. Es kann auch hier bis zu 15min dauern bis der Wert am Antrieb übernommen wird.

MQTT publishing

In Version 1.1.2 wurde MQTT publishing für den callmonitor hinzugefügt. Für MQTT muss das MQTT-Gateway von Christian Fenzl installiert sein. Ist es installiert muss nichts eingestellt werden. Es sucht sich die Einstellungen selbst und verwendet es. Die Topics sind folgend aufgebaut fritzlox/callmonitor/<Leitung/ConnID>/... als Werte werden event (ring, call, connect, disconnect), caller, recipient, duration übergeben.

Download

Funktion des Plugin

 Um den Callmonitor nutzen zu können, ist es notwendig den Callmonitor der Fritzbox zu aktivieren. Hierfür muss man an einem angeschlossenen analogen Telefon #96*5* wählen und danach wieder auflegen. Abgeschaltet wird er wieder über #96*4*.

Ist er aktiviert und der Loxberry neu gestartet, werden die Informationen zu ankommenden und abgehenden Anrufen an die konfigurierten MiniServer weitergereicht. Dies geschieht auf 2 unterschiedlichen Wegen. Ein Teil der Informationen, reine Zahlendaten, werden per UDP an den MiniServer geschickt. Die Telefonnummern können z.B. führenden Nullen enthalten und sind daher keine reinen Zahlenwerte. Diese lassen sich nicht über den UDP-Befehlserkenner einlesen. Daher werden diese direkt an den vordefinierte virtuelle Texteingänge des MiniServer "gepusht". Sind alle Daten an den MiniServer übergeben, wird noch ein kurzer Impuls geschickt, damit eine Auswerten innerhalb der Config erfolgen kann wenn alle Daten auch vorhanden sind.

Ebenso ist es möglich das WLAN über Web-Requests an-und abzuschalten.


Einrichtung in der Loxone Configsoftware

Das Plugin wurde für die Verwendung mit dem virtuellen UDP-Eingängen und virtuellen Texteingängen entwickelt. Detailierte Informationen hierzu gibt es in der Loxone Dokumentation.

Im virtuellen UDP Eingang wird dann bei Sendeadresse die IP-Adresse des Loxberry angegeben und beim UDP-Empfangsport der Port, der im Plugin für diesen MiniServer angegeben wurde. In diesem virtuellen UDP-Eingang sind dann 3 Werte relevant. Diese werden über virtuelle UDP-Eingang Befehle eingelesen. Diese sind:

Zu beachten ist, dass es ja durchaus sein kann, das 2 gleichzeitige Gespräche geführt werden und daher bei allen Informationen die dazugehörige Leitung ausgewertet werden muss, damit die weiteren Daten auch für die entsprechende Verbindung angezeigt werden.

Wie bereits oben beschrieben ist es in der Loxone Config nicht so einfach mit Texten umzugehen. Aus diesem Grund werden die Telefonnummern nunmehr direkt in festdefinierte virtuelle Texteingänge geschickt. Diese sind nach dem Schema:

zu benennen. Das X steht hierbei für eine Leitungsnummer (0-4). Die anzulegenden virtuellen Texteingänge für die 1.Leitung wären also CMCaller1 und CMRec1. Das Ganze dann für so viele Leitungen wie überwacht werden sollen. Wenn ich es richtig in Erinnerung habe kann die Fritzbox gleichzeitig 2 Festleitungen und 3 Sip-Leitungen gleichzeitig verwalten. Damit müssten in Summe 10 virtuelle Texteingänge angelegt werden. Da ich nicht über so viele Leitungen verfüge, habe ich den Callmonitor mal für 4 Leitungen bei mir angelegt. Als letztes kommt noch ein virtueller Eingang:

als Digitaleingang hinzu. Dieser wird verwendet um Timingprobleme zu kompensieren. Die Reihenfolge bei Senden der Informationen sieht so aus.

  1. Senden der Textdaten (Caller und Recipient)
  2. Senden der UDPDaten (ConnId, Duration, Status)
  3. Senden des Impulses CMImp

Somit ist stets klar, dass bei einem CMImp alle Werte aktualisiert sind und verarbeitet werden können. Nach dem Ende der Verbindung werden Caller und Recipient nicht zurückgesetzt und bleiben bis zum nächsten Gespräch und/oder MiniServer-Neustart bestehen.

Im Diskussionsthema im Loxforum habe ich eine Beispielkonfiguration hinterlegt, die einen Beispiel-Callmonitor mit Visualisierung zeigt. In diesem müssen natürlich die IP-Adresse und der UDP-Empfangsport entsprechend angepasst werden.

Achtung: Seit Version 7 der LoxoneConfig. Funktioniert der Tracker nicht mehr. Dieses speichert keine Texte mehr und listet daher nur noch 1 auf.
29.01.2017 - Im Forum ist nun eine neue Beispielkonfig vorhanden, die einen Workarroud bietet. Nicht schick, aber funktioniert. Danke nochmals an Wolfgang vom Loxone-Support für diesen WA

Fehler melden

Fehlerberichte bitte direkt im Loxforum melden.