jjacques68 Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 il y a 17 minutes, Lazer a dit : et surtout le statut des batteries des modules tu as utilisé un truc du genre : self:addInterfaces({"battery"})
Lazer Posté(e) le 25 mai 2020 Auteur Signaler Posté(e) le 25 mai 2020 oui tout à fait. Enfin pas avec "self" parce que c'est ce que j'ai fait au début comme un c.. et ça a immédiatement ajouté une batterie sur le module parent ! Pas bon (puisqu'il est alimenté sur secteur USB) Donc il faut le faire sur child: juste après sa création. En même temps qu'on lui ajoute des setVariable, qu'on lui définie son unité, etc etc. Bon bah voilà, les noeud morts ça fonctionne, c'est juste génial Simulation de panne de l'anémomètre : Et vue sur la page principale : PS : les 0.1mm de pluie c'est quand je suis allé bouger le pluviomètre pour faire remonter au moins une valeur, car sinon c'est un peu la sècheresse en ce moment. Et le vent n'est produit que par ma bouche sur l'anémomètre, car il est sur mon bureau. On fait ce qu'on peut pour tester.... Évidemment le retour à la vie du module est tout aussi instantané avec l'opération inverse : child:updateProperty("dead", false) J'arrête là pour ce soir 2
mprinfo Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 donc en résumé seilf.variable est visible dans le QA parents et si enfants ils y ont accès par contre : variable = "toto" c'est vu par tout le monde parent et enfants ? @lazer cela te convient il ? -- Generic device type have no default actions to handle -- double click par MPRINFO -- https://www.domotique-fibaro.fr function QuickApp:onInit() self:debug("onInit") self.DoubleClic = os.time() end function QuickApp:Reboot() self:DoubleClick() local http = net.HTTPClient({ timeout = 2000 }) local payload = {recovery=false} return http:request("http://localhost/api/service/reboot",{ options={ headers = { ["content-type"] = "application/json;charset=UTF-8", ["Authorization"] = "Basic YWRtaW46YWRtaW4=", ["X-Fibaro-Version"] = "2" }, method = "POST", data = json.encode(payload) } }) end function QuickApp:buttonclick() self:DoubleClick() end function QuickApp:confirmDoubleClick(msg, duree, time, NomBouton) if time < self.DoubleClic + duree then self:updateView(NomBouton, "text", " ") self.DoubleClic = self.DoubleClic - duree*60*1000 return true else self.DoubleClic = os.time() self:updateView(NomBouton, "text", msg) fibaro.setTimeout(duree*1000, function() self:updateView(NomBouton, "text", " ") end) return false end end function QuickApp:DoubleClick() local message = "Ré-appuyer pour confirmer" -- le message de confirmation local duree = 5 -- la durée max entre 2 clique (en seconde) local NomBouton = "button" -- ID du bouton qui doit avoir un double clic local time = os.time() if ( self:confirmDoubleClick(message, duree, time, NomBouton) ) == true then self:updateView("label1", "text", "Double clic") self:start() end end
jjacques68 Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 à l’instant, mprinfo a dit : dans le QA parents et si enfants ils y ont accès pour les enfant, il faut utiliser self.parent.xxx (il me semble)
Lazer Posté(e) le 25 mai 2020 Auteur Signaler Posté(e) le 25 mai 2020 Les variables globales, c'est le mal, il n'y a quasiment jamais besoin de les utiliser. Un programmeur doit normalement restreindre le plus possible la portée de ses variables, à son strict nécessaire : bloc, fonction, classe. @mprinfo désolé pas le courage de relire ton code maintenant.... et ni même demain car je n'ai jamais su lire de code sans couleur, tu pourrais au moins mettre le champ LUA quand tu codes le code sur le forum, ça aide
jjacques68 Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 il y a 1 minute, Lazer a dit : Les variables globales, c'est le mal, il n'y a quasiment jamais besoin de les utiliser. marrant ce que tu dis, sur le HC2 j'avais plusieurs dizaines de VG. Là sur le HC3, j'en ai 4. Vive les QA...
Lazer Posté(e) le 25 mai 2020 Auteur Signaler Posté(e) le 25 mai 2020 Attention à ne pas confondre les variables globales au sens de la HC2 et de la HC3. Et les variables globales au sein d'un script/programme (donc une scène, un VD, un QA) La confusion est facile. Mais ma remarque reste valable dans tous les cas : Un programmeur doit normalement restreindre le plus possible la portée de ses variables, à son strict nécessaire : bloc, fonction, classe.
mprinfo Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 @lazer j’ai mis en couleur je ne comprend pas trop ta réponse je mets toujours le code en couleur pour les scripts
jjacques68 Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 @mprinfo, je te confirmes que c'est tout en noir...
mprinfo Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 avant la couleur etait automatique pour le code lua en plus ce que je colle est en couleur -- Generic device type have no default actions to handle -- double click par MPRINFO -- https://www.domotique-fibaro.fr function QuickApp:onInit() self:debug("onInit") self.DoubleClic = os.time() end function QuickApp:Reboot() self:DoubleClick() local http = net.HTTPClient({ timeout = 2000 }) local payload = {recovery=false} return http:request("http://localhost/api/service/reboot",{ options={ headers = { ["content-type"] = "application/json;charset=UTF-8", ["Authorization"] = "Basic YWRtaW46YWRtaW4=", ["X-Fibaro-Version"] = "2" }, method = "POST", data = json.encode(payload) } }) end function QuickApp:buttonclick() self:DoubleClick() end function QuickApp:confirmDoubleClick(msg, duree, time, NomBouton) if time < self.DoubleClic + duree then self:updateView(NomBouton, "text", " ") self.DoubleClic = self.DoubleClic - duree*60*1000 return true else self.DoubleClic = os.time() self:updateView(NomBouton, "text", msg) fibaro.setTimeout(duree*1000, function() self:updateView(NomBouton, "text", " ") end) return false end end function QuickApp:DoubleClick() local message = "Ré-appuyer pour confirmer" -- le message de confirmation local duree = 5 -- la durée max entre 2 clique (en seconde) local NomBouton = "button" -- ID du bouton qui doit avoir un double clic local time = os.time() if ( self:confirmDoubleClick(message, duree, time, NomBouton) ) == true then self:updateView("label1", "text", "Double clic") self:start() end end punaise j avais jamais vu on peut choisir le type de code
jjacques68 Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 (modifié) il y a 7 minutes, Lazer a dit : Attention à ne pas confondre les variables globales au sens de la HC2 et de la HC3. Et les variables globales au sein d'un script/programme (donc une scène, un VD, un QA) c'est bien clair... Modifié le 25 mai 2020 par jjacques68
jjacques68 Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 et je te pompe le code par la même occasion merci !!
mprinfo Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 C'est bon j'ai touvé, je n'avais jamais fais attention à cela 1
mprinfo Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 @jjacques68 attention la fonction reboot n'est pas appeler car c'est un test pas envi de faire un reboot a chaque test
Krikroff Posté(e) le 25 mai 2020 Signaler Posté(e) le 25 mai 2020 Il y a 2 heures, Lazer a dit : Évidemment le retour à la vie du module est tout aussi instantané avec l'opération inverse : child:updateProperty("dead", false) J'arrête là pour ce soir J'adore c'est cool tu t’éclates Tu devrais aimer ceci alors: Message personnalisé QA:log("Waiting...") Effacement du message personnalisé QA:log("") Message personnalisé affiché 2 secondes puis raz QA:log("Please wait...", 2000) Message "transfer OK" affiché 2 secondes puis raz. QA:log("Transfer_was_OK", 2000) Message "failed" affiché 5 secondes puis raz QA:log("ZWave_Send_Failed", 5000) Voici comment j'ai intégré cela dans ma librairie perso: -- Name: log -- Arg1: message [string] The message to display -- Arg2: time [number] (option) The time in ms after reset log _ENV._logTimeoutID = 0 function QuickAppSdk:log(message, ms) local status, err = pcall(function() clearTimeout(_ENV._logTimeoutID) self.baseRef:updateProperty("log", tostring(message or "")) if (ms ~= nil) then assert(tonumber(ms), "log(arg1, arg2, arg3), invalid 'ms' argument, " .. ms .. " is not a number") _ENV._logTimeoutID = setTimeout(function() self.baseRef:updateProperty("log", "") end, ms) end end) -- error if not status then self:logger("error", "log: ", err) end end Enfin bref tu comprends l'idée 4
Lazer Posté(e) le 30 mai 2020 Auteur Signaler Posté(e) le 30 mai 2020 @BenjyNet Finalement j'ai trouvé un moyen super simple (mais basique) de faire remonter la Teleinfo (depuis l'Eco-Devices) dans DomoCharts. Il suffit pour cela d'utiliser un QA de type Power Sensor : J'ai mis l'unité en VA car c'est l'information que remonte le compteur. A partir de là c'est un Device standard, donc la valeur est récupérée par DomoCharts et envoyée dans la base de données. Par contre, c'est basique parce que ça ne prend pas en compte les tranches horaires (HC/HP, EJP, Tempo)
mprinfo Posté(e) le 30 mai 2020 Signaler Posté(e) le 30 mai 2020 Moi j'ai un QA unfi à te faire tester pour avoir ton retour. C'est un QA fait à partir du code du forum officiel Envoyé de mon BLA-L29 en utilisant Tapatalk
mprinfo Posté(e) le 31 mai 2020 Signaler Posté(e) le 31 mai 2020 Liste les devices au démarrage Ajoute la dernière adresse IP connu (Le setvariable ne ce fait que si l'adresse IP est différente) Affiche la version du contrôleur est si connecté si la mac est affichée le device n'est pas présent si l'ip est afficher le device est présent il me reste améliorer le contrôle de l'adresse mac Pour le moment je fais une concaténation afin d'avoir la même chaine que le QA original
mprinfo Posté(e) le 31 mai 2020 Signaler Posté(e) le 31 mai 2020 @lazer dernier version vérification MAC : Ok mise a jour de la valeur OK Amélioration du traçage Affichage des erreurs dans les étiquettes connections Mac adresse
J3R3M Posté(e) le 3 juin 2020 Signaler Posté(e) le 3 juin 2020 (modifié) Le 24/05/2020 à 23:07, Lazer a dit : J'avoue ça fait peur, je ne me suis pas encore lancé non plus. Je sors de nul part pour dire que j'ai abandonné. Je n'ai rien réussi à faire... Ça m'a tellement saoulé que j'ai failli commander une HC3 juste pour avoir l'impression de perdre moins de temps. J'ai ensuite eu la présence d'esprit de me dire que 500-600€ pour quelque chose que je n'utiliserai pas, c'était pas top. Le jour où il y en aura à 200€, prévenez-moi Débuguez bien ça s'il-vous-plaît, que je ne sois pas trop emm**** quand je débarquerai... En attendant, je reste avec une HC2 totalement fonctionnelle NB: Si vous avez un tuyau sans trop de prise de tête pour la simulation, promis, je m'y mettrai Modifié le 3 juin 2020 par J3R3M 1
Lazer Posté(e) le 11 juillet 2020 Auteur Signaler Posté(e) le 11 juillet 2020 Je continue à mettre à jour la première page. Prochains partages (QuickApp terminés... le temps de faire les tutos) : - QuickApp pour JPI (passerelle d'envoi de SMS/MMS sur smartphone Android) - QuickApp Netatmo Weather Station (version améliorée de celui qui est sur le market et auquel j'ai contribué) J'ai commencé le QuickApp Synology Surveillance Station...
mprinfo Posté(e) le 11 juillet 2020 Signaler Posté(e) le 11 juillet 2020 Pour le netatmo ce que je reproche à celui du market c'est qui crée des childs alors que l'on a pas le périphériqueExemple le module extérieur que je n'ai plus suite à une chute de 3m je suis obligé de supprimer des lignes pour que cela fonctionne Envoyé de mon BLA-L29 en utilisant Tapatalk
Lazer Posté(e) le 11 juillet 2020 Auteur Signaler Posté(e) le 11 juillet 2020 Bizarre ton truc tu testeras la nouvelle version, normalement il ne crée par les childs pour un module qui n'est pas connecté. J'ai testé avec le pluviomètre et l'anémomètre, mais pas avec la sonde température extérieure (car elle fonctionne toujours chez moi) Bon au pire tu cliques sur la poubelle pour supprimer les childs en trop, c'est pas la mort, c'est plus simple que de modifier des lignes de code LUA ou importe N fois le même module virtuel comme on faisait sur la HC2.
Messages recommandés