Page 1 sur 1

Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua

Publié : 24 juil. 2020, 22:18
par herbru01
capteur.jpg
capteur.jpg (139.13 Kio) Consulté 5495 fois
Bonjour a tous
je me lance dans la programmation LUA je ne comprend rien sa fait 5 jours que je tente de programmer un capteur virtuelle avec une simple soustraction de 2 capteur ( pince ampèremétrique de mes panneaux solaire)

je sollicite donc votre aide pour le script en question

en gros jai une mesure en Watt de la consommation de la maison ( conso maison ) et une mesure en watt de la conso de la maison - solaire (maison - solaire) j'ai donc creé une mesure virtuelle ( dummy) (P istantane)

qu faut t'il coder pour

( conso maison ) - (maison - solaire) = (P istantane)

merci d'avance pour votre aide précieuse

Re: Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua

Publié : 24 juil. 2020, 23:03
par Keros
Bonjour herbru01 et bienvenue sur le forum ;)

Regarde dans ma signature, j'ai écrit différentes choses à propos de la programmation.

As tu réussi a écrire une valeur dans P istantane ? Peut importe la valeur : le but est d'arriver à écrire dans le compteur.
As tu réussi à lire les deux consos ? De là est-ce que le calcul donne un résultat cohérent ? Pour cela écrit les infos dans les logs.
En décomposant ton besoin et en procédant par étape tu pourras tout mettre bout à bout et atteindre ton besoin.

Re: Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua

Publié : 24 juil. 2020, 23:41
par herbru01
bonjour
merci pour ta reponse rapide

effectivement c'est deja mon premier probleme

j'ai ecris

Code : Tout sélectionner


commandArray = {}

commandArray['UpdateDevice'] = '7|0|555' 
    
  

return commandArray

sa fonctionne jaffiche 555 sur le capteur

maintenant comment faire le calcule? la ces plus compliquer et surtout qui change seule

Re: Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua

Publié : 25 juil. 2020, 00:56
par Keros
Essaye ceci :

Code : Tout sélectionner

commandArray['UpdateDevice'] = "124|0|" .. tostring(svalue)

Re: Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua

Publié : 25 juil. 2020, 01:08
par herbru01
sa fonctionne jaffiche 555 sur le capteur

maintenant comment faire le calcule? la ces plus compliquer et surtout qui change seule

Code : Tout sélectionner

commandArray['UpdateDevice'] = '124|0|555'

Re: Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua

Publié : 25 juil. 2020, 02:29
par herbru01
Bon jai un peut avancer mais la je sèche

Code : Tout sélectionner

commandArray = {}

local prod = tonumber(index2)
local conso = tonumber(index2)
local istant = (prod - conso)

index1,index2,index3,index4,index5 = otherdevices_svalues['maison-production']:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")

index1,index2,index3,index4,index5 = otherdevices_svalues['conso maison']:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")

commandArray['UpdateDevice'] = '124|0|'..tostring(istant)


  
return commandArray


sur le log jai 2020-07-25 02:29:05.356 Error: EventSystem: in Script #1: [string "--..."]:33: attempt to perform arithmetic on a nil value (local 'prod')


conso maison 421.000;88403.000 0/421.000;88403.000
maison-production 414.000;146532.000 0/414.000;146532.000

en rouge les valeur qui intéresse
valeur.jpg
valeur.jpg (41.4 Kio) Consulté 4790 fois

Re: Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua

Publié : 25 juil. 2020, 04:19
par Chrominator
Le script est exécuté ligne à ligne, du début jusqu'à la fin.
L'ordre des instructions est donc important.
En l'occurence, tu fais des calculs avec des variables qui ne sont pas encore valorisées avec ce que tu attends ;

Au début de ton script, tu écris en ligne 3 :

Code : Tout sélectionner

local prod = tonumber(index2)
L'opérateur = est l'opérateur d'affectation, c'est à dire qu'il va évaluer l'expression de droite et mettre le résultat dans la variable dont le nom est à gauche.
A ce stade c'est la première fois qu'on rencontre index2, donc sa valeur est non définie (nil en lua).
En exécutant ce code, tu passes la valeur numérique (tonumber) de index2 à la variable prod.
Bah prod vaut donc nil aussi.

C'est ce que t'explique le message dans le log quand il essaie de faire la soustraction entre prod et conso.

Code : Tout sélectionner

local istant = (prod - conso)

Code : Tout sélectionner

2020-07-25 02:29:05.356 Error: EventSystem: in Script #1: [string "--..."]:33: attempt to perform arithmetic on a nil value (local 'prod')
Lua ne lit pas les lignes suivantes de ton script à cause cette erreur.


A la seconde ligne, tu affectes la valeur tonumber(index2) à une variable conso.

Code : Tout sélectionner

 local conso =  tonumber(index2)
index2 a-t-il reçu une valeur ?
Toujours pas.
Donc même résultat, conso vaudra nil.

En admettant que ta ligne 7 soit correcte, là index2 recevra une valeur.

Code : Tout sélectionner

index1,index2,index3,index4,index5 = otherdevices_svalues['maison-production']:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")
et donc juste après cette ligne 7, tu pourras affecter la valeur de index2 à ta variable prod.

Je te laisse deviner la suite.