ksar Posté(e) le 6 octobre 2015 Signaler Posté(e) le 6 octobre 2015 Au choix : Tu attends que la v4 sorte, avec le support ds plugins, et que quelqu'un trouve le temps de "convertir" ce module virtuel en plugin..... bref faut pas être pressé pour que toutes ces conditions soient remplies Comme discuté il y a quelques temps, développer des scripts sur un serveur Web externe (PHP est le choix le plus judicieux) afin de faire le même job. Assez simple à faire en se basant sur les scripts LUA existants et l'API Fibaro de la box. Il y a toujours une solution Salut Lazer! Je débarque sur ce post qui est super intéressant! Je viens de me taper les 34 pages et je rebondis sur ton poste d'il y a un certain temps. Vu que j'ai une HCL, j'ai bien envie de me lancer dans module php qui attaquerait ton script pour remplir la base de donnée. J'ai essayé de regarder ton code, j'ai pas encore tout déchiffré, mais en tout cas le fichier virtual device est assez difficile à lire. Peux-tu m'envoyer le code des boutons 1,2,3,4 et 5 en lua ? Merci d'avance.
Lazer Posté(e) le 6 octobre 2015 Auteur Signaler Posté(e) le 6 octobre 2015 Regarde sur Github, tu as le code source de chaque bouton dans des fichiers séparés.
HANSOLO Posté(e) le 6 octobre 2015 Signaler Posté(e) le 6 octobre 2015 J'ai des valeurs dans la DB aujourd'hui! (pour la pluie) 17926,"2015-10-06 08:32:00","292","3" 17927,"2015-10-06 08:33:00","292","3" 17928,"2015-10-06 08:34:00","292","3" 17929,"2015-10-06 08:35:00","292","3" 17930,"2015-10-06 08:36:00","292","3" 17931,"2015-10-06 08:37:00","292","3" 17932,"2015-10-06 08:38:00","292","3" 17933,"2015-10-06 08:39:00","292","3" 17934,"2015-10-06 08:40:00","292","3" 17935,"2015-10-06 08:41:00","292","2" 17936,"2015-10-06 08:42:00","292","2" 17937,"2015-10-06 08:43:00","292","2" 17938,"2015-10-06 08:44:00","292","2" 17939,"2015-10-06 08:45:00","292","2" 17940,"2015-10-06 08:46:00","292","2" 17941,"2015-10-06 08:47:00","292","2" 17942,"2015-10-06 08:48:00","292","2" 17943,"2015-10-06 08:49:00","292","2" 17944,"2015-10-06 08:50:00","292","2" 17945,"2015-10-06 08:51:00","292","0" 17946,"2015-10-06 08:52:00","292","0" 17947,"2015-10-06 08:53:00","292","0" 17948,"2015-10-06 08:54:00","292","0" 17949,"2015-10-06 08:55:00","292","0" 17950,"2015-10-06 08:56:00","292","0"
Lazer Posté(e) le 6 octobre 2015 Auteur Signaler Posté(e) le 6 octobre 2015 ah ça progresse on dirait que c'est remis à0 toutes les 10 minutes non ? Ca doit donner un graph bizarre.
Lazer Posté(e) le 6 octobre 2015 Auteur Signaler Posté(e) le 6 octobre 2015 merci Hansolo mais hum hum..... le site de netatmo donne les précipitations sur 1h, tandis que le plugin FIbaro les donne sur 10 minutes. Dans les 2 cas, je ne vois pas bien quelle genre de requête simple je pourrais faire pour calculer le total journalier. Si je fais une somme, que je divise par 10, en partant du principe qu'on a exactement 10 valeurs par tranche de 10 minutes, est-ce que ça serait précis ?
sebcbien Posté(e) le 6 octobre 2015 Signaler Posté(e) le 6 octobre 2015 Le mieux c'est de travailler avec des index ;-) ;-p Sent from my SM-N910F using Tapatalk 1
sebcbien Posté(e) le 9 octobre 2015 Signaler Posté(e) le 9 octobre 2015 Salut tout le monde, l'avocat de l'index est de retour :-) Voici un cas réel qui m'est arrivé il n'y a pas longtemps: Ma communication zwave entre mon aeonlabs et la box s'est bloquée quelques jours après mon passage en V4 et je ne l'ai pas remarqué tout de suite (entre le 21 et le 25 septembre). Voici le résultat: un beau trou... quand je l'ai remis en route, l'index a simplement repris et mes données sont toujours justes. J'aurais aussi pu ajouter une valeur X à l'index (exprimée en prolongeant la ligne/courbe) si c'était l'aeon labs qui s'était bloqué et mon histogramme s'est ajusté lui aussi le jour ou le compteur à été remis en route. Je discutais avec un collègue qui a la même problématique et on en est arrivé à la conclusion que seul l'index était fiable. En effet: Une valeur instantanée est remontée suivant 3 critères: - tout les X secondes par défaut l'aeon propose 300s je crois (pas trop sinon on inonde le réseau) - a chaque changement de plus de X% de consommation - a chaque changement de plus de X watts. Quand la box reçoit donc une valeur en Watt, celle ci est donc une indication de la consommation instantanée à l'instant "t" mais pas une moyenne, elle est donc par conséquent "fausse" En général on stocke cette valeur dans une VG et un autre script va pousser cette valeur toutes les X minutes vers une solution de stockage (emon cms, thingspeak ou graph de lazer) là aussi, un facteur temps intervient (toutes les minutes, 5 minutes ...) et fausse la mesure moyenne là aussi donc il y y une perte d'information car durant la minute écoulée, la consommation a forcément varié tout ça pour dire que en se basant sur les Watts et l'intervale de temps stocké dans la BD, on aura tout au plus une estimation, jamais une valeur réelle. L'index à contrario, est calculé directement dans l'appareil de mesure (l'aeon labs) et même s'il n’était transmis que toutes les 24h (congestion réseau zwave, coupure ou plantage de la box par exemple), et serait lui exact. Pour l'eau et le gaz, même combat, se baser sur un débit instantané conduirait aux mêmes erreurs. 1
Lazer Posté(e) le 9 octobre 2015 Auteur Signaler Posté(e) le 9 octobre 2015 Présenté comme ça, oui c'est vrai. Sauf que mon outil n'est pas prévu pour.... Donc il faudrait que tu créés une autre table dans la DB qui stocke les index, puis une Api permettant de calculer la différence entre 2 dates, et c'est cette dernière valeur qu'on archive dans mon outil. En fait, c'est exactement ce que je fais pour L'Eco-devices.
sebcbien Posté(e) le 9 octobre 2015 Signaler Posté(e) le 9 octobre 2015 pour l'eco device c'est la même chose que pour un index elec ? Quelle différence vois-tu ? Donc tu as déjàfait tout le boulôt ?
Lazer Posté(e) le 9 octobre 2015 Auteur Signaler Posté(e) le 9 octobre 2015 Il remonte l'index du compteur électrique (via la teleinfo ERDF donc propre àla France), mais aussi des 2 entrées àimpulsion (eau, électricité, gaz,fuel....). Le truc c'est que je fais le travail de calcul au plus tôt, dès la récupération des données en temps réel , mais stockée dans une table spécifique, qui contient l'index, la consommation instantanée (division de la différence d'index par la différence de timestamp). Ensuite, il est plus facile de faire ce que je veux avec ces données: graphique, export puis import dans domocharts, etc... Donc oui l'index est utile àla source, afin de ne pas perdre d'impulsion. Mais je préfère largement travailler sur des valeurs dans les tables.
sebcbien Posté(e) le 9 octobre 2015 Signaler Posté(e) le 9 octobre 2015 Ok. si qquechose est down pendant x temps, tu récupérera la différence, il y aura moins de granularité, c'est tout j'ai aussi un eco device pour l'eau et le gaz, mais effectivement pas pour l'electricité. Ces calculs tu les fait sur la HC2, en PHP ?
Lazer Posté(e) le 9 octobre 2015 Auteur Signaler Posté(e) le 9 octobre 2015 Je fais les calculs en PHP, basés sur les scripts de http://www.eb-home.eu/ que j'ai plus ou moins fortement retravaillés. Toutes les minutes, la HC2 prend le JSON de l'Eco-Devices, et le renvoie tel quel à une page PHP, qui extrait les index, calcule les valeurs, et stocke tout ça dans la DB. Pour le moment c'est encore brouillon (mais ça fonctionne très bien), mais quand ça sera plus propre je partagerai sous forme d'un nouveau tutoriel, en lien avec celui-ci. 1
Peter Posté(e) le 17 octobre 2015 Signaler Posté(e) le 17 octobre 2015 bonjour a tous je vient de mettre en place le tuto de lazer et ca fonctionne nickel (quelle que probleme sur la db mais c'est regler) je voudrais savoir ci on peu changer le theme car en regardent il y a un dossier avec plusieur theme dedans cela est il facile ou pas et si tu cherche un beta teste pour les graph avec l'eco-device je veux bien faire du debug .
Lazer Posté(e) le 17 octobre 2015 Auteur Signaler Posté(e) le 17 octobre 2015 Euh, la personnalisation, les thèmes, j'ai pas trop creusé tout ça... le répertoire que tu vois dois être celui de jquery-ui je pense. Comme ce n'est utilisé que pour la page d'admin, ça ne changera rien aux graphs (qui sont générés par highcharts+highstock) Pour le moment je suis sur d'autres sujets, donc c'est pas pour tout de suite les évolutions....
Peter Posté(e) le 17 octobre 2015 Signaler Posté(e) le 17 octobre 2015 Ok en tout cas super boulot que tu as fait' Je vais voir ce qu'il est possible de faire au niveau personnalisation dès thèmes et si je trouve je donnerai la solution Et pour les bêta teste sur eco-device si tu est ok je veux bien tester
Lazer Posté(e) le 17 octobre 2015 Auteur Signaler Posté(e) le 17 octobre 2015 te prends pas trop la tete sur la personnalisation des themes et regarde quelques pages en arrière, on a discuté du futur de ce produit, avec la personnalisation des graphs, qui sera géré d'une façon bien précise. pour l'eco-devices ça fonctionne très bien, le souci c'est que ce n'est pas partageable..... un jour ça viendra
Peter Posté(e) le 17 octobre 2015 Signaler Posté(e) le 17 octobre 2015 Ok alors je laisse tomber pour les thèmes (avec quelque modif pour moi)'mais l'eco-device je serais très intéressé pour le,mien(quand tu seras prêt au teste) Je te remercie pour les partages que tu fait et qui nous font évoluer chaque jours un peu plus Merci
Lazer Posté(e) le 17 octobre 2015 Auteur Signaler Posté(e) le 17 octobre 2015 oui en fait, tu peux faire les modifs que tu veux pour le theme, mais ça risque d'être perdu lors de la prochaine mise à jour. Pour l'eco devices, je me suis basé sur http://www.eb-home.eu/, donc tu peux déjà mettre ça en place si tu veux des graphs tout de suite.
sebcbien Posté(e) le 17 octobre 2015 Signaler Posté(e) le 17 octobre 2015 Ok en tout cas super boulot que tu as fait' Je vais voir ce qu'il est possible de faire au niveau personnalisation dès thèmes et si je trouve je donnerai la solution Et pour les bêta teste sur eco-device si tu est ok je veux bien tester Pour l'éco device, pour ne pas perdre de données, tu peux stocker tes données ailleurs temporairement. Moi j'utilise emoncms (voir aussi YAGDA dans ma signature) Une fois la solution de lazer opérationnelle, avec emoncms tu pourra exporter tes données au format csv et les importer au format voulu dans la db de lazer. Voici mon petit VD qui fait ça (et un peu plus) actuellement: et le code: local thismodule = fibaro:getSelfId(); local EmonCMS_Prefix = "" local PushToEmonCMS = true -- true = push to emoncms - false = do not push local domaine = fibaro:get(thismodule, 'IPAddress') local emoncms = Net.FHttp("emoncms.org",80) local emoncms_api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -- your EMONCMS WRITE api Key local ConsoGaz2013_2014 = 1113 -- m3 de gaz consommées en 10/2013->11/2014 ConsoGaz2013_2014 = ConsoGaz2013_2014 * 1000 local date_index_gaz = "16/11/2014" local date_index_gaz_short = "16/11" local ConsoEau2013_2014 = 61 -- m3 d'eau consommées en 10/2013->10/2014 ConsoEau2013_2014 = ConsoEau2013_2014 * 1000 local date_index_eau = "9/10/2014" local date_index_eau_short = "9/10" local ConsoElec2013_2014 = 0 -- kWh consommés avant 06/2015 ConsoElec2013_2014 = ConsoElec2013_2014 local date_index_elec = "26/06/2015" local date_index_elec_short = "26/06" local Conso_Elec_Index = fibaro:getGlobal("HOUSE_CONSO_INDEX"); local Conso_Elec_Instant = fibaro:getGlobal("HOUSE_CONSO"); local ipECODEVICES = fibaro:get(thismodule, 'IPAddress') -- IDs générés le : 25/08/15 à 18:09:04 local id2 = { --Salon CORNICHE_SALON = 9, XBMC_REMOTE = 108, SALON_FLOD = 72, TV___AMPLI = 80, COMMANDE_CORNICHES = 65, SALON = 45, SALON_MVT = 987, SALON_TEMPERATURE_FL = 74, LAMPADAIRES_SALON = 23, MARANTZ_SALON = 1282, --Garage GARAGE_MVTZ = 1287, GARAGE_TEMPERATURE = 1288, GARAGE_MVT = 1004, GARAGE_HAUT = 1003, GARAGE_BAS = 1002, GARAGE_HUMIDITE = 1289, GARAGE_LUMINOSITE = 1290, REMOTE_GARAGE = 1138, GARAGE = 51 } local temperature_hall_aeon = fibaro:getValue(id2["GARAGE_TEMPERATURE"], "value") local humidite_hall_aeon = fibaro:getValue(id2["GARAGE_HUMIDITE"], "value") local temperature_salon_flood = fibaro:getValue(id2["SALON_TEMPERATURE_FL"], "value") ECO = Net.FHttp(ipECODEVICES) EmonCMS = {}; response = ECO:GET("/api/xdevices.json?cmd=10") -- enregistrement du retour de l API dans une table response = json.decode(response) --fibaro:debug(response.INDEX_C1) INDEX_GAZ = response.INDEX_C1 INDEX_EAU = response.INDEX_C2 INDEX_GAZ_ANNUEL = response.INDEX_C1 - ConsoGaz2013_2014 INDEX_EAU_ANNUEL = response.INDEX_C2 - ConsoEau2013_2014 fibaro:setGlobal("CONSO_GAZ", INDEX_GAZ) fibaro:setGlobal("CONSO_EAU_VILLE", INDEX_EAU) function round(num, idp) local mult = 10^(idp or 0) return math.floor(num * mult + 0.5) / mult end fibaro:log(round(tonumber((INDEX_EAU_ANNUEL/1000)*5)) .." € Eau ".. round(tonumber(INDEX_GAZ_ANNUEL/1000)*0.5) .." € Gaz" ) fibaro:call(thismodule, "setProperty", "ui.ConsoGaz.value", "Gaz: "..round(tonumber(INDEX_GAZ_ANNUEL/1000)) .."m3/" .. round(tonumber((INDEX_GAZ_ANNUEL/1000)*9.7)) .. "kWh = " .. round(tonumber(INDEX_GAZ_ANNUEL/1000)*0.63).."€") fibaro:call(thismodule, "setProperty", "ui.ConsoEau.value", "Eau: "..round(tonumber(INDEX_EAU_ANNUEL/1000)) .."m3 = " .. round(tonumber(INDEX_EAU_ANNUEL/1000)*4.3).."€") fibaro:call(thismodule, "setProperty", "ui.ConsoElec.value", "Elec: "..Conso_Elec_Index .."kWh = " .. round(tonumber(Conso_Elec_Index)*0.197).."€") fibaro:call(thismodule, "setProperty", "ui.InfoGaz.value", "Index Since " .. date_index_gaz.." (0,63€/m3)") fibaro:call(thismodule, "setProperty", "ui.InfoEau.value", "Index Since " .. date_index_eau.." (4,3€/m3)") fibaro:call(thismodule, "setProperty", "ui.InfoElec.value", "Index Since " .. date_index_elec.." (0,197€/kWh)") fibaro:call(thismodule, "setProperty", "ui.Info.value", "last Update: " .. os.date("%H:%M - %a %d/%m", os.time())) fibaro:debug(os.date("%a %d/%m", os.time()).." Gaz:".. round(tonumber(INDEX_GAZ_ANNUEL/1000)*0.63) .. "€(".. date_index_eau_short ..") Eau:".. round(tonumber(INDEX_EAU_ANNUEL/1000)*4.3) .."€(".. date_index_gaz_short ..")") function EmonCMS:Push(payloademon) payloademon = "/input/post.json?json={" .. EmonCMS_Prefix .. payloademon .. "}&apikey=" .. emoncms_api_key response, status, errorCode = emoncms:GET(payloademon); fibaro:debug("Payload: " .. payloademon) ; fibaro:debug("response: " .. response .. " Status: " .. status .. " errorcode: " .. errorCode) ; fibaro:sleep(500); end if PushToEmonCMS == true then payloademon = "CONSO_EAU_VILLE:" .. tonumber(INDEX_EAU/1000) -- /1000 = convert to m3 EmonCMS:Push(payloademon); payloademon = "CONSO_GAZ:" .. tonumber(INDEX_GAZ/1000) -- /1000 = convert to m3 EmonCMS:Push(payloademon); payloademon = "CONSO_ELEC:" .. tonumber(Conso_Elec_Index) EmonCMS:Push(payloademon); payloademon = "CONSO_ELEC_INSTANT:" .. tonumber(Conso_Elec_Instant) EmonCMS:Push(payloademon); payloademon = "TEMP_SALON:" .. tonumber(temperature_salon_flood) EmonCMS:Push(payloademon); payloademon = "TEMP_HALL:" .. tonumber(temperature_hall_aeon) EmonCMS:Push(payloademon); payloademon = "HUMI_HALL:" .. tonumber(humidite_hall_aeon) EmonCMS:Push(payloademon); end
Peter Posté(e) le 17 octobre 2015 Signaler Posté(e) le 17 octobre 2015 @ lazer merci j'ai deja lu le sujet du site http://www.eb-home.eu/,qui est pas mal et en plus il y a de tres bonne idée chez lui je vais tester sont systeme en attendent merci. @sebcbien merci il est pas mal ton VD aussi avec l'eau le gaz l'elec et tout les autres données que tu remontes, je vais aussi le tester comme ça sa me permet d'apprendre et de comprendre le fonctionnement des codes
stipower Posté(e) le 19 octobre 2015 Signaler Posté(e) le 19 octobre 2015 Bonjour. La hc2 est obligatoire ou c est possible avec la hcl en v4 ?
Did Posté(e) le 19 octobre 2015 Signaler Posté(e) le 19 octobre 2015 Non, il faut du Lua donc la HCL, même en v4 est exclue.
Lazer Posté(e) le 19 octobre 2015 Auteur Signaler Posté(e) le 19 octobre 2015 ... ou attendre que les plugins utilisateurs arrivent en v4, et que quelqu'un porte ce VD sous forme de Plugin.
Messages recommandés