[LUA] Repartition Consommation HC / HP...

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.
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: Repartition Consommation HC / HP...

Message par rimram31 »

jec_44 a écrit :...L'info est dispo dans
http://192.168.0.xx:xxx/protect/settings/teleinfo1.xml dans le segment <T1_PTEC>HP</T1_PTEC>.

Comment le récupérer dans un script LUA ? ...
Si tu es sur Linux (de l'intérêt de renseigner ta signature ;) ) et si tu es a l'aise avec les scripts shell, le principe est d'appeler de LUA un script shell via os.execute, script qui va lui appeler ton url avec curl par exemple. Dans ton cas le retour est du XML, il existe des outils pour le décoder comme xmllint ou moins strict mais peu marcher une simple commande grep.

L'idéal a mon avis est d'avoir un script périodique qui vient renseigner un switch virtuel puis d'utiliser ensuite la valeur de ce switch virtuel dans les autres scripts LUA. J'ai un abonnement HC/HP sur créneau horaire, j'ai un switch virtuel HC on/off (par planning pour moi) que j'utilise dans mes scripts de calculs de consommation pour alimenter deux compteurs HP et HC.
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
jec_44
Messages : 16
Inscription : 09 déc. 2015, 11:29

Re: Repartition Consommation HC / HP...

Message par jec_44 »

Merci pour ta réponse et de ton conseil, j'ai mis à jour ma signature ! En fait je cherche a ne faire que du LUA. J'ai déjà d'autres scripts qui decode du XML, et du coup comme le script de Conso est un LUA, je voulais trouver le moyen de l'améliorer. Pourquoi !? Le passage HC / HP se fait par un blocky avec les heures en dur pour passer HC / HP. J'ai en ce moment quelques plantage de mon Raspberry. Si il plante pendant la nuit il est donc en HC. Quand je le redémarre dans la matinée, il prends le dernier état du device donc HC ! Donc si je ne change pas manuellement, il reste en HC toute la journée !
En m'appuyant sur l'état de l'ecodevice, plus de problème ! Alors j'ai trouvé cela, peut etre pas optimisé, mais ca fonctionne !

Code : Tout sélectionner

commandArray = {}

os.execute('wget http://192.168.0.75:83/protect/settings/teleinfo1.xml -O /tmp/teleinfo1.xml')

local filename = "/tmp/teleinfo1.xml"

for line in io.lines(filename) do
   if string.find(line,"<T1_PTEC>HC</T1_PTEC>") then
	  datacompteur="HC"
	  if (otherdevices[flagHC] == 'Off') then
	  	  commandArray[flagHP]='Off'
		  commandArray[flagHC]='On'
		  print('[ECODEVICE] Changement en HC')
		  else
		  print('[ECODEVICE] HC déjà activé')
		  end
  end
  if string.find(line,"<T1_PTEC>HP</T1_PTEC>") then
	  datacompteur="HP"
	 if (otherdevices[flagHP] == 'Off') then
	  	  commandArray[flagHC]='Off'
		  commandArray[flagHP]='On'
		  print('[ECODEVICE] Changement en HP')
		  else
		  print('[ECODEVICE] HP déjà activé')
		  end
  end
end
print('[ECODEVICE] -- Compteur HC / HP --')
print('[ECODEVICE] Etat Actuel = '..datacompteur)
return commandArray
Raspberry PI / Domoticz version stable / Sondes Oregon / Freebox / Harmony Companion / Synology DS215J / Fibaro / Dlink / Di-o / Philips Hue
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: Repartition Consommation HC / HP...

Message par rimram31 »

Même principe LUA appelle un shell qui fait l'appel (os.execute -> wget) ton script fait le décodage en LUA. On doit pouvoir éviter le fichier tmp en utilisant io.popen.

Dommage que l'utilisation directe en LUA de librairies adaptées ne soit pas intégré. J'ai pu faire marcher sur mon install les librairies socket, rpc, json ... LUA mais leur installation n'est pas "native" en domoticz, dommage.
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
baboun2807
Messages : 40
Inscription : 30 déc. 2015, 23:43

Re: Repartition Consommation HC / HP...

Message par baboun2807 »

Bonsoir,

Ayant voulu mettre en place votre solution, je rencontre un point blocant mais je ne sais pas quel est le problème. J'ai un compteur CM 180; j'ai crée les interrupteurs virtuels HC, HP, les compteurs virtuels HP HC, déclaré ds Domoticz les user variables, et placé le script tel quel dans le dossier scripts de domoticz.

Que je sois en HC ou HP j'ai la remontée suivante:
2016-01-31 18:24:25.504 Error: EventSystem: .../pi/domoticz/scripts/lua/script_device_compteurHC-HP.lua:84: attempt to index field '?' (a nil value

Ce qui correspond à la ligne de code suivante:

Periode heures pleines
-- Recuperation des valeurs du compteur global
consoInstantCible, consoCumuleCible = otherdevices_svalues[capteurCptHP]:match("([^;]+);([^;]+)")

Même remontée qd on est en heures creuses mais pour la ligne 63 ; mais c'est la même commande

-- Periode heures creuse
-- Recuperation des valeurs du compteur global
consoInstantCible, consoCumuleCible = otherdevices_svalues[capteurCptHC]:match("([^;]+);([^;]+)")

Mes valeurs de départ pour le capteurCptHP /capteurCptHC (qui correspond au Compteur virtuel HP / Compteur virtuel HC) sont forcemment à 0, est-ce la le problème?
Domoticz sur Raspberry Pi 2/ ECO DEVICE / compteur d'eau à impulsion / Plusieurs sondes Oregon / Chacon ON/OFF encastrable CH54555 ou CH54755
baboun2807
Messages : 40
Inscription : 30 déc. 2015, 23:43

Re: Repartition Consommation HC / HP...

Message par baboun2807 »

Seb13 a écrit :
neo_matfr a écrit :Lol, oui merci, j'ai trouvé, quelqu'un ma mis sur la piste ;-)
En fait le capteur est créé mais domoticz ne le voit pas, problème réglé.
merci
ahhh kool... peut-être mettre la solution pour les futurs galériens sur ce problème :lol:

Je confirme , je pense avoir le même problème. On fait comment alors?
Domoticz sur Raspberry Pi 2/ ECO DEVICE / compteur d'eau à impulsion / Plusieurs sondes Oregon / Chacon ON/OFF encastrable CH54555 ou CH54755
baboun2807
Messages : 40
Inscription : 30 déc. 2015, 23:43

Re: Repartition Consommation HC / HP...

Message par baboun2807 »

Bon il n'y a pas foule pour apporter des réponses.....
En redémarrant domoticz, cela a l'air d'être bon pour les compteurs virtuels HP et HC.... le script tourne MAIS les compteurs restent à O.....
Domoticz sur Raspberry Pi 2/ ECO DEVICE / compteur d'eau à impulsion / Plusieurs sondes Oregon / Chacon ON/OFF encastrable CH54555 ou CH54755
baboun2807
Messages : 40
Inscription : 30 déc. 2015, 23:43

Re: Repartition Consommation HC / HP...

Message par baboun2807 »

Je me réponds tt seul
Je n'avais pas mis à jour les idx des compteurs virtuels HC HP suite à leur re création
Domoticz sur Raspberry Pi 2/ ECO DEVICE / compteur d'eau à impulsion / Plusieurs sondes Oregon / Chacon ON/OFF encastrable CH54555 ou CH54755
Seb13
Messages : 273
Inscription : 07 janv. 2016, 23:46

Re: Repartition Consommation HC / HP...

Message par Seb13 »

Désolé, pas vu tes questions, j'ai eu un mail de notification pour ta dernière réponse seulement :(
yanndusud
Messages : 9
Inscription : 17 févr. 2016, 11:43

Re: Repartition Consommation HC / HP...

Message par yanndusud »

Bonjour, j'essaye de faire fonctionner les script en vain avec mon CM160. J'ai une erreur de log sur toutes mes variables locales :
Wed Feb 17 13:55:41 2016 LUA: -- Calcul Compteurs HC / HP --
Wed Feb 17 13:55:41 2016 LUA: CapteurGlobal = Conso Global
Wed Feb 17 13:55:41 2016 LUA: CapteurCptHP = Conso HP
Wed Feb 17 13:55:41 2016 LUA: CapteurCptHC = Conso HC
Wed Feb 17 13:55:41 2016 LUA: idxCptHP = 41
Wed Feb 17 13:55:41 2016 LUA: idxCptHC = 40
Wed Feb 17 13:55:41 2016 LUA: flagHP = EDF HP
Wed Feb 17 13:55:41 2016 LUA: LastValueCptElecGlobal = 41.18
Wed Feb 17 13:55:41 2016 LUA: debug = OUI
Wed Feb 17 13:55:41 2016 Error: /usr/local/domoticz/scripts/lua/script_device_EDF.lua:40: attempt to index field '?' (a nil value

C'est sur la ligne consoInstant, consoCumule = otherdevices_svalues[capteurGlobal]:match("([^;]+);([^;]+)")

Quelqu'un aurait-il déja eu ce message d'érreur. Merci.
Domoticz sur synology
RFXCOM
un capteur de courant OWL CM160
3 prises commandées Chacon 54795
Volets roulants Somfy RTS
Seb13
Messages : 273
Inscription : 07 janv. 2016, 23:46

Re: Repartition Consommation HC / HP...

Message par Seb13 »

Hello,

Problème avec capteurGlobal, donc, fait un echo de la variable pour voir ce qu'elle te donne... à mon avis... c'est vide.
Répondre