openhab-docs/_bindings/netatmo/readme.md

321 lines
8.7 KiB
Markdown

---
id: netatmo
label: Netatmo
title: Netatmo - Bindings
type: binding
description: "The Netatmo binding integrates the following Netatmo products:"
since: 2x
logo: images/addons/netatmo.png
install: auto
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# 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.
See http://www.netatmo.com/ for details on their product.
## Binding Configuration
The binding has no configuration options itself, all configuration is done at 'Things' level but before, you'll have to grant openHab to access Netatmo API. Here is the procedure:
### 1. Application Creation
Create an application at https://dev.netatmo.com/dev/createapp
The variables you'll need to get to setup the binding are:
* `<CLIENT_ID>` Your client ID taken from your App at https://dev.netatmo.com/dev/listapps
* `<CLIENT_SECRET>` A token provided along with the `<CLIENT_ID>`.
* `<USERNAME>` The username you use to connect to the Netatmo API (usually your mail address).
* `<PASSWORD>` The password attached to the above username.
## 2. Bridge and Things Configuration
Once you'll get needed informations from the Netatmo API, you'll be able to configure bridge and things.
E.g.
```
Bridge netatmo:netatmoapi:home [ clientId="<CLIENT_ID>", clientSecret="<CLIENT_SECRET>", username = "<USERNAME>", password = "<PASSWORD>", readStation=true|false, readThermostat=true|false] {
Thing NAMain inside [ equipmentId="aa:aa:aa:aa:aa:aa", [refreshInterval=60000] ]
Thing NAModule1 outside [ equipmentId="yy:yy:yy:yy:yy:yy", parentId="aa:aa:aa:aa:aa:aa" ]
Thing NAPlug plugtherm [ equipmentId="bb:bb:bb:bb:bb:bb", [refreshInterval=60000] ]
Thing NATherm1 thermostat [ equipmentId="xx:xx:xx:xx:xx:xx", parentId="bb:bb:bb:bb:bb:bb" ]
...
}
```
### Configure Things
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. Get the IDs of your devices (indoor, outdoor, rain gauge) [here](https://dev.netatmo.com/doc/methods/devicelist).
`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"
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 don't manually create things in the *.things file, the Netatmo Binding is able to discover automatically all depending modules and devices from Netatmo website.
## Channels
### Weather Station Main Indoor Device
Example item for the **indoor module**:
```
Number Netatmo_Indoor_CO2 "CO2" <carbondioxide> { channel = "netatmo:NAMain:home:inside:Co2" }
```
**Supported types for the indoor module:**
* Temperature
* TemperatureTrend
* Humidity
* Co2
* Pressure
* PressureTrend
* AbsolutePressure
* Noise
* HeatIndex
* Humidex
* Dewpoint
* DewpointDepression
* WifiStatus
* Location
* TimeStamp
* LastStatusStore
### Weather Station Outdoor module
Example item for the **outdoor module**
```
Number Netatmo_Outdoor_Temperature "Temperature" { channel = "netatmo:NAModule1:home:outside:Temperature" }
```
**Supported types for the outdoor module:**
* Temperature
* TemperatureTrend
* Humidity
* RfStatus
* BatteryVP
* TimeStamp
* Humidex
* HeatIndex
* Dewpoint
* DewpointDepression
* LastMessage
* LowBattery
### Weather Station Additional Indoor module
Example item for the **indoor module**
```
Number Netatmo_Indoor2_Temperature "Temperature" { channel = "netatmo:NAModule4:home:insidesupp:Temperature" }
```
**Supported types for the additional indoor module:**
* Co2
* Temperature
* Humidity
* RfStatus
* BatteryVP
* TimeStamp
* Humidex
* HeatIndex
* Dewpoint
* DewpointDepression
* LastMessage
* LowBattery
### Rain
Example item for the **rain gauge**
```
Number Netatmo_Rain_Current "Rain [%.1f mm]" { channel = "netatmo:NAModule3:home:rain:Rain" }
```
**Supported types for the rain guage:**
* Rain
* Rain1
* Rain24
* RfStatus
* BatteryVP
* LastMessage
* LowBattery
### Weather Station Wind module
Example item for the **wind module**:
```
Number Netatmo_Wind_Strength "Wind Strength [%.0f KPH]" { channel = "netatmo:NAModule2:home:wind:WindStrength" }
```
**Supported types for the wind module:**
* WindStrength
* WindAngle
* GustStrength
* GustAngle
* LastMessage
* LowBattery
* RfStatus
* BatteryVP
### Thermostat Relay Device
**Supported types for the thermostat relay device:**
* LastStatusStore
* WifiStatus
* Location
### Thermostat Module
**Supported types for the thermostat module:**
* Temperature
* SetpointTemperature
* SetpointMode
* BoilerOn
* BoilerOff
* TimeStamp
# Common problems
## Missing Certificate Authority
This version of the binding has been modified to avoid the need to impoort StartCom certificate in the local JDK certificate store.
```
javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException:
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
```
can be solved by installing the StartCom CA Certificate into the local JDK like this:
* Download the certificate from https://www.startssl.com/certs/ca.pem or use wget https://www.startssl.com/certs/ca.pem
* Then import it into the keystore (the password is "changeit")
```
$JAVA_HOME/bin/keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -alias StartCom-Root-CA -file ca.pem
```
If `$JAVA_HOME` is not set then run the command:
```
update-alternatives --list java
```
This should output something similar to:
```
/usr/lib/jvm/java-8-oracle/jre/bin/java
```
Use everything before /jre/... to set the JAVA_HOME environment variable:
```
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
```
After you set the environment variable, try:
```
ls -l $JAVA_HOME/jre/lib/security/cacerts
```
If it's set correctly then you should see something similar to:
```
-rw-r--r-- 1 root root 101992 Nov 4 10:54 /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
```
Now try and rerun the keytool command. If you didn't get errors, you should be good to go [source](http://jinahya.wordpress.com/2013/04/28/installing-the-startcom-ca-certifcate-into-the-local-jdk/).
Alternative approach if above solution does not work:
```
sudo keytool -delete -alias StartCom-Root-CA -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
```
Download the certificate from https://api.netatmo.net to `$JAVA_HOME/jre/lib/security/` and save it as api.netatmo.net.crt (X.509 / PEM).
```
sudo $JAVA_HOME/bin/keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -alias StartCom-Root-CA -file api.netatmo.net.crt
```
The password is "changeit".
# Sample data
If you want to evaluate this binding but have not got a Netatmo station yourself
yet, you can add the Netatmo office in Paris to your account:
http://www.netatmo.com/en-US/addguest/index/TIQ3797dtfOmgpqUcct3/70:ee:50:00:02:20
# Icons
The following icons are used by original Netatmo web app:
## Modules
- http://my.netatmo.com/img/my/app/module_int.png
- http://my.netatmo.com/img/my/app/module_ext.png
- http://my.netatmo.com/img/my/app/module_rain.png
## Battery status
- http://my.netatmo.com/img/my/app/battery_verylow.png
- http://my.netatmo.com/img/my/app/battery_low.png
- http://my.netatmo.com/img/my/app/battery_medium.png
- http://my.netatmo.com/img/my/app/battery_high.png
- http://my.netatmo.com/img/my/app/battery_full.png
## Signal status
- http://my.netatmo.com/img/my/app/signal_verylow.png
- http://my.netatmo.com/img/my/app/signal_low.png
- http://my.netatmo.com/img/my/app/signal_medium.png
- http://my.netatmo.com/img/my/app/signal_high.png
- http://my.netatmo.com/img/my/app/signal_full.png
## Wifi status
- http://my.netatmo.com/img/my/app/wifi_low.png
- http://my.netatmo.com/img/my/app/wifi_medium.png
- http://my.netatmo.com/img/my/app/wifi_high.png
- http://my.netatmo.com/img/my/app/wifi_full.png