[LUA] Récupérer sa conso linky avec ecocompteur legrand

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: Récupérer sa conso linky avec ecocompteur legrand

Message par damolc »

Voilà les resultats du script :
Image
Image
dernire-24-heures.jpeg
dernire-24-heures.jpeg (42.62 Kio) Consulté 5677 fois
Image
sur-la-semaine-passe (1).jpeg
sur-la-semaine-passe (1).jpeg (34.76 Kio) Consulté 5677 fois
La seule chose que je n arrive pas a faire c est changer le nom "utilisation 1 et 2 par heure creuse et pleine ; mais je n arrive pas a trouver :oops:
Pièces jointes
Capture.JPG
Capture.JPG (45.04 Kio) Consulté 5677 fois
jojomul1983
Messages : 74
Inscription : 23 févr. 2019, 18:22

Re: Récupérer sa conso linky avec ecocompteur legrand

Message par jojomul1983 »

Bonjour et merci pour ce script.

J'ai une petite erreur:

2019-12-02 10:12:00.434 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_ecoCompteur.lua: /home/pi/domoticz/scripts/lua/script_time_ecoCompteur.lua:50: attempt to concatenate global 'hpidx' (a nil value)
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: Récupérer sa conso linky avec ecocompteur legrand

Message par damolc »

Il faut que le nom des idx soit parfaitement respecté
Je mettrai en ligne mon dernier script qui a changé et aussi pour l eau et le gaz
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: Récupérer sa conso linky avec ecocompteur legrand

Message par damolc »

pour l electricité j ai comme script :

Code : Tout sélectionner

Debug = "NO" -- Turn debugging on ("YES") or off ("NO")

----------------------------------------------
------ Configuration ------
----------------------------------------------

-- domoticz
local url = 'http://192.168.x.xx/data.json' -- url locale de votre écocompteur legrand
htidx = otherdevices_idx['Linky']           -- Idx P1 Compteur intelligent (électrique)
hcidx = otherdevices_idx['HC']              -- Idx Compteur
hpidx = otherdevices_idx['HP']              -- Idx Compteur

local function removeZeros(Id)
while true do
if Id:sub(1,1) == '0' then
Id = Id:sub(2)
else
break
end
end
return Id
end

----------------------------------------------
-- Fin de la partie configuration --
----------------------------------------------

commandArray={}

--import des fontions pour lire le JSON
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- For Linux
--recuperation des mesure HP et HC sur data.json
local config=assert(io.popen("curl '"..url.."'"))
local location = removeZeros(config:read('*all'))
local trouve = string.find(location,'"conso_hp"')
local consoHP = removeZeros(string.sub(location,trouve+14,trouve +23))

local trouve = string.find(location,'"conso_hc"')
local consoHC = removeZeros(string.sub(location,trouve+14,trouve +23))
config:close()

if Debug == "YES" then
print(trouve)
print(location)
print(consoHP)
print(consoHC)
end
--import des valeurs dans les Idx
commandArray[htidx] = { ['UpdateDevice'] = htidx ..'|0|'.. consoHP .. ";" .. consoHC .. ";" .. "0" .. ";" .. "0" .. ";" .. "0" .. ";" .. "0" }
commandArray[hpidx] = { ['UpdateDevice'] = hpidx ..'|0|'.. consoHP }
commandArray[hcidx] = { ['UpdateDevice'] = hcidx ..'|0|'.. consoHC }
 
return commandArray
pour le compteur eau et gaz j ai fait un deuxieme script ne sachant pas les rassembler :

Code : Tout sélectionner

----------------------------------------------
------          Configuration          ------
----------------------------------------------

local url = 'http://192.168.1.46/inst.json'


local C1 = "Eau" 			-- Idx Compteur
local C2 = "Gaz"			-- Idx Compteur
local RAZ = 'RAZ'

----------------------------------------------
--       Fin de la partie configuration       --
----------------------------------------------

commandArray={}
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()

local config=assert(io.popen("curl '"..url.."'"))
local location = config:read('*all')
config:close()
local jsonLocation = json:decode(location)

local data6=jsonLocation.data6      -- eau
local data7=jsonLocation.data7      -- gaz


p1 = string.match(otherdevices_svalues[C1], "(%d+%.*%d*)")
p1 = tonumber(data6)*1000

commandArray[1]={ ['UpdateDevice']= xx .. '|0|' .. p1 }   --n° ou nom de l idx Eau a remplacer
 
p2 = string.match(otherdevices_svalues[C2], "(%d+%.*%d*)")
p2 = tonumber(data7)*1000

commandArray[2]={ ['UpdateDevice']= xy .. '|0|' .. p2 }    --n° ou nom de l idx Gaz a remplacer


return commandArray
si une personne trouve le moyen de les rassembler je suis preneur :D
jojomul1983
Messages : 74
Inscription : 23 févr. 2019, 18:22

Re: Récupérer sa conso linky avec ecocompteur legrand

Message par jojomul1983 »

damolc a écrit : 02 déc. 2019, 14:40 Il faut que le nom des idx soit parfaitement respecté
Je mettrai en ligne mon dernier script qui a changé et aussi pour l eau et le gaz

P....n quel imbécile, je suis.
Encore merci.
Ça marche à merveille.
cocof
Messages : 95
Inscription : 15 sept. 2017, 18:17

Re: Récupérer sa conso linky avec ecocompteur legrand

Message par cocof »

bonjour
j'essaye depuis le début de semaine ce tuto sans succès.
j'ai aussi linky avec mode TIC en standard, connecté à un ecocompteur. La seul différence est que ce linky me sert pour mesure ma production photovoltaïque.

quand j'ouvre le fichier data.json j'ai :

"option_tarifaire" : 4,
"tarif_courant" : 11,
"isousc" : 0,

"conso_base" : 0,
"conso_hc" : 0,
"conso_hp" : 0,
"conso_hc_b" : 0,
"conso_hp_b" : 0,

le champs sonso_base reste à 0 :(
du coup mes compteurs sous domoticz reste à 0...

j'ai essayé en inversant les fils mais c'est pareil :(
il y a une conf de l'écocompteur à faire ?
merci
bonne journée
Raspberry / domoticz / RFXCOM / Conbee II / IPX800v4 / Ecodevice RT2 / enocean / enphase
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: Récupérer sa conso linky avec ecocompteur legrand

Message par damolc »

Bonjour
Moi il est branché directement
Problème un mauvais réglage Linky
Il faut qu il puisse transmettre des données
Mode historique je crois
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: Récupérer sa conso linky avec ecocompteur legrand

Message par damolc »

j ai une question :
je souhaiterai récupérer la consommation en Watt instantanée pour qui s affiche dans les mesure (P1 smart meter)
je récupère l deux valeurs de consommation globale HC et HP en KWh
Voila mon script :

Code : Tout sélectionner

Debug = "NO" -- Turn debugging on ("YES") or off ("NO")

----------------------------------------------
------ Configuration ------
----------------------------------------------

-- domoticz
local url = 'http://192.168.1.46/data.json' -- url locale de votre écocompteur legrand
htidx = otherdevices_idx['Linky']           -- Idx P1 Compteur intellogent (électrique)
hcidx = otherdevices_idx['HeureCreuse']              -- Idx Compteur
hpidx = otherdevices_idx['HeurePleine']              -- Idx Compteur

local function removeZeros(Id)
while true do
if Id:sub(1,1) == '0' then
Id = Id:sub(2)
else
break
end
end
return Id
end

----------------------------------------------
-- Fin de la partie configuration --
----------------------------------------------

commandArray={}

--import des fontions pour lire le JSON
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- For Linux
--recuperation des mesure HP et HC sur data.json
local config=assert(io.popen("curl '"..url.."'"))
local location = removeZeros(config:read('*all'))
local trouve = string.find(location,'"conso_hp"')
local consoHP = removeZeros(string.sub(location,trouve+15,trouve +23))

local trouve = string.find(location,'"conso_hc"')
local consoHC = removeZeros(string.sub(location,trouve+15,trouve +23))
config:close()

if Debug == "YES" then
print(trouve)
print(location)
print(consoHP)
print(consoHC)
end
--import des valeurs dans les Idx
commandArray[htidx] = { ['UpdateDevice'] = htidx ..'|0|'.. consoHP .. ";" .. consoHC.. ";" .. "0" .. ";" .. "0" .. ";" .. "0" .. ";" .. "0" }

commandArray[hpidx] = { ['UpdateDevice'] = hpidx ..'|0|'.. consoHP }
commandArray[hcidx] = { ['UpdateDevice'] = hcidx ..'|0|'.. consoHC }
 
return commandArray
comment calculer la consommation instantanée en Watt pour pouvoir la mettre dans :
commandArray[htidx] = { ['UpdateDevice'] = htidx ..'|0|'.. consoHP .. ";" .. consoHC.. ";" .. "0" .. ";" .. "0" .. ";" .. ?? .. ";" .. "0" }
Merci par avance
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: Récupérer sa conso linky avec ecocompteur legrand

Message par damolc »

Peut-être y a t il un calcul a faire ou un commande en Lua?
Répondre