Arnaud78 Posté(e) le 28 mars 2014 Signaler Posté(e) le 28 mars 2014 Bonjour à tous, Je suis en train de réfléchir sur un module virtuel qui me donnerait (en appuyant sur un bouton) en temps réel le classement des 10 appareils (Wall plug, module, etc..) qui consommeraient le plus. Cela me permettrait de vérifier quels sont les appareils qui sont allumés et quel est leur consommation et ce depuis mon smartphone et non depuis un Ipad ou un PC. Si vous avez des idées sur la marche à suivre ou si vous avez déjà quelques choses qui ressemble à cela, je suis preneur . Autrement si des membres sont intéressés on peut essayer de faire quelques choses en commun. Bonne journée à tous.
Krikroff Posté(e) le 28 mars 2014 Signaler Posté(e) le 28 mars 2014 Tu devras utiliser l' API pour recéper un json avec toutes les données filtrées, et utiliser tout cela pour mettre à jour ton device, rien d'insurmontable . Je test actuellement la version Alpha 3.901 donc je ne peut pas tester cela aujourd'hui. Bonne idée
Shad Posté(e) le 28 mars 2014 Signaler Posté(e) le 28 mars 2014 C'est pas bête surtout que c'est vrai que dans le dashboard tu n'as rien par rapport àsa.
Lazer Posté(e) le 29 mars 2014 Signaler Posté(e) le 29 mars 2014 (modifié) Et voilà le virtual device tout prêt à télécharger. C'était une bonne idée, et j'ai appris plein de trucs sur la manipulation des tableaux ce soir -- -- This virtual device displays top ten power consumption -- Author : Lazer -- Date : March 2014 -- -- User variables local maxNodeID = 100 -- System variables local devices = {} local j=1 local selfID = fibaro:getSelfId() -- Search for power consumption for i = 1, maxNodeID do if string.find(fibaro:get(i, 'unitSensor'), "W") ~= nil or string.find (fibaro:get(i, 'unit'), "W") ~= nil then if fibaro:getType(i) == "multi_level_sensor" then deviceValue = fibaro:getValue(i, "value") else deviceValue = fibaro:getValue(i, "valueSensor") end devices[j] = {i, tonumber(deviceValue)} j = j + 1 end end -- Sort table from highest to lowest table.sort(devices, function(a, return a[2]>b[2] end) -- Display results for i = 1, 10 do if devices[i][2] > 0 then fibaro:debug(i .. " id=" .. devices[i][1] .. " - Value=" .. devices[i][2] .. " - Name=" .. fibaro:getName(devices[i][1]) .. " " .. fibaro:getRoomNameByDeviceID(devices[i][1]) ) fibaro:call(selfID, "setProperty", "ui.Label"..tostring(i)..".value", fibaro:getName(devices[i][1]) .. " (" .. fibaro:getRoomNameByDeviceID(devices[i][1]) .. ") : " .. devices[i][2] .. "W" ) else fibaro:call(selfID, "setProperty", "ui.Label"..tostring(i)..".value", "") end end . Note : La nouvelle version de ce module est maintenue par @jojo sur le nouveau sujet de discussion : [Tuto Energie] Top 10 Power Top_10_Power.vfib Modifié le 27 avril 2015 par Lazer 5
Krikroff Posté(e) le 29 mars 2014 Signaler Posté(e) le 29 mars 2014 je n'aurais je pense pas eu la même approche mais le résultat est la: GOOD JOB
Lazer Posté(e) le 29 mars 2014 Signaler Posté(e) le 29 mars 2014 Ca aurait été plus galère avec l'API car il faut jouer avec le json.decode. Tandis que là j'ai juste récupéré le bout de code utilisé dans les graphiques de temp/hygro/conso. C'est vraiment le tri du tableau qui m'a donné du fil à retordre... m'enfin maintenant c'est bon
Shad Posté(e) le 29 mars 2014 Signaler Posté(e) le 29 mars 2014 Pareil je n'aurais pas eu la même approche, mais bravo.
Arnaud78 Posté(e) le 29 mars 2014 Auteur Signaler Posté(e) le 29 mars 2014 Merci à Lazer pour ce travail si rapide et correspondant à l'idée que je me faisais de ce module virtuel. Merci également à tous ceux qui ont bien voulu répondre. Dans le même souci de vérification et de contrôle des Wall plug etc je me demandais si il ne serait pas possible d'avoir un bouton pour les désactiver, du moins désactiver celui que l'on voudrait. Un bouton on off en face de chacun des 10 id afin de délester si besoin. Un peu comme un délesteur dynamique. Merci encore une fois, il est installé et fonctionne à merveille. Dois-je mettre résolu ? A bientôt.
Lazer Posté(e) le 29 mars 2014 Signaler Posté(e) le 29 mars 2014 Je ne crois pas qu'il soit possible de mettre un bouton à coté du label dans un module virtuel. Une solution de contournement serait de mettre un bouton en dessous de chaque label, mais ça va surcharger l'affichage et faire moche. Je ne sais pas si en v4 il sera possible d'améliorer le layout des modules virtuels, mais pour le moment c'est un peu trop limité. Sinon pour faire ce que tu veux faire, il faudrait se tourner vers une page en PHP/HTML hébergée sur un serveur Web externe (NAS, ...). Mais ça ne sera pas intégré au HC2. Pour le sujet résolu, c'est toi qui voit
Arnaud78 Posté(e) le 30 mars 2014 Auteur Signaler Posté(e) le 30 mars 2014 Ok merci Lazer pour ces précisions, je passe donc en sujet résolu. Merci àtous.
DG83VER Posté(e) le 30 mars 2014 Signaler Posté(e) le 30 mars 2014 Mis en place, fonctionne àmerveille ! Super !!
Fredric Posté(e) le 31 mars 2014 Signaler Posté(e) le 31 mars 2014 j'ai un petit soucis, il ne me reconnait que un wall plug et une lumière, il n'affiche que le plus consommateur d'une catégorie? ou il pourrait m'afficher 10 wall plug, (si j'en avait dix) ?
Arnaud78 Posté(e) le 31 mars 2014 Auteur Signaler Posté(e) le 31 mars 2014 Je n'ai pas ce souci, le module virtuel me montre 7 wall plugs et 2 autres appareils. Attention toutefois au nombre max de nods indiqué ici : Je pense qu'il faut augmenter ce nombre si tu as beaucoup de modules. Est-ce bien cela Lazer ? local maxNodeID = 100
Fredric Posté(e) le 31 mars 2014 Signaler Posté(e) le 31 mars 2014 non, j'en ai pas tant que çà , mais il affiche que deux retours, un wall plug et une lumiere alors que j'en ai une dizaines, dont 3 wall plug.
Arnaud78 Posté(e) le 31 mars 2014 Auteur Signaler Posté(e) le 31 mars 2014 Alors, après vérification plus poussée, il semble que certains de mes wall plugs ne soient pas pris en compte non plus. Là ou c'est étrange, c'est que ceux sont des wall plug. Je me demande si le code ne plante pas dans la vérification d'un module en particulier et donc le ferais arrêter dans le début ? C'est vrai que perso j'ai au moins 30 wall plugs et que je n'ai jamais vu plus de 9 numéros renseignés sur la liste. Laser, aurais-tu une idée ? Faut-il extraire un module de la liste des nods pour éviter une requête quelque part ? ou peut être même préciser la liste des nods à vérifier ?
Lazer Posté(e) le 31 mars 2014 Signaler Posté(e) le 31 mars 2014 En effet, il faut bien augmenter la variable maxNodeID en fonction de vos besoins. D'ailleurs, ce week-end je viens de dépasser cette limite chez moi. En ce qui concerne l'affichage des modules, le script devrait normalement tout prendre en compte sans se limiter à quelques uns. Essayez d'ouvrir la fenêtre de Debug et de copier/coller l'affichage ici. Si il y a un bug, ça apparaitra surement.
Arnaud78 Posté(e) le 31 mars 2014 Auteur Signaler Posté(e) le 31 mars 2014 @ Lazer : 340 modules en tout genre et cela fonctionne parfaitement après vérification d'un module AEON DSB05 qui faisait planter le code. @Frederic : Après vérification, le code fonctionne bien, mais il m'a fallu exclure et ré inclure 1 module (DSB05) et en réactiver 1 (ST814). Donc ok de mon coté. Ce qui est bien, c'est que je ne pouvais plus utiliser le toolkit de Krikroff à cause apparemment de ce DSB05 et que maintenant tout est rentré dans l'ordre.
Krikroff Posté(e) le 31 mars 2014 Signaler Posté(e) le 31 mars 2014 H.S: @Arnaud78, c'était quoi le problème avec le Toolkit et le DSB05 ?
Arnaud78 Posté(e) le 31 mars 2014 Auteur Signaler Posté(e) le 31 mars 2014 H.S. @Krikroff : Le DSB05 faisait planter le script de Lazer, une fois exclu et réinstallé, tout est rentré dans l'ordre. Par contre, le ST814 en ID:36 faisait planter le toolkit. Lorsque je lançais la recherche des appareils, je scrollais la liste et juste avant de faire apparaître le ST814, il y avait un crash. J'ai simplement triple cliqué sur le bouton d'activation afin de lui faire reconnaître sa position et tout est ok maintenant. Je ne sais pas trop l'expliquer car je ne pense pas qu'il y ait de rapport mais bon. Cela faisait des semaines que je ne pouvais plus utiliser le toolkit... Donc maintenant c'est
Krikroff Posté(e) le 31 mars 2014 Signaler Posté(e) le 31 mars 2014 ... Étrange comme truc ! Merci pour l'info.
electone77 Posté(e) le 12 avril 2014 Signaler Posté(e) le 12 avril 2014 J'ai du oublier un truc tout bête, mais j'ai importé le module en l'état et ça ne marche pas chez moi.. quand je passe en mode debug j'ai : [ERROR] 11:02:54: line 29: attempt to compare number with nil La ligne 29 étant : table.sort(devices, function(a, return a[2]>b[2] end) merci par avance de votre aide
Fredric Posté(e) le 12 avril 2014 Signaler Posté(e) le 12 avril 2014 je suis désolé electone77, je n'ai pas la réponse à ta question. pour revenir sur mon problème sur la page précédente, c’était bien le problème du paramètre local maxNodeID = 100 j'ai fait l'amalgame entre nombre de device et d'ID, donc en augmentant ce paramètre, tout est rentré dans l'ordre
Lazer Posté(e) le 12 avril 2014 Signaler Posté(e) le 12 avril 2014 Tu dois avoir un device qui renvoie une valeur NULL au lieu de renvoyer sa consommation. Tu peux essayer de remplacer les lignes 23 et 24 : devices[j] = {i, tonumber(deviceValue)} j = j + 1 Par : if deviceValue ~= nil then devices[j] = {i, tonumber(deviceValue)} j = j + 1 end
jojo Posté(e) le 12 mars 2015 Signaler Posté(e) le 12 mars 2015 Vous commencez à me connaître ... Dès que je trouve un module sympa, j'essaie de le rendre encore plus sympa ... J'ai donc adapté le module Top 10 Power de Lazer. Il tourne toutes les 1 minutes (paramétrable dans le champ TCP Port du VD), fait un total de la consommation de tous les modules découverts et affiche une icône en fonction de la consommation actuelle (par rapport à une consommation totale paramétrable). Ce module fonctionne pour la v3.x, mais n'est pas encore compatible ave c la v4.x (un peu de patience SVP) Top_10_Power_v2.0.vfib Les icones : 1
Messages recommandés