Page 3 sur 4

Re: consommation EDF

Publié : 13 sept. 2015, 23:24
par jacques68
Pour l'instant le script ne donne rien, aucun envoi de mail. J'ai créé 2 capteurs text pour HP et Hc et idem ils ne se remplissent pas.;; :o
Mais je cherche je cherche je vais finir par trouver!! :D

Re: consommation EDF

Publié : 14 sept. 2015, 08:28
par vil1driver
Les variables utilisateur se remplissent ? pas de mail tant que les 2 valeurs à envoyer ne sont pas calculées !

elles sont expliquées dans le script, il est simple de savoir ce qu'elles doivent contenir et quand elle doivent être renseignée..

pour tes capteurs texte, quel script utilises tu ???

celui posté ici ?
viewtopic.php?p=6101#p6101

avec la modif du premier script postée ici ?
viewtopic.php?p=6229#p6229

si tu dis juste que ça ne marche pas, on va pas y arriver..

Re: consommation EDF

Publié : 14 sept. 2015, 11:44
par jacques68
Toutes les variables utilisateurs sont bien renseignés.
J'ai testé les 2 scripts et pour l'instant j'ai celui-ci en place:viewtopic.php?p=6229#p6229

Pour moi je pense que ça coince au niveau des deux capteurs textes qui ne sont pas renseignés: il n'est qu'indiqué dedans: Usage1;Usage2;Return1;Return2;Cons;Prod
J'ai zappé à quelque part le renseignement de ces capteurs, une histoire idx peut etre

Re: consommation EDF

Publié : 18 sept. 2015, 18:38
par MAidEN91
Salut,

Je reprends le sujet ici car j'ai toujours un problème avec ces scripts et mes variables.

En fait je n'en ai que deux qui se mettent a jour ci dessous en rouge :

11 THP Chaîne 147267726 2015-09-18 18:35:00
10 HPC Chaîne 5 2015-09-09 01:23:31
9 HCT Chaîne 6.3391 2015-09-09 23:12:31
8 HC1 Chaîne 87222150 2015-09-08 22:38:00
7 THC Chaîne 87302827 2015-09-18 18:35:00
6 HPT Chaîne 6.623 2015-09-09 02:22:26
5 HP1 Chaîne 147167645 2015-09-08 06:39:00

Au niveau des rendus par rapport a ma télé info j'ai ceci :

Code : Tout sélectionner

{
   "ActTime" : 1442591432,
   "ServerTime" : "Sep 18 2015 17:50:32",
   "Sunrise" : "07:33",
   "Sunset" : "19:57",
   "result" : [
      {
         "BatteryLevel" : 255,
         "Counter" : "234570.172",
         "CounterDeliv" : "0.000",
         "CounterDelivToday" : "0.000 kWh",
         "CounterToday" : "14.577 kWh",
         "CustomImage" : 0,
         "Data" : "147267352;87302827;0;0;636;0",
         "Description" : "",
         "Favorite" : 1,
         "HardwareID" : 7,
         "HardwareName" : "EDF Compteur",
         "HaveTimeout" : false,
         "ID" : "1",
         "LastUpdate" : "2015-09-18 17:50:20",
         "Name" : "Compteur EDF",
         "Notifications" : "false",
         "PlanID" : "0",
         "Protected" : false,
         "ShowNotifications" : true,
         "SignalLevel" : 12,
         "SubType" : "Energy",
         "SwitchTypeVal" : 0,
         "Timers" : "false",
         "Type" : "P1 Smart Meter",
         "TypeImg" : "counter",
         "Unit" : 1,
         "Usage" : "636 Watt",
         "UsageDeliv" : "0 Watt",
         "Used" : 1,
         "XOffset" : "0",
         "YOffset" : "0",
         "idx" : "70"
      }
   ],
   "status" : "OK",
   "title" : "Devices"
}
J'utilise les scripts de Vil1 que j'ai simplement adapté avec mes IDX.
Du coup mes compteurs texte avec la valeur en € ne fonctionnent pas.
Idem avec le compteur global que j'ai voulu ajouté dans ton script :

Code : Tout sélectionner

commandArray['OpenURL']='192.168.0.248/json.htm?type=command&param=udevice&idx=' .. tariftotal .. '&nvalue=0&svalue='..tonumber((uservariables[consoJour] * tarifJour) + (uservariables[consoNuit] * tarifNuit)
end
J'ai un retour erreur :

Code : Tout sélectionner

lua: script_variable_tarif.lua:30: ')' expected (to close '(' at line 29) near 'end'
Je vois pas trop d'ou peu provenir le problème !

Merci pour votre aide !

Re: consommation EDF

Publié : 18 sept. 2015, 18:59
par vil1driver
Ca ne te choque pas la valeur 5 pour HPC ?

Dans le script j'indique que cette variable doit contenir P ou C.
J'indique le rôle de chaque variable...
Il est facile de savoir ce qu'elles doivent contenir et à quelle heure elle doivent êtres modifiées..

Le script que j'ai posté fonctionne comme il se doit..

Pour le calcule en euro dans un capteur texte, ça fonctionne également avec les modifs indiquées..

Aucun problème ici.

Si vous voulez que je vous dise si vous avez correctement appliqué les modif, postez au moins vos scripts..

Re: consommation EDF

Publié : 18 sept. 2015, 19:11
par MAidEN91
J'ai shooté les variables et j'ai ces 3 la qui se sont update :

18 THP Chaîne 147268056 2015-09-18 19:08:00
17 HPC Chaîne P 2015-09-18 18:48:00
16 THC Chaîne 87302827 2015-09-18 19:08:00

Du coup j'ai a nouveau bien le P pour HPC en effet je n'avais pas vérifié ceci méa culpa :roll:

En attendant un passage HP/HC pour voir si les autres sont ok voici mes 2 scripts :

-- script_time_edf-Mail.lua

Code : Tout sélectionner

-- script_time_edf-Mail.lua
--
-- ce script permet de recevoir par mail le cumule de la consomation électrique de la journée et celle de la nuit
--
-- le script se base sur cette ligne de données "Data" : "17564639;9855288;0;0;485;0"
-- le premier et deuxième nombre correspondent au total HP et HC affiché sur mon compteur EDF
-- dès qu'un des 2 n'évolue plus, le script détermine que l'on vient de passer des heures pleines aux heures creuses ou inversement.
-- et du coups mémorises les valeurs,
-- il fait cela à chaque changement de cycle et calcul la différence entre les valeurs de début et fin de cycle et les mémorise
-- à l'heure choisie ces valeurs sont envoyées par mail.
--
------------------------------------------------------------------------------------------------
--
--                          partie à éditer
--
------------------------------------------------------------------------------------------------


local compteur = 'Compteur EDF'     -- nom du compteur de consomation électrique
local quand = '18:55'               -- heure à laquelle l'on souhaite recevoir le mail (format hh:mm)
local url = '192.168.0.248'         -- user:pass@ip:port de domoticz, pour la création des variables
local mail = 'xxxx@gmail.com'   -- adresse mail pour réception conso
local titre = 'recap conso'         -- titre du mail   


------------------------------------------------------------------------------------------------
--
--                         Fin de la partie à éditer
--
------------------------------------------------------------------------------------------------

local n=0
time = os.date("*t")

commandArray = {}

-- création des variables utilisateur
-- THP   -> total HP pour détection cycle
-- HP1    -> sauvegarde total HP en début de cycle
-- HPT   -> THP(fin de cycle) - HP1
-- THC   -> total HC pour détection cycle
-- HC1    -> sauvegarde total HC en début de cycle
-- HCT   -> THC(fin de cycle) - HC1
-- HPC   -> prends les valeurs 'P' ou 'C' suivant si nous somme en heures pleines(P) ou creuses(C)

if(uservariables['THP'] == nil) then
   commandArray[n]={['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname=THP&vtype=2&vvalue=%23N%2FA'}
   n=n+1
end
if(uservariables['HP1'] == nil) then
   commandArray[n]={['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname=HP1&vtype=2&vvalue=%23N%2FA'}
   n=n+1
end         
if(uservariables['HPT'] == nil) then
   commandArray[n]={['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname=HPT&vtype=2&vvalue=%23N%2FA'}
   n=n+1
end
if(uservariables['THC'] == nil) then
   commandArray[n]={['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname=THC&vtype=2&vvalue=%23N%2FA'}
   n=n+1
end         
if(uservariables['HC1'] == nil) then
   commandArray[n]={['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname=HC1&vtype=2&vvalue=%23N%2FA'}
   n=n+1
end         
if(uservariables['HCT'] == nil) then
   commandArray[n]={['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname=HCT&vtype=2&vvalue=%23N%2FA'}
   n=n+1
end   
if(uservariables['HPC'] == nil) then
   commandArray[n]={['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname=HPC&vtype=2&vvalue=%23N%2FA'}
end
if   uservariables['THP'] == nil or
   uservariables['HP1'] == nil or
   uservariables['HPT'] == nil or
   uservariables['THC'] == nil or
   uservariables['HC1'] == nil or
   uservariables['HCT'] == nil or
   uservariables['HPC'] == nil then
      print('edf-Mail : script interrompu pour création variable(s) manquante(s)')
      return commandArray
end   

-- extraction des valeurs du compteur, (P1 smart meter, ex: "Data" : "17564059;9855288;0;0;517;0")
THP, THC, x, y, usage, z = string.match(otherdevices_svalues[compteur], "(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*)")
-- sauvegarde total HP/HC pour comparaison future (détection fin de cycle)
commandArray[1]={['Variable:THP'] = THP}
commandArray[2]={['Variable:THC'] = THC}

-- détection du passage en heures creuses
if (uservariables['THP'] == THP and (uservariables['HPC'] == 'P' or  uservariables['HPC'] == '#N/A')) then
   -- mémorisation de cycle
   commandArray[3]={['Variable:HPC'] = 'C'}
   if uservariables['HPC'] == 'P' then
      -- calcule et mémorisation du total cycle HP
      if uservariables['HP1'] ~= '#N/A' then
         commandArray[4]={['Variable:HPT'] = tostring(tonumber((THP - uservariables['HP1']) / 1000))}
      end   
      -- sauvegarde total heures creuses début de cycle
      commandArray[5]={['Variable:HC1'] = THC}
      print('edf-Mail : passage en heures creuses')
   end   
end

-- détection du passage en heures pleines
if (uservariables['THC'] == THC and (uservariables['HPC'] == 'C' or  uservariables['HPC'] == '#N/A')) then
   -- mémorisation de cycle
   commandArray[3]={['Variable:HPC'] = 'P'}
   if uservariables['HPC'] == 'C' then
      -- calcule et mémorisation du total cycle HC
      if uservariables['HC1'] ~= '#N/A' then
         commandArray[4]={['Variable:HCT'] = tostring(tonumber((THC - uservariables['HC1']) / 1000))}
      end   
      -- sauvegarde total heures pleines début de cycle
      commandArray[5]={['Variable:HP1'] = THP}
      print('edf-Mail : passage en heures pleines')
   end   
end

-- on compare l'heure actuelle avec celle programmée
if (time.hour == tonumber(string.sub(quand, 1, 2)) and time.min == tonumber(string.sub(quand, 4, 5))) then
   -- si les données sont suffisantes
  if uservariables['HPT'] ~= '#N/A' and uservariables['HCT'] ~= '#N/A' then
    print('edf-Mail : il est '..quand..', envoie du mail')
      -- mise en forme message
     local desc = 'Consomation totale HP: '..uservariables['HPT']..' Kwh \r\n Consomation totale HC: '..uservariables['HCT']..' Kwh'
      -- envoie du mail
     commandArray['SendEmail']=titre..'#'..desc..'#'..mail
  end   
end

-- script_variable_tarif.lua

Code : Tout sélectionner

-- script_variable_tarif.lua
-- 
-- ce script récupère les valeurs de variables contenant les conso jour et nuit de la veille
-- fait le calcul suivant le tarif du kwh correspondant 
-- et renseigne des capteurs text
--
------------------------------------------------------------------------------------------------
--
--                          partie à éditer
--
------------------------------------------------------------------------------------------------


local consoJour = 'HPT'     -- nom de la variable contenant la conso du jour en kwh
local consoNuit = 'HCT'     -- nom de la variable contenant la conso de la nuit en kwh
local jour = 148            -- idx du capteur text contenant le tarif de la conso du jour
local nuit = 149            -- idx du capteur text contenant le tarif de la conso de la nuit
local tariftotal = 150		-- idx du capteur text contenant le tarif total de la conso jour+nuit
local tarifJour = 0.1571    -- prix du kwh de jour
local tarifNuit = 0.1096    -- prix du kwh de nuit

------------------------------------------------------------------------------------------------
--
--                         Fin de la partie à éditer
--
------------------------------------------------------------------------------------------------

commandArray = {}

commandArray['OpenURL']='192.168.0.248/json.htm?type=command&param=udevice&idx=' .. tariftotal .. '&nvalue=0&svalue='..tonumber((uservariables[consoJour] * tarifJour) + (uservariables[consoNuit] * tarifNuit)
end

if uservariablechanged[consoJour] then
commandArray['OpenURL']='192.168.0.248/json.htm?type=command&param=udevice&idx=' .. jour .. '&nvalue=0&svalue='..tonumber(uservariables[consoJour] * tarifJour)
end

if uservariablechanged[consoNuit] then
commandArray['OpenURL']='192.168.0.248/json.htm?type=command&param=udevice&idx=' .. nuit .. '&nvalue=0&svalue='..tonumber(uservariables[consoNuit] * tarifNuit)
end

return commandArray

Re: consommation EDF

Publié : 18 sept. 2015, 19:17
par vil1driver
Ton script script_time_edf-Mail.lua
Est celui de ce topic ? Je ne vois pas la modif pour que le script_variable puisse fonctionner..

Re: consommation EDF

Publié : 18 sept. 2015, 20:23
par MAidEN91
C'est le script du topic et j'ai juste éditer les 5 variables au départ (j'ai juste masqué mon mail volontairement) mais sinon les autres variables sont bonnes non?

Re: consommation EDF

Publié : 18 sept. 2015, 22:51
par vil1driver
Si tu as juste modifié les variables de la partie à modifier tout doit fonctionner.

Mais pour que l'autre script fonctionne il faut modifier le premier comme je te l'ai expliqué.

Re: consommation EDF

Publié : 22 sept. 2015, 13:21
par MAidEN91
C'est ok le script fonctionne les variables se mettent a jour et je reçois bien le mail. Je pense que j'avais un bug suite a une edition directe du script via winscp au lieu de le faire via putty en ssh... Le contenu du fichier était bon mais il se passait rien ! :roll:

Par contre le script variable pour mettre a jour le tarif sur les compteurs text ne fonctionne pas lui je pige pas pourquoi. Il est censé s'executer dès qu'une variable se met a jour? Quand je mets a jour les compteurs text a la main avec une valeur bidon via une url json la ca fonctionne bien. Je pense que c'est un problème lié au lancement du script du coup, il est bien nommé comme a l'origine j'ai juste mis a jour mes 2 idx dedans et l'ip de mon domoticz.