jjacques68
Membres confirmés-
Compteur de contenus
4 380 -
Inscription
-
Dernière visite
-
Jours gagnés
40
Tout ce qui a été posté par jjacques68
-
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
oh putain merciiiii -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
Petite question : Pour mon histoire de plantes vertes, est-il possible de récupérer dans le parents les variable d'un enfant spécifié ? Je m'explique, j'ai créé des enfants avec plusieurs variables contenant les valeur envoyée par JEEDOM (ça ça marche nickel). Je passe par des variables, car il faut bien les stocker ces valeurs.... Mais ne pouvant pas les afficher dans les QA enfants, je me dis que je vais utiliser le QA parent avec des boutons de navigations, permettant de sélectionner un enfant et afficher le contenu de ses variables (à l'enfant). la solution que j'ai trouvé qui fonctionne mais alors qui est sacrée usine à gaz et qui RAME !!! est la suivante : 1- une fonction dans le parent qui appelle une fonction dans l'enfant choisi. 2- la fonction dans l'enfant, appelle une fonction dans le parents, en transmettant le contenu des variables 3- la fonction qui reçoit les valeur dans le parent les affiche dans les labels mais il faut presque 3 ou 4 secondes pour avoir le résultat ! et puis c'est... nul comme méthode !! doit y avoir un moyen plus pro ? -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
oui tout à fait je comprends. par contre c'est malheuresement pas possible d'ajouter des boutons dans les child... J'ai une douzaine de QA identiques pour les plantes vertes, le soucis est que j'ai 2 boutons "consigne + et -" pour régler le seuil des alertes d'humidité, au cas par cas... Je vois pas comment contourner ce cas... -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
Bon c'est nickel. Punaise, en effet, on économise un sacré paquet de lignes de code Du moins pour ce qui est de l'IPX. Dans mon cas, je n'ai mis que les sorties actionnant l'éclairage. Car sur les autres (électrovannes d'arrosage, électrovanne générale), j'ai des boutons dans les QA qui permettent d'avoir des fonctions spécifiques en plus, donc absolument pas génériques... idem pour les entrées. Et pas envie de revoir tout le système... Mais le principe Parent/Enfant est top. C'est une nouvelle façon de penser, de voir les chose, pas forcément naturelle... Est ce qu'on y pensera quand il faudra ? c'est autre chose... Pour l'IPX, Netatmo, j'imagine très bien la chose... Mais c'est bien les seuls exemples d’application que je vois, pour le moment. -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
Yes ok, I tried and get it. It's work fine with createChildDevice() and initChildDevices() thanks ! -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
i think I just understand it ! It's the parent which initialize the child, and not the child which initialize itself ! that's correct ? -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
@Lazer tu es entrain de lire tout les post ? ok je comprends pourquoi tu râles -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
tu rigoles mais au boulo je parle tout seul... ça m'aide énormément ! par contre ça rend fou mes collègues... -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
en effet, mais je l'ai compris après avoir écrit ma remarque -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
nan mais c'est bon c'est réglé, il manquait des infos c'est tout... -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
allé... cheers everybody ! -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
oula... vous partez dans une autre galaxie là bon ben je vous laisse... merci encore... -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
alors visiblement tant qu'on touche que au code, c'est ok. L'ajout / modification de fonction est instantanément pris en compte. Sans changement d'ID des Child. Faut juste pas vouloir ajouter de variables au Child. Dans ce cas faut le recréer. -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
ah ben du coup ça marche nickel ! merci @Krikroff @jang -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
hallucinant : dans le "__init", comme ça, ça plante : self:trace(self.parent:getVariable()) mais avec ça, c'est ok : fibaro.setTimeout(1, function() self:trace(self.parent:getVariable()) end) avec 1 ms de delay... -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
extrapoler, extrapoler, extrapoler, extrapoler, extrapoler, extrapoler, extrapoler, extrapoler, extrapoler -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
ah OK ! ben fallait le savoir ça ! oui du coup ça rejoint ce que du disais @Krikroff -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
ben je voie pas comment faire autrement. d'après ce que je lis de la doc et le pseudo bout de code fourni à la création du QA... surtout que ça marche pour certaines choses et pas pour d'autres.... J'ai supprimer entièrement le QA parent et du coup les child on suivit avec (heuresement). Et tout recréé, mais pareil. Je poste le code complet du QA, si qqun est motivé, mais je vois vraiment pas où est l'erreur... --------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------- -- INIT PARENT --------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------- function QuickApp:onInit() __TAG = "QA_"..self.id.."_Child" self:debug("QuickApp:onInit") self:initChildDevices({ ["com.fibaro.binarySwitch"] = IPX, }) self:debug("Child devices:") for id,device in pairs(self.childDevices) do self:debug("[", id, "]", device.name, ", type of: ", device.type) end end --------------------------------------------------------------------------------------- -- CREAT CHILD - appelé par le bouton pour créer le child --------------------------------------------------------------------------------------- function QuickApp:createChild(name, type, uid) local child = self:createChildDevice({ name = "ECL OUEST", type = "com.fibaro.binarySwitch", }, IPX) child:setVariable("D_OUTPUT", "5") self:trace("Child device created: ", child.id) end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -- CLASS IPX ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ class 'IPX' (QuickAppChild) ---------------------------------------------------- -- ON INIT ---------------------------------------------------- function IPX:__init(device) QuickAppChild.__init(self, device) self:debug(self.id , "MyBinarySwitch init") end function IPX:onInit() self:debug(self.id, "onInit") --************** DECONNE ICI ****************************** self:trace(self.parent:getVariable("IP")) --********************************************************* end ---------------------------------------------------- -- TURN ON ---------------------------------------------------- function IPX:turnOn() self:debug("child", self.id, "turned on") local http = net.HTTPClient({timeout=3000}) http:request("http://"..self.parent:getVariable("IP").."/preset.htm?set"..self:getVariable("D_OUTPUT").."=1", { options = { headers = {['Authorization']='Basic '..self.parent:getVariable("PASSWORD")}, method = 'GET' }, success = function(response) end, error = function(err) self:error(tostring(err)) end }) end ---------------------------------------------------- -- TURN OFF ---------------------------------------------------- function IPX:turnOff() self:debug("child", self.id, "turned off") local http = net.HTTPClient({timeout=3000}) http:request("http://"..self.parent:getVariable("IP").."/preset.htm?set"..self:getVariable("D_OUTPUT").."=0", { options = { headers = {['Authorization']='Basic '..self.parent:getVariable("PASSWORD")}, method = 'GET' }, success = function(response) end, error = function(err) self:error(tostring(err)) end }) end ---------------------------------------------------- -- reçoit le retour d'état de l'IPX (executé par le push de l'IPX) ---------------------------------------------------- function IPX:ReceiveState(status) if status == 1 then self:updateProperty("value", true) else self:updateProperty("value", false) end end ---------------------------------------------------- -- demande le status à l'init du Child (recoit le status complet) ---------------------------------------------------- function IPX:Ask_State() local http = net.HTTPClient({timeout=3000}) self:warning(self.parent:getVariable("IP")) http:request("http://"..self.parent:getVariable("IP").."/api/xdevices.json?cmd=20", { options = { headers = {['Authorization']='Basic '..self.parent:getVariable("PASSWORD")}, method = 'GET' }, success = function(response) self:Find_Out(response.data) end, error = function(response) self:error(tostring(response)) end }) end ------------------------------------------------------------------------------------- -- fonction trouve le status du QA spécifique ------------------------------------------------------------------------------------- function IPX:Find_Out(response) local MyTable = json.decode(response) local MyState = "" for Out,Value in pairs(MyTable) do if Out == "OUT"..self:getVariable("D_OUTPUT") then if Value == 1 then self:updateProperty("value", true) else if Value == 0 then self:updateProperty("value", false) else self:error("unknowm state for OUTPUT "..self:getVariable("D_OUTPUT")) end end end end end --------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------- -- action sur le bouton Create dans le parent --------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------- function QuickApp:NewChild() self:createChild() end -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
mais c'est pas comme ça qu'il faut faire ? je vois pas autrement... -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
on se comprend pas là, tout le code EST dans le QA parent. La classe IPX est déclarée dans le QA parent, de toute façon on a pas le choix ! il n'y a pas d'éditeur de code pour les "Child". -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
et puis là je cherche même plus à utiliser la méthode, je fait un simpe self:debug()... -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
euh... tu peux pas ajouter un bouton dans le chlid... si ? Mais dans le turnOn/Off ça marche super bien ! -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
oui tout à fait : voilà le debut du code : --------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------- -- INIT PARENT --------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------- function QuickApp:onInit() __TAG = "QA_"..self.id.."_Child" self:debug("QuickApp:onInit") self:initChildDevices({ ["com.fibaro.binarySwitch"] = IPX, }) self:debug("Child devices:") for id,device in pairs(self.childDevices) do self:debug("[", id, "]", device.name, ", type of: ", device.type) end end --------------------------------------------------------------------------------------- -- CREAT CHILD --------------------------------------------------------------------------------------- function QuickApp:createChild(name, type, uid) local child = self:createChildDevice({ name = "ECL OUEST", type = "com.fibaro.binarySwitch", }, IPX) child:setVariable("D_OUTPUT", "5") self:trace("Child device created: ", child.id) end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -- CLASS IPX ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ class 'IPX' (QuickAppChild) ---------------------------------------------------- -- ON INIT ---------------------------------------------------- function IPX:__init(device) QuickAppChild.__init(self, device) self:debug(self.id , "MyBinarySwitch init") end function IPX:onInit() self:debug(self.id, "onInit") self:trace(self.parent:getVariable("IP")) end -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
oui, je me suis rendu compte que le "__init" n'était pas pareil que le "onInit", qui peut être déclaré également dans la classe : même erreur class 'IPX' (QuickAppChild) function IPX:__init(device) QuickAppChild.__init(self, device) self:debug(self.id , "MyBinarySwitch init") end function IPX:onInit() self:debug(self.id, "onInit") self:trace(self.parent:getVariable("IP")) end [17.05.2020] [11:09:00] [DEBUG] [QA_528_CHILD]: 552 onInit [17.05.2020] [11:09:01] [ERROR] [QUICKAPP528]: QuickApp crashed [17.05.2020] [11:09:01] [ERROR] [QUICKAPP528]: line: 47 attempt to index a nil value (field 'parent') je m'étais dis que les variables parents n'étaient accessible que depuis les "actions" prédéfinies comme "turnOn" et "turnOff", mais non j'en une méthode où ça fonctionne très bien !! -
base de connaissances Gestion des appareils enfants
jjacques68 a répondu à un(e) sujet de Krikroff dans Support
ahhhh je pige pas un truc : pour accéder a une variable parent depuis l'enfant, on a vu que : self.parent:getVariable("MaVar") fonctionne très bien : exemple typique pour le TurnOff d'une sortie de l'IPX : on voit dans cette exemple que j'accède à 2 variables "parent" (IP et PASSWORD) et une variable du "Child" (D_OUTPUT) tout ça depuis la méthode TurnOff de la classe IPX. function IPX:turnOff() self:debug("child", self.id, "turned off") local http = net.HTTPClient({timeout=3000}) http:request("http://"..self.parent:getVariable("IP").."/preset.htm?set"..self:getVariable("D_OUTPUT").."=0", { options = { headers = {['Authorization']='Basic '..self.parent:getVariable("PASSWORD")}, method = 'GET' }, success = function(response) end, error = function(err) self:error(tostring(err)) end }) end mais POURQUOI LA : dans une autre méthode de la même classe j'ai cette erreur ? : la ligne 97 est la ligne avec le http:request() function IPX:Ask_State() local http = net.HTTPClient({timeout=3000}) self:warning(self.parent:getVariable("IP")) http:request("http://"..self.parent:getVariable("IP").."/api/xdevices.json?cmd=20", { options = { headers = {['Authorization']='Basic '..self.parent:getVariable("PASSWORD")}, method = 'GET' }, success = function(response) self:Find_Out(response.data) end, error = function(response) self:error(tostring(response)) end }) end ??????? EDIT : je précise que cette méthode est appelée dans le code "__init" du "Child" : function IPX:__init(device) QuickAppChild.__init(self, device) self:debug(self.id , "MyBinarySwitch init") self:Ask_State() end
