Bloug Posté(e) le 25 juin 2022 Signaler Partager Posté(e) le 25 juin 2022 Salut @RS600807 , j'arrive bien à créer les deux child Température et Humidité et j'en récupère les valeurs comme sur mon screen au dessus. Ma modification n'est surement pas " propre " mais elle marche Je te colle mon fichier complet pour que tu puisse voir où j'ai ajouter lignes. En revanche une fois la modification effectuée il faut récupérer l'ID des Childs créés et RE-modifier le code à la ligne 208 et 210 pour bien actualiser les valeurs... -------------------------------------------------------------------- -- Mise à Jour du Childs devices Température : self.childDevices[397]:updateProperty("value", ambTemp) -- Mise à Jour du Childs device Humidité : self.childDevices[398]:updateProperty("value", humidity) -------------------------------------------------------------------- Airzone_Bureau.fqa Voilou Lien vers le commentaire Partager sur d’autres sites More sharing options...
RS600807 Posté(e) le 25 juin 2022 Signaler Partager Posté(e) le 25 juin 2022 Salut Bloug, Merci pour ta réponse et ton fichier joint. En m'inspirant de ce que j'ai trouvé sur une autre QA, j'ai updaté la QA airzone comme suit: - elle crée 2 child devices (T°C et humidité) - il n'est pas nécessaire de revenir dans le code pour rentrer les ID des devices child, la gestion des classes s'en charge (du moins c'est ce que j'en ai compris) - il y a la possibilité de mettre un indicateur sous le nom du device qui te retourne un commentaire : par exemple si dans tes critères (qui restent paramétrables) tu estimes que la température optimale de ta pièce est comprise entre 21 et 23°C, alors il t'affiche "optimale"). C'est un petit plus que je trouve sympa. Ci-dessous le fichier si ça t'intéresse d'y jeter un oeil. Il y a peut-être moyen d'optimiser les choses ou de faire plus propre. Mais en l'état cela me convient (pour un novice en LUA). A l'occasion dis moi ce que tu en penses. A+ Airzone+Child.lua 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bloug Posté(e) le 30 décembre 2022 Signaler Partager Posté(e) le 30 décembre 2022 (modifié) Bonjour, Je souhaite ajouter un child supplémentaire, après avoir modifier mon QA rien ne se passe comme prévu Je suis toujours obligé de " supprimer " mon QA puis de le " recharger " Est il possible de m'expliquer pourquoi ? je suppose que le pb est vers le onInit ? function QuickApp:onInit() __TAG = "QA"..plugin.mainDeviceId.."_Vaillant" self:updateProperty("deviceIcon", 1054) -- Icone API Offline log = self:getVariable("UserName") pass = self:getVariable("Password") serial = self:getVariable("Serial") self.refresh = tonumber(self:getVariable("Update")) self.http = net.HTTPClient({ timeout = 5000 }) self:loop() self:initChildDevices({ ["com.fibaro.temperatureSensor"] = VaillantTempCouloir, ["com.fibaro.temperatureSensor"] = VaillantTempExterieur, ["com.fibaro.multilevelSensor"] = VaillantPressure, ["com.fibaro.temperatureSensor"] = VaillantTempDepEau, ["com.fibaro.powerSensor"] = VaillantConsoGazBoiler, ["com.fibaro.powerSensor"] = VaillantConsoGazECS, ["com.fibaro.powerSensor"] = VaillantConsoElecBoiler, ["com.fibaro.powerSensor"] = VaillantConsoElecECS, ["com.fibaro.temperatureSensor"] = VaillantConChaudiere, ["com.fibaro.temperatureSensor"] = VaillantConECS, ["com.fibaro.temperatureSensor"] = VaillantEtatECS }) local i = 0 self.sondes = {} for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) self.sondes[i] = id end if i == 0 then local Nom = "T° Couloir" self:createChildTmpsCouloir(Nom) local Nom = "T° Exterieur" self:createChildTmpsExterieur(Nom) local Nom = "Pression" self:createChildPressure(Nom) local Nom = "T° Sonde Départ" self:createChildTempEauDepart(Nom) local Nom = "T° ECS" self:createChildTempECS(Nom) local Nom = "Conso Gaz " self:createChildConsoGazBoiler(Nom) local Nom = "Conso Gaz ECS" self:createChildConsoGazECS(Nom) local Nom = "Conso Elec Chaudière" self:createChildConsoElecBoiler(Nom) local Nom = "Conso Elec ECS " self:createChildConsoElecECS(Nom) local Nom = "Consigne Chaudière " self:createChildConChaudiere(Nom) local Nom = "Consigne ECS " self:createChildConECS(Nom) local Nom = "Etat ECS " self:createChildEtatECS(Nom) end end -- - - - - - OnInit merci Modifié le 30 décembre 2022 par Bloug Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 30 décembre 2022 Signaler Partager Posté(e) le 30 décembre 2022 Quelques pistes : - la fonction initChildDevices() doit être la première appelée dans le onInit du QA, donc avant d'appeler les fonctions updateProperty, getVariable, et surtout loop() - idéalement c'est mieux d'appeler la fonction loop() dans un setTimeout, même avec un délai de 0, car ça déclenche un process asynchrone donc après la fin de l'exécution de onInit() - toutes tes fonctions createChildXXX() ne devraient pas être dans le onInit(), il faut les mettre dans une fonction spécifique, exécutée avec un bouton par l'utilisateur Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bloug Posté(e) le 30 décembre 2022 Signaler Partager Posté(e) le 30 décembre 2022 (modifié) merci pour les pistes 1 - J'ai donc déplacé la fonction initChildDevices() en premier dans le onInit. 2 - Pour la fonction loop() elle est bien dans un setTimeout function QuickApp:loop() print("<font color=grey>**** R E F R E S H **** " .. os.date("Dernière mise à jour le %d/%m à %H h : %M").. " ****") self:multimatic() fibaro.setTimeout(self.refresh * 1000, function() self:loop() end) end 3 - j'ai déposé l'ensemble dans une fonction , pour l'exécuter avec un bouton function QuickApp:CreateChild() local i = 0 self.sondes = {} for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) self.sondes[i] = id end if i == 0 then local Nom = "T° Couloir" self:createChildTmpsCouloir(Nom) local Nom = "T° Exterieur" self:createChildTmpsExterieur(Nom) local Nom = "Pression" self:createChildPressure(Nom) local Nom = "T° Sonde Départ" self:createChildTempEauDepart(Nom) local Nom = "T° ECS" self:createChildTempECS(Nom) local Nom = "Conso Gaz " self:createChildConsoGazBoiler(Nom) local Nom = "Conso Gaz ECS" self:createChildConsoGazECS(Nom) local Nom = "Conso Elec Chaudière" self:createChildConsoElecBoiler(Nom) local Nom = "Conso Elec ECS " self:createChildConsoElecECS(Nom) local Nom = "Consigne Chaudière " self:createChildConChaudiere(Nom) local Nom = "Consigne ECS " self:createChildConECS(Nom) local Nom = "Etat ECS " self:createChildEtatECS(Nom) end end j'ai donc mon onInit : function QuickApp:onInit() self:initChildDevices({ ["com.fibaro.temperatureSensor"] = VaillantTempCouloir, ["com.fibaro.temperatureSensor"] = VaillantTempExterieur, ["com.fibaro.multilevelSensor"] = VaillantPressure, ["com.fibaro.temperatureSensor"] = VaillantTempDepEau, ["com.fibaro.powerSensor"] = VaillantConsoGazBoiler, ["com.fibaro.powerSensor"] = VaillantConsoGazECS, ["com.fibaro.powerSensor"] = VaillantConsoElecBoiler, ["com.fibaro.powerSensor"] = VaillantConsoElecECS, ["com.fibaro.temperatureSensor"] = VaillantConChaudiere, ["com.fibaro.temperatureSensor"] = VaillantConECS, ["com.fibaro.temperatureSensor"] = VaillantEtatECS }) __TAG = "QA"..plugin.mainDeviceId.."_Vaillant" self:updateProperty("deviceIcon", 1054) -- Icone API Offline log = self:getVariable("UserName") pass = self:getVariable("Password") serial = self:getVariable("Serial") self.refresh = tonumber(self:getVariable("Update")) self.http = net.HTTPClient({ timeout = 5000 }) self:loop() end -- - - - - - OnInit et quand je clique sur mon bouton j'ai toujours : [30.12.2022] [13:50:46] [TRACE] [QA741_VAILLANT]: UIEvent: {"values":[null],"eventType":"onReleased","elementName":"CreateChild","deviceId":741} [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 752 ] Consigne ECS , type of: com.fibaro.temperatureSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 742 ] T° Couloir , type of: com.fibaro.temperatureSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 743 ] T° Exterieur , type of: com.fibaro.temperatureSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 744 ] Pression , type of: com.fibaro.multilevelSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 745 ] T° Sonde Départ , type of: com.fibaro.temperatureSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 746 ] T° ECS , type of: com.fibaro.temperatureSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 747 ] Conso Gaz , type of: com.fibaro.powerSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 748 ] Conso Gaz ECS , type of: com.fibaro.powerSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 749 ] Conso Elec Chaudière , type of: com.fibaro.powerSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 750 ] Conso Elec ECS , type of: com.fibaro.powerSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 751 ] Consigne Chaudière , type of: com.fibaro.temperatureSensor où il me manque le dernier child ajouté Avant le onInit j'ai bien : Mes constructeurs : -- == Constructeur __init pour la classe VaillantEtatECS function VaillantEtatECS:__init(device) QuickAppChild.__init(self, device) end les classes class 'VaillantEtatECS' (QuickAppChild) -- Class VaillantEtatECS pour "com.fibaro.temperatureSensor" et la fonction -- == Fonction pour l etat de chauffe ECS : function QuickApp:createChildEtatECS(Nom) self:debug("Child devices Etat ECS :") for id,device in pairs(self.childDevices) do self:debug("[", id, "]", device.name, ", type of: ", device.type) end local child12 = self:createChildDevice({name = Nom, type = "com.fibaro.temperatureSensor",}, VaillantEtatECS) self:trace("Child devices Consigne ECS created: ", child12.id) end le pb n'est pas du coté de mon if i == 0 then ? Edit : je pense que oui car j'ai modifié en : if i ~= 10 then j'ai eu un tsunami de 10 nouveaux child ..... j'en ai donc supprimé 9 et j'ai bien mon dernier .... faut surement améliorer le truc avec une condition Modifié le 30 décembre 2022 par Bloug Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 30 décembre 2022 Signaler Partager Posté(e) le 30 décembre 2022 Il y a 4 heures, Bloug a dit : 2 - Pour la fonction loop() elle est bien dans un setTimeout function QuickApp:loop() print("<font color=grey>**** R E F R E S H **** " .. os.date("Dernière mise à jour le %d/%m à %H h : %M").. " ****") self:multimatic() fibaro.setTimeout(self.refresh * 1000, function() self:loop() end) end Je rebondis juste là dessus... non ta loop n'est toujours pas dans un settimout, du moins pas la 1ère exécution, et c'est celle-ci qui est critique : function QuickApp:onInit() -- Fait plein de choses self:loop() end A remplacer par : fibaro.setTimeout(0, function() self:loop() end) Là j'ai mis un timeout à 0, mais perso j'ai pris l'habitude de mettre un timeout plus important, entre 1000ms et 5000ms selon mes QuickApps. En effet, au reboot de la box, tous les QA démarrent en même temps, ce timeout variable permet de temporiser un peu et lisser la charge. 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bloug Posté(e) le 30 décembre 2022 Signaler Partager Posté(e) le 30 décembre 2022 merci beaucoup Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bloug Posté(e) le 22 janvier 2023 Signaler Partager Posté(e) le 22 janvier 2023 (modifié) @LazerJ'ai besoin d'aide pour l'histoire de la map et récupérer les ID des childs Stp j'ai testé pleins de trucs pour voir les résultats donc c'est légèrement le bazar voici mon code : function QuickApp:createChild_BSS_3(Nom) self:debug("Child devices Nappe BSS3 : ") for id,device in pairs(self.childDevices) do self:debug("[", id, "]", device.name, ", type of: ", device.type) end local child = self:createChildDevice({name = Nom, type = "com.fibaro.multilevelSensor",}, BSS_3) child:setVariable("Nappe_Child_ID_3", child.id) -- <---------------------------------------------------- Ajout d'une variable dans le child ID_Child_3 = child.id -- <------------------------------------------------------------------------------ Tentative d'attribuerune variable ... oui mais non :p elle disparait self:storeDevice(uid, child.id) self:trace("Child device BSS_3 created: ", child.id) end function QuickApp:storeDevice(uid, hcId) self.devicesMap[uid] = hcId -- <------------------------------------------------------------------------- Cette ligne plante la QA **Err-1** - self:setVariable("devicesMap", self.devicesMap) end ** Err-1 ** : main.lua:112: attempt to index a nil value (field 'devicesMap') J'ai cette erreur en utilisnat la methode de Fibaro ( Keeping your devices synchronized ) Ensuite, en fin de script ( lors de l'update des label et des childs) j'ai testé de récupérer la liste des childs avec : for id,device in pairs(self.childDevices) do self:debug(id , device.name ) end ok j'ai la liste de mes ID ( c'est bien la MAP ???? ) [22.01.2023] [09:17:31] [DEBUG] [QA826_NAPPE]: 841 BSS 1 [22.01.2023] [09:17:31] [DEBUG] [QA826_NAPPE]: 842 BSS 2 [22.01.2023] [09:17:31] [DEBUG] [QA826_NAPPE]: 843 BSS 3 mais j'arrive pas à récupérer soit : les variables dans les childs : self:debug(childDevices:getVariable("Nappe_Child_ID_3")) OU directement l'ID du child pour lui donner/ou manipuler avec une autre variable genre : Child_ID_3 = childDevices:getVariable("Nappe_Child_ID_3") Un grand merci si tu as 2 minutesss pour m'aiguiller Bon Dimanche ! Modifié le 22 janvier 2023 par Bloug Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 22 janvier 2023 Signaler Partager Posté(e) le 22 janvier 2023 Ta variable self.devicesMap de type table n'existe pas quand tu essayes de lui affecter une valeur, donc il faut commencer par l'initialiser, quelque part dans ton code. Par exemple dans QuickApp:onInit() : self.devicesMap = {} La "map", ou cartographie en bon français, c'est à toi de la créer. Avec ta variable self.devicesMap justement. Ce que te fournis Fibaro au travers de la variable prédéfinie self.childDevices, c'est juste la liste des devices identifiés par leur ID. Donc insuffisant pour notre usage. C'est pour ce qu'on se crée une autre variable nous permettant de "mapper" (=associer) l'ID du device avec un autre paramètre nous permettant d'identifier facilement quel child device correspond à quoi. Par exemple pour les quelques QA que j'ai développé, ça peut être l'ID d'une caméra dans Surveillance Station, ou bien l'identifiant du port d'entrée/sortie d'un IPX800, ou bien l'identifiant des modules d'une station Netatmo, etc... donc à construire au cas par cas selon l'usage considéré. Cela pourrait aussi être basiquement un texte qui définie l'usage du QA enfant : "temperature", "humidite", etc Identifiant à stocker dans une variable du QA enfant (avec self.setVariable(), ou encore child.setVariable(), enfin ça dépend de la technique que tu utilises pour manipuler tes QA enfants) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bloug Posté(e) le 23 janvier 2023 Signaler Partager Posté(e) le 23 janvier 2023 oki, donc comme suggéré, J'ai donc : 1 - Modifié mon code pour attribué une variable : nommée : Nappe_Child_ID avec comme valeur l'ID_du_Child_enfant child:setVariable("Nappe_Child_ID" , child.id) -- Fonction pour le Child BSS_3 function QuickApp:createChild_BSS_3(Nom) self:debug("Child devices Nappe BSS3 : ") for id,device in pairs(self.childDevices) do end local child = self:createChildDevice({name = Nom, type = "com.fibaro.multilevelSensor",}, BSS_3) child:setVariable("Nappe_Child_ID" , child.id) end 2 - J'ai ajouté un table dans le Oninit , sous le initChildDevices : j'ai donc local i = 0 self.sondes = {} for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) self.sondes[i] = id end -- Appareil enfant self:initChildDevices({ ["com.fibaro.multilevelSensor"] = BSS_1, -- Niveau Nappe BSS_1 ["com.fibaro.multilevelSensor"] = BSS_2, -- Niveau Nappe BSS_2 ["com.fibaro.multilevelSensor"] = BSS_3, -- Niveau Nappe BSS_3 }) local i = 0 self.sondes = {} for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) self.sondes[i] = id end if i == 0 then local Nom = "BSS 1" self:createChild_BSS_1(Nom) local Nom = "BSS 2" self:createChild_BSS_2(Nom) local Nom = "BSS 3" self:createChild_BSS_3(Nom) end J"arrive donc avec l'exemple trouvé dans le topic : for _, childDevice in pairs(self.childDevices) do self:debug(childDevice:getVariable("Nappe_Child_ID")) end ou avec ma table sondes{} print("------ S O N N D E S ------") ID1 = self.sondes[1] ID2 = self.sondes[2] ID3 = self.sondes[3] print(ID1) print(ID2) print(ID3) Même avec la variable récupéré il est difficile de savoir qui est qui. J'ai hésité et tenté d'utiliser une nom bien distinctif avec le nom de la variable Child : Nappe_Child_ID_1 -- Nappe_Child_ID_2 -- Nappe_Child_ID_3 n mais j'ai encore plus de mal avec le lua : for _, childDevice in pairs(self.childDevices) do self:debug(childDevice:getVariable("Nappe_Child_ID_1")) self:debug(childDevice:getVariable("Nappe_Child_ID_2")) self:debug(childDevice:getVariable("Nappe_Child_ID_3")) end et si dans la variable, à la place de l'ID_du_Child_enfant je donne une valeur avec un nom plus explicite comme : Child_ID_1 -- Child_ID_2 -- Child_ID_3 je perds alors l'id pour l'indiquer dans la mise à jour du child Citation -- Mise à Jour du Childs Bss_3 : self.childDevices[ID_Child_1]:updateProperty("value", Resultat_pour_child_1) y'a t'il un moyen en lua d'obtenir plus d'informations avec getVariable("Nappe_Child_ID_1") pour avoir : le résultat de ma variable et l'ID ? je dois me gourrer surement ailleurs ou rater un truc énorme ^^ merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 23 janvier 2023 Signaler Partager Posté(e) le 23 janvier 2023 Il y a 12 heures, Bloug a dit : Modifié mon code pour attribué une variable : nommée : Nappe_Child_ID avec comme valeur l'ID_du_Child_enfant mais ça ne sert à rien de stocker son propre ID dans ses variables, puisque l'ID est déjà une propriété connue du child : Il y a 12 heures, Bloug a dit : Même avec la variable récupéré il est difficile de savoir qui est qui. Forcément du coup... Il y a 12 heures, Bloug a dit : ou rater un truc énorme ^^ Oui je crois Mon message précédent n'était peut être pas clair, mais il te faut un moyen d'identifier tes enfants qui ne soit pas leur propre ID. Sinon c'est le serpent qui se mort la queue. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bloug Posté(e) le 23 janvier 2023 Signaler Partager Posté(e) le 23 janvier 2023 En remplacement la valeur, par un nom plus clair tel que "child n°1" Mais comment je me balade en lua ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 23 janvier 2023 Signaler Partager Posté(e) le 23 janvier 2023 (modifié) Mais pourquoi "child n°1" ? Tu n'as pas une meilleure façon d'identifier tes modules ? Cela dit, un index de table nommé de la sorte est possible, c'est une simple chaine de caractères. Et tu parcoures la table avec pairs(ma_table) Modifié le 23 janvier 2023 par Lazer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bloug Posté(e) le 23 janvier 2023 Signaler Partager Posté(e) le 23 janvier 2023 Si, désolé, j'ai répondu rapidement avec mon téléphone désolé. Je vais les nommer Nappe_1 Nappe_2 et Nappe_3 c'est presque mieux/pire (Je fais un QA sur le niveau des nappes phréatiques dans mon secteur avec trois points piézométrique) rien de bien passionnant mais l'exercice est bon. Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 23 janvier 2023 Signaler Partager Posté(e) le 23 janvier 2023 Alors moi je crée une ou 2 variables par qaLe but est simpleLorsque que l'on scan la table des childs on connaît l id et la valeur de la variableDonc je me sert de la valeur de la variable comme index et j'y stock l id du childExemple pour mon QA poeJ'ai dans mes childs une variable port qui stock le numéro du port du switchLorsque je crée ma table pour retrouver mes chlids je fais comme celaExemple pour un child id 5 et la variable port = 4["port4"] = 5Envoyé de mon BLA-L29 en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 23 janvier 2023 Signaler Partager Posté(e) le 23 janvier 2023 Voilà, mprinfo a tout dit. Et si Nappe_1 ça ne te plait pas, tu peux utiliser le raccourcis N1, mais ça sera pareil, dans les 2 cas c'est une string. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bloug Posté(e) le 24 janvier 2023 Signaler Partager Posté(e) le 24 janvier 2023 De Grands mercis ! Je détaille pour si un gars comme moi en quête de réponses ... j'ai simplifié mon code avec : child:setVariable("Nappe_Child_ID" , "N3") -- Fonction pour le Child BSS_3 function QuickApp:createChild_BSS_3(Nom) local child = self:createChildDevice({name = Nom, type = "com.fibaro.multilevelSensor",}, BSS_3) child:setVariable("Nappe_Child_ID" , "N3") end Du coup je liste ma table childDevices et j'attribue une variable : print("---------- liste des Childs -------------") for _, childDevice in pairs(self.childDevices) do print(childDevice:getVariable("Nappe_Child_ID") , " a l'ID : " .. childDevice.id) if childDevice:getVariable("Nappe_Child_ID") == "N1" then ID_Child_1 = childDevice.id end if childDevice:getVariable("Nappe_Child_ID") == "N2" then ID_Child_2 = childDevice.id end if childDevice:getVariable("Nappe_Child_ID") == "N3" then ID_Child_3 = childDevice.id end end print("---------------- Fin --------------------") J'arrive donc à mettre à jour mes childs : -- Mise à Jour du Childs Bss_1 avec la variable N1 : self.childDevices[ID_Child_1]:updateProperty("value", LastResultReleve) -- Mise à Jour du Childs Bss_2 avec la variable N2 : self.childDevices[ID_Child_3]:updateProperty("value", LastResultReleve) -- Mise à Jour du Childs Bss_3 avec la variable N3 : self.childDevices[ID_Child_3]:updateProperty("value", LastResultReleve) Maiss !!! ??? du coup ?? j'ai plus besoin de ma table sondes{} ???? Quelques messages plus haut j'avais créer une table sonde{} dans le Oninit: local i = 0 self.sondes = {} for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) self.sondes[i] = id end j'ai testé la même procédure avec : print("------- Test avec ma table Sondes ------- ") for id, childDevice in pairs(self.sondes) do print(id, childDevice, (childDevice:getVariable("Nappe_Child_ID"))) end print("---------------- Fin --------------------") mais elle crash à cause du : (childDevice:getVariable("Nappe_Child_ID")) [ERROR] [QUICKAPP876]: QuickApp crashed [ERROR] [QUICKAPP876]: main.lua:315: attempt to index a number value (local 'childDevice') vraiment merci pour vos retours ! PS : vous passez quand même moins de temps à écrire un tuto : Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 24 janvier 2023 Signaler Partager Posté(e) le 24 janvier 2023 Pourquoi ne pas attribué la variable lors de la création du childs ? Envoyé de mon BLA-L29 en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bloug Posté(e) le 24 janvier 2023 Signaler Partager Posté(e) le 24 janvier 2023 (modifié) développe ? y'a pas une histoire de stockage limité au démarrage suivant ? il me semble avoir déja testé mais avec un Nil au démarrage suivant .... mais a vérifier c'est vous les foufouX du code ! Modifié le 24 janvier 2023 par Bloug Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 24 janvier 2023 Signaler Partager Posté(e) le 24 janvier 2023 Je te mettrai la méthode que j'utiliseC'est très simple comme dirait@Lazer on va pas réinventer la roueUn mec assez sympa du forum à créer une fonction pour créer les childs qu'il mets dans un fichier toolsIl suffit juste de l'utiliser Envoyé de mon BLA-L29 en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 24 janvier 2023 Signaler Partager Posté(e) le 24 janvier 2023 @mprinfo c'est bien ce que @Bloug fait, il affecte la variable au QA enfant juste après sa création, regarde sa fonction QuickApp:createChild_BSS_3() @Bloug en effet, je pense que ta variable self.sondes est inutile. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 24 janvier 2023 Signaler Partager Posté(e) le 24 janvier 2023 il y a 1 minute, mprinfo a dit : C'est très simple comme dirait@Lazer on va pas réinventer la roue Un mec assez sympa du forum à créer une fonction pour créer les childs qu'il mets dans un fichier tools Il suffit juste de l'utiliser Pourtant tu es le premier à réinventer la roue Attention quand même, cette fonction dans ma librairie tools facilite la création de QA enfants, mais ne permet pas de les gérer (identifier). Donc ça ne répondait pas aux questions posées. 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 24 janvier 2023 Signaler Partager Posté(e) le 24 janvier 2023 @Lazer oui tu as pas tord moi je ne comprends que si je pratiqueJ'ai horreur d'utiliser un truc bêtement sans comprendre le code de bout en boutAprès je code que de temps en temps. Je ne touche pas d'ordinateur dans mon métier. C'est plutôt pince à papier et balais Envoyé de mon BLA-L29 en utilisant Tapatalk 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bloug Posté(e) le 24 janvier 2023 Signaler Partager Posté(e) le 24 janvier 2023 Bon au moins, maintenant j'arrive a comprendre ! et à faire ! une dernière précision la table : childDevices{} ou je pioche les infos est crée automatiquement lors de l'initialisation des appareils enfants ? En tout cas , Encore merci ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 24 janvier 2023 Signaler Partager Posté(e) le 24 janvier 2023 Oui la table self.childDevices est automatiquement générée. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés