Aller au contenu

Messages recommandés

Posté(e) (modifié)

salut à tous,

 

je bute sur ce morceau de code et je n'en comprends pas la cause...

 

 

    if (fibaro.getGlobalVariable("Etat_Consigne_HC") == "ACTIVE") and 
(
  (tonumber(fibaro.getValue(idTemp, "value")) >= tonumber(fibaro.getGlobalVariable("Consigne_HC") - 1)
and tonumber(fibaro.getValue(idTemp, "value")) <= tonumber(fibaro.getGlobalVariable("Consigne_HC"))
   )
)

[19.04.2021] [17:38:00] [ERROR] [QUICKAPP690]: main.lua:77: bad argument #2 to 'tonumber' (base out of range)

 

et ça m'énerve de ne pas pouvoir me débrouiller seul car ça doit être un truc tout c.n !!!

 

Stef

 

 

Modifié par couillerot
Posté(e)

il doit avoir du mal à interpréter la base (décimal, binaire, hexadécimal, etc).

Essaye de forcer la base décimale :

tonumber(xxx, 10)

 

Posté(e)

Avec le -1 en dehors du tonumber du coup, car il faut que ta string soit convertie en nombre avant l'opération

tonumber(fibaro.getGlobalVariable("Consigne_HC", 10)) - 1

 

Posté(e)

Autre question de newbie :)

 

peut-on créer des "variables énumérées" (ou pseudo-énumérées via une extraction de chaine)  avec le tableau des variables locales ?

merci

 

Stef

Posté(e)

Non... enfin il va falloir coder ta propre logique, mais rien n'empêcherait un utilisateur de modifier la variable à une valeur non autorisée directement via l'interface Web.

 

Le principe des variables énumérées c'est de limiter les valeur à une liste de choix prédéfinie... du coup la réponse directe à ta question, c'est bien non.

Posté(e) (modifié)

ok, merci Lazer pour cette précision :74:

au moins je sais vers quoi je dois me diriger ou plutôt vers quoi je ne dois pas m'orienter une impasse !

 

Stef

Modifié par couillerot
Posté(e)

Pour compléter, ça sera possible, un jour, quand Fibaro permettra officiellement d'utiliser les listes déroulantes dans l'interface des QuickApps.

Ainsi l'utilisateur pourra facilement choisir une valeur dans la liste déroulante, limitée aux choix proposés.

En attendant, tu peux faire plusieurs boutons, chaque bouton permettant de porter la valeur qui t'intéresse.

Bon si par contre tu as une liste de choix parmi 10....20... 50 valeurs, créer autant de boutons ne va pas être une bonne solution.

Posté(e)

Autre question qui n'a rien à voir...

 

voilà, je souhaite réaliser un petit QA basé sur l'api de weatherbit qui s'orienterait plutôt vers les prévisions de précipitations pour mon arrosage auto.

j'arrive bien à extraire les datas mais je coince sur le comment récupérer toutes les variables "precip"... du data ??? et je n'y connais absolument rien en table s'il s'agit de cela... je sais bien que cela est très basique comme demande mais je ne souhaite qu'apprendre et pouvoir bricoler deux ou trois trucs :)

 

merci

 

Stef

 

voici un extrait du data :

 

weatherbit.thumb.jpg.c7abbdb953acfc6d835a949814aa3947.jpg

Posté(e)

Ce sont des données au format JSON, donc un début de réponse c'est d'utiliser json.decode() pour transformer son contenu en un beau tableau exploitable en LUA.

 

Exemple ici :

 

Posté(e)

zut... :2:

 

{"status_code":429,"status_message":"Your request count (872) is over the allowed limit of 500 per day - Upgrade your key, or retry after 513.63333333333 minutes"}
Posté(e) (modifié)

finalement, sur le debug j'arrive obtenir quelquechose :

debug.jpg.26db77603c7f500892283a3537a3d0e6.jpg

 

cependant, je souhaite aller justement dans la table data / table 

 

dans le tableau des variables, j'arrive bien à récupérer quelques donnée mais la table data est vide...

 

debug.thumb.jpg.01d60b8aefeca28d92e4e94eea1fb499.jpg

 

une piste, peut-être... je sèche !

 

voici le morceau de code :

 

self.http:request("http://api.weatherbit.io/v2.0/forecast/daily?city_id=3027642&lang=fr&key=e1fc285d7350412c80504c0670faba05", {
   	    success = function(response)
        if response.status == 200 then
            if response.data and response.data ~= "" then
              
     		    local jsonTable = json.decode(response.data)
               	local k, v
				for k, v in pairs(jsonTable) do
                	print("key = " .. k .. " - type(v) = " .. type(v))
                    self:setVariable(k,v)
                end

 

Stef

 

Modifié par couillerot
Posté(e) (modifié)
{"status_code":429,"status_message":"Your request count (513) is over the allowed limit of 500 per day - Upgrade your key, or retry after 477.41666666667 minutes"}

 

rebelotte ! :2:

 

Stef

Modifié par couillerot
  • Haha 1
Posté(e)

Euh... je ne sais pas

 

Mais il semble y avoir beaucoup de données, et plusieurs tableaux imbriquées, donc il faut que tu trouves le bon "chemin" pour accéder aux données dont tu as besoin.

Posté(e)

Merci Lazer pour ton aide car j'ai bientôt fini mon QA WeatherBit avec gestion auto de l'arrosage :74:

 

il me reste encore à fignoler quelques bricoles et surtout l'intégrer en tant que fibaro.weather

 

Stef

 

 

 

eee40" comme valeur à "data"

weatherbit_wall.jpg

  • Like 1
Posté(e)

au fait, existe t-il un moyen de décaler du texte ?

j'ai bien essayé avec string.gsub, \t, \b ...mais rien à faire !

 

merci

 

Stef

×
×
  • Créer...