Netatmo Weather Station integration


Netatmo Weather Station is a popular weather station that provides us with information such as indoor and outdoor temperature, atmospheric pressure, CO2 level, humidity etc.

In this tutorial, integration with Grenton system is shown.

For the integration, it is required to obtain a token to authorize the sent request for measurements.

In the first step, install the weather station and create an account at:

Once the account is active and the station returns measurements as below, you can move on to the next steps.

1. Token retrieving

Instructions for obtaining the token are available at:

In the first step, create an application (, where you can find the client ID and client secret, which will be needed in the further steps.

Pay attention on redirect URI field - fill it with

To obtain a token, a request must be sent. This can be done using a browser or Postman.


The data that the request should contain:


Path: /oauth2/token 


- client_id - taken from App Technical Parameters

- client_secret - taken from App Technical Parameters 

- grant_type - password

- username - user name

- password - user password

Below is an example of a request and respond in Postman:

In response, there are:

- access token

- refresh token

- time after which the token will expire

2. Data retrieving 

Once you have the token, proceed to create the configuration on the HTTP Gate module.

In the first step, create a HttpRequest virtual object.


Path: /api/getstationsdata

Then prepare a script (netatmo_initial) that will execute the SendRequest method with the MAC address of the station and the current token. 

local params="device_id=70%3Aeg%3A52%3A33%3A8f%3A73&get_favorites=false"
local key="Authorization: Bearer **************|***************** \r\n"


In this example, MAC adres is 70:EG:52:33:8F:73 and is located in this line:

local params="device_id=70%3Aeg%3A52%3A33%3A8f%3A73&get_favorites=false"

the ":" mark is replaced with %3A,

If MAC address contains letters, in this script you need to use small letters (the big letters are reserved for %3A).

Paste your token to:

local key="Authorization: Bearer your token \r\n" 

Now, prepare the user features to which you will save the responses:

The last step is to create a script (netatmo_stationdata_response) that will pass the response to the user features. 

local resp = Gate_HTTP->NetAtmo_Request_StationData->ResponseBody 




Assign it to the OnResponse event of NetAtmo_Request_StationData virtual object.

When the script (netatmo_initial) is called, the values of user features are updated:

3. Token refreshing

The token expires after 10800s, so it needs to be updated periodically. For this purpose, it is useful to prepare a mechanism that will do this.

Below is an example of how it can be done.

Create a user feature whose initial value is refresh_token (found as a response in Postman):

And the feature to which you will pass the current token:

Then prepare a script (netatmo_refresh_token) where you enter client_id and client_secret.

local content = "&grant_type=refresh_token&refresh_token=" .. Gate_HTTP->refresh_token_netatmo .. "&client_id=620222ce0bc059762b5d5864&client_secret=sAixsO4MywWhymnYi7OqZcODm6PxM5cFtm9zgj1k0Rk"



In the next step, create a HttpRequest virtual object.


Path: /oauth2/token

 Assign the modified script (netatmo_initial) to the OnResponse event :

The modified script (netatmo_initial):

local resp = Gate_HTTP->NetAtmo_Request_Token->ResponseBody 

local params="device_id=70%3AEG%3A52%3A33%3A8F%3A73&get_favorites=false"
local key="Authorization: Bearer ".. Gate_HTTP->access_token.."  \r\n"


To continuously update the token, it is a good idea to create a Timer virtual object that will periodically run a script (netatmo_refresh_token).