Aller au contenu

Gestion des appareils enfants


Krikroff

Messages recommandés

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
Lien vers le commentaire
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
Lien vers le commentaire
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
Lien vers le commentaire
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...

Lien vers le commentaire
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
Lien vers le commentaire
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
Lien vers le commentaire
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.

Lien vers le commentaire
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
Lien vers le commentaire
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:

Lien vers le commentaire
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
Lien vers le commentaire
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...)

Lien vers le commentaire
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

Lien vers le commentaire
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
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...