Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'Eco-Devices'.



Plus d’options de recherche

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Bienvenue
    • Annonces et suggestions
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Autres Solutions Domotiques
  • La HC2 et ses périphériques
    • La Home Center pour les nuls
    • Home Center 2 & Lite
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Alarme & Vidéo-surveillance
    • Multimédia
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets...)
    • Eclairage
    • Applications Smartphones et Tablettes
    • English Section
  • Les objets connectés
    • Les Assistants Vocaux
  • Fibaro's Awards
    • Membre du mois
    • Jeux concours & Cadeaux
  • Les bonnes affaires
    • Sites internet
    • Petites annonces

Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Jabber


Skype


Ville :


Intéret :


Version

5 résultats trouvés

  1. Hello, Alors voici un petit code de ma part qui me permet de charger ma voiture électrique de façon automatique en heures creuses. J'ai qu'une prise 16A pour ça sur laquelle j'ai mis un contacteur 40A commandé par FGS211 que j'avais en stock. Pourquoi un contacteur 40A, parce que la bête elle mange ses 16A a fond. Donc il vaux mieux avoir de quoi faire Dans mon installation j'ai un Eco-Device avec le VM correspondant qui met les bonnes valeurs làou faut dans les variables globales. Le principe car j'ai un abo EDF 9kva, c'est d'attendre que le ballon d'eau chaude ait finis de travailler (selon les jours) et attendre 10 minutes que la conso est inférieure au seul de 4000W, couper le contacteur du ballon d'eau chaude et lancer le bidule. Voici le code àlancer dans une scène via GEA : --[[ %% properties %% globals --]] local debug=true; -- Debug or not local activator=302; local ecs_activator=174; -- Couper l'ECS local globalvarconso="CONSO"; local globalvartarif="ABO"; local seuil = 4000; -- Seuil en Watt -- Avoid multiple launch of this scene if (fibaro:countScenes()>1) then fibaro:debug("Second instance killed"); fibaro:abort(); end local conso; -- current conso -- Function function mydebug(string) if (debug) then fibaro:debug(string); end end function getconso() local conso1 = fibaro:getGlobal(globalvarconso); conso = tonumber(conso1); mydebug("Current conso = ".. conso); end -- Code local tarif = fibaro:getGlobal(globalvartarif); getconso(); mydebug("Current seuil = ".. seuil); mydebug("Current tarif = ".. tarif); if (tarif == "HC..") then mydebug("HC engaged..."); while (conso > seuil) do mydebug("Conso is > to seuil waiting..."); fibaro:sleep(10*60*1000); getconso(); end mydebug("Conso is now < to seuil switch on, wait 10 minutes to check if it still <"); fibaro:sleep(10*60*1000); getconso(); if (conso < seuil) then mydebug("Shutdown ECS"); fibaro:call(ecs_activator, 'turnOff'); mydebug("Lauch power"); fibaro:call(activator, 'turnOn'); else mydebug("Hum. Seems we have another spike -> abort"); end end mydebug("Bye !"); Le code est assez simple àconfigurer :- activator=302; Le contacteur pour charger la voiture elec - ecs_activator=174; Le contacteur pour éteindre l'alimentation du ballon d'eau chaude - globalvarconso="CONSO"; La variable globale de conso via l'eco devices - globalvartarif="ABO"; L'état de l'abo Le code pour lancer le bidule via GEA est : -- Charge Extérieur local authcharge = {"Global", "AuthCharge", "OUI"} -- HC/HP local estHC = {"Global", "ABO", "HC.." } local estHP = {"Global", "ABO", "HP.." } -- === Garage == -- Prise Exterieure (charge voiture) GEA.add({estHC,authcharge}, 30, "", {{ "Scenario",id["SC_CHARGE"]}}) GEA.add({estHP,authcharge,id["PRISE_EXT"]}, 30, "", {{ "turnOff", id["PRISE_EXT"]}}) A vous d'adapter les id avec les bon numéros...
  2. Bonjour, Il existe déjà plusieurs Virtual Devices relatifs à l'Eco-Devices sur le forum mais n'ayant pas trouvé mon bonheur, j'ai entièrement écrit un module de zéro en fonction de mes besoins et en espérant qu'il puisse également servir à d'autres. Que fait ce Virtual Device ? 1) Suivi en temps réel des statistiques d'un compteur téléinfo (T1 ou T2) HC/HP 2) Affichage temps réel d'une icône de type "jauge" présentant le tarif actuel (HC/HP) ainsi que la valeur de consommation actuelle 3) Affichage temps des index en kWatts au 1000ième, index en cours (HC ou HP) toujours en premier 4) Affichage temps réel d'un compteur de consommation journalier en Watts pour les HP et les HC 5) Affichage temps réel du coà»t de consommation journalier 6) Génération d'un rapport Email de consommation journalière 7) Fonction de remise à zéro manuelle des compteurs journaliers 8) Gestion de l'authentification utilisateur Eco-Devices Evolutions prévues : 1) Ajout d'un compteur de cumul mensuel 2) Estimation de prochaine facture et publication d'index "Releve Confiance" chez EDF (fera certainement l'objet d'un second module "EDF & Moi") Voici un aperçu des vues graphiques du Virtual Device : La liste des icones de jauges : Deux méthodes sont proposées pour la récupération des statistiques de l'Eco-Devices : L'existence de ces 2 méthodes est liée à un bug connu de la HC2 lors de l'utilisation de requêtes HTTP dans la mainLoop d'un Virtual Device qui bloque au bout d'un certain temps. Le moyen de contourner cela est l'utilisation d'un bouton déclenché depuis la mainLoop qui a comme inconvénient de modifier l'icône pour la durée du traitement ce qui personnellement ne me convient pas. - Méthode 1 (recommandée) : C'est la méthode que j'ai choisi car elle se base sur une scène afin de rafraichir les données et évite ainsi le changement d'icône indésirable durant la récupération des données. -> Pour utiliser cette méthode, vous devez en plus créer et configurer la scène fournie puis dans la MainLoop, positionner la variable useSceneToRefresh à true - Méthode 2 (par défaut ) : C'est la méthode configurée par défaut qui évite l'utilisation d'une scène en parallèle mais avec l'inconvénient de l'icône qui sera modifiée à chaque récupération des données. J'ai toutefois crée une icône dédiée à configurer sur ce bouton : afin que ce ne soit pas trop moche. -> Pour utiliser cette méthode, vous devez simplement positionner la variable useSceneToRefresh à false dans la MainLoop Comment l'utiliser ? 1) Importer la dernière version du Virtual Device : Eco_Devices_Live_Day_Reporter_V0.1.vfib 2) Renseignez l'adresse IP ainsi que le port (80 par défaut) de votre Eco-Devices 3) Importer la série d'icônes de jauges fournies en respectant l'ogre dans lequel elles sont fournies, c'est très important, puis notez l'Id correspondant à la première 4) Dans la mainLoop, renseignez les valeurs des variables teleInfoNB, baseIconId, userIdsToNotify, useSceneToRefresh et si besoin reportTime 5) Si vous utilisez la Méthode 1 (useSceneToRefresh = true) vous devez créer la scène Eco-Devices Refresh (voir ci-dessous) 6) Dans le code du bouton "Raraîchir" pensez à saisir vos in formations d'authentification si vous l'avez activée sur l'Eco-Devices 7) Pas besoin de créer de variables globales, elles sont automatiquement crées au premier démarrage du Virtual Device 8) Sauvegarder la scène et tout devrait bien fonctionner Pour ceux qui utilisent la Méthode 1 : Voici le code de la scènes Eco-Devices Refresh Il est IMPORTANT de bien renseigner le deviceId correspondant à l'Id de votre Virtual device importé ci-dessus. Si vous avez activé l'authentification sur l'Eco-Devices, vous devez ici saisir vos informations d'authentification encodées en base64. Si vous ne l'avez pas déjà fait, il suffit d'aller sur https://www.base64encode.org, d'encoder en UTF8 la chaine correspondante à "<login>:<password>" et de récupérer le résultat. Par exemple "admin:password" donnera "YWRtaW46cGFzc3dvcmQ=" saut de --[[ %% autostart %% properties %% globals --]] -- Récurrence de rafraichissement des stats en secondes local checkEvery = 3 -- Id du Virtual Device local deviceId = 228 -- Authentification ("" si pas d'authentification sinon chaine "<login>:<password>" en base64 local base64BasicAuthentication = "" local sourceTrigger = fibaro:getSourceTrigger() local ecoDevicesIP = tostring(fibaro:get(deviceId,"IPAddress")) local ecoDevicesStats = nil --- Usefull Functions --- function debug(text, color) color = color or "white" fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, text, "span")) end function setDevicePropertyValue(id, label, value) fibaro:call(id, "setProperty", "ui."..label..".value", value) end function getDevicePropertyValue(vDeviceid, propertyName) return fibaro:getValue(vDeviceid, "ui."..propertyName..".value") end function refreshEcoDevicesStats() debug("Rafraichissement des statistiques de l'EcoDevices...") ecoDevicesStats = nil local http = net.HTTPClient() http:request("http://"..ecoDevicesIP.."/api/xdevices.json?cmd=10", { options = { method = 'GET', headers = {["Authorization"] = 'BASIC '..base64BasicAuthentication}, }, success = function(response) ecoDevicesStats = response.data refreshEcoDevicesStatsAsync() end, error = function(err) debug("Error: " ..err, "red") fibaro:sleep(1000) refreshEcoDevicesStats() end }) end function refreshEcoDevicesStatsAsync() fibaro:setGlobal("ecoDevicesStats", ecoDevicesStats) debug("OK ! "..ecoDevicesStats, "green") if (sourceTrigger["type"] == "autostart") then setTimeout(refreshEcoDevicesStats, checkEvery*1000) end end refreshEcoDevicesStats() lignesaut de ligne Enfin, voici le code de la MainLoop : saut de ligne -------------------------------------------------------- -- Eco-Devices Live & Day Reporter v0.1 -- -------------------------------------------------------- -- Auteur : Brice Cassagnabère -- -------------------------------------------------------- -- Changelog : -- -- -- -- v0.1 : Version initiale -- -------------------------------------------------------- -- Plus d'infos : http://is.gd/tMgWdy -- -------------------------------------------------------- -- Renseignez ici le numéro de téléinfo à prendre en compte, T1 ou T2 teleInfoNB = "T1" -- Renseignez ici le numéro de la première icône de jauge (HC_0.png) baseIconId = 1047 -- Renseignez ici les id Utilistaurs à qui transmettre le rapport userIdsToNotify = {2, 154} -- Si vous utilisez la scène associée pour la MAJ, passer cette variable à true useSceneToRefresh = false -- Heure à laquelle vous souhaitez générer le rapport journalier reportTime = "23:59" -- Tarifs des kWh 2015 hcCost = 0.0623 hpCost = 0.1019 deviceId = fibaro:getSelfId() --- Usefull Functions --- function debug(text, color) color = color or "white" fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, text, "span")) end function setDevicePropertyValue(id, label, value) fibaro:call(id, "setProperty", "ui."..label..".value", value) end function getDevicePropertyValue(vDeviceid, propertyName) return fibaro:getValue(vDeviceid, "ui."..propertyName..".value") end function createGlobalIfNotExists(varName, defaultValue) if fibaro:getGlobal(varName) == "" then debug("Création de la variable "..varName.." avec comme valeur par défaut "..defaultValue) newVar = {} newVar.name = varName newVar.value = defaultValue HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json.encode(newVar)) end end function refreshEcoDevicesStats() if not useSceneToRefresh then fibaro:call(deviceId, "pressButton", 5) fibaro:sleep(1000) end jsonStats = fibaro:getGlobalValue("ecoDevicesStats") if not string.find(jsonStats, '{"product":"Eco-') then debug("An error occured -> "..jsonStats, "red") debug("No stats found, please check documentation and configuration", "orange") return false end ecoDevicesStats = json.decode(jsonStats) tarif = string.format("%.2s", ecoDevicesStats[teleInfoNB.."_PTEC"]) conso = ecoDevicesStats[teleInfoNB.."_PAPP"] hcIndex = ecoDevicesStats[teleInfoNB.."_HCHC"] hpIndex = ecoDevicesStats[teleInfoNB.."_HCHP"] hcIndexStr = "HC : "..string.format("%.3f", hcIndex/1000) hpIndexStr = "HP : "..string.format("%.3f", hpIndex/1000) fibaro:log("Tarif : "..tarif.." - Conso : "..conso.." VA".." - "..hcIndexStr.." - "..hpIndexStr) iconId = baseIconId if tarif == "HP" then activeIndex = hpIndexStr inactiveIndex = hcIndexStr iconId = iconId + 9 else activeIndex = hcIndexStr inactiveIndex = hpIndexStr end -- Mise à jour des Labels setDevicePropertyValue(deviceId, "labelTarif", tarif) setDevicePropertyValue(deviceId, "labelConso", conso.." VA") setDevicePropertyValue(deviceId, "labelActiveIndex", activeIndex.." kW") setDevicePropertyValue(deviceId, "labelInactiveIndex", inactiveIndex.." kW") -- Mise à jour de l'icône conso = ecoDevicesStats[teleInfoNB.."_PAPP"] if conso >= 1000 then if conso < 9000 then iconId = iconId + tonumber(string.format("%.1s", conso)) else iconId = iconId + 8 end end fibaro:call(deviceId, "setProperty", "currentIcon", iconId) return true end function refreshDayStats() day_HC_Conso = hcIndex - day_HC_Index day_HP_Conso = hpIndex - day_HP_Index day_HC_ConsoStr = "HC : "..day_HC_Conso.." W" day_HP_ConsoStr = "HP : "..day_HP_Conso.." W" if tarif == "HP" then activeDayIndex = day_HP_ConsoStr inactiveDayIndex = day_HC_ConsoStr else activeDayIndex = day_HC_ConsoStr inactiveDayIndex = day_HP_ConsoStr end -- Calcul du coà»t en € dayCost = ((day_HP_Conso * hpCost) + (day_HC_Conso * hcCost)) / 1000 dayCost = dayCost + (dayCost * 0.2) dayCostStr = "Coà»t : "..string.format("%.2f", dayCost).." €" setDevicePropertyValue(deviceId, "labelActiveDayIndex", activeDayIndex) setDevicePropertyValue(deviceId, "labelInactiveDayIndex", inactiveDayIndex) setDevicePropertyValue(deviceId, "labelToday", dayCostStr) end function reportDayStats() message = "HC : "..day_HC_Conso.." Watts\nHP : "..day_HP_Conso.." Watts\n"..dayCostStr for k,v in pairs(userIdsToNotify) do fibaro:call(v, "sendEmail", "Consommation électrique du "..os.date("%d/%m/%Y"), message) end end function checkCptRaz() -- Tous les jours à minuit, je stockera valeur de l'index en cours if tostring(os.date("%H:%M")) == reportTime or day_HC_Index == 0 or ecoDevicesStats.raz then debug("Initialisation du compteur journalier", "green") if tostring(os.date("%H:%M")) == reportTime then reportDayStats() end day_HC_Index = hcIndex day_HP_Index = hpIndex fibaro:setGlobal("day_HC_Index", day_HC_Index) fibaro:setGlobal("day_HP_Index", day_HP_Index) while tostring(os.date("%H:%M")) == reportTime do fibaro:sleep(1000) end end end -- Création automatique des variable globales createGlobalIfNotExists("ecoDevicesStats", "0") createGlobalIfNotExists("day_HC_Index", "0") createGlobalIfNotExists("day_HP_Index", "0") -- Je rafraichis les stats une première fois pour initialiser mes variables locales if not refreshEcoDevicesStats() then return end day_HC_Index = tonumber(fibaro:getGlobalValue("day_HC_Index")) day_HP_Index = tonumber(fibaro:getGlobalValue("day_HP_Index")) -- Boucle principale while true do -- ## Pensez à bien choisir votre méthode de mise à jour des stats -- ## Méthode 1 (useSceneToRefresh = true) ## : Vous utilisez la Scene de Mise à jour des stats qui évite -- le changement d'icône indésirable -- ## Méthode 2 (useSceneToRefresh = false) ## : Pas besoin de créer la scene mais entrainera un court changement -- de l'icône durant le reresh contrairement à la précédente if not refreshEcoDevicesStats() then return end refreshDayStats() checkCptRaz() fibaro:sleep(2000) end saut de ligne Historique des versions : - V0.1 du 11/05/2015 : Eco_Devices_Live_Day_Reporter_V0.1.vfib
  3. Bonjour, Voici le module virtuel pour l'ECO-DEVICES que je souhaitais faire pour afficher mes consommations mensuelles directement sur le HC2. Je n'ai pas traité le main loop pour le moment donc si vous souhaitez l'améliorer, pas de soucis. Il affiche : • la consommation HP/HC de chaque mois • le coà»t associé pour chaque mois (hors abo) Ce module est prévu pour un abonnement HP/HC mais vous pourrez l'adapter facilement en changeant le pattern qui parse le fichier CSV. Le données sont stockées dans une variable energylist. Il faut la créer dans le panneau Variables. Voilà ce que ça donne sur Androà¯d. Il reste à traiter les points suivants : envoyer de rapports quotidiens via Pushover comparaison de la conso à M-1 automatiser le chargement des valeurs à 00h05 chaque jour via le main loop Consos_mois 1.1.2.vfib
  4. Bonsoir, Grâce à l'Eco-Devices, on peut suivre ses consommations d'électricité. Aussi, aujourd'hui je met à jour manuellement un tableur en copiant les infos depuis le fichier CSV (http://@IP/protect/download/xdata.csv). J'aimerais automatiser le traitement mais GCE ne fournit pas ces informations via l'API. Donc est-il possible de parser un fichier CSV en LUA pour calculer une estimation de prochaine facture grâe à mon eco-Devices. J'ai essayé de telecharger le fichier pour commencer mais cela ne fonctionne pas. --[[ %% properties %% globals --]] -- Replace the value with ID of this virtual module selfId=fibaro:getSelfId(); ip = fibaro:get(selfId, 'IPAddress'); ECO = Net.FHttp(ip) local response, status, errorCode = ECO:GET("/protect/download/xdata.csv") fibaro:debug(response) fibaro:debug("####Debut#########################") -- check for error if errorCode == 0 then if tonumber(status) == 200 then -- enregistrement du retour de l API dans une table fibaro:debug(response) else fibaro:debug("HTTP response status: "..status); end else fibaro:debug("Communication error"); fibaro:log("Communication error"); fibaro:call(selfId, "setProperty", "ui.Msg.value", "Comm. error", os.date("%d %b - %X")); end --[[ -- local citylist = {ANNEE,MOIS,JOUR,T1_BASE,T1_HCHP,T1_HCHC,T1_EJPHN,T1_EJPHPM,T1_BBRHPJB,T1_BBRHCJB,T1_BBRHPJW,T1_BBRHCJW,T1_BBRHPJR,T1_BBRHCJR,T1_PMAX,T1_ISOUSC,T1_IMAX,Counter1,T2_BASE,T2_HCHP,T2_HCHC,T2_EJPHN,T2_EJPHPM,T2_BBRHPJB,T2_BBRHCJB,T2_BBRHPJW,T2_BBRHCJW,T2_BBRHPJR,T2_BBRHCJR,T2_PMAX,T2_ISOUSC,T2_IMAX,Counter2} -- local citylist = "ANNEE,MOIS,JOUR,T1_BASE" local citylist = {} for line in citylist do local city, region, coalition, coordinate_x, coordinate_y = line:match("%s*(.-),%s*(.-),%s*(.-),%s*(.-),%s*(.-)") citylist[#citylist + 1] = { city = city, region = region, coalition = coalition, coordinate_x = coordinate_x, coordinate_y = coordinate_y } end –]] function ParseCSVLine (line,sep) local res = {} local pos = 1 sep = sep or ',' while true do local c = string.sub(line,pos,pos) if (c == "") then break end if (c == '"') then -- quoted value (ignore separator within) local txt = "" repeat local startp,endp = string.find(line,'^%b""',pos) txt = txt..string.sub(line,startp+1,endp-1) pos = endp + 1 c = string.sub(line,pos,pos) if (c == '"') then txt = txt..'"' end -- check first char AFTER quoted string, if it is another -- quoted string without separator, then append it -- this is the way to "escape" the quote char in a quote. example: -- value1,"blub""blip""boing",value3 will result in blub"blip"boing for the middle until (c ~= '"') table.insert(res,txt) assert(c == sep or c == "") pos = pos + 1 else -- no quotes used, just look for the first separator local startp,endp = string.find(line,sep,pos) if (startp) then table.insert(res,string.sub(line,pos,startp-1)) pos = endp + 1 else -- no separator found -> use rest of string and terminate table.insert(res,string.sub(line,pos)) break end end end return res end text = ParseCSVLine (response,",") fibaro:debug("####Fin#########################") Je n'ai rien qui s'affiche comme si la variable response était vide : Merci
  5. Eco-Devices -Gce Electronics Grâce à Eco-Devices, vous pourrez suivre vos consommations d'électricité, d'eau et de gaz directement par le biais de votre réseau local. Conçu pour être placé dans un tableau électrique (format Rail Din), il est capable de suivre la consommation d'eau, de gaz, et indicateurs d'électricité différents (électricité et production). Pour l'utiliser, il suffit de l'alimenter en 12V et de le relier en Ethernet, par exemple à votre Box ADSL. Vous pourrez directement consulter les informations en vous connectant à son adresse sur le réseau local, par PC ou navigateur de smartphone et tablette. Complètement autonome, il n'a pas besoin d'une autre machine qui tourne en permanence pour fonctionner. Il propose et nombreuses fonctionnalités intéressantes : il enregistre en interne les données sur 10 ans et est capable de les exporter au format .csv. Il produit également un des données au format XML et JSON qui peuvent être utilisées et exploitées par les box domotique. Un produit avec de nombreuses possibilités et très simple d'emploi.. FONCTIONNALITÉS : 2 entrées téléinfo pour le suivi de l'électricité (consommation et production) 2 compteurs d'impulsion paramétrables : eau, gaz, électricité ou fioul (support des chaudières à Fioul en cours d'implantation) Enregistrement des index en interne sur 10 ans, exportable au format .csv. Formulaire XML et protocole JSON pour communiquer avec les box domotiques. Notification push sur dépassement de puissance, changement de tarif etc. Enregistrement des index en interne sur 10 ans. Envoi périodique des index vers une url distante. Notification par email. Support du DynDNS. Fourni avec un utilitaire de scan et de mise à jour "One clic". CARACTÉRISTIQUES TECHNIQUES : Alimentation : 5 à 24VDC (non fournie) Consommation : 0.05A (12v @25°c). Ethernet : 10/100/1000 Base-T (IEEE 802.3) 2 entrées Téléinfo (Conso/production d'électricité) 2 entrées compteur (Eau / Gaz) Nombre d'emplacements dans le tableau électrique : 3 Lien vers le fabriquant : http://gce-electronics.com/fr/
×