La publication sous forme de graphiques de la consommation d’électricité , de la température et de l’humidité permets d’en suivre la tendance et d’en tirer des enseignements .
En absence de fonction de publication de graphiques au niveau du controleur Vera , la solution retenue est d’utiliser un des portails énergie gratuit comme SEG (Smart Energy Groups) , l’envoi des données venant de différents modules se fera par le controleur Vera vers le portail SEG.
1) Sur le site SEG .. http://www.smartenergygroups.com/
- Ouvrir un compte gratuit sur SEG
- Configurer en sélectionnant « My Things » -> My Things -> puis creer un nom de site
- Récupérer le « Site Token » en sélectionnant « My Things » -> My site -> Sélectionner le site -> Edit . Le site token est dans le champ API Details.
2) Code Lua à mettre dans le fichier startup.lup pour envoyer les données vers le site SEG
Ci-dessous un exemple de code Lua ( source forum Micasaverde ) à adapter pour la variable SEGSiteId (Site token) et la table SEG_DEVICE (Service Id)
—————————————————————-
local http = require(‘socket.http’)
http.TIMEOUT = 5
local SEG_SITE = « <yourSEGSiteIdHere> »
local SEG_URL = « http://api.smartenergygroups.com/api_sites/stream »
local segLog = function (text) luup.log(‘SEG Logger: ‘ .. (text or « empty »)) end
SEG_DEVICES = {
{node=’vera’, stream=’t_upstairs’, deviceId=335, serviceId=’urn:upnp-org:serviceId:TemperatureSensor1′, serviceVar= »CurrentTemperature »},
}
local function findStream(deviceId, serviceId, serviceVar)
— TODO: Change from a simple scan to something that’ll support more entries efficiently.
for k, v in pairs(SEG_DEVICES) do
if (v.deviceId == deviceId and
v.serviceId == serviceId and
v.serviceVar == serviceVar) then
return v.node, v.stream
end
end
return nil, nil
end
local function initWatch()
for k, v in pairs(SEG_DEVICES) do
luup.variable_watch(‘segWatch’, v.serviceId, v.serviceVar, v.deviceId)
end
end
function segWatch(deviceId, serviceId, serviceVar, oldValue, newValue)
local nodeName, streamName = findStream(deviceId, serviceId, serviceVar)
if (nodeName == nil or streamName == nil) then
segLog(string.format(« Node not found for %s,%s,%s », deviceId, serviceId, serviceVar))
return
end
— TODO: Encoding
segData = string.format(« (site %s (node %s ? (%s %s))) », SEG_SITE, nodeName, streamName, newValue)
segLog(segData)
result, status = http.request(SEG_URL, segData)
end
initWatch()
———————————————————————–
3) Test à partit du SEG avec fonction Discover
- Lancer la fonction « Discover » pour creer les périphériques associés coté portail SEG , à partir de My Things »
My Things -> Tools -> Discovery and then press DISCOVER
La configuration d’un périphérique et d’un flux de données sera créée automatiquent par SEG ( en l’occurence le flux Power en Watts ) si la règle de nommage du flux au niveau du site SEG est respectée coté controleur Vera ( e_xxx pour Energy KWH ou p_xxx pour Power Watts )
Note : La commande Discover doit etre lancé à partir d’une machine situé dans le meme réseau que le controleur Vera.
4) Ajouter les flux supplémentaires de données
- Ajouter les flux supplémentaires , déclarés dans le fichier Startup.lua , sur le portail SEG ( le flux Energy dans l’exemple)
Dashboard Energie donnant la consommation du wall plug