Freebox Binding

This binding is intended for users of the French DSL operator Free, using Freebox Revolution (v6).

Currently, it’s able to report:

  • System informations (Version number, uptime, different cpu temperature, fan speed)
  • Connection Status informations (line status, public ip address, upload/download rate, up/downloaded volumes)
  • Last phone call (number, duration, status)
  • Last accepted phone call (from v1.7)
  • Last missed phone call (from v1.7)
  • Last outgoing phone call (from v1.7)
  • Caller name when contact entry is defined and number is not masked (from v1.7)
  • network devices reachable status (from v1.7)

And act on:

  • wifi network status
  • FTP server status (from v1.7)
  • UPnP AV status (from v1.7)
  • AirMedia status (from v1.7)
  • Windows file sharing status (from v1.7)
  • Windows printer sharing status (from v1.7)
  • Reboot

There is also a binding specifically for openHAB 2 here.

Binding Configuration

Property Default Required Description
server mafreebox.freebox.fr   Freebox server IP address
apptoken   Empty at first launch; fill it with the provided token Application token generated by the Freebox server
device     Device name, for example openhabsrv
refresh 60000 No refresh interval in milliseconds

You’ll have to authorise openHAB to connect to your Freebox. Here is the process described :

Enter the openHAB console or view the end of your openhab.log file.
Depending on how you started openHAB and its version, this might be achieved by entering:

tail /var/log/openhab2/openhab.log
ssh [email protected] -p 8101

(password is habopen by default)

You should see something in your log that looks like:

####################################################################
# Please accept activation request directly on your freebox        #
# Once done, record current Apptoken in your 'openhab.cfg'         #
# bEK7a7O8GkxxxxxxxxxxXBsKu/xxxttttwj5bXSssd5gUvSXs4vrpuhZwelEo804 #
####################################################################

Now run near your Freebox and approve the pairing request for openHAB Freebox Binding that is displayed on the Freebox screen.

Now update your services/freebox.cfg file to set:

apptoken=bEK7a7O8GkxxxxxxxxxxXBsKu/xxxttttwj5bXSssd5gUvSXs4vrpuhZwelEo804

(specifically, the token printed to the log)

Restart openHAB. The authentification of the freebox shall go on automatically.

Optionally, you can log in your freebox admin console to allocate needed rights to openHAB.

Item Configuration

Here are the list of items you can put in your .items file in order to use binding functionalities :

Group gFreebox                      
Group gfbSys                "System"                     (gFreebox)              
Group gfbCS                 "Connection Status"          (gFreebox)
Group gfbCalls              "Calls"                      (gFreebox)
Group gfbWifi               "Wifi"                       (gFreebox)
Group gfbLCD                "LCD"                        (gFreebox)
Group gfbXdsl               "xDsl Status"                (gFreebox)

// Wifi Entries
Switch freebox_wifi         "Wifi"                       (gfbWifi)  {freebox="wifi_status", autoupdate="false"}

// (from v1.7) FTP server, UPnP AV, AirMedia and Windows sharings status
Switch FreeboxFTP           "FTP"                        (gFreebox) {freebox="ftp_status", autoupdate="false"}
Switch FreeboxUPnPAV        "UPnP AV"                    (gFreebox) {freebox="upnpav_status", autoupdate="false"}
Switch FreeboxAirMedia      "AirMedia"                   (gFreebox) {freebox="airmedia_status", autoupdate="false"}
Switch FreeboxSambaFiles    "Partage fichiers Win"       (gFreebox) {freebox="sambafileshare_status", autoupdate="false"}
Switch FreeboxSambaPrinters "Partage imprimantes Win"    (gFreebox) {freebox="sambaprintershare_status", autoupdate="false"}

// Call Entries
String freebox_call_lastnum "Last call [%s]"             (gfbCalls) {freebox="call_number"}
Number freebox_call_duration "Duration [%d sec]"         (gfbCalls) {freebox="call_duration"}
DateTime freebox_call_ts  "TimeStamp [%1$tA, %1$td.%1$tm.%1$tY]" (gfbCalls) {freebox="call_timestamp"}
String freebox_call_status "Status [%s]"                 (gfbCalls) {freebox="call_status"}

// Connection Status Items
String freebox_cs_state       "State [%s]"               (gfbCS) {freebox="line_status"}
String freebox_cs_ipv4        "ipV4 [%s]"                (gfbCS) {freebox="ipv4"}
Number freebox_cs_rate_up     "Upload rate [%d b/s]"     (gfbCS) {freebox="rate_up"}
Number freebox_cs_rate_down   "Download rate [%d b/s]"   (gfbCS) {freebox="rate_down"}
Number freebox_cs_bytes_up    "Uploaded [%d bytes]"      (gfbCS) {freebox="bytes_up"}
Number freebox_cs_bytes_down  "Downloaded [%d bytes]"    (gfbCS) {freebox="bytes_down"}

// System Items
String freebox_sys_firmware_version "Version [%s]"       (gfbSys) {freebox="fw_version"}
Switch freebox_reboot               "Reboot freebox"     (gfbSys) {freebox="reboot"}
Number freebox_sys_uptime           "Uptime [%d sec]"    (gfbSys) {freebox="uptime"}
Number freebox_sys_temp_cpum        "Temp cpum [%d °C]"  <temperature>   (gfbSys) {freebox="temp_cpum"}
Number freebox_sys_temp_cpub        "Temp cpub [%d °C]"  <temperature>   (gfbSys) {freebox="temp_cpub"}
Number freebox_sys_temp_sw          "Temp sw [%d °C]"    <temperature>   (gfbSys) {freebox="temp_sw"}
Number freebox_sys_fan_rpm          "Fan [%d rpm]"       <fan>           (gfbSys) {freebox="fan"}

// LCD Configuration Items
Number freebox_lcd_brightness       "Brightness [%d %%]"  (gfbLCD) {freebox="lcd_brightness"}
Number freebox_lcd_orientation      "Orientation [%d °]"  (gfbLCD) {freebox="lcd_orientation"}
Switch freebox_lcd_forced           "LCD Forced"          (gfbLCD) {freebox="lcd_forced"}

// xDSL Status Items
String freebox_xdsl_status      "Status [%s]"             (gfbXdsl) {freebox="xdsl_status"}

// (from v1.7) Network devices reachable status
Switch NetDevice1  "Net device (MAC)"   (gFreebox) {freebox="reachable_mac/00:1B:D2:D5:97:01", autoupdate="false"}
Switch NetDevice2  "Net device (IP)"    (gFreebox) {freebox="reachable_ip/192.168.0.50", autoupdate="false"}
Switch NetDevice3  "Net device (name)"  (gFreebox) {freebox="reachable_name/Téléviseur", autoupdate="false"}

The following items are available for read/write actions:

  • switch on/off wifi
  • switch on/off FTP server (from v1.7)
  • switch on/off UPnP AV (from v1.7)
  • switch on/off AirMedia (from v1.7)
  • switch on/off Windows file sharing (from v1.7)
  • switch on/off Windows printer sharing (from v1.7)
  • switch to reboot the freebox
  • switch to force lcd orientation
  • lcd orientation to use (0,90,180,270).
  • lcd brightness (0 to 100)