jjacques68 Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 Yes ok, I tried and get it. It's work fine with createChildDevice() and initChildDevices() thanks !
jjacques68 Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 (modifié) 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. Modifié le 17 mai 2020 par jjacques68
Lazer Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 Je pense que je porterai mon module MusicCast avec le même principe. Une module parent, qui détecte toutes les enceintes connectées du logement, et crée un device enfant pour chaque enceinte. Cela évite de dupliquer le code LUA, et ça simplifie la maintenance. Perso j'ai 5 enceintes dans mon système multiroom. Si je dois mettre à jour le code LUA, je n'aurai besoin de le copier/coller qu'une seule fois dans le QuickApp principal (au lieu de 5 actuellement, une fois pour chaque module virtuel.... et c'est même pire si on considère que chaque bouton d'un module virtuel avait son propre code LUA sur HC2) PS : mon QuickApp IPX800 sera le plus générique possible, l'objectif étant qu'il soit compatible avec tous les types d'entrées/sorties disponibles sur l'IPX800. Entrées/sorties numériques, analogiques, compteurs, etc Notamment sur l'IPX800 v4, il y a même les E/S virtuelles, il faudra que je me penche dessus à l'occasion. 1
Krikroff Posté(e) le 17 mai 2020 Auteur Signaler Posté(e) le 17 mai 2020 [mention]Lazer [/mention] la même chose est en cours pour le QA Sonos , essentiel pour group/ungroup...Envoyé de mon iPhone en utilisant Tapatalk 1
jjacques68 Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 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...
jjacques68 Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 (modifié) 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 ? Modifié le 17 mai 2020 par jjacques68
Lazer Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 Euh... C'est tout con non ? Depuis le parent, quand tu parcoures ta liste d'enfants, tu peux récupérer leurs variables : for _, childDevice in pairs(self.childDevices) do self:debug(childDevice:getVariable("my_variable")) end 1
jjacques68 Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 ok alors pour suivre : connaitre le nombre d'enfants : print(#self.childDevices) -----> renvoie 0
Lazer Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 mieux ? print(#(self.childDevices)) Sinon pendant que tu parcoures la table, tu incrémentes un compteur.
jjacques68 Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 nan toujours 0... Mais j'ai fait une variable tableau avec la liste des ID des child dans le init du parent. Du coup je m'en sers pour naviguer d'un child à l'autre. le coup de récupérer les variables de l'enfant vers le parents marche super bien, et est instantané... juste dommage qu'il faille toujours passer par une boucle pour tomber sur le bon enfant... comme pour le nombre d'enfants, s'adresser directement, par exemple pour le 1er enfant : self.childDevices[1] ne fonctionne pas.
Krikroff Posté(e) le 17 mai 2020 Auteur Signaler Posté(e) le 17 mai 2020 Voici ce que je fais... -- Name: getChildDevices -- Description: get all children devices. similare to plugin.getChildDevices [function] -- Return: [number] child device count, [table] all the devices function QuickAppSdk:getChildDevices() local childs = self.baseRef.childDevices local count = self.__table_length(childs) return count, childs end function QuickAppSdk.__table_length(a)local b=0;for c in pairs(a)do b=b+1 end;return b end et que j'utilise de cette manière: local count, childDevices = QA:getChildDevices() if (count > 0) then QA:logger("debug", "Child devices:") for id, device in pairs(childDevices) do QA:logger("debug", "[", id, "]", device.name, ", type of: ", device.type) end else QA:logger("debug", "no child devices found!") end Je me suis fait un SDK pour faire papa maman... automatiser des choses, en simplifier d'autre... Des choses me font penser que les QA vont évoluer rapidement, un conseil ne vous lancez pas dans l’immédiat dans des usines à gaz 1
Krikroff Posté(e) le 17 mai 2020 Auteur Signaler Posté(e) le 17 mai 2020 il y a 18 minutes, jjacques68 a dit : comme pour le nombre d'enfants, s'adresser directement, par exemple pour le 1er enfant : self.childDevices[1] ne fonctionne pas. Hum... c'est normal ça ! Tu vas comprendre en regardant bien ceci: return childDevices[deviceId]:callAction(action.actionName, unpack(action.args))
Krikroff Posté(e) le 17 mai 2020 Auteur Signaler Posté(e) le 17 mai 2020 La suite plus tard.. là c'est l'heure de l'apéro 1
jjacques68 Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 (modifié) comprends pas. y a rien dans l'API ? EDIT : de ce que je comprends, il y a qu'une seule et unique table qui contient les chlid. donc c'est normal que self.childDevices[1] ne fonctionne pas. ok. Modifié le 17 mai 2020 par jjacques68
jjacques68 Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 oh punaise si je crois que j'ai capter un truc : modifier une variable enfant depuis le parent sans se taper une boucle : self.childDevices[xxx]:setVariable("MaVar", "blabla")
jjacques68 Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 oh punaise c'est nickel !!! J'ai les idée plein la tête !!!!! cette box c'est vraiment de la BOMMMMMBEEEEEEEEEE !! s'ils arrivent à nous trouver le moyen de récupérer un retour pour les fonctions des QA et le multi instance des scènes, elle sera absolument parfaite !!! (en tout cas dans mon niveau d'utilisation...)
Krikroff Posté(e) le 17 mai 2020 Auteur Signaler Posté(e) le 17 mai 2020 J’ajoute dans la liste de courses le args du HC2 dans les scènes Envoyé de mon iPhone en utilisant Tapatalk
Krikroff Posté(e) le 17 mai 2020 Auteur Signaler Posté(e) le 17 mai 2020 Fonction fibaro :args() ajoutée en version 4.1 ou 4.2 je sais plus trop, ça va me manquer ... Envoyé de mon iPhone en utilisant Tapatalk
mprinfo Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 Fonction figaro:args() ajoutée en version 4.1 ou 4.2 je sais plus trop, ça va me manquer ...Envoyé de mon iPhone en utilisant TapatalkFigaro Envoyé de mon BLA-L29 en utilisant Tapatalk 1
Krikroff Posté(e) le 17 mai 2020 Auteur Signaler Posté(e) le 17 mai 2020 J’avoue l’apéro fût Envoyé de mon iPhone en utilisant Tapatalk 1
Lazer Posté(e) le 17 mai 2020 Signaler Posté(e) le 17 mai 2020 En utilisant les Child devices d'un Quick App, j'ai pu manuellement créer un module de type capteur de lumière "com.fibaro.lightSensor" (avec l'unité en lux), alors que ce n'est même pas possible via l'interface Web quand on crée manuellement un QA. L’icône est automatiquement configurée, c'est propre : La valeur est à zéro car le capteur est dans le garage et qu'à cette heure là c'est trop sombre, mais tout à l'heure j'avais des belles valeurs C'est intéressant, parce que ça démontre une fois de plus que l'interface Web n'a pas finie d'évoluer, car on peut déjà faire beaucoup plus Je crois me souvenir que dans les tous premiers firmwares de février/mars 2020, la liste des types de devices accessibles via l'interface Web était encore plus restreinte, donc je n'ai aucun doute sur le fait qu'ils continueront à en ajouter. 2
Messages recommandés