Conserver l’historique d’une sonde.
Xively graphiques de sondes
Il faut créer un compte sur www.xively.com
Puis déclarer un Datastream : ex : VERA
Récupérer la clé.
Le numéro du Datastream (ici 804935937) est à mettre dans le code de la scéne (voir plus bas).
Ajouter un Feed (exemple : Temperature_Salon)
Temperature_Salon est le nom du Feed.
Sur la VERA
Develop APPS
Dans Edit Startup Lua
Ajouter le code de la fonction suivante
function my_send_pachube (feed, datastream, value)
local apikey = " ----- Mettre la clé ici ----- "
local base_url = "http://api.xively.com/v2/feeds/"
local method = "PUT"
require('ltn12')
local socket = require("socket")
local http = require("socket.http")
local json_data = '{ "version":"1.0.0","datastreams":[ {"id":"' .. datastream .. '", "current_value":"' .. value .. '"}]}'
local response_body = {}
local response, status, header = http.request{
method = method,
url = base_url .. feed,
headers = {
["Content-Type"] = "application/json",
["Content-Length"] = string.len(json_data),
["X-PachubeApiKey"] = apikey
},
source = ltn12.source.string(json_data),
sink = ltn12.sink.table(response_body)
}
if status == 200 then
return true
end
end
Créer une scène qui tourne toutes les 10 mn.
Récupérer le nom de la variable de la sonde et le nom de la variable valeur :
Nom de la variable : urn:upnp-org:serviceId:TemperatureSensor1
Valeur de la variable : CurrentTemperature
Mettre le nom du Datastream et celui du Feed.
Puis mettre dans le LUUP.
Pour la température
local Tid = {id_Tcuis, id_Tsalon, id_Tsdbb, id_Tparents, id_Ttony, id_Text, id_Tsdbh, id_Twc, id_Tchiens} local TName = {"T_Cuisine", "T_Salon", "T_SdB_Bas", "T_Ch_Parents", "T_Ch_Tony", "T_Exterieur", "T_SdB_Haut", "T_wc", "T_chiens"} local feeds = "" local nbfeeds= 0 local value="" value = tonumber(value) for i,id in ipairs(Tid) do value = luup.variable_get("urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", id) value = tonumber(value) nbfeeds=nbfeeds+1 feeds=feeds.."&f"..nbfeeds.."="..TName[i].."&v"..nbfeeds.."="..value end local resultat = my_graph_sensor_multi("feeds="..nbfeeds..feeds) return true
Pour l’humiditée
local Tid = { id_Hext} local TName = { "H_Exterieur"} local feeds = "" local nbfeeds= 0 local value="" value = tonumber(value) for i,id in ipairs(Tid) do value = luup.variable_get("urn:micasaverde-com:serviceId:HumiditySensor1", "CurrentLevel", id) value = tonumber(value) nbfeeds=nbfeeds+1 feeds=feeds.."&f"..nbfeeds.."="..TName[i].."&v"..nbfeeds.."="..value end local resultat = my_graph_sensor_multi("feeds="..nbfeeds..feeds) return true
Visualisation des graphes dans une page Html.
http://api.xively.com/v2/feeds/FEED-ID/datastreams/DATASTREAM-ID.png?width=700&height=250&colour=%23f15a24&duration=24hours&legend=en%20direct%20d%27une%20MX-465&title=PAPP&show_axis_labels=true&detailed_grid=true&scale=manual&min=0&max=5500
Vous pouvez tester avec minutes, day, weeks, months, years …