Signed-off-by: Kai Kreuzer <kai@openhab.org> |
||
---|---|---|
.. | ||
readme.md |
readme.md
id | label | title | type | description | source | since | install |
---|---|---|---|---|---|---|---|
fritzboxtr064 | Fritzbox (using TR064 protocol) | Fritzbox (using TR064 protocol) - Bindings | binding | This is a binding for communication with AVM Fritz!Box using SOAP requests (TR064 protocol). | https://github.com/openhab/openhab1-addons/blob/master/bundles/binding/org.openhab.binding.fritzboxtr064/README.md | 1x | auto |
{% include base.html %}
Fritzbox Binding (using TR064 protocol)
This is a binding for communication with AVM Fritz!Box using SOAP requests (TR064 protocol).
It has been tested on:
- 7270
- 7330SL (v6.54)
- 7360SL (v6.30)
- 7390
- 6360 Cable (v6.04)
- 7490
Features
- detect if MAC is online in network (presence detection)
- switching on/off 2,4Hz Wifi, 5GHz Wifi and Guest Wifi (if any)
- getting external IP address of fbox
- getting fbox model name
- call monitor
- Switch Item: Receives "ON" state when call is incoming
- Call Items: Shows external an internal number for incoming/outgoing calls
- Resolve external call number to phonebook name
- enabling/disabling telephone answering machines (TAMs)
- getting new messages per TAM
- getting missed calls for the last x days
- getting DSL/WAN statistics for monitoring connection quality
Prerequisites
- Enable TR064: In the webui goto "Heimnetz" - "Netzwerkeinstellungen": enable option "Zugriff für Anwendungen zulassen" (enabled by default)
- Only if you want to use the call monitor feature (items starting with callmonitor_...), enable the interface by dialing #96*5* You may disable it again by dialing #96*4*
Binding Configuration
This binding can be configured in the file services/fritzboxtr064.cfg
.
Property | Default | Required | Description |
---|---|---|---|
url | Yes | URL. Either use http://<fbox-ip>:49000 or https://<fbox-ip>:49443 (https preferred!) |
|
refresh | 60000 | No | Refresh interval in milliseconds |
user | dslf-config | No | User Name. Only use this value if you configured a user in fbox webui/config! It is recommended to switch to authentication by username in fritzbox config and add a separate config user for this binding. |
pass | Yes | Password |
Item Configuration
String fboxName "FBox Model [%s]" {fritzboxtr064="modelName"}
String fboxManufacturer "FBox Manufacturer [%s]" {fritzboxtr064="manufacturerName"}
String fboxSerial "FBox Serial [%s]" {fritzboxtr064="serialNumber"}
String fboxVersion "FBox Version [%s]" {fritzboxtr064="softwareVersion"}
# get wan ip if FritzBox establishes the internet connection (e. g. via DSL)
String fboxWanIP "FBox WAN IP [%s]" {fritzboxtr064="wanip"}
# get wan ip if FritzBox uses internet connection of external router
String fboxWanIPExternal "FBox external WAN IP [%s]" {fritzboxtr064="externalWanip"}
Switch fboxWifi24 "2,4GHz Wifi" {fritzboxtr064="wifi24Switch"}
Switch fboxWifi50 "5,0GHz Wifi" {fritzboxtr064="wifi50Switch"}
Switch fboxGuestWifi "Guest Wifi" {fritzboxtr064="wifiGuestSwitch"}
Contact cFboxMacOnline "Presence (WiFi) [%s]" {fritzboxtr064="maconline:11-11-11-11-11-11" }
# WAN statistics
String fboxWanAccessType "FBox WAN access type [%s]" {fritzboxtr064="wanWANAccessType"}
Number fboxWanLayer1UpstreamMaxBitRate "FBox WAN us max bit rate [%s]" {fritzboxtr064="wanLayer1UpstreamMaxBitRate"}
Number fboxWanLayer1DownstreamMaxBitRate "FBox WAN ds max bit rate [%s]" {fritzboxtr064="wanLayer1DownstreamMaxBitRate"}
String fboxWanPhysicalLinkStatus "FBox WAN physical link status [%s]" {fritzboxtr064="wanPhysicalLinkStatus"}
Number fboxWanTotalBytesSent "WAN total bytes sent [%s]" {fritzboxtr064="wanTotalBytesSent"}
Number fboxWanTotalBytesReceived "WAN total bytes received [%s]" {fritzboxtr064="wanTotalBytesReceived"}
# DSL statistics
Contact fboxDslEnable "FBox DSL Enable [%s]" {fritzboxtr064="dslEnable"}
String fboxDslStatus "FBox DSL Status [%s]" {fritzboxtr064="dslStatus"}
Number fboxDslUpstreamCurrRate "DSL Upstream Current [%s mbit/s]" {fritzboxtr064="dslUpstreamCurrRate"}
Number fboxDslDownstreamCurrRate "DSL Downstream Current [%s mbit/s]" {fritzboxtr064="dslDownstreamCurrRate"}
Number fboxDslUpstreamMaxRate "DSL Upstream Max [%s mbit/s]" {fritzboxtr064="dslUpstreamMaxRate"}
Number fboxDslDownstreamMaxRate "DSL Downstream Max [%s mbit/s]" {fritzboxtr064="dslDownstreamMaxRate"}
Number fboxDslUpstreamNoiseMargin "DSL Upstream Noise Margin [%s dB*10]" {fritzboxtr064="dslUpstreamNoiseMargin"}
Number fboxDslDownstreamNoiseMargin "DSL Downstream Noise Margin [%s dB*10]" {fritzboxtr064="dslDownstreamNoiseMargin"}
Number fboxDslUpstreamAttenuation "DSL Upstream Attenuation [%s dB*10]" {fritzboxtr064="dslUpstreamAttenuation"}
Number fboxDslDownstreamAttenuation "DSL Downstream Attenuation [%s dB*10]" {fritzboxtr064="dslDownstreamAttenuation"}
Number fboxDslFECErrors "DSL FEC Errors [%s]" {fritzboxtr064="dslFECErrors"}
Number fboxDslHECErrors "DSL HEC Errors [%s]" {fritzboxtr064="dslHECErrors"}
Number fboxDslCRCErrors "DSL CRC Errors [%s]" {fritzboxtr064="dslCRCErrors"}
# only when using call monitor
Switch fboxRinging "Phone ringing [%s]" {fritzboxtr064="callmonitor_ringing" }
Switch fboxRinging_Out "Phone ringing [%s]" {fritzboxtr064="callmonitor_outgoing" }
Call fboxIncomingCall "Incoming call: [%1$s to %2$s]" {fritzboxtr064="callmonitor_ringing" }
Call fboxOutgoingCall "Outgoing call: [%1$s to %2$s]" {fritzboxtr064="callmonitor_outgoing" }
# resolve numbers to names according phonebook
Call fboxIncomingCallResolved "Incoming call: [%1$s to %2$s]" {fritzboxtr064="callmonitor_ringing:resolveName" }
# Telephone answering machine (TAM) items
# Number after tamSwitch is ID of configured TAM, start with 0
Switch fboxTAM0Switch "Answering machine ID 0" {fritzboxtr064="tamSwitch:0"}
Number fboxTAM0NewMsg "New Messages TAM 0 [%s]" {fritzboxtr064="tamNewMessages:0"}
# Missed calls: specify the number of last days which should be searched for missed calls
Number fboxMissedCalls "Missed Calls [%s]" {fritzboxtr064="missedCallsInDays:5"}
Known issues
See issues here.
Examples and Hints
Sitemap
For the "Call" items use "Text" in your sitemap
Map for Presence Detection
Use a map for presence detection item:
Create file transform/presence.map
and add:
1=present
0=not present
Now, as item configuration use:
Contact cFboxMacOnline "Presence (Wifi) [MAP(presence.map):%d]" <present> {fritzboxtr064="maconline:11-22-33-44-55-66 }
Rules
If you need the caller name (resolved from the fritzbox phonebook) in a rule, extract it like this:
rule "Phone is ringing"
when
// fboxRinging is a switch item which switches to ON if call is detected
Item fboxRinging changed from OFF to ON
then
logInfo("Anrufermeldung", "Generating caller name message...")
// fboxIncoming call receives numbers/name of incoming call
val CallType incCall = fboxIncomingCall.state as CallType
var callerName = incCall.destNum //destNum is external number OR resolved Name if no phonebook entry exists
// do something with callerName
end