format.string en lua

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

format.string en lua

Message par knasson »

bonjour,

j'essaye de créer des dummy device pour afficher les données qui me parlent sur le plan/

pour ma production solaire j'ai un idx (20) qui me donne toutes les infos que je souhaitent dans le json
avec "http://192.168.1.XX:8080/json.htm?type=devices&rid=20"
je mets les valeurs qui m'intéressent dans des variables:
je souhaite avoir "CounterTody" qui en Kwh dans le json et "Usage" valeur en W qui correspond a la production instantannée.
j'ai 2 devices idx 595 et idx 596
et un script qui ne fonctionne qu'a moitié.

Code : Tout sélectionner

json = (loadfile "/home/kan/domoticz/scripts/lua/JSON.lua")()  -- For Linux
commandArray = {}
local config=assert(io.popen("curl -s 'http://192.168.1.38:8080/json.htm?type=devices&rid=20'"))
local blocjson = config:read('*all')
config:close()
--print (blocjson)
local jsonValeur = json:decode(blocjson)
local function update(idx, value)
    local cmd = string.format("%d|0|%q", idx, value)
    table.insert (commandArray, { ['UpdateDevice'] = cmd } )
    print( string.format("%d|0|%q", idx, value))
end

Pjour = jsonValeur.result[1].CounterToday
PNow = jsonValeur.result[1].Usage

print ("ProdJour"..Pjour)
print ("ProdNow"..PNow)


value = Pjour
update ( 596,value)
value = Pnow
update ( 595,value)

return commandArray
pas d'erreur dans le log
resultat:
ce que je souhaite c'est avoir une valeur en KWh pour la prod du jour et une valeur en W pour la prod instantannée
je galère..pouvez vous m'aider...
Merci
knasson
Pièces jointes
Capture d’écran 2022-04-04 idx 595.jpg
Capture d’écran 2022-04-04 idx 595.jpg (35.37 Kio) Consulté 1415 fois
Dernière modification par Keros le 04 avr. 2022, 18:43, modifié 1 fois.
Raison : Remplacement des balises [quote] par [code]
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: format.string en lua

Message par Keros »

Tu peux nous mettre les logs que tu as quand tu exécutes ton script ? Cela nous permettrait de voir ce qui est affiché avec les print().
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: format.string en lua

Message par knasson »

Merci keros, Voilà!
2022-04-04 20:35:38.657 Status: LUA : ProdJour17.551 kWh
2022-04-04 20:35:38.658 Status: LUA: ProdNow0 Watt
2022-04-04 20:35:38.659 Status: LUA: 596|0|"17.551 kWh"
2022-04-04 20:35:38.659 Status: LUA: 595|0|nil
Les valeurs "ProdJour" et "ProdNow" sont bien renvoyées et sont correctes (ProdNow est a zero mais il fait nuit!)
je ne comprends pas pourquoi ProdNow est "nil" est ce un problème d'unité?

cdlmt
Knasson
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: format.string en lua

Message par Keros »

La ligne print ("ProdJour"..Pjour) te donne : ProdJour17.551 kWh.
Donc la variable Pjour a la valeur 17.551 kWh.

Pour nous humain, 17.551 kWh, nous savons que c'est un nombre avec une unité, mais si tu essayes d'envoyer l'info de cette variable pour remplir la valeur d'un autre widget, cela ne va pas fonctionner ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: format.string en lua

Message par knasson »

Ok en fait je devrai poser le problème autrement....je souhaite afficher sur mon plan une autre valeur que celle du compteur production solaire totalisateur et qui correspond a ce widget qu'il me propose et qui me semble sans intérêt d'où la création des variables virtuelles production journaliere et production instantannée.
je ne vois pas comment faire autrement..
Merci de vos suggestions...
cordialement
knasson
Pièces jointes
plan.jpg
plan.jpg (122.53 Kio) Consulté 1371 fois
widgetprodSolaire.jpg
widgetprodSolaire.jpg (18.88 Kio) Consulté 1371 fois
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: format.string en lua

Message par knasson »

Keros a écrit : 04 avr. 2022, 20:50 La ligne print ("ProdJour"..Pjour) te donne : ProdJour17.551 kWh.
Donc la variable Pjour a la valeur 17.551 kWh.

Pour nous humain, 17.551 kWh, nous savons que c'est un nombre avec une unité, mais si tu essayes d'envoyer l'info de cette variable pour remplir la valeur d'un autre widget, cela ne va pas fonctionner ;)
Si je comprends bien tu suggères que je ne dois pas envoyer une "chaine de caractères" pour la mise a jour du device mais une valeur?
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: format.string en lua

Message par Keros »

Oui, je pense que c'est le [espace]kWh qui pose le souci.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: format.string en lua

Message par knasson »

Bonsoir,

Pb résolu je prend en device virtuel un custom sensor Kwh pour la production du Jour, et un custom sensor W pour la production instantanée et j'ai abandonné la fonction

Code : Tout sélectionner

--local function update(idx, value)
   -- local cmd = string.format("%d,%d", idx, value)
   -- table.insert (commandArray, { ['UpdateDevice'] = cmd } )
   -- print( string.format("%d,%d", idx, value))
--end
car je ne maitrise pas l'instruction string.format...
et donc je fais un script pour la prod du jour et un avec la prod instantanée.
L'avantage c'est que ca marche...

cordialement,
knasson
Dernière modification par Keros le 06 avr. 2022, 12:21, modifié 1 fois.
Raison : Remplacement des balise quote en code
Répondre