Hello tout le monde !
Je bloque sur un problème que je ne comprends pas :
Je gère le panel Sprinkler à travers un QA... ça marche très bien sauf pour un cas :
Où je souhaite supprimer tous les jours programmés...
Voici un bout de code qui fonctionne :
J'ai une variable de type table où sont insérées plusieurs jours
Ensuite je vide cette table
Pour enfin la transférer dans l'API
tout est ok.
local ListeDay = {}
table.insert(ListeDay, "monday")
table.insert(ListeDay, "thusday")
...
for j = 1, #ListeDay do table.remove(ListeDay) end
res = api.put("/panels/sprinklers/"..MonID, {days=ListeDay})
Voici un bout de code qui ne fonctionne pas :
J'ai toujours ma variable de type table (mais ce coup-ci, elle reste vide)
Et je mets à jour l'API...
local ListeDay = {}
res = api.put("/panels/sprinklers/"..MonID, {days=ListeDay})
et voici l'erreur :
{"type":"ERROR","reason":"http:\/\/{$gateway-ip}\/json-schema\/panels\/sprinklers\/PUT_sprinklers.json. Invalid schema: #\/properties\/days. Invalid keyword: type. Invalid document: #\/days","message":""}
Je comprends bien qu'il aime pas ma variable "ListeDay", mais pourquoi ??
où est le problème entre le premier exemple et le second ????
merci pour vos lumières !!
En effet, il y a un gros soucis sur le formatage des tables JSON !!!!
exemple simple à reproduire :
dans un QA, faire cette fonction :
vous aurez compris que celle-ci va nous afficher le type de la variable transmise...
function QuickApp:Display_Type(value)
print(type(value))
end
On peut la tester depuis ce même QA ou un autre avec :
self:Display_Type( {1, 2, 3} )
le résultat sera donc forcément un type "table" !
mais depuis une scène maintenant :
en appelant la fonction comme ceci :
fibaro.call(id_QA, "Display_Type", {1, 2, 3})
le résultat affichée est de type "string" !!!!!!!
il faut faire :
fibaro.call(id_QA, "Display_Type", json.encode({1, 2, 3}))
pour avoir le type "table" !!!
J'ai encore loupé un épisode ????