totof60 a écrit : 01 févr. 2023, 19:49
Je vais explorer la piste du changement dans les versions.
Le pb que j'avais eu, pour ma part, date bien de qqpart entre v4.10717 et 2021.1 au vu du changelog de mon script... et, curieux hasard, le pb concernait aussi la MAJ d'un capteur virtuel (assez similaire à pas mal de lignes de ton script, mais chez moi colocalisé dans une fonction de MAJ: updateNum()) au vu d'un coup de grep dans mon répertoire de scripts lua:
Code : Tout sélectionner
script_device_SmartMeterPeak.lua:-- 13/05/2021, Record integers for Domoticz 2021.1 using math.floor().
script_device_SmartMeterPeak.lua: local cmd = string.format("%d|0|%d", otherdevices_idx[dev], math.floor(value1))
La fonction concernée:
Code : Tout sélectionner
--
-- Update virtual sensor
--
local function updateNum(dev, value1)
local cmd = string.format("%d|0|%d", otherdevices_idx[dev], math.floor(value1))
table.insert (commandArray, { ['UpdateDevice'] = cmd } )
end
L'encodage de la valeur value1 dans le string.format(), autrefois par défaut entière, était devenue flottant en raison d'un upgrade de l'interpréteur Lua inclus avec Domoticz de mémoire. Nécessitant l'ajout d'un appel à math.floor() autrefois inutile.
Note que dans ton cas, la première valeur pourrait ne rien avoir après la virgule et passer correctement. Puis après des calculs, peut-être simplement en raison d'erreurs d'arrondi, se retrouver "corrompue" en raison du simple encodage sauvage d'un int en float dans la chaîne de caractère.