# FreeboxOS Binding

Free is a French telecom operator providing advanced equipments to manage your broadband access.

This binding integrates the Freebox Revolution (opens new window) and Freebox Delta (opens new window) to your openHAB installation.

The server can be connected to Free infrastructures either by xDSL or fiber optic.

This binding provides metrics about your network bridge/router and attached devices (wifi repeaters, TV boxes ...). It also provides home automation capabilities when appropriate dongle has been inserted in the server.

IliadBox, italian version of the Freebox Pop are also compatible.

# Supported Things

This binding supports the following thing types:

Thing Thing Type Description
api Bridge Bridge to access freebox OS API hosted by the server
delta Thing A Freebox Delta server
revolution Thing A Freebox Revolution server
player Thing A TV player equipment
active-player Thing A TV player equipment with API capabilities (e.g. Devialet)
fxs Thing The phone wired to the Freebox Server
dect Thing A DECT phone
call Thing Phone calls
host Thing A network device on the local network
wifihost Thing A wifi networked device on the local network
freeplug Thing An Ethernet / CPL gateway
repeater Thing A Free wifi repeater
vm (*) Thing A virtual machine hosted on the server
basic-shutter (*) Thing A basic shutter configured in your Freebox Server
shutter (*) Thing An IO Home Control shutter configured in your Freebox Server
kfb (*) Thing A keyfob configured in your Freebox Server
alarm (*) Thing The Alarm system configured in your Freebox Server

(*) Restricted to servers >= Delta

# Discovery

The API bridge is discovered automatically through mDNS in the local network. After the bridge is discovered and available to openHAB, the binding will automatically discover phone, network devices available on the local network. Note that the discovered thing will be setup to use only HTTP API (and not HTTPS) because only an IP can be automatically determined while a domain name is required to use HTTPS with a valid certificate.

# Binding Configuration

FreeboxOS binding has the following configuration parameters:

| Parameter Label | Parameter ID | Description | Default | |-----------------|--------------|----------------------------------------------------------------------------| | | Timeout | timeout | The timeout for reading from the API in seconds. | 10 | | Callback URL | callbackUrl | URL to use for playing notification sounds, e.g. 'http://192.168.0.2:8080 (opens new window)' | |

# Thing Configuration

# Api Bridge

The api bridge thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default
Freebox Server Address apiDomain The domain to use in place of hardcoded Freebox ip No mafreebox.freebox.fr (opens new window)
Application Token appToken Token generated by the Freebox Server. Yes
Network Device Discovery discoverNetDevice Enable the discovery of network device things. No false
Background Discovery Interval discoveryInterval Interval in minutes - 0 disables background discovery No 10
HTTPS Available httpsAvailable Tells if HTTPS has been configured on the Freebox No false
HTTPS port httpsPort Port to use for HTTPS access to the Freebox Api No 443
Websocket Reconnect Interval wsReconnectInterval Disconnection interval, in minutes- 0 disables websocket usage No 60

If the parameter apiDomain is not set, the binding will use the default address used by Free to access your Freebox Server (mafreebox.freebox.fr (opens new window)). The bridge thing will initialize only if a valid application token (parameter appToken) is filled.

# Server Things

The revolution or delta thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default
Refresh Interval refreshInterval The refresh interval in seconds which is used to poll the Freebox Server No 30

# Player Things

The player or active-player thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default
ID id Id of the player within Freebox Api Yes 1
Password password AirPlay password No
Remote Code remoteCode Code associated to remote control No
Accept all MP3 acceptAllMp3 Accept any bitrate for MP3 audio or only bitrates greater than 64 kbps No true
Refresh Interval refreshInterval The refresh interval in seconds which is used to poll the Freebox player No 30

# Phone Things

The fxs or dect thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default
ID id Id of the phone line Yes 1
Refresh Interval refreshInterval The refresh interval in seconds which is used to poll for phone state. No 30

The call thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default
Refresh Interval refreshInterval The refresh interval in seconds which is used to poll for phone calls. No 30

# Network Device Things

The host thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default
MAC Address macAddress The MAC address of the network device. Yes
Refresh Interval refreshInterval The refresh interval in seconds which is used to poll the device. No 30

The wifihost thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default
MAC Address macAddress The MAC address of the network device. Yes
Refresh Interval refreshInterval The refresh interval in seconds which is used to poll the device. No 30
mDNS Name mDNS The mDNS name of the network device. Useful in case of virtual MAC. No

When used, mDNS will search the host based on its mDNS name and eventually update the MAC address accordingly. This is useful with devices, especially Apple equipment, that uses randomly generated MAC addresses.

# Freeplug Thing

The freeplug thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default
MAC Address macAddress The MAC address of the network device. Yes
Refresh Interval refreshInterval The refresh interval in seconds which is used to poll the device. No 30

# Repeater Thing

The repeater thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default

| ID | id | Id of the repeater within Freebox Api | Yes | 1 | | Refresh Interval | refreshInterval | The refresh interval in seconds which is used to poll the repeater. | No | 30 |

# Virtual Machine Thing

The vm thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default

| ID | id | Id of the Virtual Machine | Yes | 1 | | Refresh Interval | refreshInterval | The refresh interval in seconds which is used to poll the virtual machine. | No | 30 |

# Home Node Things

The basic-shutter, shutter, kfb or alarm thing requires the following configuration parameters:

Parameter Label Parameter ID Description Required Default
ID id Id of the Home Node Yes 1
Refresh Interval refreshInterval The refresh interval in seconds which is used to poll the Node No 30

# Authentication

You will have to authorize openHAB to connect to your Freebox. Here is the process described:

Step 1 At binding startup, if no token is recorded in the Freebox Server (bridge) configuration, the binding will run a pairing request

Step 2 Run to your Freebox and approve the pairing request for openHAB FreeboxOS Binding that is displayed on the Freebox screen

Step 3 the application token is automatically recorded in the Freebox Server (bridge) configuration

Step 4 you can use the console command freeboxos apptoken to display the application token and use it later to set up your thing in a configuration file

Step 5 log in your Freebox admin console to allocate needed rights to FreeboxOS Binding

Once initialized, the thing will generate all available channels.

# Channels

The following channels are supported:

Thing Type Channel Grpup ID Channel ID Item Type Access Mode Description
revolution display lcd-brightness Number:Dimensionless RW Brightness level of the screen in percent
revolution display lcd-orientation Number RW Screen Orientation in degrees (0 or 90 or 180 or 270)
revolution display lcd-forced Switch RW Indicates whether the screen orientation is forced
revolution, delta file-sharing ftp-status Switch RW Indicates whether the FTP server is enabled
revolution, delta file-sharing samba-file-status Switch RW Indicates whether Windows File Sharing is enabled
revolution, delta file-sharing samba-printer-status Switch RW Indicates whether Windows Printer Sharing is enabled
revolution, delta file-sharing afp-file-status Switch RW Indicates whether Mac OS File Sharing is enabled
revolution, delta sysinfo uptime Number:Time R Time since last reboot of the equipment
revolution, delta sysinfo ip-address String R Internal IPv4 Address of the Freebox Server
revolution, delta sysinfo box-event Trigger - Triggers when an event related to the Freebox server has been detected. Possible event: "restarted", "firmware_updated" and "reboot_requested"
revolution, delta actions wifi-status Switch RW Indicates whether the WiFi network is enabled
revolution, delta actions upnpav-status Switch RW Indicates whether UPnP AV is enabled
revolution, delta actions airmedia-status Switch RW Indicates whether Air Media is enabled
revolution, delta connection-status line-status String R Status of network line connection
revolution, delta connection-status line-type String R Type of network line connection
revolution, delta connection-status line-media String R Media of network line connection
revolution, delta connection-status ip-address String R Public IPv4 Address of the Freebox Server
revolution, delta connection-status ipv6-address String R Public IPv6 Address of the Freebox Server
revolution, delta connection-status bandwidth-up Number:DataTransferRate R Raw value of the upload bandwidth
revolution, delta connection-status bandwidth-down Number:DataTransferRate R Raw value of the download bandwidth
revolution, delta connection-status bandwidth-usage-up Number:Dimensionless R Portion of the upload bandwidth currently used
revolution, delta connection-status bandwidth-usage-down Number:Dimensionless R Portion of the download bandwidth currently used
revolution, delta connection-status rate-up Number:DataTransferRate R Current upload rate
revolution, delta connection-status rate-down Number:DataTransferRate R Current download rate
revolution, delta connection-status bytes-up Number:DataAmount R Total data uploaded since last restart
revolution, delta connection-status bytes-down Number:DataAmount R Total data downloaded since last restart
active-player, player player-actions key-code String W Simulates pushing a remote control button
active-player player-status player-status String R Status of the Freebox TV player
active-player player-status package String R Name of the package currently active on the player
active-player sysinfo uptime Number:Time R Time since last reboot of the equipment
active-player sysinfo box-event Trigger - Triggers when an event related to the Freebox Player has been detected. Possible event: "restarted", "firmware_updated" and "reboot_requested"
vm vmstatus status Switch RW Status of the virtual machine
(*) connectivity reachable Switch R Indicates if the network device is reachable or not
(*) connectivity last-seen DateTime R Date and time of last activity for the network device
(*) connectivity ip-address String R IPv4 Address of the network device
fxs, dect telephony-service String R Status of the telephony service
fxs, dect ringing Switch RW Is the phone ringing
fxs, dect hardware-status String R Hardware status of the phone line
fxs onhook Switch R Indicates whether the phone is on hook
dect dect-active Switch RW Activates / stops the integrated DECT base
dect alternate-ring Switch RW Alternating Ring
dect gain-rx Dimmer RW Gain RX
dect gain-tx Dimmer RW Gain TX
call incoming number Call R Current incoming call number
call incoming timestamp DateTime R Current incoming call creation timestamp
call incoming name String R Current incoming caller name
call accepted number Call R Last accepted call number
call accepted duration Number:Time R Last accepted call duration in seconds
call accepted timestamp DateTime R Last accepted call creation timestamp
call accepted name String R Last accepted caller name
call missed number Call R Last missed call number
call missed timestamp DateTime R Last missed call creation timestamp
call missed name String R Last missed caller name
call outgoing number Call R Last outgoing call number
call outgoing duration Number:Time R Last outgoing call duration in seconds
call outgoing timestamp DateTime R Last outgoing call creation timestamp
call outgoing name String R Last outgoing called name
basic-shutter basic-shutter#basic-shutter RollerShutter W Up, stop and down commands for a RTS shutter

(*): any thing type amongst active-player, player, host, wifihost, repeater and vm.

# Actions for rules

The following actions are available in rules/scripting:

Thing Type Action Name Parameters Description
host, wifihost wol None Sends a wake on lan packet to the lan connected host
active-player rebootPlayer None Reboots the Freebox Player
active-player, player sendKey key: String Sends a key (remote emulation) to the player
active-player, player sendLongKey key: String Sends a key emulating a longpress on the button
active-player, player sendMultipleKeys keys: String Sends multiple keys to the player, comma separated
active-player, player sendKeyRepeat key: String, count: int Sends a key multiple times
delta, revolution rebootServer None Reboots the Freebox Server
freeplug resetPlug None Resets the Freeplug
call resetCalls None Deletes all calls logged in the queue
repeater rebootRepeater None Reboots the Free Repeater