Page 1 sur 3

Besoin aide très simple sur script LUA : soustraction et MAJ device pour OWL

Publié : 05 déc. 2021, 11:18
par fredclo
Bonjour

Peut être que mon script permettra de donner des idées : il est très simple mais permet d'avoir un meilleur décompte des W pour ce que donne le OWL. En effet, mes radiateurs, en veille, consomme des VA significatifs (33.39VA) mais seulement 2W. Sur 180 jours de chauffe ca représente plus de 130Kwh de différence !
Le cosphi (facteur de puissance) n'étant pas vu par le OWL car il n'a pas connaissance de la tension exacte.
Pour avoir dans la base de données des vrais Watts et non pas des VA j'ai donc décidé d'ajuster 1 fois par jour la valeur.
Il faut que je soustrais 801 VAh au compteur du OWL pour avoir les Wh quotidiens consommés.

Etant une bille en LUA, alors que j'utilise depuis plus de 5 ans domoticz maintenant, j'ai besoin de votre aide très simple.
En effet, je ne sais pas utiliser le 'update' device comme il faut car j'ai toujours une erreur 'attempt to perform arithmetic on a nil value (global 'p2')' dans le style, tout dépend de l'instruction que j'utilise.
Je vous mets le code, avec en commentaire tout ce que j'ai essayé et rien ne marche.
Merci d'avance !

PS : j'ajouterai une condition horaire pour cette MAJ (ca je sais faire)

Code : Tout sélectionner

commandArray = {}

local heure = os.date("%H:%M")
local cm180 = 'OWL' --nom du capteur CM180
p1, p2 = string.match(otherdevices_svalues[cm180], "(%d+.%d*);(%d+.%d*)") -- récupère les valeurs du compteur
p3 = p2 - 801
print(p3) -- ca fonctionne bien !

-- A partir là rien ne fonctionne pour  mettre ce p3 qui s'affiche bien, dans ce foutu compteur OWL idx 454
--p3 = tonumber(p3)
--commandArray={['UpdateDevice']= 454 .. "|0|" .. p3}
--commandArray['UpdateDevice'] = '454|0|p3'
--commandArray[#commandArray+1]={['UpdateDevice'] = 454 ..'|0|'.. p3)} ---- mise a jour du device
--commandArray[#commandArray+1]={['UpdateDevice'] = string.format("%d|0|%d", 454, tonumber(p3))}

return commandArray

Re: Besoin aide très simple sur script LUA : soustraction et MAJ device pour OWL

Publié : 05 déc. 2021, 13:46
par Keros
Pour mettre un jour un compteur, il ne faut pas lui envoyer une donnée en nombre, mais une donnée en texte :

Code : Tout sélectionner

commandArray['UpdateDevice'] = "454|0|" .. tostring(p3)

Re: Besoin aide très simple sur script LUA : soustraction et MAJ device pour OWL

Publié : 05 déc. 2021, 17:44
par fredclo
Merci Keros ! trop fort, je n'ai plus d'erreur ! mais...
mon compteur de 38.4Kwh se print un p3 de 37.6kwh, mais dans le rapport, il est toujours affiché à 38.4Kwh.
il ne se met pas à jour. Comment ca se fait ?
merci

Re: Besoin aide très simple sur script LUA : soustraction et MAJ device pour OWL

Publié : 05 déc. 2021, 20:04
par Keros
Il garde peut-être en mémoire la valeur la plus forte.

Re: Besoin aide très simple sur script LUA : soustraction et MAJ device pour OWL

Publié : 06 déc. 2021, 15:00
par fredclo
j'avais un peu d'espoirs le lendemain, mais non, rien de mieux.
Cela veut dire et il faut le savoir, que toutes les personnes qui utilisent les pinces ampèremétriques style OWL CM180, doivent connaître la mesure en VA et en W, et savoir que Domoticz montrera une valeur surévaluée, à la différence calculée et connues VA-W.
Chez moi, je sais que c'est 130Kwh sur 6 mois.

Si quelqu'un à une solution, je suis preneur !
Merci Keros pour tout ce que tu fais sur le forum.
fred

Re: Besoin aide très simple sur script LUA : soustraction et MAJ device pour OWL

Publié : 06 déc. 2021, 18:30
par Keros
Tu aurais la possibilité de faire ton calcul corrigé en temps réel ? Tu pourrais créer un deuxième compteur virtuel et, via un script, y mettre la valeur corrigée au fur et à mesure que ton OWL se met à jour.

Re: Besoin aide très simple sur script LUA : soustraction et MAJ device pour OWL

Publié : 06 déc. 2021, 18:42
par fredclo
c'est une bonne idée !
comme mon besoin est de connaître la conso sur la période de chauffe, j'ai simplement nommé mon compteur "OWL dont 0.8KVA/J". Comme ca, en fin de période, j'enlèverai la montant global dans mes analyses. Mais dans ce système simple, Domoticz garde des valeurs erronées.
Je retiens ton idée quand même pour que ca germe dans ma tête.
Merci encore !

Re: Besoin aide très simple sur script LUA : soustraction et MAJ device pour OWL

Publié : 06 déc. 2021, 20:31
par Keros
Tu as la formule à appliquer, tu as la syntaxe pour mettre à jour le dispositif, tu as déjà fait le plus dur ;)

Re: Besoin aide très simple sur script LUA : soustraction et MAJ device pour OWL

Publié : 07 déc. 2021, 14:07
par fredclo
Eh bien tu m'as incité à passer à l'acte mais j'ai une question : quel trigger choisir ? car si je mets "all", les log vont être monstrueux mais au moins je ne loupe rien.
Il faudrait une condition mais je ne vois pas : si c'est à chaque fois que le compteur OWL change, ben il ne change jamais sauf quand j'allume le chauffage... donc quelle condition.
Pour l'instant, le programme avec trigger sur All ca donne ca et ca fonctionne :

Code : Tout sélectionner

commandArray = {}

local heure = os.date("%H:%M")
local cm180 = 'OWL dont 0.8KVA/J' --nom du capteur CM180
local owlv = 'OWL Virtuel' -- nom capteur virtuel

-- if heure == '23:59' then
    p1, p2 = string.match(otherdevices_svalues[cm180], "(%d+.%d*);(%d+.%d*)")
    commandArray['UpdateDevice'] = "716|0|" .. tostring(p1-30)
--end

return commandArray

Re: Besoin aide très simple sur script LUA : soustraction et MAJ device pour OWL

Publié : 07 déc. 2021, 20:28
par Keros
Alors, le all est à éviter : le script se déclenche toutes les minutes + toutes les fois où un dispositif change >> ce qui peut faire beaucoup.

Il faudrait que tu le mettes de type device pour uniquement ton compteur OWL. C'est bien quand lui change que tu souhaites corriger la valeur dans le deuxième compteur.