Compteur virtuel pour CM180i
Re: Compteur virtuel pour CM180i
Bonsoir,
j'ai une question sur Le script du compteur virtuel.
Il faut créer:
- 3 compteurs virtuels de type "instantanée et compteur" et récupérer leurs IDX en mode graphique via Domoticz
- 3 variables utilisateurs de type "entier" (pour moi totalP1, totalP2 et totalP3) en mode graphique via Domoticz
- 1 variable utilisateur de type "chaîne" (pour moi lastupdate) en mode graphique via Domoticz
Que faut-il faire de spécial pour récupérer les IDX en mode graphique via Domoticz ??
J'essaie de comprendre...Merci pour la réponse.
j'ai une question sur Le script du compteur virtuel.
Il faut créer:
- 3 compteurs virtuels de type "instantanée et compteur" et récupérer leurs IDX en mode graphique via Domoticz
- 3 variables utilisateurs de type "entier" (pour moi totalP1, totalP2 et totalP3) en mode graphique via Domoticz
- 1 variable utilisateur de type "chaîne" (pour moi lastupdate) en mode graphique via Domoticz
Que faut-il faire de spécial pour récupérer les IDX en mode graphique via Domoticz ??
J'essaie de comprendre...Merci pour la réponse.
Re: Compteur virtuel pour CM180i
Tu vas dans Configuration / Dispositifs. Tu as une colonne qui indique les IDX pour chaque dispositif.
Ou, sur chaque widget, tu cliques sur Modifier et tu as l'IDX qui est indiqué en première ligne.
Ou, sur chaque widget, tu cliques sur Modifier et tu as l'IDX qui est indiqué en première ligne.
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: Compteur virtuel pour CM180i
Merci pour ton retour. je me suis mal exprimé, comme débutant, je voulais savoir pour avoir écrit "en mode graphique via Domoticz". Quand je crée des variables, je choisi le type et c'est tout, non. je voulais savoir pourquoi avoir mis en mode graphique?
Re: Compteur virtuel pour CM180i
Ca y est, je pense avoir compris ce que tu n'avais pas compris 
matteocfr a indiqué dans son message :
matteocfr a indiqué dans son message :
et ce qu'il veut dire par "en mode graphique via Domoticz", c'est via l'interface web de DomoticZ (et non dans le script). Le script utilise 3 compteurs virtuels et 4 variables utilisateurs qu'il faut créer dans DomoticZ pour que le script fonctionne.matteocfr a écrit : 23 janv. 2017, 23:00 - 3 compteurs virtuels de type "instantanée et compteur" et récupérer leurs IDX en mode graphique via Domoticz
- 3 variables utilisateurs de type "entier" (pour moi totalP1, totalP2 et totalP3) en mode graphique via Domoticz
- 1 variable utilisateur de type "chaîne" (pour moi lastupdate) en mode graphique via Domoticz
- créer un fichier de nom script_device_VOTRENOM.lua
- y coller le code suivant (en modifiant pour vos données, IDX,...)
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: Compteur virtuel pour CM180i
Je voulais avoir des infos de la part de matteocfr sur son script. Mais je ne peux pas joindre de jpg, donc je m'adresse ici.
j'ai repris son script, mais débutant....., j'ai des problèmes au début il me semble que j'avais la valeur "ELECTRIC_SENSOR_INDEX_1" (Conso PAC en Exterieur) en Watt maintenant c'est en ampère. D’ailleurs je ne sais si on doit avoir des valeurs en watt ou Ampère. Pour moi, le device est en Watt, donc en watt.
Avant tout est-ce que le script peut fonctionner avec deux pinces. Mon but c'est de vérifier la consommation de ma PAC Air/eau. et voir si les résistances ( 2*2*2 kw) se déclenche (pince avec "ELECTRIC_SENSOR_INDEX_2" pour le moment valeur zéro. résistance non utilisée.
Merci pour la manip, je ne connaissais pas
j'ai repris son script, mais débutant....., j'ai des problèmes au début il me semble que j'avais la valeur "ELECTRIC_SENSOR_INDEX_1" (Conso PAC en Exterieur) en Watt maintenant c'est en ampère. D’ailleurs je ne sais si on doit avoir des valeurs en watt ou Ampère. Pour moi, le device est en Watt, donc en watt.
Avant tout est-ce que le script peut fonctionner avec deux pinces. Mon but c'est de vérifier la consommation de ma PAC Air/eau. et voir si les résistances ( 2*2*2 kw) se déclenche (pince avec "ELECTRIC_SENSOR_INDEX_2" pour le moment valeur zéro. résistance non utilisée.
Code : Tout sélectionner
-- scripts/lua/script_device_sondes_owl.lua
commandArray = {}
local THIS_DEVICE_NAME = 'Sondes_OWL' -- device name with type 'Current/Energy' and subtype 'CM180i'
if devicechanged[THIS_DEVICE_NAME] then
-- define the custom values
local ENERGY_DEVICE_NAME = 'Sondes_OWL' -- device name with type 'Energy' and subtype 'CM180'
local ENERGY_VARIABLE = 'OwlEnergy' -- user variable utilisateur en type 'Décimal'
local ENERGY_VARIABLE_1 = 'OwlEnergy1' -- user variable utilisateur en type 'Décimal'
local ENERGY_VARIABLE_2 = 'OwlEnergy2' -- user variable utilisateur en type 'Décimal'
local ENERGY_VARIABLE_3 = 'OwlEnergy3' -- user variable utilisateur en type 'Décimal'
local ELECTRIC_SENSOR_INDEX_1 = 954 -- PAC Ext
local ELECTRIC_SENSOR_INDEX_2 = 955 -- PAC Int resistances
local ELECTRIC_SENSOR_INDEX_3 = 956 -- ConsoTotal mettre OWL CM180
-- get rate (a float from 0 to 1) of given current
local function GetCurrentRate(current)
return current / (current1 + current2 + current3)
end
-- get energy offset (Wh) from this script value and the previous one
local function GetEnergyOffset()
return energy - uservariables[ENERGY_VARIABLE]
end
-- set energy user variable with rated energy (Wh)
local function SetEnergyVariable(name, current)
commandArray['Variable:' .. name] = tostring(GetCurrentRate(current) * GetEnergyOffset() + uservariables[name])
return
end
-- update electric virtual sensor with rated power (W) and energy (Wh)
local function UpdateElectricDevice(idx, current, energy)
commandArray[idx] = { ['UpdateDevice'] = idx .. "|0|" .. GetCurrentRate(current) * power .. ";" .. energy }
return
end
-- get values from devices
current1, current2, current3, energy = devicechanged[THIS_DEVICE_NAME]:match("([^;]+);([^;]+);([^;]+);([^;]+)")
power = otherdevices_svalues[ENERGY_DEVICE_NAME]:match("([^;]+);([^;]+)") -- second captured value unused
-- set computed values to device 1
SetEnergyVariable(ENERGY_VARIABLE_1, current1)
UpdateElectricDevice(ELECTRIC_SENSOR_INDEX_1, current1, uservariables[ENERGY_VARIABLE_1])
-- set computed values to device 2
SetEnergyVariable(ENERGY_VARIABLE_2, current2)
UpdateElectricDevice(ELECTRIC_SENSOR_INDEX_2, current2, uservariables[ENERGY_VARIABLE_2])
-- set computed values to device 3
SetEnergyVariable(ENERGY_VARIABLE_3, current3)
UpdateElectricDevice(ELECTRIC_SENSOR_INDEX_3, current3, uservariables[ENERGY_VARIABLE_3])
-- reset energy user variable with this script value (Wh)
commandArray['Variable:' .. ENERGY_VARIABLE] = energy
end
return commandArray
Merci pour la manip, je ne connaissais pas
- Pièces jointes
-
- Capture d’écran 2021-12-05 190233.jpg (56.88 Kio) Consulté 1971 fois
Dernière modification par ropermac le 05 déc. 2021, 21:42, modifié 2 fois.
Modération
Ropermac, peux-tu éditer ton message précédent pour mettre ton script entre les balises code. Ceci facilitera la lecture et si quelqu'un souhaite copier ton script, il peut faire un copier/colelr. Comment faire ? > Remonte sur ton message, clique sur le petit bouton avec un crayon en haut à droite : tu peux ainsi éditer ton message et coller ton script entre les balises code (il y a un petit bouton </> au-dessus de la zone de rédaction).
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: Compteur virtuel pour CM180i
Bonsoir,
J'ai installé le script LUA compteur virtuel pour CM180i il me semble avoir suivi à la lettre, mais dans les logs j'ai une erreur et les compteurs restent à "0":
Voici mon script
Mon CM180i porte le nom "sondes - OWL"
Mon CM180 ----------- " Consommation"
La phase 1 ------------ " P1 "
La phase 2 ----------- " P2 "
La phase 3 ----------- " P3 "
Je ne comprends pas cette erreur!
J'ai installé le script LUA compteur virtuel pour CM180i il me semble avoir suivi à la lettre, mais dans les logs j'ai une erreur et les compteurs restent à "0":
Code : Tout sélectionner
2022-07-17 20:28:43.747 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_device_compteur.lua: /home/pi/domoticz/scripts/lua/script_device_compteur.lua:31: attempt to perform arithmetic on a nil value (field '?')Code : Tout sélectionner
-- scripts/lua/script_device_sondes_owl.lua
commandArray = {}
local THIS_DEVICE_NAME = 'sondes - OWL' -- device name with type 'Current/Energy' and subtype 'CM180i'
if devicechanged[THIS_DEVICE_NAME] then
-- define the custom values
local ENERGY_DEVICE_NAME = 'sondes - OWL' -- device name with type 'Energy' and subtype 'CM180'
local ENERGY_VARIABLE = 'OwlEnergy' -- user variable as float
local ENERGY_VARIABLE_1 = 'P1' -- user variable as float
local ENERGY_VARIABLE_2 = 'P2' -- user variable as float
local ENERGY_VARIABLE_3 = 'P3' -- user variable as float
local ELECTRIC_SENSOR_INDEX_1 = 200 -- Phase1
local ELECTRIC_SENSOR_INDEX_2 = 201 -- Phase2
local ELECTRIC_SENSOR_INDEX_3 = 202 -- Phase3
-- get rate (a float from 0 to 1) of given current
local function GetCurrentRate(current)
return current / (current1 + current2 + current3)
end
-- get energy offset (Wh) from this script value and the previous one
local function GetEnergyOffset()
return energy - uservariables[ENERGY_VARIABLE]
end
-- set energy user variable with rated energy (Wh)
local function SetEnergyVariable(name, current)
commandArray['Variable:' .. name] = tostring(GetCurrentRate(current) * GetEnergyOffset() + uservariables[name])
return
end
-- update electric virtual sensor with rated power (W) and energy (Wh)
local function UpdateElectricDevice(idx, current, energy)
commandArray[idx] = { ['UpdateDevice'] = idx .. "|0|" .. GetCurrentRate(current) * power .. ";" .. energy }
return
end
-- get values from devices
current1, current2, current3, energy = devicechanged[THIS_DEVICE_NAME]:match("([^;]+);([^;]+);([^;]+);([^;]+)")
power = otherdevices_svalues[ENERGY_DEVICE_NAME]:match("([^;]+);([^;]+)") -- second captured value unused
-- set computed values to device 1
SetEnergyVariable(ENERGY_VARIABLE_1, current1)
UpdateElectricDevice(ELECTRIC_SENSOR_INDEX_1, current1, uservariables[ENERGY_VARIABLE_1])
-- set computed values to device 2
SetEnergyVariable(ENERGY_VARIABLE_2, current2)
UpdateElectricDevice(ELECTRIC_SENSOR_INDEX_2, current2, uservariables[ENERGY_VARIABLE_2])
-- set computed values to device 3
SetEnergyVariable(ENERGY_VARIABLE_3, current3)
UpdateElectricDevice(ELECTRIC_SENSOR_INDEX_3, current3, uservariables[ENERGY_VARIABLE_3])
-- reset energy user variable with this script value (Wh)
commandArray['Variable:' .. ENERGY_VARIABLE] = energy
end
return commandArrayMon CM180 ----------- " Consommation"
La phase 1 ------------ " P1 "
La phase 2 ----------- " P2 "
La phase 3 ----------- " P3 "
Je ne comprends pas cette erreur!
Re: Compteur virtuel pour CM180i
L'erreur indique la ligne 31 :
Essaye de déboguer les différentes valeurs utilisées : il y en aurait une qui serait vide.
Ta uservariable est bien initialisée avec un nombre (0 par exemple) ?
Si le script plante là-dessus, il n'ira pas plus loin.
Code : Tout sélectionner
commandArray['Variable:' .. name] = tostring(GetCurrentRate(current) * GetEnergyOffset() + uservariables[name])Ta uservariable est bien initialisée avec un nombre (0 par exemple) ?
Si le script plante là-dessus, il n'ira pas plus loin.
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: Compteur virtuel pour CM180i
Merci de la rapidité de réponse.
La uservariable correspond à quoi, moi, j'ai mis le nom de mon CM180i, je pense que l'erreur est là.
Bonne journée.
La uservariable correspond à quoi, moi, j'ai mis le nom de mon CM180i, je pense que l'erreur est là.
Bonne journée.
Re: Compteur virtuel pour CM180i
Tu as créer et/ou renseigner les éléments demandés aux début du script :
Code : Tout sélectionner
-- define the custom values
local ENERGY_DEVICE_NAME = 'sondes - OWL' -- device name with type 'Energy' and subtype 'CM180'
local ENERGY_VARIABLE = 'OwlEnergy' -- user variable as float
local ENERGY_VARIABLE_1 = 'P1' -- user variable as float
local ENERGY_VARIABLE_2 = 'P2' -- user variable as float
local ENERGY_VARIABLE_3 = 'P3' -- user variable as float
local ELECTRIC_SENSOR_INDEX_1 = 200 -- Phase1
local ELECTRIC_SENSOR_INDEX_2 = 201 -- Phase2
local ELECTRIC_SENSOR_INDEX_3 = 202 -- Phase3Comment 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