Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua
Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua
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
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
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.
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.
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua
bonjour
merci pour ta reponse rapide
effectivement c'est deja mon premier probleme
j'ai ecris
sa fonctionne jaffiche 555 sur le capteur
maintenant comment faire le calcule? la ces plus compliquer et surtout qui change seule
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
Dernière modification par herbru01 le 25 juil. 2020, 01:07, modifié 1 fois.
Re: Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua
Essaye ceci :
Code : Tout sélectionner
commandArray['UpdateDevice'] = "124|0|" .. tostring(svalue)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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua
sa fonctionne jaffiche 555 sur le capteur
maintenant comment faire le calcule? la ces plus compliquer et surtout qui change seule
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
Bon jai un peut avancer mais la je sèche
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
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 commandArraysur 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
-
Chrominator
- Messages : 1042
- Inscription : 19 déc. 2015, 07:29
- Localisation : France
Re: Aide soustraction 2 capteur phisique pour crée un capteur virtuelle Lua
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 :
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.
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.
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.
et donc juste après cette ligne 7, tu pourras affecter la valeur de index2 à ta variable prod.
Je te laisse deviner la suite.
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)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')A la seconde ligne, tu affectes la valeur tonumber(index2) à une variable conso.
Code : Tout sélectionner
local conso = tonumber(index2)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("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")Je te laisse deviner la suite.
Un bon frein vaut mieux que deux sparadraps.
Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06