Aller au contenu
Krikroff

Gestion des appareils enfants

Recommended Posts

Yes ok, I tried and get it.

It's work fine with createChildDevice() and initChildDevices()

 

thanks !

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par jjacques68

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

[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

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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...

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par jjacques68

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

ok alors pour suivre

 

connaitre le nombre d'enfants

print(#self.childDevices)

-----> renvoie 0

 

Partager ce message


Lien à poster
Partager sur d’autres sites

mieux ?

print(#(self.childDevices))

 

Sinon pendant que tu parcoures la table, tu incrémentes un compteur.

Partager ce message


Lien à poster
Partager sur d’autres sites

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é...:60:

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ;)

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
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))

:60:

Partager ce message


Lien à poster
Partager sur d’autres sites

La suite plus tard.. là c'est l'heure de l'apéro :98:

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par jjacques68

Partager ce message


Lien à poster
Partager sur d’autres sites

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")

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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...)

Partager ce message


Lien à poster
Partager sur d’autres sites

J’ajoute dans la liste de courses le args du HC2 dans les scènes


Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites
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 Tapatalk
Figaro

Envoyé de mon BLA-L29 en utilisant Tapatalk

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

J’avoue l’apéro fût


Envoyé de mon iPhone en utilisant Tapatalk

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

:77:

 

 

 

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 :

 

image.png.17118003a2ff6db1bf49a6fec2549205.png

 

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.

  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

×