Here is a LUA script to collect data from the REST API Netatmo to my Vera. At the moment a single script pushes all the data in a Vcontainer.
http://forum.netatmo.com/viewtopic.php?f=5&t=1026&sid=ddb92e4b8e5fbd371c15d0e30deec1ee
http://www.touteladomotique.com/forum/viewtopic.php?f=48&t=9905&p=80350#p80350
------------------------------------------------------------------------
-- NAME: netatmo-vera.lua
-- AUTHOR: S?bastien Joly
-- DATE : 29/01/2013
-- COMMENT: Collecter les donn?es d'une station Netatmo
------------------------------------------------------------------------
-- MODIFIER LES ELEMENTS D'AUTHENTIFICATION PAR VOS DONNEES
------------------------------------------------------------------------
local s_client_id = "XXXXXX"
local s_client_secret = "XXXXXX"
local s_username = "XXXXXX"
local s_password = "XXXXXX"
------------------------------------------------------------------------
local request_body = "grant_type=password&client_id=" .. s_client_id .."&client_secret=" .. s_client_secret .. "&username=" .. s_username .. "&password=" .. s_password
------------------------------------------------------------------------
-- LIBRAIRIES
------------------------------------------------------------------------
require 'ltn12'
require 'socket.http'
json = require("json")-- PAS NATIF SUR LA VERA
------------------------------------------------------------------------
-- FONCTION HTTP POST
------------------------------------------------------------------------
function posthttp(p_url,p_body)
local response_body = { }
local res, code, response_headers = socket.http.request
{
url = p_url;
method = "POST";
headers =
{
["Content-Type"] = "application/x-www-form-urlencoded";
["Content-Length"] = #p_body;
};
source = ltn12.source.string(p_body);
sink = ltn12.sink.table(response_body);
}
return json.decode(table.concat(response_body),true)
end
------------------------------------------------------------------------
-- PROCEDURE
------------------------------------------------------------------------
reponsepost = posthttp("https://api.netatmo.net/oauth2/token",request_body)
access_token = reponsepost.access_token
reponsepost = posthttp("https://api.netatmo.net/api/devicelist","access_token=" .. access_token)
module_interne = reponsepost.body.devices[1]._id
module_externe = reponsepost.body.modules[1]._id
reponsepost = posthttp("https://api.netatmo.net/api/getmeasure","access_token=" ..access_token .."&device_id=" .. module_interne .. "&scale=max&type=Temperature,CO2,Humidity,Pressure,Noise&date_end=last")
luup.log ("---------------")
temperature_interieure =reponsepost.body[1].value[1][1]
co2 =reponsepost.body[1].value[1][2]
humidite_interne =reponsepost.body[1].value[1][3]
pression =reponsepost.body[1].value[1][4]
bruit =reponsepost.body[1].value[1][5]
luup.log(temperature_interieure)
luup.log (co2)
luup.log (humidite_interne)
luup.log (pression)
luup.log (bruit)
reponsepost = posthttp("https://api.netatmo.net/api/getmeasure","access_token=" ..access_token .."&device_id=" .. module_interne .. "&module_id=" .. module_externe .. "&scale=max&type=Temperature,Humidity&date_end=last")
temperature_externe =reponsepost.body[1].value[1][1]
humidite_externe =reponsepost.body[1].value[1][2]
luup.log(temperature_externe)
luup.log (humidite_externe)
luup.log ("---------------")
------------------------------------------------------------------------
-- CHARGEMENT DES VARIABLES LOCALES DANS LES DEUX VCONTAINER
------------------------------------------------------------------------
local SID_Vc = "urn:upnp-org:serviceId:VContainer1"
local ID_modint = 34 -- pour ma vera Module int?rieur VC ID #34
local ID_modext = 35 -- pour ma vera Module ext?rieur VC ID #35
if (status == 0) then
local currentTime = os.date("*t")
currentTime = currentTime.hour .. ":" .. currentTime.min
luup.variable_set(SID_Vc, "VariableName3","Heure", ID_modext)
luup.variable_set(SID_Vc, "Variable3", currentTime, ID_modext)
-- temperature exterieure
luup.variable_set(SID_Vc, "VariableName1","Temp?rature", ID_modext)
luup.variable_set(SID_Vc, "Variable1", temperature_externe, ID_modext)
-- humidite exterieure
luup.variable_set(SID_Vc, "VariableName2","Humidit?", ID_modext)
luup.variable_set(SID_Vc, "Variable2", humidite_externe, ID_modext)
-- temperature interieure
luup.variable_set(SID_Vc, "VariableName1","Temp?rature ?C", ID_modint)
luup.variable_set(SID_Vc, "Variable1", temperature_interieure, ID_modint)
-- Humidite interieure
luup.variable_set(SID_Vc, "VariableName2","Humidit? %", ID_modint)
luup.variable_set(SID_Vc, "Variable2", humidite_interne, ID_modint)
-- Pression
luup.variable_set(SID_Vc, "VariableName3","Pression Hpa", ID_modint)
luup.variable_set(SID_Vc, "Variable3", pression , ID_modint)
-- CO?
luup.variable_set(SID_Vc, "VariableName4","CO2 PPM", ID_modint)
luup.variable_set(SID_Vc, "Variable4", co2, ID_modint)
-- Bruit
luup.variable_set(SID_Vc, "VariableName5","Bruit db", ID_modint)
luup.variable_set(SID_Vc, "Variable5", bruit, ID_modint)
end
------------------------------------------------------------------------
-- FIN
------------------------------------------------------------------------