This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Netatmo
#2
(13.07.2015, 21:43)Matt Wrote: Updated version of Netatmo script with HTTPS (http is not allowed by netatmo anymore)

Code:
require 'ltn12'
require 'socket.http'
json = require("json")
https = require 'ssl.https'

function refresh_netatmo()
 local netatmo_debug = false
 local client_id = ""
 local client_secret = ""
 local username = ""
 local password = ""
 local scope = "read_station"
 -- optional
 --local device_id = ""
 local request_token_url = "https://api.netatmo.net/oauth2/token"
 local request_device_list = "https://api.netatmo.net/api/devicelist"
 local response_body = { }

 if (netatmo_debug) then
   alert("netatmo start")
 end
 
 local request_body = "grant_type=password&client_id=" .. client_id .."&client_secret=" .. client_secret .. "&username=" .. username .. "&password=" .. password .. "&scope=" .. scope

 local body, code, hdrs, stat = https.request
 {
   url = request_token_url;
   method = "POST";
   headers =
   {
     ["Content-Type"] = "application/x-www-form-urlencoded";
     ["Content-Length"] = #request_body;
   };
   source = ltn12.source.string(request_body);
   sink = ltn12.sink.table(response_body);
 }

 if (code ~= 200) then
   alert("netatmo auth error")
    error("netatmo auth error : "..tostring(code)..","..tostring(body))
   return
 end

 local response_decode = json.decode(table.concat(response_body))
 local access_token = response_decode.access_token
 if (netatmo_debug) then
   alert("netatmo token %s",access_token)
 end

 
 local request_body = "access_token=" .. access_token .. "&app_type=app_station"
 -- to limit to only one device :
--  local request_body = "access_token=" .. access_token .. "&app_type=app_station&device_id=" .. device_id
 
 local response_body = { }

 local body, code, hdrs, stat = https.request
 {
   url = request_device_list;
   method = "POST";
   headers =
   {
     ["Content-Type"] = "application/x-www-form-urlencoded";
     ["Content-Length"] = #request_body;
   };
   source = ltn12.source.string(request_body);
   sink = ltn12.sink.table(response_body);
 }

 if (code ~= 200) then
   error("netatmo devicelist error")
   return
 end

 local response_decode = json.decode(table.concat(response_body))

 -- Module int
 if (netatmo_debug) then
   alert("netatmo device 1")
 end

 grp.write("Netatmo Température intérieure",response_decode.body.devices[1].dashboard_data.Temperature,dt.float16)
 grp.write("Netatmo Humidité intérieure",response_decode.body.devices[1].dashboard_data.Humidity,dt.scale)
 grp.write("Netatmo Pression",response_decode.body.devices[1].dashboard_data.Pressure,dt.uint16)
 grp.write("Netatmo CO2",response_decode.body.devices[1].dashboard_data.CO2,dt.uint16)
 grp.write("Netatmo Sonomètre",response_decode.body.devices[1].dashboard_data.Noise,dt.uint8)
 grp.write("Netatmo Température intérieure minimum",response_decode.body.devices[1].dashboard_data.min_temp,dt.float16)
 grp.write("Netatmo Température intérieure maximum",response_decode.body.devices[1].dashboard_data.max_temp,dt.float16)
 grp.write("Netatmo Pression absolue",response_decode.body.devices[1].dashboard_data.AbsolutePressure,dt.uint16)
 
 -- Module ext
 if (netatmo_debug) then
   alert("netatmo module 1")
 end

 grp.write("Netatmo Température extérieure",response_decode.body.modules[1].dashboard_data.Temperature,dt.float16)
 grp.write("Netatmo Humidité extérieure",response_decode.body.modules[1].dashboard_data.Humidity,dt.float16)
 grp.write("Netatmo Température extérieure minimum",response_decode.body.modules[1].dashboard_data.min_temp,dt.float16)
 grp.write("Netatmo Température extérieure maximum",response_decode.body.modules[1].dashboard_data.max_temp,dt.float16)
 
 -- Module Pluvio
 if (netatmo_debug) then
   alert("netatmo module 2")
 end  
 
 grp.write("Netatmo Pluviomètre",response_decode.body.modules[2].dashboard_data.Rain,dt.float16)
 grp.write("Netatmo Pluviomètre 1h",response_decode.body.modules[2].dashboard_data.sum_rain_1,dt.float16)
 grp.write("Netatmo Pluviomètre 24h",response_decode.body.modules[2].dashboard_data.sum_rain_24,dt.float16)

 
 if (netatmo_debug) then
   alert("netatmo end")
 end
 
end

Matthieu

Thx Matt
Reply


Messages In This Thread
Netatmo - by Matt - 13.07.2015, 21:43
RE: Netatmo - by George - 16.08.2015, 10:59
RE: Netatmo - by gjniewenhuijse - 04.01.2016, 15:24
RE: Netatmo - by Matt - 04.01.2016, 21:10
RE: Netatmo - by gjniewenhuijse - 11.01.2016, 14:59
RE: Netatmo - by Matt - 11.01.2016, 20:38
RE: Netatmo - by gjniewenhuijse - 12.02.2016, 06:40
RE: Netatmo - by buuuudzik - 22.08.2016, 11:46
RE: Netatmo - by admin - 12.02.2016, 07:09
RE: Netatmo - by Matt - 12.02.2016, 07:37
RE: Netatmo - by gjniewenhuijse - 12.02.2016, 09:20
RE: Netatmo - by gjniewenhuijse - 23.02.2016, 07:05
RE: Netatmo - by buuuudzik - 11.05.2016, 12:02
RE: Netatmo - by admin - 11.05.2016, 12:38
RE: Netatmo - by buuuudzik - 11.05.2016, 13:59
RE: Netatmo - by Peter - 17.05.2016, 21:57
RE: Netatmo - by Matt - 18.05.2016, 10:27
RE: Netatmo - by admin - 24.08.2016, 11:25
RE: Netatmo - by buuuudzik - 24.08.2016, 13:16
RE: Netatmo - by gjniewenhuijse - 10.10.2017, 08:20
RE: Netatmo - by Slok - 15.10.2017, 06:53
RE: Netatmo - by Evens - 14.10.2018, 16:03
RE: Netatmo - by Matt - 20.10.2018, 20:09
RE: Netatmo - by Peter - 29.12.2018, 23:46
RE: Netatmo - by paalidar - 30.01.2019, 17:56
RE: Netatmo - by Matt - 30.01.2019, 20:11
RE: Netatmo - by paalidar - 30.01.2019, 20:15
RE: Netatmo - by Erwin van der Zwart - 30.01.2019, 21:27
RE: Netatmo - by victor.back - 26.09.2020, 10:58
RE: Netatmo - by pioneersteffen - 14.09.2021, 19:48
RE: Netatmo - by Daniel - 15.09.2021, 07:35
RE: Netatmo - by pioneersteffen - 15.09.2021, 11:00
RE: Netatmo - by stemic01 - 10.02.2022, 20:32
RE: Netatmo - by Erwin van der Zwart - 11.02.2022, 00:22
RE: Netatmo - by stemic01 - 11.02.2022, 12:08
RE: Netatmo - by iridium - 13.07.2023, 09:53
RE: Netatmo - by gjniewenhuijse - 13.07.2023, 13:41
RE: Netatmo - by admin - 14.07.2023, 08:46
RE: Netatmo - by gjniewenhuijse - 14.07.2023, 11:52
RE: Netatmo - by gjniewenhuijse - 17.07.2023, 13:40
RE: Netatmo - by iridium - 18.07.2023, 07:26
RE: Netatmo - by stemic01 - 20.07.2023, 08:28
RE: Netatmo - by gjniewenhuijse - 21.07.2023, 06:44
RE: Netatmo - by stemic01 - 03.08.2023, 20:45
RE: Netatmo - by Daniel - 04.08.2023, 07:30
RE: Netatmo - by stemic01 - 04.08.2023, 08:35
RE: Netatmo - by Daniel - 04.08.2023, 09:05
RE: Netatmo - by MLa - 04.08.2023, 10:34
RE: Netatmo - by stigen - 23.11.2023, 14:35
RE: Netatmo - by pioneersteffen - 23.12.2023, 14:13

Forum Jump: