fel-x Posté(e) le 29 mars Signaler Posté(e) le 29 mars (modifié) Salut dans mon code, je voudrais pouvoir vérifier si un device est multistate ou pas. En fournissant l'ID d'un module ou d'une QA, je voudrais une vérification immédiate du status multistate ou non. J'ai été lire les Json de plusieurs devices via /api/devices/#ID mais je n'ai pas trouvé une propriété caractéristique... Bien entendu on peut le déduire assez facilement selon le type, ou le basetype, ou le supportedDeviceRoles, etc... Mais je cherche un fonction Lua qui pourra me le dire tout de suite ? Suis-je passé à côté d'une évidence? merci Modifié le 30 mars par fel-x
fel-x Posté(e) le 30 mars Auteur Signaler Posté(e) le 30 mars Je vais donner une précision sur la finalité car ce n'est pas très clair à la relecture J'écris une QA (dont vous pourrez peut-être profiter sous peu) qui permet de sélectionner des icônes de sa box, et de les attribuer à n'importe quel device (parent, enfant, caché, etc.), avec interface visuelle pratique. C'est purement pour enjoliver le UI ! Afin d'éviter une situation où un utilisateur attribuerait une icône monostate à un device 'multistate' (on devrait plutôt dire "multi-icône"), je voudrais les détecter et empêcher l'exécution. En effet, le UI va chercher les états différents d'une icône dans le cas des modules/QA qui peuvent changer d'état, comme les switches ON/OFF ou des volets par exemple. --> Ce que je cherche c'est une façon (simple?) d'identifier si pour un module donné, la box va chercher des icônes selon l'état ou une icône fixe. Le properties.deviceIcon n'est pas suffisant, ni le contenu du properties.icon (qui parfois est vide, ou fait référence dans properties.icon.path à un fichier SVG plutôt qu'à une icône PNG avec suffixes d'état '#ID0.png' '#ID100.png'). Quant à properties.icon.source il peut valoir 'HC' ou 'HC_USER' sans que cela n'ait d'impact réel sur le fonctionnement. j'espère que ça a du sens ce que je dis
Lazer Posté(e) le 30 mars Signaler Posté(e) le 30 mars Soit je n'ai pas bien compris ce que tu cherches, soit.... c'est tout simple Il faut rechercher les devices de type com.fibaro.multiPositionSwitch : /api/devices?type=com.fibaro.multiPositionSwitch Et donc vérifier le type du module dans son JSON :
jang Posté(e) le 30 mars Signaler Posté(e) le 30 mars (modifié) There is no ready made function - you have to do it yourself. function QuickApp:iconCount(typ) local map = { [QuickAppBase.iconProviders.single]=1, -- single icon [QuickAppBase.iconProviders.binary]=2, -- off,on [QuickAppBase.iconProviders.multilevel]=11, -- 0%,10%,20%,30%,40%,50%,60%,70%,80%,90%,100% [QuickAppBase.iconProviders.baseShutter]=5 -- opening,opened,closing,closed,unknown } local iconProvider = QuickAppBase.deviceIconTypeMapping[typ] or "" return map[iconProvider] end function QuickApp:onInit() self:debug(self.name, self.id) print(self:iconCount("com.fibaro.energyMeter")) print(self:iconCount("com.fibaro.multilevelSwitch")) print(self:iconCount("com.fibaro.baseShutter")) end iconCount returns number of icons for a specific type. Currently there only seems to be 4 options, 1,2,5,11 icons. If it is not mapped (return nil), try with the device baseType and see if that is mapped. ...or Fibaro has forgot to do the mapping. Modifié le 30 mars par jang 3
fel-x Posté(e) le 31 mars Auteur Signaler Posté(e) le 31 mars (modifié) Ce n'est pas tout à fait ça @Lazer, je voudrais interroger un module et qu'il me réponde s"'il attend une icône, ou un set de 2 icônes, ou un set de5 icônes, ou un set de 11 icônes. Donc la réponse de @jang semble plus proche de ce que je cherche. Est-ce que ceci suffit à couvrir toutes les possibilités ? local map = { [QuickAppBase.iconProviders.single]=1, -- single icon [QuickAppBase.iconProviders.binary]=2, -- off,on [QuickAppBase.iconProviders.multilevel]=11, -- 0%,10%,20%,30%,40%,50%,60%,70%,80%,90%,100% [QuickAppBase.iconProviders.baseShutter]=5 -- opening,opened,closing,closed,unknown } Ou bien il faudrait construire une table avec davantage d'éventualités... Je vais vérifier que paramètres permet de mapper ça... Merci @jang ! Modifié le 31 mars par fel-x
jang Posté(e) le 31 mars Signaler Posté(e) le 31 mars (modifié) The types mapped in QuickAppBase.deviceIconTypeMapping by Fibaro are: com.fibaro.powerSensor com.fibaro.heatDetector com.fibaro.windSensor com.fibaro.windowSensor com.fibaro.rainDetector com.fibaro.gasDetector com.fibaro.player com.fibaro.genericDevice com.fibaro.humiditySensor com.fibaro.multilevelSensor com.fibaro.energyMeter com.fibaro.motionSensor com.fibaro.deviceController com.fibaro.rollerShutter com.fibaro.baseShutter com.fibaro.multilevelSwitch com.fibaro.doorLock com.fibaro.temperatureSensor com.fibaro.fireDetector com.fibaro.doorSensor com.fibaro.binarySensor com.fibaro.coDetector com.fibaro.floodSensor com.fibaro.binarySwitch com.fibaro.smokeSensor This means that we can upload iconsets for these types (and probably super types that has these as base types) If not mapped we can at least assign a single icon to them. Modifié le 31 mars par jang 1
fel-x Posté(e) le 31 mars Auteur Signaler Posté(e) le 31 mars Ha merci ça m'aide Je suis en train de tester une série de devices avec cette boucle : for id = 100, 150 do local dev = api.get("/devices/" .. id) if not dev or dev == nil then self:debug("Device Tester : ", "Le module " .. id .. " n'existe pas") else local typ = dev.typeType or "unknown" local count = self:iconCount(typ) self:debug("Device Tester : ", "Le module " .. id .. " attend " .. count .. " icone(s)") end je récupère surtout des "Le module xxx attend ?? icone(s)" et avec dev.typeType c'est encore pire... Mais je vais continuer à creuser par là. Je ne veux pas me baser sur dev.properties.icon.path ou dev.properties.icon qui ne sont pas fiables je crois.
fel-x Posté(e) samedi à 09:38 Auteur Signaler Posté(e) samedi à 09:38 (modifié) J’ai bien avancé dans l’analyse des JSON de mes modules et je pense que fibaro se base essentiellement (mais pas uniquement) sur properties.deviceControlType pour déterminer combien d’icônes qu’il doit y avoir dans le « set » pour le module. je n’ai malheureusement pas tous les modules fibaro dans mon installation pour vérifier ça a 100%. L’un de vous aurait un fibaro dimmer pour me dire quel est son properties.deviceControlType ? j’ai trouvé une info sur un autre forum (non fiable je crains) que ce serait « 23 » ? possible de confirmer ? merci et joyeuses Pâques Modifié samedi à 09:55 par fel-x
fel-x Posté(e) lundi à 10:19 Auteur Signaler Posté(e) lundi à 10:19 Le 30/03/2026 à 13:33, jang a dit : Currently there only seems to be 4 options, 1,2,5,11 icons. Après mes recherches, juste pour info, il y a aussi un device qui nécessite un set de 10 icônes ; c’est le fibaro The Button. je construis une QA qui permet de jouer avec les icônes de tous les modules et de les changer, mais je veux absolument éviter qu’un module reçoive un set d’icônes incompatible, car l’affichage échoue ensuite dans le UI. Ce n’est pas grave, car l’affichage échoue ne bloque rien, mais ce n’est pas joli. voila pourquoi j’essaye de trouver comment fibaro fait le mapping exact entre un device et son nombre d’icônes attendu. un parent c’est facile > toujours 1 cône. mais après ça se complique. je pense avoir trouvé et pris en compte toutes les possibilités mais come je ne dispose pas de tous les types de devices dans mon installation il m’est difficile de tester toutes les situations. dommage que fibaro n’a pas documenté ça. je devrais peut être aussi contacter le support ? Qu’en pensez-vous ?
jang Posté(e) lundi à 15:43 Signaler Posté(e) lundi à 15:43 Why would it need 10 icons? What are the states?
jang Posté(e) lundi à 15:49 Signaler Posté(e) lundi à 15:49 Some devices/plugins carry with them icons for the UI - settings etc. This is not the same as the icons used to switch between the states of the device.
fel-x Posté(e) lundi à 17:06 Auteur Signaler Posté(e) lundi à 17:06 il y a une heure, jang a dit : Why would it need 10 icons? What are the states?
jang Posté(e) lundi à 18:05 Signaler Posté(e) lundi à 18:05 il y a 57 minutes, fel-x a dit : I think these are icons for shown in the UI when configuring the Button. Not the ones it displays as the state changes.
Messages recommandés