Page 1 sur 4
Compteur virtuel pour CM180i
Publié : 17 janv. 2017, 22:16
par matteocfr
Bonjour à tous,
Mon installation est la suivante:
1 raspberry, domoticz dessus (dernière maj effectuée), rfxcom branché (dernier firmware) avec comme périphérique plusieurs sondes oregons et 1 émetteur CM180i d'OWL avec 3 pinces ampèremétriques (il permet d'envoyer 3 valeurs de façon séparé).
Après plusieurs heures de recherche et étant newbie en script LUA, j'ai un problème insoluble (pour moi je relativise!!!):
Mon émetteur CM180i est bien vu par Domoticz, détecté par un type Current/energy, lorsque je regarde le graphe de celui-ci je peux voir 3 courbes correspond au 3 pinces. J'aimerais avoir 3 compteurs (virtuel?) séparés correspondants aux 3 pinces avec les fonctions instantannée et totaliseur.
Comment faire?
Émetteur détecté:
Voici le graphe en question:
Je me doute que la solution a déjà été traitée mais j'ai pas réussi à l'attraper.
Merci par avance
Re: Compteur virtuel pour CM180i
Publié : 23 janv. 2017, 23:00
par matteocfr
Salut à tous,
après avoir continué à chercher, je suis arriver à un script qui me convient.
Voici ma solution pour d'autres "galériens".
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
- créer un fichier de nom script_device_VOTRENOM.lua
- y coller le code suivant (en modifiant pour vos données, IDX,...)
Code : Tout sélectionner
--script permettant des lires des donnees de sonde OWL et de remplir des compteurs virtuels (instantannée et total)
-- Initialisation des variables locales
local totalP1 = uservariables['totalP1']
local totalP2 = uservariables['totalP2']
local totalP3 = uservariables['totalP3']
local lastupdate = uservariables['lastupdate']
commandArray = {}
if devicechanged['Sondes - OWL'] then
function timedifference (s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
--on recupere la date d'execution du script
update = (otherdevices_lastupdate['Sondes - OWL'])
--print(update)
--on calcule l'intervalle de temps en secondes entre deux executions du script
intervalle = timedifference(lastupdate)
--print(intervalle)
--on recupere les valeurs en Amperes des sondes OWL
l1, l2, l3 = string.match(otherdevices_svalues['Sondes - OWL'], "(%d+.%d*);(%d+.%d*);(%d+.%d*)")
--print(l1)
--print(l2)
--print(l3)
--on les transforme en Watt
p1 = l1 * 230
--print(p1)
p2 = l2 * 230
--print(p2)
p3 = l3 * 230
--print(p3)
--on calcule le delta (entier) en Wh a aujouter au compteur total
deltaP1 = math.floor(p1/3600*intervalle)
--print(deltaP1)
deltaP2 = math.floor(p2/3600*intervalle)
--print(deltaP2)
deltaP3 = math.floor(p3/3600*intervalle)
--print(deltaP3)
--on incremente les compteurs totaux
totalP1 = deltaP1 + totalP1
totalP2 = deltaP2 + totalP2
totalP3 = deltaP3 + totalP3
--print(totalP1)
--print(totalP2)
--print(totalP3)
--mise a jour variablees locales
commandArray['Variable:totalP1'] = tostring(totalP1)
commandArray['Variable:totalP2'] = tostring(totalP2)
commandArray['Variable:totalP3'] = tostring(totalP3)
commandArray['Variable:lastupdate'] = tostring(update)
--on exporte les donnees P et totalP vers les compteurs virtuels
p1 = tonumber(p1)
totalP1 = tonumber(totalP1)
commandArray[1]={['UpdateDevice']= 50 .. "|0|" .. p1 .. ';' .. totalP1 }
p2 = tonumber(p2)
totalP2 = tonumber(totalP2)
commandArray[2]={['UpdateDevice']= 55 .. "|0|" .. p2 .. ';' .. totalP2 }
p3 = tonumber(p3)
totalP3 = tonumber(totalP3)
commandArray[3]={['UpdateDevice']= 56 .. "|0|" .. p3 .. ';' .. totalP3 }
end
return commandArray
Si vous voyez des améliorations, faites signe.
Re: Compteur virtuel pour CM180i
Publié : 24 janv. 2017, 10:22
par naerleth
Hello !
Moi, ça m’intéresse carrément, j'installe la même chose dans 15 jours
Quelques questions peut-être un peu naïves :
- 50/55/56 ce sont tes IDX ?
- Un p'tit screenshot pour voir le rendu ?
- Le but est d'avoir un compteur par phase, c'est ça ? Tu as une logique derrière pour détecter un déséquilibre dans tes phases ? Ou un délestage par phase ?
- Et donc, ton CM180i permet grâce à l'achat de 2 pinces en plus, de suivre du triphasé, c'est bien ça ? Ce sont ces pinces là ?
https://www.amazon.fr/dp/B003QJTS3W/
Merci

Re: Compteur virtuel pour CM180i
Publié : 24 janv. 2017, 22:47
par matteocfr
Salut,
- 50/55/56 sont bien mes IDX
- voici le rendu
- mon but est "d'isoler" la consommation de différents départs de mon installation électrique. Donc pour affiner encore plus je suis en train de modifier mon script afin de remplir 3 compteurs électriques intelligents virtuels.
- j'ai acheter un module CM180i (reference site web:TSE200-001) et 3 pinces OWL (reference site web:TSE000-001) sur pla****-domo*****.com.
Le site est le 1° lien sur google pour la recherche TSE200-001. Le matériel est reconnu par un RFXcom 433 ou 433E sans problème.
Re: Compteur virtuel pour CM180i
Publié : 24 janv. 2017, 23:15
par aleph0
Bonjour,
Je me suis penché sur ce problème, avec le même matériel. La solution que tu propose à un point faible : elle ignore tout ce qui se passe entre deux réception de l'ampérage. Pour être sûr de ne rien perdre, il ne faut pas lire sur l'ampérage mais sur la puissance consommée. Celle là est mise à jour par l'owl et, si on perds une trame, l'information ratée sera contenue dans la trame suivante.
La difficulté avec le 180i, c'est qu'on ne connaît la puissance consommée que pour le total des 3 phases, on ne l'a pas par phase. On ne peut donc pas avoir 3 compteurs rigoureusement exact, seulement des estimations. Une façon plus fiable de faire ces estimations est de lire la puissance totale et de la répartir ensuite sur les 3 phases selon les proportions lues sur les ampérages par phases... On aura une petite erreur sur les compteurs individuels mais au moins le total des trois sera exact
Ensuite, si on veut pouvoir remonter aux coûts par phases en tenant compte du tarif de nuit, il faut utiliser des P1 Smart counter au lieu des compteurs simples
C'était mes 2 centimes

Re: Compteur virtuel pour CM180i
Publié : 19 oct. 2017, 08:28
par VinceR67
Merci
matteocfr pour ce post, j'ai exactement le même matériel
J'ai tenu compte des remarques de
aleph0, notamment la répartition des 3 phases en fonction de l'ampérage, et je propose le script suivant.
Une différence cependant est que je ne calcule pas l'énergie avec le temps écoulé depuis le dernier script, mais simplement avec la valeur du dernier script, qui nécessite donc une uservariable supplémentaire, soit 4 en tout.
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 = 'Total OWL' -- device name with type 'Energy' and subtype 'CM180'
local ENERGY_VARIABLE = 'OwlEnergy' -- user variable as float
local ENERGY_VARIABLE_1 = 'OwlEnergy1' -- user variable as float
local ENERGY_VARIABLE_2 = 'OwlEnergy2' -- user variable as float
local ENERGY_VARIABLE_3 = 'OwlEnergy3' -- user variable as float
local ELECTRIC_SENSOR_INDEX_1 = 17 -- Maison
local ELECTRIC_SENSOR_INDEX_2 = 16 -- Voiture
local ELECTRIC_SENSOR_INDEX_3 = 15 -- Piscine
-- 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
Re: Compteur virtuel pour CM180i
Publié : 30 déc. 2017, 01:52
par sunix
Bonjour
as tu pu tester ta solution ?
car elle m interesse
merci
Re: Compteur virtuel pour CM180i
Publié : 24 janv. 2018, 17:09
par darkseb28
Bonjour je viens de recevoir le materiel cm180 et la je suis tombé sur votre discutions , mais pour moi vous parler chinois pouvez vous m aidez !
les démarches a suivre détailler pour avoir les 3 consommations séparées.
merci d avance
Re: Compteur virtuel pour CM180i
Publié : 27 janv. 2018, 10:23
par pilou
Bonjour,
Après avoir installé les pinces ampèremétriques et l’émetteur 3 canaux CM180i, tu dois avoir dans Domoticz 2 dispositifs :
- Current/Energy pour le CM180i avec les puissances instantanées des 3 canaux et le total
- Energy pour le CM180 avec la puissance totale des 3 canaux
Sur le CM180i tu as la consommation de chaque canal et du Total (2898 Watt, 0 Watt, 0 Watt, Total : 765.450 Kwh)
Re: Compteur virtuel pour CM180i
Publié : 27 janv. 2018, 10:26
par darkseb28
oui c est bien ca , maintenant j aimerai récupéré la consommation de chaque pince