triossrf Posté(e) le 10 décembre 2021 Signaler Posté(e) le 10 décembre 2021 (modifié) @Fredmas Effectivement je me suis fais le raisonnement , je pense qu'on ne peut pas avoir de résultat à cet endroit. Mais j'essai toujours de trouver des valeurs non numérique, je m'explique. Quand je fais la synthax suivante: local ApiIntensite = api.get("/devices/"..WalliDimmer).properties.value self:debug("Intensite:" ..ApiIntensite) On obtien la valeur de "value": 0 (extrait du JSON) Par contre si je met: local ApiIntensite = api.get("/devices/"..WalliDimmer).properties.state self:debug("State:" ..APIState) Je devrais obtenir un true ou un false cependant j obtiens dans la console: [ERROR] [QUICKAPP530]: main.lua:22: attempt to concatenate a boolean value (local 'APIState') Je me doute qu'il s'agit d'une erreur de synthaxe, j'ai essayer avec plusieurs manière de l'écrire. Mais je sèche. Modifié le 10 décembre 2021 par triossrf
Lazer Posté(e) le 10 décembre 2021 Signaler Posté(e) le 10 décembre 2021 Normal tu définies ta variable local ApiIntensite = ... puis tu utilises APIState qui n'existe pas (en fait si, elle semble exister et est de type boolean comme l'indique ton message d'erreur, car tu dois probablement utiliser cette variable plus haut dans ton code LUA)
triossrf Posté(e) le 10 décembre 2021 Signaler Posté(e) le 10 décembre 2021 (modifié) Autant pour moi @Lazer, il s'agit juste une erreur de copier/collé. sur mon code j'ai bien utiliser la borne synthax soit: local APIProfil= api.get("/profiles").activeProfile local APIState = api.get("/devices/"..WalliDimmer).properties.state self:debug("Intensite:" ..ApiIntensite) self:debug("State:" ..APIState) Je n'ai pas utilisé cette variable plus haut et le message d'erreur est bien là. Alors je m'était dis que de base quand on va chercher un api, il s'attend à une valeur numérique et non pas Boolean ou string. Je pense cependant que je l'ai bien localisé mais il est peut-être tout simplement pas possible de retourner une valeur autre que des numériques? Si cela peut éclairer voici une partie du JSON. (j'ai supprimer un petit peu pour que cela soit plus lisible) { "id": 522, "name": "Lumiere", "roomID": 230, "view": [ ... ], "properties": { "parameters": [ ... ], ], "configured": true, "dead": false, "deadReason": "", "deviceControlType": 23, "deviceIcon": 15, "endPointId": 0, "energy": 0.03, "firmwareUpdate": { "info": "", "progress": 0, "status": "UpToDate", "updateVersion": "5.1" }, "isLight": true, "localProtectionState": 0, "localProtectionSupport": 5, "log": "", "logTemp": "", "manufacturer": "", "markAsDead": true, "model": "", "nodeId": 48, "parametersTemplate": "836", "power": 0, "productInfo": "1,15,28,1,16,0,5,1", "protectionExclusiveControl": 0, "protectionExclusiveControlSupport": false, "protectionState": 0, "protectionTimeout": 0, "protectionTimeoutSupport": false, "saveLogs": true, "saveToEnergyPanel": true, "serialNumber": "h'000000000000d04d", "showEnergy": true, "state": false, <---- IL EST LA L AFFREUX !!!! "updateVersion": "", "useTemplate": true, "userDescription": "", "value": 0 }, Modifié le 10 décembre 2021 par triossrf
Lazer Posté(e) le 10 décembre 2021 Signaler Posté(e) le 10 décembre 2021 OK donc le message d'erreur est logique, il te dit que tu ne peux pas concaténer une chaine avec un booléen. Tout simplement. Donc tu as 2 choix pour afficher ta valeur : self:debug("State:" .. tostring(APIState)) self:debug("State:", APIState) 1
triossrf Posté(e) le 10 décembre 2021 Signaler Posté(e) le 10 décembre 2021 il y a 31 minutes, Lazer a dit : OK donc le message d'erreur est logique, il te dit que tu ne peux pas concaténer une chaine avec un booléen. Tout simplement. Donc tu as 2 choix pour afficher ta valeur : self:debug("State:" .. tostring(APIState)) self:debug("State:", APIState) Mon dieu... Maintenant que tu le dis tout parait si logique. Je m'obstinais à croire que c était : api.get("/devices/"..WalliDimmer).properties.state qui n'était pas bon alors que c'était le debug... J'était donc bon sur la recherche du l'api mais pas sur le débug... Je pouvais toujours chercher... Merci à toi, comme d'habitude très efficace.
971jmd Posté(e) le 14 décembre 2021 Auteur Signaler Posté(e) le 14 décembre 2021 (modifié) Le 22/11/2021 à 04:35, triossrf a dit : Pour revenir aux moutons de @971jmd! Et non, on ne ta pas oublié ! Je pense que l'on peut utiliser les codes suivants: api.delete("") api.get("") api.post("", {}) api.put("", {}) Aprés c'est toujours le même soucis, il faut trouver la bonne synthax ^^ salut j'ai tester avec ça et toujours erreur : main.lua:28: unexpected symbol near ')' function QuickApp:modif() api.put ("/devices/"..Walli).properties.parameters[36], {value='33'} end { "id": 158, "lastReportedValue": 16, "lastSetValue": 16, "size": 2, "value": 16 }, bon ça fonctionne toujours bien pour afficher la valeur qui est 16 ID = api.get("/devices/"..Walli).properties.parameters[36].value Modifié le 14 décembre 2021 par 971jmd
971jmd Posté(e) le 14 décembre 2021 Auteur Signaler Posté(e) le 14 décembre 2021 j'ai tester comme ça : function QuickApp:modif() api.put ("/devices/"..Walli).properties.parameters[36], value='99' end [13.12.2021] [21:07:05] [TRACE] [QUICKAPP470]: UIEvent: {"values":[null],"deviceId":470,"elementName":"modif","eventType":"onReleased"} [13.12.2021] [21:07:05] [DEBUG] [QUICKAPP470]: ./include/main.lua:25: attempt to index a nil value (field 'properties') [13.12.2021] [21:07:05] [ERROR] [QUICKAPP470]: QuickApp crashed [13.12.2021] [21:07:05] [ERROR] [QUICKAPP470]: Unknown error occurred: handleJsonRpc
Fredmas Posté(e) le 14 décembre 2021 Signaler Posté(e) le 14 décembre 2021 (modifié) Allé un truc comme ça par exemple, histoire de te laisser comprendre la structure du code pour trouver ton paramètre puis le modifier (attention je n'ai pas réellement essayé de mon coté) : function QuickApp:modif() local toto = api.get("/devices/"..Walli) toto.properties.parameters[36].value = 99 --ou 33 api.put("/devices/"..Walli, toto) end Modifié le 14 décembre 2021 par Fredmas 1
971jmd Posté(e) le 14 décembre 2021 Auteur Signaler Posté(e) le 14 décembre 2021 (modifié) merci , entre-temps j'ai fini par trouver un code de lazer Je vais tester tout ça ce soir Modifié le 14 décembre 2021 par 971jmd
Fredmas Posté(e) le 14 décembre 2021 Signaler Posté(e) le 14 décembre 2021 Ça a l’air d’être dans le même esprit, au détail près de la description de la structure de la table dans le code.
971jmd Posté(e) le 14 décembre 2021 Auteur Signaler Posté(e) le 14 décembre 2021 j'ai tester le code de Lazer il y a quand même un problème, je m'explique. Si par exemple je souhaite changer le paramètre 12 d'une walli ( paramètre 12 =changer la couleur de l'anneau quand OFF ) ça fonctionne, mai quand on se rend dans l' API du module concerné, on se rend compte que tous les autres paramètres ont disparu sauf le paramètre 12. J'ai remarqué qu'il est pas possible ne modifier un autre paramètre car il y en existe qu'un seul. le 12 pour exemple Visiblement pour faire apparaître tous les paramètres il faut rafraîchir et pour l'instant le code visiblement ne le fais pas { "id": 12, "lastReportedValue": 7, "lastSetValue": 7, "size": 1, "value": 7 }
971jmd Posté(e) le 14 décembre 2021 Auteur Signaler Posté(e) le 14 décembre 2021 Il y a 6 heures, Fredmas a dit : Allé un truc comme ça par exemple, histoire de te laisser comprendre la structure du code pour trouver ton paramètre puis le modifier (attention je n'ai pas réellement essayé de mon coté) : function QuickApp:modif() local toto = api.get("/devices/"..Walli) toto.properties.parameters[36].value = 99 --ou 33 api.put("/devices/"..Walli, toto) end Je viens de tester avec ton code et lui par compte aucun problème Il modifie bien le paramètre en position 36 et visiblement tous les autres paramètres sont toujours là
Fredmas Posté(e) le 14 décembre 2021 Signaler Posté(e) le 14 décembre 2021 Tant mieux si cela fait ce que tu voulais alors Après je n'ai absolument aucun mérite. Comme j'aime à le répéter afin de rendre à César ce qui lui appartient, la majorité de ce que je sais, je l'ai appris à gauche et à droite sur notre forum Tu sauras le partager à ton tour lorsque quelqu'un posera à nouveau la même question que toi
971jmd Posté(e) le 14 décembre 2021 Auteur Signaler Posté(e) le 14 décembre 2021 C'est dingue quand même avec Fibaro comment il est possible de faire mille et une choses mais toujours pas arrivé au même point
Fredmas Posté(e) le 14 décembre 2021 Signaler Posté(e) le 14 décembre 2021 Ben pas sûr que ce soit Fibaro. Nous avons décidé de faire mieux que de simples scènes bloc en codant nous-mêmes… ben du coup la moindre variante sémantique compte et doit être comprise. Et comme souvent tout dépend de nous-mêmes du coup 1
971jmd Posté(e) le 14 décembre 2021 Auteur Signaler Posté(e) le 14 décembre 2021 (modifié) Pour qu'on comprenne mieux la chose le code suivant 20 c'est positionné sur la 36e tables et non le paramètre 36 OK function QuickApp:modif() local toto = api.get("/devices/"..Walli) toto.properties.parameters[36].value = 99 --ou 33 api.put("/devices/"..Walli, toto) end ET et c'est dernier ci-dessous se positionne directement sur le paramètre 158. Après LAZER me disait qu'il est préférable de faire une boucle, Pourquoi exactement ? function QuickApp:lum99() local deviceID = 429 local mycolor = 0 local data = { id = tonumber(deviceID), properties = { parameters = { { id = 158, size = 2, value = 11 } } } } local response, status = api.put("/devices/"..deviceID, data) print("status : " .. status) print("response : " .. response) end Modifié le 14 décembre 2021 par 971jmd
Fredmas Posté(e) le 14 décembre 2021 Signaler Posté(e) le 14 décembre 2021 (modifié) il y a 7 minutes, 971jmd a dit : Après LAZER me disait qu'il est préférable de faire une boucle, Pourquoi exactement ? Page précédente : Modifié le 14 décembre 2021 par Fredmas 1
triossrf Posté(e) le 21 décembre 2021 Signaler Posté(e) le 21 décembre 2021 Salut! Pour ma part quand je souhaites modifier quelque chose par exemple: WalliIntensite.properties.parameters[151].value = 30 --ou 33 api.put("/devices/"..WalliDimmer, WalliIntensite) Je me retrouve avec l'erreur: [ERROR] [QUICKAPP530]: main.lua:47: attempt to index a nil value (field '?') Alors que je trouve bien le parametre 151 avec la boucle de recherche. Une idée? Merci d'avance
Lazer Posté(e) le 21 décembre 2021 Signaler Posté(e) le 21 décembre 2021 Attention à ne pas confondre le paramètre n°151 du module Z-Wave, avec l'index n°153 de la table qui contient les paramètres. On en a discuté précédemment, et on a donné la boucle LUA à écrire pour retrouver l'index de la table qui correspond au bon numéro de paramètre. 1
triossrf Posté(e) le 23 décembre 2021 Signaler Posté(e) le 23 décembre 2021 Le 21/12/2021 à 16:52, Lazer a dit : Attention à ne pas confondre le paramètre n°151 du module Z-Wave, avec l'index n°153 de la table qui contient les paramètres. On en a discuté précédemment, et on a donné la boucle LUA à écrire pour retrouver l'index de la table qui correspond au bon numéro de paramètre. @Lazer J'avais procédé de la manière suivante: -Recherche avec la boucle du paramètre 151 de mon module qui correspond à: Maximum Brigthness level. -Après vérification dans le Swagger, il se trouve que le Parametre 151 est égale à l'Index (ID??) 151 également. (Une erreur???) -Dans ma console il me transmet bien le bon résultat. Cependant je voulais le modifier en écrivant: WalliIntensite.properties.parameters[151].value = 30 --ou 33 api.put("/devices/"..WalliDimmer, WalliIntensite) Et donc l'erreur est celle que j'ai précité. Tu pense que je me suis tromper dans la manière d'utiliser la boucle?
Lazer Posté(e) le 23 décembre 2021 Signaler Posté(e) le 23 décembre 2021 Oui c'est fort possible, tout porte à croire qu'il n'y a pas d'index 151 dans la table.
Fredmas Posté(e) le 23 décembre 2021 Signaler Posté(e) le 23 décembre 2021 Je pense comme @Lazer Ce que tu écris va chercher le 151ème paramètre dans la liste, pas le paramètre qui possède l'ID 151.
triossrf Posté(e) le 23 décembre 2021 Signaler Posté(e) le 23 décembre 2021 (modifié) Alors il y' a quelque chose que je ne saisi pas. Dans la boucle et dans le fonctionnement. Voici donc mon parametre 151: Image Parametre Voici mon swager avec mon id 151: Je veux donc modifier l'ID 151 (ID = Index exact?) Modifié le 23 décembre 2021 par triossrf
Messages recommandés