Aller au contenu

Messages recommandés

Posté(e)

 

bonjour à tous 

 

Je recherche désespérément comment récupérer une valeur dans une partie d'un API 

 

Ce que je souhaite récupérer :  updateVersion

 

Dans mon Quick app j'ai essayé comme ça mais ça fonctionne pas, et j'ai essayé bien d'autres solutions mais toujours aucun résultat

 

QuickApp.clima2 = tostring(fibaro.getValue(clim, "properties", firmwareUpdate: "updateVersion"))

QuickApp.clima2 = tostring(fibaro.getValue(clim, "firmwareUpdate", "updateVersion"))

etc:(

 

j'ai tester comme ca et ça commence à bouger :

 

QuickApp.clima2 = tostring(fibaro.getValue(clim,  "firmwareUpdate"))
 
et comme résultat : table: 0xf3a8a50
 
 
 
},
    "dead": false,
    "deadReason": "",
    "deviceControlType": 0,
    "deviceIcon": 70,
    "endPointId": 0,
    "firmwareUpdate": {
      "info": "",
      "progress": 0,
      "status": "UpToDate",
      "updateVersion": "1.7"
    },

 

 

local clim =  375

QuickApp.clima = tostring(fibaro.getValue(clim, "coolingThermostatSetpoint"))
QuickApp.clima2 = tostring(fibaro.getValue(clim, "properties", firmwareUpdate: "updateVersion"))
function QuickApp:onInit()
   self:debug(self.clima) 
   self:debug(self.clima2) 

   self:updateView("label1", "text", self.clima.. " °")
   self:updateView("label20", "text", self.clima2.. " °")

end

 

 

merci d'avance pour votre aide

 

Posté(e)

Que cherches-tu à récupérer ?

Tu voudrais que ta variable "clima2" prenne la valeur "1.7" venant de "updateVersion" concernant le matériel de ID=375 ?

Posté(e)

OK compris. Pour le Label ce ne sera pas difficile.

Bon le problème c'est que je ne connais pas ton matériel et que me le dire ne m'avancerai pas.

Donc si je me base uniquement sur ce que tu as essayé et écrit, comment obtiens-tu la table ci-dessous :

{
  "dead": false,
  "deadReason": "",
  "deviceControlType": 0,
  "deviceIcon": 70,
  "endPointId": 0,
  "firmwareUpdate": {
    "info": "",
    "progress": 0,
    "status": "UpToDate",
    "updateVersion": "1.7"},
}

 

Posté(e) (modifié)

Toujours si je me base sur ce que tu as écrit :

Le 09/11/2021 à 04:16, 971jmd a dit :

j'ai tester comme ca et ça commence à bouger :

 

QuickApp.clima2 = tostring(fibaro.getValue(clim,  "firmwareUpdate"))
et comme résultat : table: 0xf3a8a50
 

},
    "dead": false,
    "deadReason": "",
    "deviceControlType": 0,
    "deviceIcon": 70,
    "endPointId": 0,
    "firmwareUpdate": {
      "info": "",
      "progress": 0,
      "status": "UpToDate",
      "updateVersion": "1.7"
    },

 

 

firmareUpdate est une table, donc ça me semble normal que ça te retour comme résultat une table...

 

As-tu essayé simplement :

ça : QuickApp.clima2 = tostring(fibaro.getValue(clim,  "updateVersion"))

ou ça : QuickApp.clima2 = tostring(fibaro.getValue(clim,  "firmwareUpdate.updateVersion"))

Modifié par Fredmas
Posté(e) (modifié)

Quand tu fais ça : QuickApp.clima2 = tostring(fibaro.getValue(clim,  "deviceIcon"))

 

Tu reçois bien : "70"

Modifié par Fredmas
Posté(e)

oui jusque-là je suis toujours arrivé

 

local clim =  375
---QuickApp.clima = tostring(fibaro.getValue(clim, "coolingThermostatSetpoint"))
QuickApp.clima = tostring(fibaro.getValue(clim,  "deviceIcon"))
function QuickApp:onInit()
   self:debug(self.clima) 
   self:updateView("label1", "text", self.clima.. " °")
   setInterval(function() self:onInit() end,5)
end

 

Mais je pense que le faite que updateVersion dans la table firmwareUpdate c'est plus compliqué 

Posté(e)

Un truc comme ça :

var1 = fibaro.getValue(clim, "firmwareUpdate")
var2 = var1.updateVersion
print(var2)

 

Ca donne quoi ?

Posté(e)

merci pour ton aide

 

le code complet 

 

local clim =  375

QuickApp.var2 = tostring(fibaro.getValue(clim,  "firmwareUpdate"))
QuickApp.var2 = var1.updateVersion

function QuickApp:onInit()
   self:debug(self.var2) 
   self:updateView("label1", "text", "verssion "..self.var2.. " ")

end

 

Posté(e) (modifié)
QuickApp.var2 = tostring(fibaro.getValue(clim,  "firmwareUpdate"))
QuickApp.var2 = var1.updateVersion

A mon avis là il y a une erreur entre les var2 et var1.

Ca devrait plutôt être :

QuickApp.var1 = fibaro.getValue(clim, "firmwareUpdate") -- met la table "firmwareUpdate dans var1
QuickApp.var2 = tostring(var1.updateVersion) -- met la valeur "updateVersion" de la table var1 dans var2

Au passage, je pense que le tostring est inutile puisque les valeurs ont l'air d'être string dans la table, mais au moins on dira que tu es sûr...

 

 

Sinon si tu écris ça :

QuickApp.var2 = tostring(fibaro.getValue(clim, "firmwareUpdate").updateVersion)

Ca devrait fonctionner également il me semble. Avec la même remarque précédente à propos du tostring...
 

Modifié par Fredmas
Posté(e) (modifié)

Donc au final ça peut donner tout simplement ça sans tes variables :

local clim = 375

function QuickApp:onInit()
   self:updateView("label1", "text", "version "..fibaro.getValue(clim, "firmwareUpdate").updateVersion)
end

 

Modifié par Fredmas
Posté(e)

et si nous souhaitons récupérer sur trois niveaux j'imagine que là c'est le même principe mais beaucoup plus compliqué sachant qu'il faut demander ID du parameters

 

properties

parameters

id = 26

 

386772044_Capturedcran2021-11-1416_26_36.png.ad332ae223ec3eb5f45cd6b1e6e0ed2d.png

Posté(e)

Je vais essayer avec ta ligne de code

function QuickApp:onInit()
   self:updateView("label1", "text", "version "..fibaro.getValue(clim, "firmwareUpdate").updateVersion)
end
Posté(e)
il y a 5 minutes, 971jmd a dit :

et si nous souhaitons récupérer sur trois niveaux j'imagine que là c'est le même principe mais beaucoup plus compliqué sachant qu'il faut demander ID du parameters

Oui normalement.

 

 

il y a 1 minute, 971jmd a dit :

Je vais essayer avec ta ligne de code


function QuickApp:onInit()
   self:updateView("label1", "text", "version "..fibaro.getValue(clim, "firmwareUpdate").updateVersion)
end

Tu me diras, car je suis dans l'impro :D

 

Posté(e) (modifié)

Cool ça fonctionne alors ;)

 

Après comme je l'ai déjà dit, partant de zéro cette année concernant les QA (et le LUA d’ailleurs) j’apprends grâce à notre forum et mes plus grands formateurs techniques sont @Lazer et @jang alors j'ai peu de mérite.

Mais j'essaie d'aider autant que je peux, quand je le peux  :2:

 

Modifié par Fredmas
  • Like 1
Posté(e) (modifié)

Salut @Fredmas et @971jmd

 

Ce topic tombe à point nommé! 

J'arrive à faire sensiblement ce que vous avez expliqué, cependant je suis bloqué à la dernière étape, je m'explique: 

  "properties": {
    "parameters": [
      {
        "id": 13,
        "lastReportedValue": 28,
        "lastSetValue": 28,  <--- La valeur qui m'interesse de récuperer. 
        "size": 1,
        "value": 28
      },
                {
        "id": 11,
        "lastReportedValue": 4,
        "lastSetValue": 4,
        "size": 1,
        "value": 4
      },

J'ai utilisé la syntaxe suivante au milieu de multiple essais catastrophiques... 

function QuickApp:test()
    Brillance = fibaro.getValue(Walli, lastSetValue) 
	--Brillance = fibaro.getValue(Walli, "parameters").lastSetValue)
    self:debug("Slider", Brillance)
end

 

Tout en sachant que le deviceIcon fonctionne, il s'agit donc uniquement d'un problème de synthaxe...

Le débug m'affiche la réponse suivante: 

 

[18.11.2021] [14:28:51] [ERROR] [QUICKAPP502]: main.lua:18: Wrong parameter type, string required. Provided param 'nil' is type of nil

 

Merci d 'avance pour le coup  de pousse! 

Modifié par triossrf
Posté(e)

Tu n'aurais pas oublié les " " autour de lastSetValue par hasard ?

Brillance = fibaro.getValue(Walli, lastSetValue)

au lieu de :

Brillance = fibaro.getValue(Walli, "lastSetValue")

Et Walli correspond bien à une variable dans laquelle tu a indiqué précédemment l'ID de ton module ?

  • Like 1
Posté(e)

Oui correct j'ai bien rentré la local et j'avais déjà essayé avec les " "

Le code complet donne cela: 

local Walli = 41 

function QuickApp:test()
    Brillance = fibaro.getValue(Walli, "lastSetValue")
    self:debug("Intensité du Walli", Brillance)
end

 

Mais le débug m'affiche seulement

 

[18.11.2021] [20:26:45] [DEBUG] [QUICKAPP502]: onInit
[18.11.2021] [20:26:45] [DEBUG] [QUICKAPP502]: Intensité du Walli

sans aucune valeur concernant le lastsetvalue. 

Posté(e)

Si je rajoute ce code: 

 

    self:updateView("Label1", "text", "Intensité:" ..Brillance)

j'obtiens dans le débug :

 

[18.11.2021] [20:39:32] [ERROR] [QUICKAPP502]: main.lua:22: attempt to concatenate a nil value (global 'Brillance')

 

×
×
  • Créer...