# Netatmo Binding
The Netatmo binding integrates the following Netatmo products:
- Personal Weather Station. Reports temperature, humidity, air pressure, carbon dioxide concentration in the air, as well as the ambient noise level.
- Thermostat. Reports ambient temperature, allow to check target temperature, consult and change furnace heating status.
- Indoor Camera / Welcome. Reports last event and persons at home, consult picture and video from event/camera.
- Siren
- Outdoor Camera / Presence. Reports last event, consult picture and video from event/camera.
- Doorbell
- Smoke Detector
- Smart Door Sensor
- Carbon Monoxide Detector
See https://www.netatmo.com/ (opens new window) for details on their product.
# Binding Configuration
The binding requires you to register an Application with Netatmo Connect at https://dev.netatmo.com/ (opens new window) - this will get you a set of Client ID and Client Secret parameters to be used by your configuration.
# Create Netatmo Application
Follow instructions under:
- Setting Up Your Account
- Registering Your Application
- Setting Redirect URI and webhook URI can be skipped, these will be provided by the binding.
Variables needed for the setup of the binding are:
<CLIENT_ID>
Your client ID taken from your App at https://dev.netatmo.com/apps (opens new window)<CLIENT_SECRET>
A token provided along with the<CLIENT_ID>
.
The binding has the following configuration options:
Parameter | Type | Description |
---|---|---|
readFriends | Boolean | Enables or disables the discovery of guest weather stations. |
# Netatmo Account (Bridge) Configuration
You will have to create at first a bridge to handle communication with your Netatmo Application.
The Account bridge has the following configuration elements:
Parameter | Type | Required | Description |
---|---|---|---|
clientId | String | Yes | Client ID provided for the application you created on http://dev.netatmo.com/createapp (opens new window) |
clientSecret | String | Yes | Client Secret provided for the application you created |
webHookUrl | String | No | Protocol, public IP and port to access openHAB server from Internet |
webHookPostfix | String | No | String appended to the generated webhook address (should start with "/") |
reconnectInterval | Number | No | The reconnection interval to Netatmo API (in s) |
Supported channels for the Account bridge thing:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
monitoring | request-count | Number | Number of requests transmitted to Netatmo API during the last hour |
# Configure the Bridge
- Complete the Netatmo Application Registration if you have not already done so, see above.
- Make sure you have your Client ID and Client Secret identities available.
- Add a new "Netatmo Account" thing. Choose new Id for the account, unless you like the generated one, put in the Client ID and Client Secret from the Netatmo Connect Application registration in their respective fields of the bridge configuration. Save the bridge.
- The bridge thing will go OFFLINE / CONFIGURATION_ERROR - this is fine. You have to authorize this bridge with Netatmo Connect.
- Go to the authorization page of your server.
http://<your openHAB address>:8080/netatmo/connect/<_CLIENT_ID_>
. Your newly added bridge should be listed there (no need for you to expose your openHAB server outside your local network for this). - Press the "Authorize Thing" button. This will take you either to the login page of Netatmo Connect or directly to the authorization screen. Login and/or authorize the application. You will be returned and the entry should go green.
- The bridge will go ONLINE.
Now that you have got your bridge ONLINE you can now start a scan with the binding to auto discover your things.
Starting on 2023/04/17 - Netatmo API requires an update of the refreshToken provided by the oAuth mechanism every three hours.
Once authentication process has been done, current refreshToken is stored in /OPENHAB_USERDATA/netatmo
folder.
# List of supported things
Thing Type | Type | Netatmo Object | Description | Thing Parameters |
---|---|---|---|---|
account | Bridge | N/A | This bridge represents an account, gateway to Netatmo API. | clientId, clientSecret, username, password, webHookUrl, reconnectInterval |
home | Bridge | NAHome | A home hosting Security or Energy devices and modules. | id, refreshInterval, energyId, securityId |
person | Thing | NAPerson | A person known by your Netatmo system. | id |
welcome | Thing | NACamera | The Netatmo Smart Indoor Camera (Welcome). | id, ipAddress |
presence | Thing | NOC | The Netatmo Smart Outdoor Camera (Presence) camera with or without siren. | id, ipAddress |
siren | Thing | NIS | The Netatmo Smart Indoor Siren. | id |
doorbell | Thing | NDB | The Netatmo Smart Video Doorbell device. | id, ipAddress |
weather-station | Bridge | NAMain | Main indoor module reporting temperature, humidity, pressure, air quality and sound level. | id, refreshInterval |
outdoor | Thing | NAModule1 | Outdoor module reporting temperature and humidity. | id |
wind | Thing | NAModule2 | Wind sensor reporting wind angle and strength. | id |
rain | Thing | NAModule3 | Rain Gauge measuring precipitation. | id |
indoor | Thing | NAModule4 | Additional indoor module reporting temperature, humidity and CO2 level. | id |
home-coach | Thing | NHC | Healthy home coach reporting health-index, temperature, humidity, pressure, air quality, sound level. | id, refreshInterval |
plug | Thing | NAPlug | The relay connected to the boiler controlling a Thermostat and zero or more valves. | id |
thermostat | Thing | NATherm1 | The Thermostat device placed in a given room. | id |
room | Thing | NARoom | A room in your house. | id |
valve | Thing | NRV | A valve controlling a radiator. | id |
tag | Thing | NACamDoorTag | A door / window sensor | id |
smoke-detector | Thing | NSD | A Smoke Detector | id |
co-detector | Thing | NCO | A Carbon Monoxide Alarm | id |
# Webhook
Netatmo servers can send push notifications to the Netatmo Binding by using a callback URL. The webhook URL is setup at Netatmo Account level using "Webhook Address" parameter. You will define here public way to access your openHAB server:
http(s)://xx.yy.zz.ww:443
Your Netatmo App will be configured automatically by the bridge to the endpoint:
http(s)://xx.yy.zz.ww:443/netatmo/webhook/<_CLIENT_ID_><webHookPostfix>
Please be aware of Netatmo own limits regarding webhook usage that lead to a 24h ban-time when webhook does not answer 5 times.
NB: Allowed ports for webhooks are 80, 88, 443 and 9443.
# Configure Things
The easiest way to retrieve the IDs for all the devices and modules is to use the console command openhab:netatmo showIds
.
It shows the hierarchy of all the devices and modules including their IDs.
This can help to define all your things in a configuration file.
Another way to get the IDs is to use the developer documentation on the netatmo site:
The IDs for the modules can be extracted from the developer documentation on the netatmo site.
First login with your user.
Then some examples of the documentation contain the real results of your weather station.
In order to try the examples, you need the device_id
of your Netatmo station.
You can find it in the configuration menu of the app (android or apple).
Get the IDs of your devices (indoor, outdoor, rain gauge)
here (opens new window).
main_device
is the ID of the "main device", the indoor sensor.
This is equal to the MAC address of the Netatmo.
The other modules you can recognize by "module_name" and then note the "_id" which you need later.
Another way to get the IDs is to calculate them:
You have to calculate the ID for the outside module as follows: (it cannot be read from the app)
- if the first serial character is "h": start with "02"
- if the first serial character is "i": start with "03"
- if the first serial character is "j": start with "04"
- if the first serial character is "k": start with "05"
append ":00:00:",
split the rest into three parts of two characters and append with a colon as delimiter.
For example your serial number "h00bcdc" should end up as "02:00:00:00:bc:dc".
# Discovery
If you did not manually create things in the *.things file, the Netatmo Binding is able to discover automatically all depending modules and devices.
# Channels
# Weather Station Main Indoor Device
Weather station uses a default refreshInterval
of 10 minutes (can be adjusted), based on a standard update period of Netatmo systems.
It will auto-adapt to stick as closely as possible to the last data availability.
Supported channels for the main indoor module:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
pressure | value | Number:Pressure | Current pressure |
pressure | absolute | Number:Pressure | Pressure at sea level |
pressure | trend | String | Pressure evolution trend over time |
noise | value | Number:Dimensionless | Current noise level |
humidity | value | Number:Dimensionless | Current humidity |
humidity | humidex | Number | Computed Humidex index |
humidity | humidex-scale | Number | Humidex index appreciation |
temperature | value | Number:Temperature | Current temperature |
temperature | min-today | Number:Temperature | Minimum temperature on current day |
temperature | max-today | Number:Temperature | Maximum temperature on current day |
temperature | min-time | DateTime | Moment of today's minimum temperature |
temperature | max-time | DateTime | Moment of today's maximum temperature |
temperature | trend | String | Temperature evolution trend over time |
temperature | heat-index | Number:Temperature | Computed Heat Index |
temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
airquality | co2 | Number:Dimensionless | CO2 level in ppm |
location | value | Location | Location of the device |
timestamp | last-seen | DateTime | Last time the module reported its presence |
timestamp | measures | DateTime | Moment of the last measures update |
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
All these channels are read only.
Extensible channels for the main indoor module:
Channel Type | Item Type | Description | Channel parameters |
---|---|---|---|
co2-measurement | Number:Dimensionless | CO2 measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
co2-timestamp | DateTime | CO2 measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
hum-measurement | Number:Dimensionless | Humidity measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
noise-measurement | Number:Dimensionless | Noise measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
noise-timestamp | DateTime | Noise measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
pressure-measurement | Number:Pressure | Pressure measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
pressure-timestamp | DateTime | Pressure measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
temp-measurement | Number:Temperature | Temperature measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
# Weather Station Outdoor module
Supported channels for the outdoor module:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
humidity | value | Number:Dimensionless | Current humidity |
humidity | humidex | Number | Computed Humidex index |
humidity | humidex-scale | Number | Humidex index appreciation |
temperature | value | Number:Temperature | Current temperature |
temperature | min-today | Number:Temperature | Minimum temperature on current day |
temperature | max-today | Number:Temperature | Maximum temperature on current day |
temperature | min-time | DateTime | Moment of today's minimum temperature |
temperature | max-time | DateTime | Moment of today's maximum temperature |
temperature | trend | String | Temperature evolution trend over time |
temperature | heat-index | Number:Temperature | Computed Heat Index |
temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
timestamp | last-seen | DateTime | Last time the module reported its presence |
timestamp | measures | DateTime | Moment of the last measures update |
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
battery | value | Number | Battery level |
battery | low-battery | Switch | Low battery |
All these channels are read only.
Extensible channels for the outdoor module:
Channel Type | Item Type | Description | Channel parameters |
---|---|---|---|
hum-measurement | Number:Dimensionless | Humidity measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
temp-measurement | Number:Temperature | Temperature measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
# Weather Station Additional Indoor module
Supported channels for the additional indoor module:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
humidity | value | Number:Dimensionless | Current humidity |
humidity | humidex | Number | Computed Humidex index |
humidity | humidex-scale | Number | Humidex index appreciation |
temperature | value | Number:Temperature | Current temperature |
temperature | min-today | Number:Temperature | Minimum temperature on current day |
temperature | max-today | Number:Temperature | Maximum temperature on current day |
temperature | min-time | DateTime | Moment of today's minimum temperature |
temperature | max-time | DateTime | Moment of today's maximum temperature |
temperature | trend | String | Temperature evolution trend over time |
temperature | heat-index | Number:Temperature | Computed Heat Index |
temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
airquality | co2 | Number:Dimensionless | Air quality |
timestamp | last-seen | DateTime | Last time the module reported its presence |
timestamp | measures | DateTime | Moment of the last measures update |
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
battery | value | Number | Battery level |
battery | low-battery | Switch | Low battery |
All these channels are read only.
Extensible channels for the additional indoor module:
Channel Type | Item Type | Description | Channel parameters |
---|---|---|---|
co2-measurement | Number:Dimensionless | CO2 measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
co2-timestamp | DateTime | CO2 measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
hum-measurement | Number:Dimensionless | Humidity measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
temp-measurement | Number:Temperature | Temperature measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
# Rain Gauge
Supported channels for the rain guage:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
rain | value | Number:Speed | Current precipitation intensity |
rain | sum-1 | Number:Length | Quantity of water over last hour |
rain | sum-24 | Number:Length | Quantity of water during the current day |
timestamp | last-seen | DateTime | Last time the module reported its presence |
timestamp | measures | DateTime | Moment of the last measures update |
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
battery | value | Number | Battery level |
battery | low-battery | Switch | Low battery |
All these channels are read only.
Extensible channels for the rain guage:
Channel Type | Item Type | Description | Channel parameters |
---|---|---|---|
sum_rain-measurement | Number:Length | Summing rain measurement | period (30min, 1hour, 3hours, 1day, 1week, 1month) |
# Weather Station Wind module
Supported channels for the wind module:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
wind | angle | Number:Angle | Current 5 minutes average wind direction |
wind | strength | Number:Speed | Current 5 minutes average wind speed |
wind | max-strength | Number:Speed | Maximum wind strength recorded |
wind | max-strength-date | DateTime | Moment when MaxWindStrength was recorded |
wind | gust-angle | Number:Angle | Direction of the last 5 minutes highest gust |
wind | gust-strength | Number:Speed | Speed of the last 5 minutes highest gust wind |
timestamp | last-seen | DateTime | Last time the module reported its presence |
timestamp | measures | DateTime | Moment of the last measures update |
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
battery | value | Number | Battery level |
battery | low-battery | Switch | Low battery |
All these channels are read only.
# Healthy Home Coach Device
Home Coach uses a default refreshInterval
of 10 minutes (can be adjusted), based on a standard update period of Netatmo systems.
It will auto-adapt to stick as closely as possible to the last data availability.
Supported channels for the healthy home coach device:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
noise | value | Number:Dimensionless | Current noise level |
humidity | value | Number:Dimensionless | Current humidity |
humidity | humidex | Number | Computed Humidex index |
humidity | humidex-scale | Number | Humidex index appreciation |
pressure | value | Number:Pressure | Current pressure |
pressure | absolute | Number:Pressure | Pressure at sea level |
temperature | value | Number:Temperature | Current temperature |
temperature | min-today | Number:Temperature | Minimum temperature on current day |
temperature | max-today | Number:Temperature | Maximum temperature on current day |
temperature | min-time | DateTime | Moment of today's minimum temperature |
temperature | max-time | DateTime | Moment of today's maximum temperature |
temperature | heat-index | Number:Temperature | Computed Heat Index |
temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
airquality | health-index | Number | Health index (*) |
airquality | co2 | Number:Dimensionless | Air quality |
timestamp | last-seen | DateTime | Last time the module reported its presence |
timestamp | measures | DateTime | Moment of the last measures update |
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
(*) Health index values :
- 0 : healthy
- 1 : fine
- 2 : fair
- 3 : poor
- 4 : unhealthy
All these channels are read only.
Extensible channels for the healthy home coach device:
Channel Type | Item Type | Description | Channel parameters |
---|---|---|---|
hum-measurement | Number:Dimensionless | Humidity measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
noise-measurement | Number:Dimensionless | Noise measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
noise-timestamp | DateTime | Noise measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
pressure-measurement | Number:Pressure | Pressure measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
pressure-timestamp | DateTime | Pressure measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
temp-measurement | Number:Temperature | Temperature measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
# Thermostat Relay Device
Supported channels for the thermostat relay device:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
All these channels are read only.
# Thermostat Plug
Supported channels for the thermostat plug device:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
All these channels are read only.
# Room
Supported channels for the Room thing:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
temperature | value | Number:Temperature | Current temperature in the room |
properties | window-open | Contact | Windows of the room are opened |
properties | anticipating | Switch | Anticipates next scheduled setpoint |
properties | heating-power-request | Number:Dimensionless | Percentage of heating power |
setpoint | value | Number:Temperature | Thermostat temperature setpoint |
setpoint | mode | String | Chosen thermostat mode (home, frost guard, manual, max) |
setpoint | start | DateTime | Start time of the currently applied setpoint |
setpoint | end | DateTime | End time of the currently applied setpoint |
All these channels except setpoint and setpoint-mode are read only.
# Thermostat Module
Supported channels for the thermostat module:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
properties | relay | Contact | Indicates if the boiler is currently heating |
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
battery | value | Number | Battery level |
battery | low-battery | Switch | Low battery |
battery | status | String | Description of the battery status (*) |
(*) Can be UNDEF on some modules
# Valve Module
Supported channels for the Valve module:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
battery | value | Number | Battery level |
battery | low-battery | Switch | Low battery |
battery | status | String | Description of the battery status (*) |
# Home
A Home is the Thing holding various modules and devices. They can hold two areas of equipments : Security and Energy. Depending on the way it is configured the behaviour will be adapted and available channels can vary.
Home Configuration
The Home thing has the following configuration elements:
Parameter | Type | Required | Description |
---|---|---|---|
id (1) | String | No | If you have a single type of equipment, this id is to be used for the home |
energyId | String | No | Id of a home holding energy control devices |
securityId | String | No | Id of a home holding security monitoring devices |
refreshInterval | Integer | No | Refresh interval for refreshing the data in seconds. Default 180. |
At least one of these parameter must be filled - at most two :
- id or securityId
- id or energyId
- securityId and energyId
(1) this parameter is kept for backward compatibility.
All channels are read only.
Supported channels for the Security Home thing:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
security | person-count | Number | Total number of persons that are at home |
security | unknown-person-count | Number | Total number of unknown persons that are at home |
security | unknown-person-picture | Image | Snapshot of unknown person that is at home |
Supported trigger channels for the Security Home thing:
Supported trigger channels for the Security Home, Presence and Doorbell thing:
Channel Type ID | Options | Description |
---|---|---|
home-event | A welcome home event is triggered directly via a configured webhook | |
PERSON | Triggered when a concrete person was detected | |
PERSON_AWAY | Triggered when a concrete person leaves | |
PERSON_HOME | Triggered when a concrete person entered the home | |
OUTDOOR | Triggered when a event of an outdoor camera was triggered | |
MOVEMENT | Triggered when a movement was detected | |
HUMAN | Triggered when a human was detected | |
ANIMAL | Triggered when an animal was detected | |
VEHICLE | Triggered when a vehicle was detected | |
NEW_MODULE | Triggered when a new module was discovered | |
MODULE_CONNECT | Triggered when a module gets connected | |
MODULE_DISCONNECT | Triggered when a module gets disconnected | |
MODULE_LOW_BATTERY | Triggered when the battery of a module gets low | |
MODULE_END_UPDATE | Triggered when a firmware update of a module is done | |
CONNECTION | Triggered when a camera connection gets created | |
DISCONNECTION | Triggered when a camera connection got lost | |
ON | Triggered when camera monitoring is switched on | |
OFF | Triggered when camera monitoring is switched off | |
BOOT | Triggered when a camera is booting | |
SD | Triggered when a camera SD card status was changed | |
ALIM | Triggered when a power supply status was changed | |
ACCEPTED_CALL | Triggered when a doorbell call was accepted | |
INCOMING_CALL | Triggered when a doorbell call is incoming | |
RTC | Triggered when the doorbell button was pressed | |
MISSED_CALL | Triggered when a doorbell call was missed |
# Welcome, Presence and Doorbell Cameras
Warnings:
- The URL of the live snapshot is a fixed URL so the value of the channel cameraLivePictureUrl / welcomeCameraLivePictureUrl will never be updated once first set by the binding. So to get a refreshed picture, you need to use the refresh parameter in your sitemap image element.
- Some features like the video monitoring are accessed via the local network, so it may be helpful to set a static IP address for the camera within your local network.
Supported channels for the Welcome Camera thing:
Channel Group | Channel ID | Item Type | Read/Write | Description |
---|---|---|---|---|
security-event | home-event | Read-only | Trigger channel which is triggered when the camera sent an event | |
status | monitoring | Switch | Read-write | State of the camera (video surveillance on/off) |
status | sd-card | String | Read-only | State of the SD card |
status | alim | String | Read-only | State of the power connector |
live | picture (**) | Image | Read-only | Camera Live Snapshot |
live | local-picture-url | String | Read-only | Local Url of the live snapshot for this camera |
live | vpn-picture-url | String | Read-only | Url of the live snapshot for this camera through Netatmo VPN. |
live | local-stream-url (*) | String | Read-only | Local Url of the live stream for this camera (accessible if openhab server and camera are located on the same lan. |
live | vpn-stream-url (*) | String | Read-only | Url of the live stream for this camera through Netatmo VPN. |
signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Read-only | Signal strength in dBm |
last-event | type | String | Read-only | Type of event |
last-event | subtype | String | Read-only | Sub-type of event |
last-event | time | DateTime | Read-only | Time of occurrence of event |
last-event | message | String | Read-only | Message sent by Netatmo corresponding to given event |
last-event | snapshot | Image | Read-only | picture of the last event, if it applies |
last-event | snapshot-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the picture URL will be available here |
last-event | local-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding local video URL will be available here |
last-event | vpn-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding VPN video URL will be available here |
last-event | video-status | String | Read-only | Status of the video (recording, deleted or available) |
last-event | person-id | String | Read-only | Id of the person the event is about (if any) |
(*) This channel is configurable : low, poor, high. (**) This channel handles the REFRESH command for on demand update.
Supported channels for the Presence Camera thing:
Warnings:
- The floodlight auto-mode (auto-mode) isn't updated it is changed by another application. Therefore the binding handles its own state of the auto-mode. This has the advantage that the user can define its own floodlight switch off behaviour.
Channel Group | Channel ID | Item Type | Read/Write | Description |
---|---|---|---|---|
security-event | home-event | Read-only | Trigger channel which is triggered when the camera sent an event | |
status | monitoring | Switch | Read-write | State of the camera (video surveillance on/off) |
status | sd-card | String | Read-only | State of the SD card |
status | alim | String | Read-only | State of the power connector |
live | picture | Image | Read-only | Camera Live Snapshot |
live | picture-url | String | Read-only | Url of the live snapshot for this camera |
live | local-stream-url (*) | String | Read-only | Local Url of the live stream for this camera (accessible if openhab server and camera are located on the same lan. |
live | vpn-stream-url (*) | String | Read-only | Url of the live stream for this camera through Netatmo VPN. |
signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Read-only | Signal strength in dBm |
presence | floodlight | String | Read-write | Sets the floodlight to ON/OFF/AUTO |
presence | siren | Switch | Read-write | Status of the siren, if silent or emitting an alarm |
last-event | type | String | Read-only | Type of event |
last-event | subtype | String | Read-only | Sub-type of event |
last-event | time | DateTime | Read-only | Time of occurrence of event |
last-event | message | String | Read-only | Message sent by Netatmo corresponding to given event |
last-event | snapshot | Image | Read-only | picture of the last event, if it applies |
last-event | snapshot-url | String | Read-only | if the last event (depending upon event type) in the home lead a snapshot picture, the picture URL will be available here |
last-event | local-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding local video URL will be available here |
last-event | vpn-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding VPN video URL will be available here |
last-event | video-status | String | Read-only | Status of the video (recording, deleted or available) |
last-event | person-id | String | Read-only | Id of the person the event is about (if any) |
sub-event | type | String | Read-only | Type of sub-event |
sub-event | time | DateTime | Read-only | Time of occurrence of sub-event |
sub-event | message | String | Read-only | Message sent by Netatmo corresponding to given sub-event |
sub-event | snapshot-url | String | Read-only | Depending upon event type in the home, a snapshot picture of the corresponding local video URL will be available here |
sub-event | vignette-url | String | Read-only | A vignette representing the snapshot |
sub-event | snapshot | Image | Read-only | picture of the snapshot |
sub-event | vignette | Image | Read-only | picture of the vignette |
(*) This channel is configurable : low, poor, high.
Supported channels for the Doorbell thing:
Channel Group | Channel ID | Item Type | Read/Write | Description |
---|---|---|---|---|
security-event | home-event | Read-only | Trigger channel which is triggered when the doorbell sent an event | |
status | sd-card | String | Read-only | State of the SD card |
status | alim | String | Read-only | State of the power connector |
live | picture | Image | Read-only | Camera Live Snapshot |
live | local-picture-url | String | Read-only | Local Url of the live snapshot for this camera |
live | vpn-picture-url | String | Read-only | Url of the live snapshot for this camera through Netatmo VPN. |
signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Read-only | Signal strength in dBm |
last-event-doorbell | type | String | Read-only | Type of event |
last-event-doorbell | video-status | String | Read-only | Status of the video (recording, deleted or available) |
last-event-doorbell | time | DateTime | Read-only | Time of occurrence of event |
last-event-doorbell | local-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding local video URL will be available here |
last-event-doorbell | vpn-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding VPN video URL will be available here |
sub-event-doorbell | type | String | Read-only | Type of sub-event |
sub-event-doorbell | time | DateTime | Read-only | Time of occurrence of sub-event |
sub-event-doorbell | message | String | Read-only | Message sent by Netatmo corresponding to given sub-event |
sub-event-doorbell | snapshot-url | String | Read-only | Depending upon event type in the home, a snapshot picture of the corresponding local video URL will be available here |
sub-event-doorbell | vignette-url | String | Read-only | A vignette representing the snapshot |
sub-event-doorbell | snapshot | Image | Read-only | picture of the snapshot |
sub-event-doorbell | vignette | Image | Read-only | picture of the vignette |
Note: live feeds either locally or via VPN are not available in Netatmo API.
Supported channels for the Siren thing:
Channel Group | Channel ID | Item Type | Read/Write | Description |
---|---|---|---|---|
siren | status | Switch | Read-only | Status of the siren, if silent or emitting an alarm |
siren | monitoring | Switch | Read-only | State of the siren device |
signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Read-only | Signal strength in dBm |
timestamp | last-seen | DateTime | Read-only | Last time the module reported its presence |
battery | value | Number | Read-only | Battery level |
battery | low-battery | Switch | Read-only | Low battery |
Supported channels for the Door Tag thing:
Channel Group | Channel ID | Item Type | Read/Write | Description |
---|---|---|---|---|
tag | status | Contact | Read-only | Status of tag (OPEN,CLOSED) |
signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Read-only | Signal strength in dBm |
timestamp | last-seen | DateTime | Read-only | Last time the module reported its presence |
battery | value | Number | Read-only | Battery level |
battery | low-battery | Switch | Read-only | Low battery |
# Welcome Person
Netatmo API distinguishes two kinds of persons:
- Known persons : have been identified by the camera and you have defined a name for those.
- Unknown persons : identified by the camera, but no name defined.
Person things are automatically created in discovery process for all known persons.
Supported channels for the Person thing:
Channel Group | Channel ID | Item Type | Description |
---|---|---|---|
person | avatar-url | String | URL for the avatar of this person |
person | avatar | Image | Avatar of this person |
person | at-home | Switch | Indicates if this person is known to be at home or not |
person | last-seen | DateTime | Moment when this person was last seen |
last-event | subtype | String | Sub-type of event |
last-event | message | String | Last event message from this person |
last-event | time | DateTime | Moment of the last event for this person |
last-event | snapshot | Image | Picture of the last event for this person |
last-event | snapshot-url | String | URL for the picture of the last event for this person |
last-event | camera-id | String | ID of the camera that triggered the event |
All these channels except at-home are read only.
# Netatmo Smart Smoke Detector
All these channels are read only.
Supported channels for the Smoke Detector thing:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
timestamp | last-seen | DateTime | Last time the module reported its presence |
last-event | type | String | Type of event |
last-event | time | DateTime | Moment of the last event for this person |
last-event | subtype | String | Sub-type of event |
last-event | message | String | Last event message from this person |
# Netatmo Smart Carbon Monoxide Detector
All these channels are read only.
Supported channels for the Carbon Monoxide Detector thing:
Channel Group | Channel Id | Item Type | Description |
---|---|---|---|
signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
signal | value | Number:Power | Signal strength in dBm |
timestamp | last-seen | DateTime | Last time the module reported its presence |
last-event | type | String | Type of event |
last-event | time | DateTime | Moment of the last event for this detector |
last-event | subtype | String | Sub-type of event |
last-event | message | String | Last event message from this detector |
# Configuration Examples
# things/netatmo.things
Bridge netatmo:account:myaccount "Netatmo Account" [clientId="xxxxx", clientSecret="yyyy"] {
Bridge weather-station inside "Inside Weather Station" [id="70:ee:aa:aa:aa:aa"] {
outdoor outside "Outside Module" [id="02:00:00:aa:aa:aa"] {
Channels:
Type hum-measurement : maxHumWeek [limit="MAX",period="1week"]
}
rain rainModule "Rain Module" [id="05:00:00:aa:aa:aa"] {
Channels:
Type sum_rain-measurement : rainThisWeek "Rain This Week" [period="1week"]
Type sum_rain-measurement : rainThisMonth "Rain This Month" [period="1month"]
}
}
Bridge home myhome "My home" [ id="0123456789abcdef", refreshInterval=150 ] {
Thing welcome mycam "My camera" [ id="70:aa:bb:cc:dd:ee" ] {
Channels:
Type live-stream-url : live#local-stream-url [ quality="high" ]
Type live-stream-url : live#vpn-stream-url [ quality="low" ]
}
}
Bridge home myhomeheating "Home heating" [ id="..." ] {
Bridge plug relay "Boiler relay" [ id="..." ] {
thermostat thermostat "Thermostat" [ id="..." ]
valve valveoffice "Valve in office" [ id="..." ]
}
room office "Office" [ id="..." ]
}
}
# items/netatmo.items
// Indoor Module
Number:Temperature Indoor_Temp "Temperature [%.1f %unit%]" <temperature> { channel = "netatmo:weather-station:myaccount:inside:temperature#value" }
Number:Temperature Indoor_Min_Temp "Min Temperature Today [%.1f %unit%]" <temperature> { channel = "netatmo:weather-station:myaccount:inside:temperature#min-today" }
Number:Temperature Indoor_Max_Temp "Max Temperature Today [%.1f %unit%]" <temperature> { channel = "netatmo:weather-station:myaccount:inside:temperature#max-today" }
Number:Dimensionless Indoor_Humidity "Humidity [%d %unit%]" <humidity> { channel = "netatmo:weather-station:myaccount:inside:humidity#value" }
Number Indoor_Humidex "Humidex [%.0f]" <temperature_hot> { channel = "netatmo:weather-station:myaccount:inside:humidity#humidex" }
Number:Temperature Indoor_HeatIndex "HeatIndex [%.1f %unit%]" <temperature_hot> { channel = "netatmo:weather-station:myaccount:inside:temperature#heat-index" }
Number:Temperature Indoor_Dewpoint "Dewpoint [%.1f %unit%]" <temperature_cold> { channel = "netatmo:weather-station:myaccount:inside:temperature#dewpoint" }
Number:Temperature Indoor_DewpointDepression "DewpointDepression [%.1f %unit%]" <temperature_cold> { channel = "netatmo:weather-station:myaccount:inside:temperature#dewpoint-depression" }
Number:Dimensionless Indoor_Co2 "CO2 [%d %unit%]" <carbondioxide> { channel = "netatmo:weather-station:myaccount:inside:airquality#co2" }
Number:Pressure Indoor_Pressure "Pressure [%.1f %unit%]" <pressure> { channel = "netatmo:weather-station:myaccount:inside:pressure#value" }
Number:Pressure Indoor_AbsolutePressure "AbsolutePressure [%.1f %unit%]" <pressure> { channel = "netatmo:weather-station:myaccount:inside:pressure#absolute" }
Number:Dimensionless Indoor_Noise "Noise [%d %unit%]" <soundvolume> { channel = "netatmo:weather-station:myaccount:inside:noise#value" }
Number Indoor_RadioStatus "RadioStatus [%s]" <signal> { channel = "netatmo:weather-station:myaccount:inside:signal#strength" }
DateTime Indoor_TimeStamp "TimeStamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM]" <calendar> { channel = "netatmo:weather-station:myaccount:inside:timestamp#measures" }
DateTime Indoor_LastSeen "LastSeen [%1$td.%1$tm.%1$tY %1$tH:%1$tM]" <text> { channel = "netatmo:weather-station:myaccount:inside:timestamp#last-seen" }
// Outdoor Module
Number:Temperature Outdoor_Temperature "Temperature [%.1f %unit%]" <temperature> { channel = "netatmo:outdoor:myaccount:inside:outside:temperature#value" }
String Outdoor_TempTrend "TempTrend [%s]" <line> { channel = "netatmo:outdoor:myaccount:inside:outside:temperature#trend" }
Number:Dimensionless Outdoor_Humidity "Humidity [%d %unit%]" <humidity> { channel = "netatmo:outdoor:myaccount:inside:outside:humidity#value" }
Number Outdoor_Humidex "Humidex [%.0f]" <temperature_hot> { channel = "netatmo:outdoor:myaccount:inside:outside:humidity#humidex" }
Number:Temperature Outdoor_HeatIndex "heat-index [%.1f %unit%]" <temperature_hot> { channel = "netatmo:outdoor:myaccount:inside:outside:temperature#heat-index" }
Number:Temperature Outdoor_Dewpoint "Dewpoint [%.1f %unit%]" <temperature_cold> { channel = "netatmo:outdoor:myaccount:inside:outside:temperature#dewpoint" }
Number:Temperature Outdoor_DewpointDepression "DewpointDepression [%.1f %unit%]" <temperature_cold> { channel = "netatmo:outdoor:myaccount:inside:outside:temperature#dewpoint-depression" }
Number Outdoor_RadioStatus "RfStatus [%.0f / 5]" <signal> { channel = "netatmo:outdoor:myaccount:inside:outside:signal#strength" }
Switch Outdoor_LowBattery "LowBattery [%s]" <siren> { channel = "netatmo:outdoor:myaccount:inside:outside:battery#low-battery" }
DateTime Outdoor_TimeStamp "Measures TimeStamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM]" <calendar> { channel = "netatmo:outdoor:myaccount:inside:outside:timestamp#measures" }
DateTime Outdoor_LastMessage "LastMessage [%1$td.%1$tm.%1$tY %1$tH:%1$tM]" <text> { channel = "netatmo:outdoor:myaccount:inside:outside:timestamp#last-seen" }
// Rain Module
Number:Speed Rain_Intensity "Rain Intensity [%.1f %unit%]" <rain> { channel = "netatmo:rain:myaccount:inside:rainModule:rain#value"}
Number:Length Rain_Hour "Rain Last Hour [%.1f %unit%]" <rain> { channel = "netatmo:rain:myaccount:inside:rainModule:rain#sum-1"}
Number:Length Rain_Today "Rain Today [%.1f %unit%]" <rain> { channel = "netatmo:rain:myaccount:inside:rainModule:rain#sum-24"}
// Camera
Switch CameraMonitoring "Monitoring" <switch> { channel = "netatmo:welcome:myaccount:myhome:mycam:status#monitoring", autoupdate="false" }
String CameraAlimState "Alim State [%s]" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:status#alim" }
String CameraSDCardState "SD Card State [%s]" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:status#sd-card" }
Image CameraLiveSnapshot "Live Snapshot" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:live#picture" }
String CameraLiveStreamLocalUrl "Live Video Stream [%s]" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:live#local-stream-url" }
String CameraLiveStreamVpnUrl "Live Video Stream [%s]" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:live#vpn-stream-url" }
Number CameraWifiStrength "Wi-Fi Strength [%s]" <wifi> { channel = "netatmo:welcome:myaccount:myhome:mycam:signal#strength" }
DateTime CameraEventTime "Event Timestamp [%1$tb %1$td %1$tH:%1$tM]" <time> { channel = "netatmo:welcome:myaccount:myhome:mycam:last-event#time" }
String CameraEventType "Event Type [%s]" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:last-event#type" }
String CameraEventMessage "Event Message [%s]" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:last-event#message" }
Image CameraEventSnapshot "Event Snapshot" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:last-event#snapshot" }
String CameraEventStreamLocalUrl "Event Video Stream [%s]" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:last-event#local-video-url" }
String CameraEventStreamVpnUrl "Event Video Stream [%s]" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:last-event#vpn-video-url" }
String CameraEventVideoStatus "Video Status [%s]" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:last-event#video-status" }
String CameraEventPersonId "Person Id [%s]" <none> { channel = "netatmo:welcome:myaccount:myhome:mycam:last-event#person-id" }
# sitemaps/netatmo.sitemap
sitemap netatmo label="Netatmo" {
Frame label="Indoor" {
Text item=Indoor_Temp
Text item=Indoor_Min_Temp
Text item=Indoor_Max_Temp
Text item=Indoor_Min_Temp_TS
Text item=Indoor_Max_Temp_TS
Text item=Indoor_Humidity
Text item=Indoor_Humidex valuecolor=[<20.1="green",<29.1="blue",<28.1="yellow",<45.1="orange",<54.1="red",>54.1="maroon"]
Text item=Indoor_HeatIndex
Text item=Indoor_Dewpoint
Text item=Indoor_DewpointDepression
Text item=Indoor_Co2 valuecolor=[<800="green",<1000="orange",<1400="red",>1399="maroon"]
Text item=Indoor_Pressure
Text item=Indoor_AbsolutePressure
Text item=Indoor_Noise
Text item=Indoor_WifiStatus
Text item=Indoor_TimeStamp
Text item=Indoor_LastSeen
}
Frame label="Outdoor" {
Text item=Outdoor_Temperature
Text item=Outdoor_TempTrend
Text item=Outdoor_Humidity
Text item=Outdoor_Humidex valuecolor=[<20.1="green",<29.1="blue",<28.1="yellow",<45.1="orange",<54.1="red",>54.1="maroon"]
Text item=Outdoor_HeatIndex
Text item=Outdoor_Dewpoint
Text item=Outdoor_DewpointDepression
Text item=Outdoor_RadioStatus
Text item=Outdoor_LowBattery
Text item=Outdoor_BatteryVP
Text item=Outdoor_TimeStamp
Text item=Outdoor_LastMessage
}
Frame label="Rain" {
Text item=Rain_Intensity
Text item=Rain_Hour
Text item=Rain_Today
Text item=Rain_Week
Text item=Rain_Month
Text item=Rain_BatteryVP
}
Frame label="Camera" icon="camera" {
Switch item=CameraMonitoring
Text item=CameraAlimState
Text item=CameraSDCardState
Text item=CameraWifiStrength
Image item=CameraLiveSnapshot
Text label="Live (local)" icon="none" {
Video url="xxxxxx" item=CameraLiveStreamLocalUrl encoding="HLS"
}
Text label="Live (VPN)" icon="none" {
Video url="xxxxxx" item=CameraLiveStreamVpnUrl encoding="HLS"
}
Text label="Last event" icon="none" {
Text item=CameraEventTime
Text item=CameraEventType
Text item=CameraEventMessage
Text item=CameraEventPersonId
Image item=CameraEventSnapshot
Text item=CameraEventVideoStatus
Text label="Video (local)" icon="none" {
Video url="xxxxxx" item=CameraEventStreamLocalUrl encoding="HLS"
}
Text label="Video (VPN)" icon="none" {
Video url="xxxxxx" item=CameraEventStreamVpnUrl encoding="HLS"
}
}
}
}
# Example Rules
rule "Notification on home web hook event"
when
Channel "netatmo:home:mybridgeid:myclientid:home-event" triggered
then
logInfo("camera", "Received web hook on home level")
end
rule "Notification on camera web hook event"
when
Channel "netatmo:presence:mybridgeid:myclientid:mythingid:home-event" triggered
then
logInfo("camera", "Received web hook on camera level")
end
# Rule Actions
Multiple actions are supported by this binding. In classic rules these are accessible as shown in this example (adjust getActions with your ThingId):
Example
val actions = getActions("netatmo","netatmo:room:myaccount:myhome:livingroom")
if(null === actions) {
logInfo("actions", "Actions not found, check thing ID")
return
}
# setThermRoomTempSetpoint(temp,endtime)
Sends a temperature setpoint (and switch to manual mode) to the thermostat for a room with an end time.
Parameters:
Name | Description |
---|---|
temp | The temperature setpoint. |
endtime | Time the setpoint should end (Local Unix time in seconds). |
Example:
actions.setThermRoomTempSetpoint(19.0, 1654387205)
# setThermRoomModeSetpoint(mode,endtime)
Sends a mode to the thermostat for a room with an optional end time.
Parameters:
Name | Description |
---|---|
mode | The mode to set: MANUAL, MAX or HOME. |
endtime | Time the setpoint should end (Local Unix time in seconds). |
Example:
actions.setThermRoomModeSetpoint("MANUAL", 1654387205)
actions.setThermRoomModeSetpoint("HOME", null)
# Sample data
If you want to evaluate this binding but have not got a Netatmo station yourself yet, you can search on the web for a publicly shared weather station.
# Icons
The following icons are used by original Netatmo web app:
# Modules
https://my.netatmo.com/images/my/app/module_int.png
https://my.netatmo.com/images/my/app/module_ext.png
https://my.netatmo.com/images/my/app/module_rain.png
# Battery status
https://my.netatmo.com/images/my/app/battery_verylow.png
https://my.netatmo.com/images/my/app/battery_low.png
https://my.netatmo.com/images/my/app/battery_medium.png
https://my.netatmo.com/images/my/app/battery_high.png
https://my.netatmo.com/images/my/app/battery_full.png
# Signal status
https://my.netatmo.com/images/my/app/signal_verylow.png
https://my.netatmo.com/images/my/app/signal_low.png
https://my.netatmo.com/images/my/app/signal_medium.png
https://my.netatmo.com/images/my/app/signal_high.png
https://my.netatmo.com/images/my/app/signal_full.png
# Wifi status
https://my.netatmo.com/images/my/app/wifi_low.png
https://my.netatmo.com/images/my/app/wifi_medium.png
https://my.netatmo.com/images/my/app/wifi_high.png
https://my.netatmo.com/images/my/app/wifi_full.png