Aller au contenu
MAM78

Changement d'icône d'un Main QuickApp

Recommended Posts

Je cherche à coder dans une QuickApp de type "Capteur binaire" le changement d'icône.

 

Je m'explique, mon main est chargé de vérifier régulièrement l'état d'un composant tiers via des requêtes getAPI.

 

Lorsque ce composant tiers est en état inaccessible :

  • je signifie déjà le problème via une indication d'Erreur via la commande suivante : self:updateProperty("log", "Error").
  • en plus je souhaiterais que :
    • l'icône qui s'affiche soit celle qui correspond au "Capteur inactif"
    • le symbole affiché en-bas à droit soit rouge :
    • du genre : image.png.21902dd228ddca30b6b649fd0c58bd38.png

Lorsque ce composant tiers est en état accessible :

  • je souhaiterais que :
    • l'icône qui s'affiche soit celle qui correspond au "Capteur actif"
    • le symbole affiché en-bas à droit soit vert
    • du genre : image.png.5bc4a98fe43d47388f73fbd9e9cfbfcb.png

 

Quelle est la ou les commandes Lua qui permettraient qu'automatiquement l'icône affichée soit celle qui correspond à l'un au l'autre état ainsi que le symbole d'état rouge ou vert.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Si j’ai bien compris ta question normalement tu devrais trouver la réponse ici :P:

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Non pas tout à fait, je souhaite utiliser les principes de fonctionnements automatiques de la HC3.

De base tu peux associer deux icônes à un device pouvant représenter 2 états selon, il me semble la valeur true/false de la propriété du module parent: value

Mais comment faire pour que le petit symbole rouge ou vert s’active ?


Envoyé de mon iPhone en utilisant Tapatalk Pro

Partager ce message


Lien à poster
Partager sur d’autres sites

OK ça je ne sais pas s'il y a une fonction qui "superpose" le petit symbole vert sur l'icone au besoin en fonction de l'état.

Car j'avais imaginé (que ce soit pour un QA perso ou un QA Fibaro (y compris pour les modules natifs Fibaro), tout simplement uploder les 2 icones, et faire l'updateProperty en fonction des conditions.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ben... euh... soit j'ai pas compris la demande... soit c'est juste la base de la base d'un QA de type binary (voir les exemples proposés par Fibaro par défaut lors de la création du QA)

 

=> self:updateProperty("value", true)

 

(ou false)

 

L’icône suivra toute seule, c'est la HC3 qui le gère

 

EDIT : en fait après relecture c'est ce qu'à expliqué Fredmas juste au dessus

 

Modifié par Lazer

Partager ce message


Lien à poster
Partager sur d’autres sites

la question est comment faire en sorte que la pastille rouge ou verte en bas à droite s’affiche.

 

Sur les modules Fibaro la pastille passe en rouge lorsqu’il y a une détection d’un dysfonctionnement du module je voudrais reproduire le même principe pour mon quickapp

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah je crois que j'ai compris.

 

Tu veux passer le module en état mort (= dead).

 

Je ne suis pas certain de savoir de quelle pastille tu parles, mais lorsqu'un module ne communique plus, il passe donc en état mort.

Son icône devient alors grisée avec un symbole radio de dysfonctionnement par devant.

 

image.png.a9d94095a6bc7be07998a83e3b876bcd.png

 

 

Tu peux donc modifier toi même la propriété "dead" de ton QuickApp avec updateProperty pour mettre true/false, exactement comme pour la value.

 

Et tu peux même réagir aux tentatives de réveil :

function QuickApp:wakeUpDeadDevice()

	tools:trace("Tentative de réveil")

	-- ... ici on tente de contacter le module via IP, Wi-Fi, etc...

	-- Puis on désactive son état mort :
	self:updateProperty("dead", false)

end

 

PS : exemple de gestion dans mon QuickApp Yamaha MusicCast.

 

PS2 : au moindre problème réseau, le QA passe en dead, c'est un peu pénible... surtout pour les appareils connectés en Wi-Fi dont la liaison est instable par nature. Dans la prochaine version je mettrai un compteur interne et le QA ne passera dead qu'après 2 ou 3 tentatives de connexion infructueuse afin d'éviter le "bagotement".

 

Modifié par Lazer

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci c’est bien ça que je cherchais. Je n’avais pas trouvé d’exemple dans tes quickapp tels que IPX/ECODEVICE/Onduleur.

 

Je retiens ta suggestion des RETRY.

 

Est-ce que pour toi il serait judicieux de mettre en dead également les child ?

 

 

Envoyé de mon iPhone en utilisant Tapatalk Pro

Partager ce message


Lien à poster
Partager sur d’autres sites

Il me semble que dans le QA GCE je gère déjà l'état dead, mais pas le WakeUp forcé, car il n'était pas encore dispo sur les vieux firmware, à l'époque où je l'ai développé.

 

Gérer l'état dead des child me parait tout aussi important que pour le parent, c'est ce que je fais en tout cas.

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 22 minutes, Lazer a dit :

Ah je crois que j'ai compris.

Tu veux passer le module en état mort (= dead).

(...)

Tu peux donc modifier toi même la propriété "dead" de ton QuickApp avec updateProperty pour mettre true/false, exactement comme pour la value.

 

:2: c'est exactement ce que j'ai testé entre midi et deux, et ça fonctionnait "visuellement" effectivement. Je m'apprêtais à en discuter ici ce soir.

Le truc auquel je ne savais pas répondre et que je comptais te demander ce soir @Lazer c'est : au-delà du visuel, quel est la conséquence pour le QA de passer ses propriétés en "Dead". C'est un état en attente qui pourrait changer tout seul suivant des conditions précisées ? ou par exemple le QA se met en veille attendant une action manuelle par exemple ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Modifier la propriété "dead" n'a absolument aucun impact sur le déroulement du code LUA dans le QA.
C'est à toi de gérer cet état dans ton code... en gérant les tentative de reconnexion à l'appareil, etc.

Le seul impact, il est visuel, et il est géré par la HC3 : elle va mettre à jour l'icône pour informer visuellement l'utilisateur.


Dans le même genre, il y a le champ "enabled", qui est modifiable par l'utilisateur pour désactiver un module depuis l'interface Web.

En pratique, cela ne bloque pas le code LUA, c'est au programmeur de gérer cet état.

Tous mes QA depuis plus d'un an commencent par lire cette valeur, pour éventuellement stopper net leur exécution depuis le onInit()

	-- Check if QuickApp device is enabled
	if not api.get("/devices/"..tostring(self.id)).enabled then
		tools.log(self, self.trad.disabled, 0)
		tools.updateLabel(self, "LabelDebug", string.format(self.trad.label_debug_error, self.trad.quickapp_disabled))
		tools:warning("Device", self.name, "is disabled => QuickApp stopped")
		return
	end

 

Une autre propriété intéressante, c'est "log" qui permet de choisir ce qu'on veut afficher dans la zone de texte sous l’icône du QA. Cela existe depuis les VD sur HC2 d'ailleurs.

 

  • Like 3

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 5 minutes, Lazer a dit :

Modifier la propriété "dead" n'a absolument aucun impact sur le déroulement du code LUA dans le QA.
C'est à toi de gérer cet état dans ton code... en gérant les tentative de reconnexion à l'appareil, etc.

Le seul impact, il est visuel, et il est géré par la HC3 : elle va mettre à jour l'icône pour informer visuellement l'utilisateur.

Merci beaucoup pour l'explication. Ca répond et c'est clair  ;)

 

 

il y a 5 minutes, Lazer a dit :

Dans le même genre, il y a le champ "enabled", qui est modifiable par l'utilisateur pour désactiver un module depuis l'interface Web.

En pratique, cela ne bloque pas le code LUA, c'est au programmeur de gérer cet état.

Tous mes QA depuis plus d'un an commencent par lire cette valeur, pour éventuellement stopper net leur exécution depuis le onInit()


	-- Check if QuickApp device is enabled
	if not api.get("/devices/"..tostring(self.id)).enabled then
		tools.log(self, self.trad.disabled, 0)
		tools.updateLabel(self, "LabelDebug", string.format(self.trad.label_debug_error, self.trad.quickapp_disabled))
		tools:warning("Device", self.name, "is disabled => QuickApp stopped")
		return
	end

 

OK :60:

 

 

il y a 5 minutes, Lazer a dit :

Une autre propriété intéressante, c'est "log" qui permet de choisir ce qu'on veut afficher dans la zone de texte sous l’icône du QA. Cela existe depuis les VD sur HC2 d'ailleurs.

:P Haaaaaa même en cours d'apprentissage, celle-ci je la connais déjà et je l'utilise dans mes QA  ^_^

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci @Lazer c'est exactement le réponses que j'attendais et même plus :13:

 

Tu ne m'as pas répondu concernant ma demande sur ton avis de mettre également les Child en "dead" puisqu'en principe, si tu n'arrives pas à communiquer avec l'équipement tiers, il est fort probable que l'équipement tiers n'arrive pas non-plus à communiquer avec les Childs.

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Euh, ben si je t'ai répondu pour les child ;)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Oups désolé, j’ai zappé ta réponse


Envoyé de mon iPhone en utilisant Tapatalk Pro

Partager ce message


Lien à poster
Partager sur d’autres sites

×