Ecodevices GCE : lecture Base index

Forum pour tous les autres objets : sondes météo, capteurs, actionneurs ...
Vous avez un besoin mais vous ne savez pas quel matériel choisir ? C'est ici.
McSoda
Messages : 11
Inscription : 29 déc. 2015, 22:17

Re: Ecodevices GCE : lecture Base index

Message par McSoda »

Bien vu pour les corrections ;-). J'ai voulu aller trop vite.
McSoda
Domoticz running on Synology 212j (main), Raspberry Pi B rev2 (remote)
Modules : z-wave, x10, teleinfo, EcoDevices, RFXtrx433e, karotz
IFFICSAN
Messages : 15
Inscription : 22 mai 2016, 18:10

Re: Ecodevices GCE : lecture Base index

Message par IFFICSAN »

A la place de "compteur", j'ai utilisé "Electrique (Instant + compteur)" comme virtual sensor
J'ai même réussi à supprimer les valeurs aberrantes des graphiques en utilisant Shift & "clic droit de la souris" directement sur les points concernés des graphiques.

Bonne fin de WE .
McSoda
Messages : 11
Inscription : 29 déc. 2015, 22:17

Re: Ecodevices GCE : lecture Base index

Message par McSoda »

Oui, c'est mieux avec "Electrique (Instant + compteur)" (je suis toujours en mode découverte avec Domoticz ;-) ). Merci de la découverte.

Par contre, absolument éviter le dispositif P1 Compteur intelligent (électrique). Cela plante Domoticz et il faut restaurer la base de données (je viens de l'expérimenter :-/ )
McSoda
Domoticz running on Synology 212j (main), Raspberry Pi B rev2 (remote)
Modules : z-wave, x10, teleinfo, EcoDevices, RFXtrx433e, karotz
IFFICSAN
Messages : 15
Inscription : 22 mai 2016, 18:10

Re: Ecodevices GCE : lecture Base index

Message par IFFICSAN »

Je pense que "P1 Compteur intelligent (électrique)" ou "P1 Smart Meter Electric" ne fonctionne qu'avec l'Ecodevices (hardware Ecodevices par Lan) en mode HP/HC.
Je me contenterai donc du mode Base qui fonctionne maintenant, sans tenter le diable :mrgreen:
Merci de l'info.
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: Ecodevices GCE : lecture Base index

Message par damolc »

Bonjour
je suis debutant et ne comprend pas ou mettre les IDX

j ai fait :
local T1_id = 0
local T2_id = 0
local C1_id = 488
local Mul_C1 = 487
local C2_id = 0
local Mul_C2 = 1000

pensez vous que c est comme ca qu il faut faire?
merci
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: Ecodevices GCE : lecture Base index

Message par damolc »

en faite j ai trouvé :
premier script : script_time_EcoDevices.lua :

Code : Tout sélectionner

-- EcoDevices
-- == CONFIGURATION =========================================================================
-- Mettre ici l'adresse de l' Eco Devices
local ECO_DEVICES = '192.168.1.10'
-- Mettre ici les index correspondant aux différents capteurs virtuels Domoticz. On les trouve
-- dans la colonne Idx de la page Réglages / Dispositifs (0 : pas utilisé)
local T1_id = 0
local T2_id = 0
local C1_id = 487
local Mul_C1 = 0.1
local C2_id = 0
local Mul_C2 = 100  -- L'Eco Devices renvoie des ml en decimales, mais le compteur Domoticz n'affiche
                     -- que des entiers
-- == FIN CONFIGURATION =====================================================================

-- ------------------------------------------------------------------------------------------
-- Fonction pour extraire la sortie console d'une commande
--
function os.capture(cmd, raw)
    local handle = assert(io.popen(cmd, 'r'))
    local output = assert(handle:read('*a'))

    handle:close()

    if raw then
        return output
    end

    output = string.gsub(
        string.gsub(
            string.gsub(output, '^%s+', ''),
            '%s+$',
            ''
        ),
        '[\n\r]+',
        ' '
    )

   return output
end

-- ------------------------------------------------------------------------------------------
-- Fonction pour mettre à jour les consommations
--
local function update(commandArray, id, power, energy, type)
   if (type < 2) then
      table.insert(commandArray, {['UpdateDevice'] = id .. "|0|" .. power .. ";" .. energy})
   else
      table.insert(commandArray, {['UpdateDevice'] = id .. "|0|" .. energy})
   end
   return
end

-- ------------------------------------------------------------------------------------------
-- ------------------------------------------------------------------------------------------

-- Chargement du decodeur JSON
json = (loadfile "/home/pi/domoticz/scripts/lua/json.lua")()

commandArray = {}

-- Path to curl
local curl = '/usr/bin/curl'
-- url à joindre
local url = ' http://' .. ECO_DEVICES .. '/api/xdevices.json?cmd=10/'
local url = ' http://' .. ECO_DEVICES .. '/api/xdevices.json?cmd=20/'

local retour = os.capture(curl .. url, true);
-- print('capture ' .. retour)

local jsonData = json:decode(retour)

if (T1_id ~= 0) then
  update(commandArray, T1_id, tonumber(jsonData.T1_PAPP), tonumber(jsonData.T1_BASE), 1)
  end
if (T2_id ~= 0) then
  update(commandArray, T2_id, tonumber(jsonData.T2_PAPP), tonumber(jsonData.T2_BASE), 1)
  end
if (C1_id ~= 0) then
  update(commandArray, C1_id, 0, tonumber(jsonData.INDEX_C1) * Mul_C1, 2)
  end
if (C2_id ~= 0) then
  update(commandArray, C2_id, 0, tonumber(jsonData.Day_C1) * Mul_C2, 2)
  end

return commandArray
deuxieme script pour la consomation d eau journalier : script_time_EcoDevices1.lua

Code : Tout sélectionner

-- EcoDevices
-- == CONFIGURATION =========================================================================
-- Mettre ici l'adresse de l' Eco Devices
local ECO_DEVICES = '192.168.1.10'
-- Mettre ici les index correspondant aux différents capteurs virtuels Domoticz. On les trouve
-- dans la colonne Idx de la page Réglages / Dispositifs (0 : pas utilisé)
local T1_id = 0
local T2_id = 0
local C1_id = 0
local Mul_C1 = 1
local C2_id = 488
local Mul_C2 = 100  -- L'Eco Devices renvoie des ml en decimales, mais le compteur Domoticz n'affiche
                     -- que des entiers
-- == FIN CONFIGURATION =====================================================================

-- ------------------------------------------------------------------------------------------
-- Fonction pour extraire la sortie console d'une commande
--
function os.capture(cmd, raw)
    local handle = assert(io.popen(cmd, 'r'))
    local output = assert(handle:read('*a'))

    handle:close()

    if raw then
        return output
    end

    output = string.gsub(
        string.gsub(
            string.gsub(output, '^%s+', ''),
            '%s+$',
            ''
        ),
        '[\n\r]+',
        ' '
    )

   return output
end

-- ------------------------------------------------------------------------------------------
-- Fonction pour mettre à jour les consommations
--
local function update(commandArray, id, power, energy, type)
   if (type < 2) then
      table.insert(commandArray, {['UpdateDevice'] = id .. "|0|" .. power .. ";" .. energy})
   else
      table.insert(commandArray, {['UpdateDevice'] = id .. "|0|" .. energy})
   end
   return
end

-- ------------------------------------------------------------------------------------------
-- ------------------------------------------------------------------------------------------

-- Chargement du decodeur JSON
json = (loadfile "/home/pi/domoticz/scripts/lua/json.lua")()

commandArray = {}

-- Path to curl
local curl = '/usr/bin/curl'
-- url à joindre
local url = ' http://' .. ECO_DEVICES .. '/api/xdevices.json?cmd=20/'

local retour = os.capture(curl .. url, true);
-- print('capture ' .. retour)

local jsonData = json:decode(retour)

if (T1_id ~= 0) then
  update(commandArray, T1_id, tonumber(jsonData.T1_PAPP), tonumber(jsonData.T1_BASE), 1)
  end
if (T2_id ~= 0) then
  update(commandArray, T2_id, tonumber(jsonData.T2_PAPP), tonumber(jsonData.T2_BASE), 1)
  end
if (C1_id ~= 0) then
  update(commandArray, C1_id, 0, tonumber(jsonData.INDEX_C1) * Mul_C1, 2)
  end
if (C2_id ~= 0) then
  update(commandArray, C2_id, 0, tonumber(jsonData.Day_C1) * Mul_C2, 2)
  end

return commandArray
il faudrait juste en faire qu un mais bon
Apres j ai créé des Dummy avec compteur incrementiel d eau pour un et compteur "counter" pour l autre
Pièces jointes
Capture1.PNG
Capture1.PNG (12.72 Kio) Consulté 6530 fois
Capture.PNG
Capture.PNG (14.27 Kio) Consulté 6530 fois
Répondre