Archives du mot-clé graphique consommation énergie

Graphiques sur le portail SEG

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 &raquo;
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)

SEG configuration5) Exemple de Dashboard

Dashboard Energie donnant la consommation du wall plug

dashboard seg