mprinfo Posté(e) le 2 avril 2015 Signaler Posté(e) le 2 avril 2015 @pepite merci le test de STEVEN sert a savoir combien de temps mets la HC2 pour écrire et lire une variable globale c'est une sorte de BENCH il fais cela pour essayer d'optimiser son code sur la HC2
trainkill666 Posté(e) le 2 avril 2015 Signaler Posté(e) le 2 avril 2015 @pepite le code a été modifié ce matin, donc c le premier.
nigamais Posté(e) le 2 avril 2015 Signaler Posté(e) le 2 avril 2015 Bonjour,quel code prendre ?je suis perdu pour contrôle les lumières et avec des dimers?
trainkill666 Posté(e) le 2 avril 2015 Signaler Posté(e) le 2 avril 2015 Celui du Gazous à17h50 est opérationnel, le mien a 20h14 est àtester. Il n'ont pas le même fonctionnement (voir commentaire du post)
mprinfo Posté(e) le 2 avril 2015 Signaler Posté(e) le 2 avril 2015 il faudrait demander a neliger si il veut pas le mettre dans le 1 post Autrement on peut ouvrir un nouveau sujet avec le bon code et demander aux admin de mettre ce sujet dans le bistro on dial dans le bistro et on mets le sujet a jour ensuite ça évite les erreurs
Gazous Posté(e) le 2 avril 2015 Signaler Posté(e) le 2 avril 2015 Oui ça serait plus logique de mettre àjour le code du post original. @mprinfo, j'ai trouvé un technique pour créer une variable globale mais c'est via l'API.
megabubu Posté(e) le 2 avril 2015 Signaler Posté(e) le 2 avril 2015 Oui mettre àjour, car étant un nul, je suis perdu la :-)
mprinfo Posté(e) le 2 avril 2015 Signaler Posté(e) le 2 avril 2015 Merci Gazous c'est pour quand je partage des VD car pas toujours simple a ce qu'il soit portable je suis un bille avec l'api mais si tu me donnes code je pense arrivé a me débrouiller Si neliger ne peut pas modifier le post car en ce moment je sais qu'il n'a pas trop le temps on peut recrée un nouveau sujet ca sera simple ca il y a un faute de frappe dans le titre On dit que l'idée de départ et de néliger et on post le bon code par contre on continue ici pour discuter a l'améliorer et je veux bien demander a un admin de déplacer le sujet dans le bistrot @megabubu je suis pas d'accord avec toi un personne de nul c'est quelqu'un qui n'essaie pas donc c'est pas ton cas
neliger Posté(e) le 2 avril 2015 Auteur Signaler Posté(e) le 2 avril 2015 Oui, vous pouvez faire cela. Je manque de temps, en effet, et ne pensais pas que ce léger module susciterais cette attention. De mon côté, je pense plutôt partir dans le développement de plug-in, si c'est l'avenir de la contribution sur Home Center, et cela me permettra peut-être de faire des choses bien plus complexes et complètes. 1
mprinfo Posté(e) le 2 avril 2015 Signaler Posté(e) le 2 avril 2015 En attendant on fait ce que l'on peu avec ce que l'on a
mprinfo Posté(e) le 3 avril 2015 Signaler Posté(e) le 3 avril 2015 @Gazous la reponse pour les variables globla ce trouve ici : http://www.domotique-fibaro.fr/index.php/topic/266-taille-maximale-dune-cha%C3%AEnes-dans-une-variable-globale/ 228 caractéres
pepite Posté(e) le 7 avril 2015 Signaler Posté(e) le 7 avril 2015 quzlqu'un at-til teste le code de trainkill ;-) Au fait, quid des lampes derriere les WallPlug ?
trainkill666 Posté(e) le 7 avril 2015 Signaler Posté(e) le 7 avril 2015 (modifié) @pepite Soit tu fais une recherche par nom grâce à if valeur.name == "ton nom de module" (test que j'effectue pour palier le islight qui ne fonctionne pas à cause de la V4.040). J'en avais parlé au début du tuto. Soit avec if valeur.type == "com.fibaro.FGWP101" Ces conditions de test sont également à rajouter dans le code, si ça t' intéresses je peux le faire. J'ai testé le code en shintant le islight et ça semble fonctionner (il y avait un tite erreur). Modifié le 7 avril 2015 par trainkill666
Gazous Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 Un petit retour de mon côté après quelques jours d'utilisation. Je remarque que mon script se bloque régulièrement au bout de quelques heures. Tout d'un coup, il ne tourne plus et quand je l'édite et sauvegarde ça repart. Comme si la boucle se bloquait àun moment donné. J'ai fait le test en retirant le While true pour qu'il tourne toutes les 3s via le fonctionnement natif de la main loop, pareil. J'ai aussi tout passé dans une fonction pour l'appeler en pcall et c'est toujours pareil. Je ne sais pas ce qui peut le bloquer ainsi. Une idée ?
pepite Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 @trainkill : t'as teste avec quoi alors comme code ? avec le nom j'ai l'impression que ce serait plus fiable, on connait nos modules ;-) mais a discuter. @Gazous, je me demande si cela ne vient pas de la boucle, pe en la mettant dans un bouton type "rafraichir" et ne mettre que dans le mainloop un "pressbutton" toutes les x minutes
Gazous Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 J'ai songé àcela mais ce qui me gêne c'est que l'appuis sur le bouton génère un changement de l'icône indésirable àchaque occurence. J'ai d'autres modules qui tournent en permanence et n'ont pas ce problème. Je vais creuser pour voir ce qui bloque...
mprinfo Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 Il faudrait voir si cela bloc en v3.60 Envoyé de mon SM-G900F en utilisant Tapatalk
pepite Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 ca change l'icone meme si tout est allume ou tout eteint ? Au fait, vous savez que Steven avait deja fait un code semblable avec une petite fonction puis appel de la fonction ;-) ? et tres lisible. A tester avec les exclusions souhaitees et autres je vous mets le bout de code que j'ai trouve, et si modif, ne pas oublier de demander l'autorisation ;-) function turnIt(mode) -- On parcours les 350 premiers modules for i = 1, 1000 do -- Si un module est de type Eclairage local ret = fibaro:get(i, 'isLight') if (type(ret) == "string" and string.find(ret, "1" )) then -- On l'allume ou l'éteint fibaro:call(i, mode) end end end turnIt("turnOn") --turnIt("turnOff")
trainkill666 Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 J'ai refait tout le code à ma façon cet après-midi (après une interminable petite sieste), 100% fonctionnel, par contre je n'ai pas eu le temps de mettre les commentaires sur le code. Ma façon de raisonner (suis gaucher donc un peu bizarre ) : ->Plutôt que d'essayer de lister l'éclairage avec islight, puis de supprimer ce qui ne doit pas l'être, autant mettre seulement les noms exactes des éclairages (j'ai énormément de FGS221 qui ne servent pas à l'éclairage), c'est beaucoup plus simple (sauf pour ceux qui ont un château ). -> J'ai séparé le listage de mise à jour des modules du reste. On ne change pas de modules d'éclairage tous les jours, donc inutiles de charger la mémoires pour rien. Il suffira de cliquer sur "mise à jour" après actualisation du listage des modules par nom pour la V1 ou choix du mot clé pour la V2. De plus comme c'est nous qui complétons la liste, elle ne change pas entre-temps. V1 du bouton "Mise à jour": liste complétée manuellement. ou V2 :du bouton "Mise à jour : recherche automatique par mot clé des modules. IL faut créer un module virtuel nommé "Eclairage général" (c'est un exemple ) avec : -> 1 bouton nommé "Arrêt" (ne pas oublié d'y mettre l'icône représentant l'éclairage éteint). -> 1 bouton nommé "Mise à jour" (également avec un joli icône pour éviter 10 secondes de carré bleu le temps de la mise à jour de celui-ci). Voici le code (je ne sais pas ajouter directement le module , si il y a un volontaire pour m'expliquer) : "Arrêt" --fonction arrêt éclairage local verifeclairage = function(liste) for index,valeur in ipairs(liste) do if tonumber(fibaro:getValue(valeur, "value")) > 0 then fibaro:call(valeur, "turnOff") end end end ----------------------------------------------------------------------------- --récupération des IDS des modules à éteindre local listeclairage = json.decode((fibaro:getGlobal("listeclairage"))) --éteint les modules verifeclairage(listeclairage) "Mise à jour" V1 avec la liste des modules complétée manuellement : local HC2 = Net.FHttp("127.0.0.1", 11111) local reponse = HC2:GET("/api/devices") local resultat = json.decode(reponse) --fonction recherche modules local recherche = function (correspondance) local listeobtenue = {} for index, valeur in ipairs(resultat) do if correspondance[valeur.name] ~= nil then table.insert(listeobtenue, valeur.id) end end return listeobtenue end ---------------------------------------------------------------------------- --liste des modules d'éclairage local listemodules = { ["Eclairage Bureau"] = 1, ["Eclairage Chambre"] = 2, ["Eclairage Couloir"] = 3, ["Eclairage Cuisine"] = 4, ["Eclairage Hall"] = 5, ["Eclairage Salon"] = 6, ["Eclairage SdB"] = 7 } --création de la liste fibaro:setGlobal("testeclairage",json.encode(recherche(listemodules))) ou "Mise à jour" V2 avec listage automatique par mot clé : local HC2 = Net.FHttp("127.0.0.1", 11111) local reponse = HC2:GET("/api/devices") local resultat = json.decode(reponse) --fonction recherche modules local recherche = function (correspondance) local listeobtenue = {} for index, valeur in ipairs(resultat) do if (valeur.name):find(correspondance) and valeur.type ~= "virtual_device" then table.insert(listeobtenue, valeur.id) end end return listeobtenue end ---------------------------------------------------------------------------- --création de la liste fibaro:setGlobal("testeclairage",json.encode(recherche("Eclairage"))) Main Loop : ----------------------------------------------------------------------------- --Trainkill666 ----------------------------------------------------------------------------- -- Identiants des icônes local iconearret, iconemarche = 1020, 1019 -- Intervalle de mise à jour automatique (en secondes) local IntervalleMAJ = 10 ----------------------------------------------------------------------------- --création de la liste des éclairages local listeclairage = json.decode((fibaro:getGlobal("listeclairage"))) --vérification des états local listeactif = 1 for index,valeur in ipairs(listeclairage) do if tonumber(fibaro:getValue(valeur, "value")) > 0 then listeactif = 2 end end -- Mise à jour de l'icône local choixicone = {iconearret, iconemarche } fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", choixicone[listeactif]) -- Attente de la prochaine mise à jour automatique fibaro:sleep(IntervalleMAJ*1000)
megabubu Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 Moi, j ai le même prob que Gazous, ca bloc au bout d un certain temps. :-) J aimais bien le script pourtant. Je suis en V4.040
trainkill666 Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 (modifié) @megabubu : Tu as essayé celui que je viens de poster ? En modifiant le code de neliger précédemment je n'avais pas fait attention, on a tous commis la même erreur (Gazous également). J'y ai pensé en recommençant tout à partir de zéro. Il s'agit d'un Main Loop, il tourne déjà en boucle, donc le while true do end et totalement inutile. Seul le fibaro:sleep() suffit. Peut-être est-ce la cause du plantage de son programme. Ou le chargement toutes les 10 secondes de la liste des modules par l'api. J'avais un problème identique dans un module virtuel de vérification des noeuds mort toutes les 30 secondes. PS : commentaire inutile donc barré sur le while true do, Gazous en a parlé quelques posts avant. Il faut que je pense à lire les posts précedents . Modifié le 8 avril 2015 par trainkill666 1
Gazous Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 Pas grave c'est pas toujours facile de relire tout les messages. J'ai refais un test de mon côté et toujours un blocage au bout de 2h environ. Je crois que c'est l'appel àl'API qui bloque, je ne vois que cela. Je vais faire d'autres essais avec un code différent et reviens si j'ai un mieux.
megabubu Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 @trainkill666 en fait, non, moi j'ai un peu de mal, si tout n'est pas deja maché
mprinfo Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 Gazous tu peux me donner le script pour la création de VG en lua si tu veux bien Merci Envoyé de mon SM-G900F en utilisant Tapatalk
Messages recommandés