Sakkhho Posté(e) le 4 février 2017 Signaler Posté(e) le 4 février 2017 Oui. Je regarde samedi prochain car je pars en déplacement au Japon pour la semaine. Merci pour ton aide.
mprinfo Posté(e) le 4 février 2017 Signaler Posté(e) le 4 février 2017 N'oublie pas de ramener des bières pour@lazer c'est incroyable comme ce breuvage le motive lolEnvoyé de mon SM-G901F en utilisant Tapatalk 1
Sakkhho Posté(e) le 4 février 2017 Signaler Posté(e) le 4 février 2017 Bon apres une fin de journée galère. Vol annulé et donc j ai annulé mais semaine nippone Demain je regarde donc le sujet. :-)
Sakkhho Posté(e) le 5 février 2017 Signaler Posté(e) le 5 février 2017 (modifié) @Lazer j'ai dupliqué les 3 tables Water (water, water day; water month) j'ai ajouté dans index.php ceci <option value="gaz_day">Gaz [m3] (moyenne journalière)</option> --> <option value="gaz_month">Gaz [m3] (moyenne mensuelle)</option> --> et ceci dans le config.js {type:'gaz_day', title: "Historique de consommation de gaz (total journalier)", yaxis: 'Gaz (m3)', tooltip: 'm3', min: 0}, {type:'gaz_month', title: "Historique de consommation de gaz (total mensuel)", yaxis: 'Gaz (m3)', tooltip: 'm3', min: 0}, j'ai bon ? j'suis prêt pour la suite ? EDIT : Dans Domocharts, j'ai bien les 2 lignes (gaz_day et Month) et si je click dessus ca me dit "device no found" donc ca doit être bon Modifié le 5 février 2017 par Sakkhho
Lazer Posté(e) le 5 février 2017 Auteur Signaler Posté(e) le 5 février 2017 OK ça me semble un bon début Tu as mis gaz_day et gaz_month, je pense que tu peux rajouter gaz tout court, afin d'avoir le graph en temps réel (toutes les minutes) Ensuite, puisque tu m'as dis que tu as déjà les valeur dans des variables globales, le mieux est de les utiliser dans le VD Domocharts, comme indiqué sur la première page ça devrait donner un truc du genre : Il faut juste remplacer 2001 par un ID unique qui n'est pas encore utilisé dans la base de données et qui ne correspond à aucun device réel, et aussi l'ID de la pièce (room) Bouton n°1 - Sensors -- User Global Variables local variables = { { ["type"] = "gaz", ["id"] = 2001, ["name"] = "gasValueNow" } } Bouton n°4 - Devices -- User Global Variables local variables = { { ["type"] = "gaz", ["id"] = 2001, ["name"] = "Gaz", ["room"] = 99 -- Cuisine } }
Sakkhho Posté(e) le 5 février 2017 Signaler Posté(e) le 5 février 2017 (modifié) le truc c'est que ca va pousser une valeur consommation tous les 5mn correct ? (je me souviens plus exact du timing de la scene de domochart) comment fonctionne le device NorthQ : toutes les 15 (reveil) ils envoient de la lecteur du compteur sur la durée du sommeil (donc 15mn chez moi) donc entre 2 réveil de domochart j'aurai 3 fois la meme valeur, qui ne correspond pas à une consommation il faut peut être que je travaille avec une données deja cumulée ? je suis un peu perdu pour savoir laquelle remontée. le gasvaluenow c'est la valeur au compteur - soit chez moi 25645,45m3 en ce moment si on remonte cette valeur à chaque fois, on aura une courbe incremental, mais pas de consommation journalière. Modifié le 5 février 2017 par Sakkhho
Sakkhho Posté(e) le 5 février 2017 Signaler Posté(e) le 5 février 2017 (modifié) idealement, je devrai pousser la variable "gasToday" tous les soir à 23h59 vers domochart. car elle donne la consommation du jour et remise à 0 par le VD à 0h01 avec ceci jsonTable4 = json.decode(rgas) gasValueNow = jsonTable4.properties.value g1 = os.time{year=year, month=month, day=day, hour=00, min=01, sec=00} if g1 > time then gasStartToday = (jsonTable4.properties.value) fibaro:setGlobal("gasStartToday", gasStartToday) end vgasStartToday = fibaro:getGlobal("gasStartToday") gasToday = gasValueNow-vgasStartToday fibaro:setGlobal("gasToday", gasToday) meme si ca me parait aléatoire, car ce code est dans un bouton que je pousse toutes les 15mn donc je risque de le louper non si mon GEA presse à 23:58 et à 0:13 je vais donc faire un sorte que GEA appuie systématiquement sur le bouton à 0h01. mais bon ca me dit pas comment je remonte ma variable gasToday dans domochart juste pour avoir "Moyenne journalière" et "Moyenne Month" plus j'ai ca [DEBUG] 15:13:14: Error 6 : Invalid "type" value dans le debut du bouton sensor Modifié le 5 février 2017 par Sakkhho
Lazer Posté(e) le 5 février 2017 Auteur Signaler Posté(e) le 5 février 2017 Je me pose les mêmes questions que toi.... ce genre de device n'est vraiment pas pratique à grapher proprement, et mon outil Domocharts n'est pas du tout prévu pour cela. J'ai des problèmes similaires avec le relevée de Pluie de la station Netatmo, car le plugin ne renvoie la valeur que toutes les 10 minutes. pour le "type" je crois qu'il faut que tu modifies le fichier data_post.php Par contre ce que tu vas devoir modifier dans ce fichier va dépendre de ce que tu décideras de grapher..... consommation courante, consommation quotidienne, etc pas simple....
Sakkhho Posté(e) le 5 février 2017 Signaler Posté(e) le 5 février 2017 (modifié) la fréquence de remontée de domochart est lié aux appuies sur le bouton ? faut il alors que je crée un bouton spéciale - pour 1 appui par 1heure par exemple ensuite c'est domochart qui s'occupe de la moyenne jour et moyenne mois ? Modifié le 5 février 2017 par Sakkhho
Lazer Posté(e) le 5 février 2017 Auteur Signaler Posté(e) le 5 février 2017 Oui c'est toutes les minutes normalement si tu utilises la scène que je donne dans le tuto. Mais tu peux changer cette valeur, utiliser ta propre scène, ou GEA, etc. Domocharts réalise les moyennes une fois par jour à 00:01 en appelant la page generate_trends.php (toujours depuis la même scène)
Sakkhho Posté(e) le 5 février 2017 Signaler Posté(e) le 5 février 2017 (modifié) ok je vais voir pour ajouter qq lignes pour que la donnée GasHour remonte dans domochart et ensuite j'aurai la donnée per heure , et domochart me donnera par jour et par mois je me lance, mais je veux bien ton aide pour modifier les fichiers.php ok donc dans la scene tu as deja ca -- Actions to perform every new hour local newhour = os.date('%H') if newhour ~= hour then fibaro:debug('New hour') -- Actions to perform at 23:000 if tonumber(newhour) == 23 then fibaro:call(VirtualDeviceID, "pressButton", "3"); -- Battery level end hour = newhour end je vais donc juste rajouter -- Actions to perform every new hour local newhour = os.date('%H') if newhour ~= hour then fibaro:debug('New hour') fibaro:call(VirtualDeviceID, "pressButton", "xx"); -- GAZ hour = newhour end et pour être sur de conserver la valeur de GasHour, je vais la stocker qq part à mintues == 59 depuis mon VD et j'irai la chercher avec domochart. et le nouveau bouton devrait ressembler à ca ? j'ai supprimé tout ce qui est pas utile normalement -------------------------------------------------- -- Button : 7 => Gaz : -- Author : Lazer -- Version : 5.0 -- Date : Feb 2017 -------------------------------------------------- -- User Global Variables -- User Global Variables local variables = { { ["type"] = "gaz", ["id"] = 7999, ["name"] = "gasHour_2" } } -- System variables local debug = false local selfID = fibaro:getSelfId() local ip = fibaro:get(selfID, 'IPAddress') local port = fibaro:get(selfID, 'TCPPort') local NAS = Net.FHttp(ip, tonumber(port)) local erreur = 0 local sensors = {} -- Send data to NAS (SQL DB) function SendDataNAS (datas) if debug then fibaro:debug(json.encode(datas)) end if #datas > 0 then local payload = "/graph/data_post.php" local response, status, errorCode = NAS:POST(payload, json.encode(datas)) if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then jsonTable = json.decode(response); if jsonTable.success ~= true then erreur = erreur + 1 fibaro:debug('<span style="display:inline;color:red;">Error '..(jsonTable.error and jsonTable.error.code or "???")..' : '..(jsonTable.error and jsonTable.error.message or "???")..'</span>') elseif debug then fibaro:debug('<span style="display:inline;color:green;">OK : '..(jsonTable.rowcount or "???")..' lines inserted in DB</span>') end else erreur = erreur + 1 fibaro:debug('<span style="display:inline;color:red;">Error : Can not connect to NAS, errorCode='..errorCode..', status='..status..', payload='..payload..', response='..(response or "")..'</span>') end end end -- Get HC2 software version local HC2 = Net.FHttp("127.0.0.1", 11111) payload = "/api/settings/info" response, status, errorCode = HC2:GET(payload) if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then jsonTable = json.decode(response) if tonumber(jsonTable.softVersion) >= 4 then version = 4 else version = 3 end if debug then fibaro:debug("v"..version) end -- Get User Variable list (updated from FHEM through API) datas = nil local datas = {} for i = 1, #variables do payload = "/graph/data_post_" .. variables[i].type .. ".php?id=" .. variables[i].id .. "&value=" .. fibaro:getGlobalValue(variables[i].name) datas[#datas+1] = {} datas[#datas].id = variables[i].id datas[#datas].timestamp = 'NULL' datas[#datas].type = variables[i].type datas[#datas].value = fibaro:getGlobalValue(variables[i].name) end -- Send data to NAS SendDataNAS(datas) if erreur > 0 then fibaro:log("Erreur") else fibaro:log("Gas uploaded") end Modifié le 5 février 2017 par Sakkhho
Sakkhho Posté(e) le 5 février 2017 Signaler Posté(e) le 5 février 2017 (modifié) bon je crois que je suis bon, manque plus que les php. mais je suis perdu lol ca doit être par ici non ? (sachant que j'ai dupliquer les tables WATER, c'est peut être pas ca qu'il faut si d'un point de vue structure ? case 'gaz': if ($timestamp) { $SQLqueries[$type] = 'INSERT IGNORE INTO domotique_'.$type.' (time, device_id, value) VALUES '; $SQLvalues[$type]['timestamp'.$key] = $timestamp; $SQLvalues[$type]['id' .$key] = $id; $SQLrows[$type][] = '(FROM_UNIXTIME(:timestamp'.$key.'),:id'.$key.',:value'.$key.')'; } else throw new Exception('No timestamp value for gaz data type', 7); if ( isset($row->value) && is_numeric($row->value) ) $SQLvalues[$type]['value'.$key] = $row->value; else throw new Exception('Invalid JSON data', 5); break; EDIT j'ai bien une entrée dans la table "gaz" mais elle est à 0, alors que la variable gasHour est à 0.25 dans ma HC2 ? c'est une histoire de decimal ? Modifié le 5 février 2017 par Sakkhho
Lazer Posté(e) le 5 février 2017 Auteur Signaler Posté(e) le 5 février 2017 t'as bien avancé, désolé pas trop de temps pour t'aider ces temps-ci.... Oui si tu as copier les tables Water, je crois bien qu'elles sont de type entier et non décimal avec phpmyadmin tu peux changer le type des colonnes value, tu peux t'inspirer des tables temperature par exemple qui prennent les nombres décimaux
Sakkhho Posté(e) le 5 février 2017 Signaler Posté(e) le 5 février 2017 (modifié) Merci @Lazer - vu c'est changé en decimal (idem pour les tables _day et _month). Ca devrait le faire je suppose. je n'ai rien à faire pour calculer les moyenne day et month ? tu confirmes ? tout est automatique ? A partir de combien de valeur je vais voir le graph ? car j'avais 3 valeurs à 0 mais ca reste sur "please wait" Modifié le 5 février 2017 par Sakkhho
Lazer Posté(e) le 5 février 2017 Auteur Signaler Posté(e) le 5 février 2017 Si ajouter des requêtes dans generate_trends.phpMais attends d'avoir quelques jours de données pour voir si le graph a une bonne tronche.
Sakkhho Posté(e) le 5 février 2017 Signaler Posté(e) le 5 février 2017 (modifié) ok on verra demain alors. le graph veut un autoscale ? car je vais avec des valeurs en 0.xx par heure, donc faudrait que je plot max avec 1 ou 2m3 Modifié le 5 février 2017 par Sakkhho
Lazer Posté(e) le 5 février 2017 Auteur Signaler Posté(e) le 5 février 2017 Oui autoscale, mais attends d'avoir des valeurs pour que le graph ressemble à quelque chose.Sinon tu peux fixer des bornes min et Max dans config.js. Regarde les exemples pour les autres types de graph (notamment humidité).
Sakkhho Posté(e) le 5 février 2017 Signaler Posté(e) le 5 février 2017 ok merci 21h, j'ai bien une valeur autre que 0 dans la table Ca sens bon :-)
Sakkhho Posté(e) le 6 février 2017 Signaler Posté(e) le 6 février 2017 salut @Lazer, à partir de combien de données il trace qq chose ? J'ai 10 entrée dans la base et j'ai toujours le "please wait" j'ai loupé un truc?
Lazer Posté(e) le 6 février 2017 Auteur Signaler Posté(e) le 6 février 2017 Normalement tu commences à avoir un graph dès qu'il y a quelques données. Si tu as le Please Wait c'est qu'on a oublié quelque chose.... mais alors là, je ne vois pas quoi, ça fait tellement longtemps que je n'ai pas remis la tête dedans ! Il faudrait que tu fasses F12 sur ton navigateur pour activer le mode debugguer, et regarder les messages de la console Javascript, ça nous donnerait une piste.
Sakkhho Posté(e) le 6 février 2017 Signaler Posté(e) le 6 février 2017 (modifié) Uncaught TypeError: Cannot read property 'min' of null graph.js:69 createChart @ graph.js:69 (anonymous function) @ graph.js:198 j @ jquery-2.1.4.min.js:2 fireWith @ jquery-2.1.4.min.js:2 x @ jquery-2.1.4.min.js:4 (anonymous function) @ jquery-2.1.4.min.js:4 ca te parle ? Modifié le 6 février 2017 par Sakkhho
Lazer Posté(e) le 6 février 2017 Auteur Signaler Posté(e) le 6 février 2017 Hum, tu demandes à afficher un graph de gaz_day, non ? Auquel cas je pense qu'il faudrait aussi modifier le fichier data_get.php car tu as du te baser sur la table water, donc il faudrait que tu copies/colles la même chose que water, le traitement est particulier et différent des autres tables
Sakkhho Posté(e) le 6 février 2017 Signaler Posté(e) le 6 février 2017 (modifié) you rock ca trace la conso :-) maintenant les conso jour et mois :-) Modifié le 6 février 2017 par Sakkhho 1
mprinfo Posté(e) le 6 février 2017 Signaler Posté(e) le 6 février 2017 Cool il va pouvoir ce pencher sur un script que j'attends....Comme dirai@jojo Christophe serait il possible lorsque tu auras un moment de corriger le script qui ne fonctionne plus depuis la 4.11Car moi aussi j'aime ma box lolEnvoyé de mon SM-G901F en utilisant Tapatalk
Lazer Posté(e) le 6 février 2017 Auteur Signaler Posté(e) le 6 février 2017 Ah voilà, c'est pas mal ça Visiblement une mesure toutes les 30 minutes.Pour les stats à long terme, il faut faire la somme, avec des requêtes SQL : sumRegarde dans generate_trends si il y a des exemples.Au pire tu prends température et tu remplaces AVG par SUM. 1
Messages recommandés