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.
IFFICSAN
Messages : 15
Inscription : 22 mai 2016, 18:10

Ecodevices GCE : lecture Base index

Message par IFFICSAN »

Bonjour à tous,

ayant eu du mal à lire les données de mon EcoDevice, mon compteur EDF étant en mode Base et non en mode HP/HC
viewtopic.php?f=7&t=484&start=10
j'ouvre ce nouveau post car Domoticz ne sais pas lire les valeurs en "Base index" .

Le problème est connu, mais n'a semble t'il pas été solutionné :
https://github.com/domoticz/domoticz/issues/576

Quelqu'un a t'il une solution, facilement adaptable car je suis nul question programmation ?
Domoticz est installé sur un NAS Synology.

Merci d'avance.
McSoda
Messages : 11
Inscription : 29 déc. 2015, 22:17

Re: Ecodevices GCE : lecture Base index

Message par McSoda »

Bonjour,

Comme le pilote EcoDevices de Domoticz ne gère pas le tarif de base, j'utilise un script LUA et des matériel / dispositifs virtuels pour suivre ma consommation électrique et fuel.

Si vous savez comment placer des scripts dans votre Synology (il y a un tutorial en anglais ici https://www.domoticz.com/forum/viewtopic.php?t=9921), je peux vous expliquer mes scripts,

Cordialement
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 »

Bonjour,

merci de la proposition. je suis évidemment preneur.
J'attends les scripts avec une impatience non dissimulée. :P
McSoda
Messages : 11
Inscription : 29 déc. 2015, 22:17

Re: Ecodevices GCE : lecture Base index

Message par McSoda »

Très bien :-) Un peu de temps pour les mettre en forme et les rendre présentables,et je les poste.
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 »

Bonjour,
pas de problème pour l'attente :D . Je sais que ce n'est pas si simple que cela les mises en forme. Tous mes remerciements pour le temps passé.
Vu le nombre de consultations, je pense que cela sera apprécié.
De mon côté, j'apprends à utiliser Lua. J'arrive déjà à écrire dans les logs de Domoticz, ce qui est pour moi une belle avancée. :lol:

A te lire :ugeek:
McSoda
Messages : 11
Inscription : 29 déc. 2015, 22:17

Re: Ecodevices GCE : lecture Base index

Message par McSoda »

Les scripts sont à placer dans le répertoire de scripts:
[*] /home/pi/domoticz/scripts/lua sur mon RaspBerry,
[*] /volume1/@appstore/domoticz/var/scripts/lua sur mon Synology

Il faut tout d'abord télécharger un traducteur json que l'on trouve à l'adresse : http://regex.info/blog/lua/json
et le placer dans le répertoire de scripts.

Et ci-dessous le code de mon script script_time_EcoDevices.lua. Il est très basique. J'ai essayé de concentrer la partie configurayion en haut du script.
Il faut obligatoirement indiquer l'adresse IP de l' Eco Devices, ainsi que les index des dispositifs virtuels.
Comme c'est un script 'Time', il est lancé toutes les minute environ.

Cette première version est plutôt simpliste, mais je compte l'améliorer quand j'aurai un peu progressé dans ma connaissance des
dispositifs Domoticz.

Code : Tout sélectionner

-- EcoDevices
-- == CONFIGURATION =========================================================================
-- Mettre ici l'adresse de l' Eco Devices
local ECO_DEVICES = 'xxx.xxx.xxx.xxx'
-- 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 = 0
local Mul_C2 = 1000  -- 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 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, T1_id, tonumber(jsonData.T2_PAPP), tonumber(jsonData.T2_BASE), 1)
end
if (C1_id ~= 0) then
  update(commandArray, C2_id, 0, tonumber(jsonData.INDEX_C1) * Mul_C1, 2)
end
if (C2_id ~= 0) then
  update(commandArray, C2_id, 0, tonumber(jsonData.INDEX_C2) * Mul_C2, 2)
end

return commandArray
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 »

Merci.
Je m'y mets et reviendrai prochainement.
IFFICSAN
Messages : 15
Inscription : 22 mai 2016, 18:10

Re: Ecodevices GCE : lecture Base index

Message par IFFICSAN »

Bonjour,

J'arrive à acquérir les infos (je debug avec des print bien placés). J'obtiens par exemple dans les logs:
LUA: jsonData.T1_PAPP 0
LUA: jsonData.T1_BASE 2294663
LUA: jsonData.T2_PAPP 530
LUA: jsonData.T2_BASE 22524097
mais dès que je crée des devices, je plante Domoticz. Je pense que les bases sont mauvaises.

D'où ces questions de base:
comment sont créés les virtual devices? A partir du hardware "Ecodevice par lan" ou directement par "Dummy" ou autre?
Utilisation de "P1 smart meter" ou autre?
Quels sont les noms à utiliser? Y a t'il une casse à respecter?

Est il possible d'avoir une capture d'écran de la page hardware et de celle des devices? Plus parlant qu'un long discours.

Merci d'avance.
McSoda
Messages : 11
Inscription : 29 déc. 2015, 22:17

Re: Ecodevices GCE : lecture Base index

Message par McSoda »

Dans la page Matériel, il faut créer un matériel de type 'Dummy':
Créer un capteur virtuel
Créer un capteur virtuel
snip_20160917230449.png (7.8 Kio) Consulté 10894 fois
puis en cliquant sur le bouton Créer capteurs virtuels :
Matériel 'Dummy' et bouton 'Créer capteurs virtuels'
Matériel 'Dummy' et bouton 'Créer capteurs virtuels'
snip_20160917230237.png (10.34 Kio) Consulté 10894 fois
ajouter des capteurs de type 'Compteur':
Créer un matériel 'Dummy'
Créer un matériel 'Dummy'
snip_20160917230416.png (25.75 Kio) Consulté 10894 fois
On voit ensuite ces capteurs dans la page Dispositifs
Liste des dispositifs
Liste des dispositifs
snip_20160917230818.png (27.16 Kio) Consulté 10894 fois
Dans l'onglet Mesure,en cliquant sur le bouton Editer
Dispositifs dans l'onglet 'Mesure'
Dispositifs dans l'onglet 'Mesure'
snip_20160917231039.png (23.49 Kio) Consulté 10894 fois
on peut adapter les caractéristiques des capteurs :
Editer un capteur
Editer un capteur
snip_20160917231252.png (13.17 Kio) Consulté 10894 fois
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 »

Bonjour,

merci de cette précision. Cela m'a fait bien avancer. Pour avoir un bon fonctionnement, j'ai du rebooter mon NAS et réinstaller Domoticz: il m'était impossible de créer plus d'un dispositif à partir d'un dummy. C'était une des causes de mon incompréhension et des plantages de Domoticz. :roll:
Maintenant c'est ok.

J'ai modifié les lignes

Code : Tout sélectionner

if (T2_id ~= 0) then
  update(commandArray, T1_id, tonumber(jsonData.T2_PAPP), tonumber(jsonData.T2_BASE), 1)
end
par

Code : Tout sélectionner

if (T2_id ~= 0) then
	update(commandArray, T2_id, tonumber(jsonData.T2_PAPP), tonumber(jsonData.T2_BASE), 1)
	end
et

Code : Tout sélectionner

if (C1_id ~= 0) then
  update(commandArray, C2_id, 0, tonumber(jsonData.INDEX_C1) * Mul_C1, 2)
end
par

Code : Tout sélectionner

	if (C1_id ~= 0) then
	update(commandArray, C1_id, 0, tonumber(jsonData.INDEX_C1) * Mul_C1, 2)
	end
J'ai maintenant mes valeurs qui s'affichent dans les graphiques. J'ai juste à trouver comment supprimer la première valeur qui est celle du compteur total.

Encore merci pour tout de ma part et de celle de la communauté. :P :lol: 8-)
Répondre