Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Plugin Tiers] Plugin Téléinfo

Pour échanger sur les plugins classés en catégorie "Energie"
raphael_malin
Timide
Messages : 485
Inscription : 10 nov. 2014, 00:20
Localisation : Nouméa - Nouvelle-Calédonie

Re: [Plugin Tiers] Plugin Téléinfo

Message par raphael_malin » 06 août 2017, 13:38

oui, mais je ne l'utilise qu'en 1!
Il est intégré directement dans la plugin conso.
Pour le reste: sur la vue téléinfo, je n'ai pas les conso (NOK) mais je pense que c'est parce que je n'ai pas mis les infos dans les commandes du plugin, et j'ai le dépassement qui reste toujours à oui. mais je m'en sers pas.
Pour le reste pas de soucis.
Jeedom smart avec en général toutes les mises à jour faites (système et plugin)

eldoctor62
Actif
Messages : 1089
Inscription : 12 nov. 2014, 15:44

Re: [Plugin Tiers] Plugin Téléinfo

Message par eldoctor62 » 07 août 2017, 13:42

raphael_malin a écrit :oui, mais je ne l'utilise qu'en 1!
Il est intégré directement dans la plugin conso.
Pour le reste: sur la vue téléinfo, je n'ai pas les conso (NOK) mais je pense que c'est parce que je n'ai pas mis les infos dans les commandes du plugin, et j'ai le dépassement qui reste toujours à oui. mais je m'en sers pas.
Pour le reste pas de soucis.
Ok impec ;)

Moi aussi en 1 compteur il fonctionne mais Le demon ne se lance pas en 2 compteurs...
Odroid C2
Razberry / RFXCOM / Teleinfo / MyFox HC2 / ESP8266
--
Just Have Fun

006fazer
Timide
Messages : 25
Inscription : 19 avr. 2017, 17:18

Re: [Plugin Tiers] Plugin Téléinfo

Message par 006fazer » 07 août 2017, 16:41

Bonjour à tous,

J'ai un petit soucis avec mon Jeedom et Teleinfo. J'utilise depuis 2 ans avec un module USB sur un raspberry pi 3. Pas de soucis. J'ai migré le Jeedom sous Docker sur mon Nas Synology. Il n'y a plus les infos ISOUSC IMAX ni PTEC depuis la migration.

Si j'arrête le docker Jeedom,

Code : Tout sélectionner

cat /dev/ttyUSB0
TAT 000000 B

ADCO 030622710588 A

OPTARIF BASE 0

ISOUSC 45 ?

BASE 115817692 3

PTEC TH.. $

IINST 002 Y

IMAX 046 I

PAPP 00450 *

MOTDETAT 000000 B

ADCO 030622710588 A

OPTARIF BASE 0

ISOUSC 45 ?

BASE 115817693 4

PTEC TH.. $
J'ai bien les infos, mais le plugin ne semble pas les parser correctement. Il n'y a pas de valeur de remontée par le plugin.

Une idée ?

Merci ;-)

006fazer
Timide
Messages : 25
Inscription : 19 avr. 2017, 17:18

Re: [Plugin Tiers] Plugin Téléinfo

Message par 006fazer » 07 août 2017, 17:16

006fazer a écrit :
07 août 2017, 16:41
Bonjour à tous,

J'ai un petit soucis avec mon Jeedom et Teleinfo. J'utilise depuis 2 ans avec un module USB sur un raspberry pi 3. Pas de soucis. J'ai migré le Jeedom sous Docker sur mon Nas Synology. Il n'y a plus les infos ISOUSC IMAX ni PTEC depuis la migration.

Si j'arrête le docker Jeedom,

Code : Tout sélectionner

cat /dev/ttyUSB0
TAT 000000 B

ADCO 030622710588 A

OPTARIF BASE 0

ISOUSC 45 ?

BASE 115817692 3

PTEC TH.. $

IINST 002 Y

IMAX 046 I

PAPP 00450 *

MOTDETAT 000000 B

ADCO 030622710588 A

OPTARIF BASE 0

ISOUSC 45 ?

BASE 115817693 4

PTEC TH.. $
J'ai bien les infos, mais le plugin ne semble pas les parser correctement. Il n'y a pas de valeur de remontée par le plugin.

Une idée ?

Merci ;-)
Si je désinstalle et réinstall le plugin, j'ai toutes les infos mais je perds toutes les données historisées du plugin :-(

Sebec
Timide
Messages : 15
Inscription : 23 sept. 2016, 10:30
Localisation : 76

Re: [Plugin Tiers] Plugin Téléinfo

Message par Sebec » 09 août 2017, 10:41

eldoctor62 a écrit :
07 août 2017, 13:42
raphael_malin a écrit :oui, mais je ne l'utilise qu'en 1!
Il est intégré directement dans la plugin conso.
Pour le reste: sur la vue téléinfo, je n'ai pas les conso (NOK) mais je pense que c'est parce que je n'ai pas mis les infos dans les commandes du plugin, et j'ai le dépassement qui reste toujours à oui. mais je m'en sers pas.
Pour le reste pas de soucis.
Ok impec ;)

Moi aussi en 1 compteur il fonctionne mais Le demon ne se lance pas en 2 compteurs...
Le mien fonctionne toujours en 2 compteurs, j'ai bien fait la mise à jour V3 mais je n'ai pas mis à jour le plugin et pour l'instant ça marche.
Jeedom sur RPI3 avec SSD
RFXCOM (sondes temp Oregon et volets Somfy)

eldoctor62
Actif
Messages : 1089
Inscription : 12 nov. 2014, 15:44

Re: [Plugin Tiers] Plugin Téléinfo

Message par eldoctor62 » 09 août 2017, 20:35

Sebec a écrit :
09 août 2017, 10:41

Le mien fonctionne toujours en 2 compteurs, j'ai bien fait la mise à jour V3 mais je n'ai pas mis à jour le plugin et pour l'instant ça marche.
Tu as bien fait !!

Je ne sais pas s'il est possible de downgrader... Je ne crois pas !
Odroid C2
Razberry / RFXCOM / Teleinfo / MyFox HC2 / ESP8266
--
Just Have Fun

Sebec
Timide
Messages : 15
Inscription : 23 sept. 2016, 10:30
Localisation : 76

Re: [Plugin Tiers] Plugin Téléinfo

Message par Sebec » 09 août 2017, 22:14

C'est dommage de ne pas pouvoir récupérer la version précédente d'un plugin en cas de problème ! !
Jeedom sur RPI3 avec SSD
RFXCOM (sondes temp Oregon et volets Somfy)

Anonyme
Actif
Messages : 10082
Inscription : 09 août 2014, 12:15

Re: [Plugin Tiers] Plugin Téléinfo

Message par Anonyme » 09 août 2017, 22:16

Contenu supprimé à la demande de son auteur

matt73210
Timide
Messages : 72
Inscription : 18 nov. 2016, 23:54

Re: [Plugin Tiers] Plugin Téléinfo

Message par matt73210 » 13 août 2017, 21:32

Salut tout le monde.

Avez vous eu des nouvelles avec vos PTEC ?
Meme avec un virtual la commande reste sur 0, hors que dans santé j'ai bien les info..

J'ai vu que vous avez utilisé un senario ? Comment avez vous fait ?
Je me tate a fair un script de type :
SI hc augement alors PTEC = HC sinon HP etc...

Matthew

snoopy10800
Timide
Messages : 267
Inscription : 25 mai 2016, 20:57
Localisation : entre Troyes et Quimper...

Re: [Plugin Tiers] Plugin Téléinfo

Message par snoopy10800 » 14 août 2017, 08:37

Bonjour à tous

Je rencontre un petit souci avec mon plugin téléinfo, depuis que je suis passé sous SSD.
J'utilise un module GCE USB
Je suis en Jeedom V3

Si je lance Jeedom depuis la carte SD, avec le module téléinfo connecté en USB, aucun problème.
Si je lance Jeedom avec le SSD (en USB) et le module téléinfo connecté aussi en USB, ça ne fonctionne pas.
[2017-08-14 08:15:15][ERROR] : Impossible de lancer le démon téléinfo, vérifiez l'ip
Traceback (most recent call last):
File "/var/www/html/plugins/teleinfo/ressources/teleinfo.py", line 8, in <module>
import serial
ImportError: No module named serial
[2017-08-14 08:20:15][ERROR] : Impossible de lancer le démon téléinfo, vérifiez l'ip

J'ai essayé de changer le port USB pour le disque SSD, et aussi pour le module téléinfo --> ça ne change rien


Dans ma page de config, j'ai pour "PORT DU MODEM" : /dev/ttyUSB0 (c'est le seul choix que je puisse faire en usb)
Image
Image

J'ai aussi tenté de réinstaller / relancer le démon. Sans succès.

Auriez vous une piste ?

Merci

snoopy10800
Timide
Messages : 267
Inscription : 25 mai 2016, 20:57
Localisation : entre Troyes et Quimper...

Re: [Plugin Tiers] Plugin Téléinfo

Message par snoopy10800 » 17 août 2017, 20:59

Bonsoir à tous.

Je réponds moi même à mon problème dans le post précédent.
Depuis 3 jours, j'ai fait des essais, et j'ai trouvé une solution mais pas d'explication.

En fait, pour que mon module teleinfo fonctionne, il faut que je choisisse manuellement la vitesse de transmission à 1200.
Si je la laisse par défaut, j'ai l'erreur m'informant qu'il est impossible de lancer le demon
Si je sélectionne une autre vitesse que 1200, le demon se lance bien, mais je ne reçois aucune trame.
Avec 1200, tout semble fonctionner.

Ce que je ne comprends pas, c'est que si je remets la sd, a la place du ssd, tout fonctionne normalement avec une vitesse "par défaut".

Il semblerait que le disque mssd branché en USB perturbe d'une façon ou d'une autre la communication avec le module téléinfo. Mais je ne saurais pas dire pourquoi....

lgaudry
Timide
Messages : 15
Inscription : 27 août 2017, 13:31

Re: [Plugin Tiers] Plugin Téléinfo PROBLEME TRAME

Message par lgaudry » 27 août 2017, 13:36

bonjour

je rencontre des soucis avec le plugin teleinfo. lorsque je lance un cat /dev/ttyS0 après avoir changer les paramètres du port en sane envep parenb cs7. je recupére bien les trame du téléinfo.
Via un script python, je recupére bien la trame téléinfo également.
dès que je lance le démon téléinfo, j'ai l'impression qu'il modifie les paramètre du port série.
La première trame qu'il recupére est toujours complète, par contre les suivante ne contiennent quasiment aucune info.
Auriez vous une piste ?

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers] Plugin Téléinfo

Message par mika-nt28 » 29 août 2017, 15:35

J'ai aussi un problème avec ce plugin j'ai quasiment que des trame en "** FRAME CORRUPTED !"
J'ai donc mis un peut le mains dans le python pour essayer de localisé d'un peut plus pret mon probleme.
sur le checksum j'ai le caractere 0x02 qui ce colle du coup la comparaison n'ais pas bonne et j'ai ce log
J'ai donc supprimer ce caractere a l'appel de la fonction _isValid et maintenant j'ai bien mes trame qui remonte.
La lecture de la trame PTEC ne me parait pas terrible car j'ai en valeur "TH.."
Ce qui n'est pas possible puisque l'on attend une valeur numerique
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

lgaudry
Timide
Messages : 15
Inscription : 27 août 2017, 13:31

Re: [Plugin Tiers] Plugin Téléinfo

Message par lgaudry » 29 août 2017, 16:59

J'aimerais bien voir la modification que tu as faites sur le script. Par contre il faut que tu change le type du ptce en autre dans les paramètre des commandes. Moi qui suis en tarif bleu il fit un temps où je recuperais bien HC. Ou HP.

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers] Plugin Téléinfo

Message par mika-nt28 » 30 août 2017, 07:52

La modif que j'ai faite dans un premier temps c'est a la ligne 190

Code : Tout sélectionner

if self._is_valid(resp, checksum.replace('\x02','')):
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

lgaudry
Timide
Messages : 15
Inscription : 27 août 2017, 13:31

Re: [Plugin Tiers] Plugin Téléinfo

Message par lgaudry » 30 août 2017, 10:08

ok pour ta modif , mais cela ne me sert à rien en fait puisque je recupére bien des trames et la première est toujours complète après lancement du demon. c'est après que cela ce gate.

et si je lance un autre scripts, toutes mes trames sont complètes. pareil avec cat /dev/ttyS0

2017-08-30 10:00:21,291 INFO Try to open Teleinfo modem /dev/ttyS0 with speed 1200
2017-08-30 10:00:21,292 INFO Teleinfo modem successfully opened
2017-08-30 10:00:23,299 DEBUG nice -n 19 timeout 15 /usr/bin/php /var/www/html/plugins/teleinfo/core/class/../php/jeeTeleinfo.php api=dnMDxUIsVvIgKaIXCtWI6uTsK9eDfWQb IINST=002 OPTARIF=HC ADCO=270622186022 HCHC=049026251 ISOUSC=45 IMAX=053 PTEC=HP PAPP=00430 HHPHC=D HCHP=100537366 ADCO=270622186022
2017-08-30 10:00:31,954 DEBUG nice -n 19 timeout 15 /usr/bin/php /var/www/html/plugins/teleinfo/core/class/../php/jeeTeleinfo.php api=dnMDxUIsVvIgKaIXCtWI6uTsK9eDfWQb HCHP=100537367 ADCO=270622186022
2017-08-30 10:00:43,493 DEBUG nice -n 19 timeout 15 /usr/bin/php /var/www/html/plugins/teleinfo/core/class/../php/jeeTeleinfo.php api=dnMDxUIsVvIgKaIXCtWI6uTsK9eDfWQb HCHP=100537368 ADCO=270622186022
2017-08-30 10:00:52,148 DEBUG nice -n 19 timeout 15 /usr/bin/php /var/www/html/plugins/teleinfo/core/class/../php/jeeTeleinfo.php api=dnMDxUIsVvIgKaIXCtWI6uTsK9eDfWQb HCHP=100537369 ADCO=270622186022
2017-08-30 10:01:03,687 DEBUG nice -n 19 timeout 15 /usr/bin/php /var/www/html/plugins/teleinfo/core/class/../php/jeeTeleinfo.php api=dnMDxUIsVvIgKaIXCtWI6uTsK9eDfWQb HCHP=100537370 ADCO=270622186022
2017-08-30 10:01:12,342 DEBUG nice -n 19 timeout 15 /usr/bin/php /var/www/html/plugins/teleinfo/core/class/../php/jeeTeleinfo.php api=dnMDxUIsVvIgKaIXCtWI6uTsK9eDfWQb HCHP=100537371 ADCO=270622186022

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers] Plugin Téléinfo

Message par mika-nt28 » 30 août 2017, 10:26

J'ai refais pas mal de chose sur le python car je n'avais jamais de 0x03 qui tombais.
Je ne mettait donc jamais a jours les informations.

Code : Tout sélectionner

#!/usr/bin/python
# -*- coding: utf-8 -*-
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
 
""" Read one teleinfo frame and output the frame in CSV format on stdout
"""
 
import serial
import os
import time
import traceback
import logging
import sys
from optparse import OptionParser
from datetime import datetime
import subprocess
import urllib2
import threading
import signal 
 
# Default log level
gLogLevel = logging.DEBUG
 
# Device name
gDeviceName = '/dev/ttyUSB0'
# Default output is stdout
gOutput = sys.__stdout__
gExternalIP = ''
gCleAPI = ''
gDebug = ''
gRealPath = ''
gVitesse = ''
gMessageTemp = ''
gCanStart = 'true'
# ----------------------------------------------------------------------------
# LOGGING
# ----------------------------------------------------------------------------
class MyLogger:
	""" Our own logger """
 
	def __init__(self):
		program_path = os.path.dirname(os.path.realpath(__file__))
		self._logger = logging.getLogger('teleinfo')
		hdlr = logging.FileHandler(program_path + '/../../../log/teleinfo_deamon')
		formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
		hdlr.setFormatter(formatter)
		self._logger.addHandler(hdlr) 
		self._logger.setLevel(gLogLevel)


	def debug(self, text):
		try:
			self._logger.debug(text)
			#print text
		except NameError:
			pass
 
	def info(self, text):
		try:
			#global gMessageTemp
			text = text.replace("'", "")
			#gMessageTemp += str(text) + "**"
			#print text
			self._logger.info(text)
		except NameError:
			pass

	def warning(self, text):
		try:
			#global gMessageTemp
			text = text.replace("'", "")
			#gMessageTemp += str(text) + "**"
			#print text
			self._logger.warn(text)
		except NameError:
			pass
 
	def error(self, text):
		try:
			#global gMessageTemp
			text = text.replace("'", "")
			#gMessageTemp += str(text) + "**"
			#print text
			self._logger.error(text)
		except NameError:
			pass


# ----------------------------------------------------------------------------
# Exception
# ----------------------------------------------------------------------------
class TeleinfoException(Exception):
	"""
	Teleinfo exception
	"""
 
	def __init__(self, value):
		Exception.__init__(self)
		self.value = value
 
	def __str__(self):
		return repr(self.value)
 
 
# ----------------------------------------------------------------------------
# Teleinfo core
# ----------------------------------------------------------------------------
class Teleinfo:
	""" Fetch teleinformation datas and call user callback
	each time all data are collected
	"""
 
	def __init__(self, device, externalip, cleapi, debug, realpath, vitesse):
		""" @param device : teleinfo modem device path
		@param log : log instance
		@param callback : method to call each time all data are collected
		The datas will be passed using a dictionnary
		"""
		self._log = MyLogger()
		self._device = device
		self._externalip = externalip
		self._cleAPI = cleapi
		self._debug = debug
		self._realpath = realpath
		self._vitesse = vitesse
		self._ser = None
		#self._stop = Event()
 
	def open(self):
		""" open teleinfo modem device
		"""
		try:
			self._log.info("Try to open Teleinfo modem '%s' with speed '%s'" % (self._device, self._vitesse))
			# if(self.vitesse == '9600'):
			self._ser = serial.Serial(self._device, self._vitesse, bytesize=7, parity = 'E', stopbits=1)
			# else:
				# self._ser = serial.Serial(self._device, 1200, bytesize=7, parity = 'E', stopbits=1)
			self._log.info("Teleinfo modem successfully opened")
		except:
			#error = "Error opening Teleinfo modem '%s' : %s" % (self._device, traceback.format_exc())
			self._log.error("Error opening Teleinfo modem '%s' : %s" % (self._device, traceback.format_exc()))
			raise TeleinfoException(error)
 
	def close(self):
		""" close telinfo modem
		"""
		self._log.info("Try to close Teleinfo modem")
		#self._stop.set()
		if self._ser != None  and self._ser.isOpen():
			self._ser.close()
			self._log.info("Teleinfo modem successfully closed")
 
	def terminate(self):
		print "Terminating..."
		self.close()
		#sys.close(gOutput)
		sys.exit()
 
	def read(self):
		""" Fetch one full frame for serial port
		If some part of the frame is corrupted,
		it waits until th enext one, so if you have corruption issue,
		this method can take time but it enures that the frame returned is valid
		@return frame : list of dict {name, value, checksum}
		"""
		#Get the begin of the frame, markde by \x02
		resp = self._ser.readline()
		is_ok = False
		#frame = []
		#frameCsv = []
		Content = {}
		while not is_ok:
			try:
				#\x02 is in the last line of a frame, so go until the next one
				while '\x02' not in resp:
					resp = self._ser.readline()
				#print "* Begin frame"
				resp = self._ser.readline()
				#A new frame starts
				#\x03 is the end of the frame
				while '\x02' not in resp:
					#Don't use strip() here because the checksum can be ' '
					if len(resp.replace('\r','').replace('\n','').split()) == 2:
						#The checksum char is ' '
						name, value = resp.replace('\r','').replace('\n','').replace('\x02','').replace('\x03','').split()
						checksum = ' '
					else:
						name, value, checksum = resp.replace('\r','').replace('\n','').replace('\x02','').replace('\x03','').split()
						#print "name : %s, value : %s, checksum : %s" % (name, value, checksum)
					if self._is_valid(resp, checksum):
						#frame.append({"name" : name, "value" : value, "checksum" : checksum})
						#frameCsv.append(value)
						Content[name] = value;
					else:
						self._log.error("** FRAME CORRUPTED !")
						#This frame is corrupted, we need to wait until the next one
						#frame = []
						#frameCsv = []
						while '\x02' not in resp:
							resp = self._ser.readline()
						self._log.error("* New frame after corrupted")
					resp = self._ser.readline()
				#\x03 has been detected, that's the last line of the frame
				is_ok = True
			except ValueError:
				#Badly formatted frame
				#This frame is corrupted, we need to wait until the next one
				#frame = []
				#frameCsv = []
				while '\x02' not in resp:
					resp = self._ser.readline()
		import json
		self._log.info(json.dumps(Content))
		return Content
 
	def _is_valid(self, frame, checksum):
		""" Check if a frame is valid
		@param frame : the full frame
		@param checksum : the frame checksum
		"""
		#print "Check checksum : f = %s, chk = %s" % (frame, checksum)
		datas = ' '.join(frame.split()[0:2])
		my_sum = 0
		for cks in datas:
			my_sum = my_sum + ord(cks)
		computed_checksum = ( my_sum & int("111111", 2) ) + 0x20
		#print "computed_checksum = %s" % chr(computed_checksum)
		return chr(computed_checksum) == checksum
 
	def run(self):
		""" Main function
		"""
		Donnees = {}
		_Donnees = {}
		_RAZ = datetime.now()
		_RazCalcul = 0
		_Separateur = " "
		_SendData = ""
		#global gMessageTemp
		
		def target():
			self.process = None
			#logger.debug("Thread started, timeout = " + str(timeout)+", command : "+str(self.cmd))
			self.process = subprocess.Popen(self.cmd + _SendData, shell=True)
			#print self.cmd
			self.process.communicate()
			#logger.debug("Return code: " + str(self.process.returncode))
			#logger.debug("Thread finished")
			self.timer.cancel()
		
		def timer_callback():
			#logger.debug("Thread timeout, terminate it")
			if self.process.poll() is None:
				try:
					self.process.kill()
				except OSError as error:
					#logger.error("Error: %s " % error)
					self._log.error("Error: %s " % error)
				self._log.warning("Thread terminated")
			else:
				self._log.warning("Thread not alive")
				
		# Open Teleinfo modem
		try:
			self.open()
		except TeleinfoException as err:
			self._log.error(err.value)
			#print err.value
			self.terminate()
			return
		# Read a frame
		while(1):
			_RazCalcul = datetime.now() - _RAZ
			if(_RazCalcul.seconds > 3600):
				_RAZ = datetime.now()
				for cle, valeur in Donnees.items():
					Donnees.pop(cle)
					_Donnees.pop(cle)
			_SendData = ""
			frameCsv = self.read()
			for cle, valeur in frameCsv.items():
				if(cle == 'PTEC'):
					valeur = valeur.replace(".","")
					valeur = valeur.replace(")","")
					Donnees[cle] = valeur
				elif(cle == 'OPTARIF'):
					valeur = valeur.replace(".","")
					valeur = valeur.replace(")","")
					Donnees[cle] = valeur
				else:
					Donnees[cle] = valeur
			if(self._externalip != ""):
				self.cmd = "curl -L -s -G --max-time 15 " + self._externalip +"/plugins/teleinfo/core/php/jeeTeleinfo.php -d 'api=" + self._cleAPI
				#self.cmd = "curl -L -s " + "192.168.1.150" +'/plugins/teleinfo/core/php/jeeTeleinfo.php?api=' + self._cleAPI
				_Separateur = "&"
			else:
				#self.cmd = "curl -L -s -G " + self._externalip +"/plugins/teleinfo/core/php/jeeTeleinfo.php -d 'api=" + self._cleAPI
				self.cmd = 'nice -n 19 timeout 15 /usr/bin/php ' + self._realpath + '/../php/jeeTeleinfo.php api=' + self._cleAPI
				_Separateur = " "
			for cle, valeur in Donnees.items():
				if(cle in _Donnees):
					if (Donnees[cle] != _Donnees[cle]):
						_SendData += _Separateur + cle +'='+ valeur
						_Donnees[cle] = valeur
				else:
					_SendData += _Separateur + cle +'='+ valeur
					_Donnees[cle] = valeur
			
			#response = urllib2.urlopen(self.cmd)
			if (_SendData != ""):
				_SendData += _Separateur + "ADCO=" + Donnees["ADCO"]
				#self.cmd += _SendData
				if (self._debug == '1'):
					print self.cmd
					#print ""
				self._log.debug(self.cmd + _SendData)
				if(self._externalip != ""):
					try:
						_SendData += "'"
						thread = threading.Thread(target=target)
						self.timer = threading.Timer(int(5), timer_callback)
						self.timer.start()
						thread.start()
						#response = urllib2.urlopen(self.cmd)
					except Exception, e:
						errorCom = "Connection error '%s'" % e
				else:
					try:
						thread = threading.Thread(target=target)
						self.timer = threading.Timer(int(5), timer_callback)
						self.timer.start()
						thread.start()
						#self.process = subprocess.Popen(self.cmd, shell=True)
						#self.process.communicate()
					except Exception, e:
						errorCom = "Connection error '%s'" % e
		# This is the End!
		self.terminate()
	def exit_handler(self, *args):
		self.terminate()
		self._log.info("[exit_handler]")

#------------------------------------------------------------------------------
# MAIN
#------------------------------------------------------------------------------
if __name__ == "__main__":
	usage = "usage: %prog [options]"
	parser = OptionParser(usage)
	parser.add_option("-o", "--output", dest="filename", help="append result in FILENAME")
	parser.add_option("-p", "--port", dest="port", help="port du modem")
	parser.add_option("-e", "--externalip", dest="externalip", help="ip de jeedom")
	parser.add_option("-c", "--cleapi", dest="cleapi", help="cle api de jeedom")
	parser.add_option("-d", "--debug", dest="debug", help="mode debug")
	parser.add_option("-r", "--realpath", dest="realpath", help="path usr")
	parser.add_option("-v", "--vitesse", dest="vitesse", help="vitesse du modem")
	parser.add_option("-f", "--force", dest="force", help="forcer le lancement")
	(options, args) = parser.parse_args()
	#print "opt: %s, arglen: %s" % (options, len(args))
	if options.port:
			try:
				gDeviceName = options.port
			except:
				error = "Can not change port %s" % options.port
				raise TeleinfoException(error)
	if options.externalip:
			try:
				gExternalIP = options.externalip
			except:
				error = "Can not change ip %s" % options.externalip
				raise TeleinfoException(error)
	if options.debug:
			try:
				gDebug = options.debug
			except:
				error = "Can not set debug mode %s" % options.debug
				#raise TeleinfoException(error)
	if options.cleapi:
			try:
				gCleAPI = options.cleapi
			except:
				error = "Can not change ip %s" % options.cleapi
				raise TeleinfoException(error)
	if options.realpath:
			try:
				gRealPath = options.realpath
			except:
				error = "Can not get realpath %s" % options.realpath
				raise TeleinfoException(error)
	if options.vitesse:
			try:
				gVitesse = options.vitesse
			except:
				error = "Can not get vitesse %s" % options.vitesse
				raise TeleinfoException(error)
	if options.force:
			try:
				if options.force == '0':
					if os.path.isfile("/tmp/teleinfo.pid"):
						filetmp = open("/tmp/teleinfo.pid", 'r')
						filepid = filetmp.readline()
						filetmp.close()
						if filepid != "":
							_log = MyLogger()
							_log.warning('Deamon deja lance')
							gCanStart = 'false'
			except:
				error = "Can not get file PID"
				raise TeleinfoException(error)
	if gCanStart == 'true':
		pid = str(os.getpid())
		file("/tmp/teleinfo.pid", 'w').write("%s\n" % pid)
		teleinfo = Teleinfo(gDeviceName, gExternalIP, gCleAPI, gDebug, gRealPath, gVitesse)
		signal.signal(signal.SIGTERM, teleinfo.exit_handler)
		teleinfo.run()
	sys.exit()
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

lgaudry
Timide
Messages : 15
Inscription : 27 août 2017, 13:31

Re: [Plugin Tiers] Plugin Téléinfo

Message par lgaudry » 30 août 2017, 12:59

C'est le script complet que tu as mis...?
Je vais essayer avec ton script voir si ça marche...

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers] Plugin Téléinfo

Message par mika-nt28 » 30 août 2017, 13:08

oui, j'ai fait un grand ménage et j'ai des info qui remonte.
Par contre je n'ai toujours pas de puissance apparente que j'ai besoin pour le plugin delestage
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers] Plugin Téléinfo

Message par mika-nt28 » 30 août 2017, 13:36

Y a t'il un github pour ce plugin.

Le python je ne suis pas convaincue que ce soit la meileur solution d'integration et je fait quelque test avec du php.
J'aimerai bien partager les resultat pour aider a avancer
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

Répondre

Revenir vers « [Catégorie] Energie »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 15 invités