Skip to content

Commit

Permalink
4.8.2a
Browse files Browse the repository at this point in the history
modif pour faire fonctionner les 2 ports modem
  • Loading branch information
Noyax37 committed Aug 10, 2023
1 parent 6976aad commit 3d7f1a2
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 29 deletions.
4 changes: 2 additions & 2 deletions core/class/teleinfo.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,7 @@ public static function deamon_info()
log::add('teleinfo', 'debug', '[TELEINFO_deamon_modem] état : ' . $returnmodem);
log::add('teleinfo', 'debug', '[TELEINFO_deamon_MQTT] état : ' . $returnmqtt);
log::add('teleinfo', 'debug', '[TELEINFO_deamon_prod] état : '. $returnprod);
log::add('teleinfo', 'info', '[TELEINFO_deamon] état global => retour: ' . $return['state']);
log::add('teleinfo', 'debug', '[TELEINFO_deamon] état global => retour: ' . $return['state']);
return $return;
}

Expand Down Expand Up @@ -630,7 +630,7 @@ public static function deamon_start($debug = false)
//}
//message::removeAll('teleinfo', 'noTeleinfoPort');
} else {
log::add('teleinfo', 'info', 'Pas d\'informations sur le port2 USB (Modem série ?) ');
log::add('teleinfo', 'info', 'Port2 non configuré ');
}
}
if ($activation_Mqtt == 1){
Expand Down
6 changes: 5 additions & 1 deletion docs/fr_FR/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,13 @@ Pour toutes demandes :
- [Changelog version stable](https://nextdom.github.io/plugin-teleinfo/fr_FR/changelog.md)
- [Changelog version bêta](https://noyax.github.io/plugin-teleinfo/fr_FR/changelog.md)

## 4.8.2a (xx-xx-2023) => version bêta
## 4.8.2a (10-08-2023) => version bêta
- correction afin de faire fonctionner 2 modems en même temps sur les ports 1 et 2 de teleinfo
- amélioration de la gestion des démons
- modification du traitement des trames issues du compteur pour être certain de traiter l'ensemble des données envoyées par la TIC
- Déplacement du paramètre de configuration du plugin "cycle de sommeil" depuis la partie générale vers la partie modem car cela ne concerne que lui
- ajout d'un contrôle si la valeur d'un des index "EA*" (EASF.., EAST, EAIT) relevée est inférieure à la valeur relevée précédente, un index ne peut qu'augmenter
- log info un peu moins verbeux, passage de certains logs de info vers debug. Pour montrer que le log teleinfo_daemon_conso tourne => affichage toutes les 30 minutes de la dernière trame reçue de la TIC et les infos envoyées vers Jeedom (le démon n'envoie pas vers Jeedom des infos qui n'ont pas changées)

## 4.8.1a (16-06-2023) => version bêta
- Affichage du signe € à la place de $ dans les options du plugin
Expand Down
15 changes: 9 additions & 6 deletions plugin_info/configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,15 @@
<div class="form-group div_local">
</div>
<legend><i class="icon fas fa-cog"></i> {{Modem : configuration Générale}}</legend>
<div class="form-group div_local">
</div>
<label class="col-lg-4 control-label">{{Cycle sommeil acquisition teleinfo (s)}}<sup><i class="fas fa-question-circle tooltips" title="{{temps entre 2 interrogations de la TIC, limite les données à enregistrer}}" style="font-size : 1em;color:grey;"></i></sup></label>
<div class="col-lg-1">
<input class="configKey form-control" data-l1key="cycle_sommeil" placeholder="{{0.5}}"/>
</div>
<label class="col-sm-4 control-label"> </label>
<div class="form-group div_local">
</div>
<label class="col-lg-4 control-label">{{Port du modem 1}}</label>
<div class="col-lg-4">
<select id="select_port" class="configKey form-control" data-l1key="port">
Expand Down Expand Up @@ -313,12 +322,6 @@
<input class="configKey form-control" data-l1key="cycle" placeholder="{{0.3}}"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">{{Cycle sommeil acquisition teleinfo (s)}}</label>
<div class="col-sm-2">
<input class="configKey form-control" data-l1key="cycle_sommeil" placeholder="{{0.5}}"/>
</div>
</div>
</div>
</fieldset>
<br /><br /><br /><br /><br /><br />
Expand Down
2 changes: 1 addition & 1 deletion plugin_info/info.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id" : "teleinfo",
"name" : "Téléinfo",
"description" : "Plugin pour utiliser les modems téléinformation USB / Série",
"description" : "Plugin pour utiliser les modems téléinformation USB / Série. Développé initialement par Cédric Guine (@Ticed35)",
"licence" : "AGPL",
"author" : "Cédric GUINE repris par Noyax37",
"require" : "4.2",
Expand Down
53 changes: 34 additions & 19 deletions ressources/teleinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
sys.exit(1)

import serial
from datetime import datetime
from datetime import date, datetime

class error(Exception):
def __init__(self, value):
Expand Down Expand Up @@ -67,6 +67,8 @@ def read(self):
content = {}
while not is_ok:
try:
while 'VTIC' not in resp:
resp = (globals.TELEINFO_SERIAL.readline().decode("UTF-8"))
while 'ADSC' not in resp:
if premtrame:
premtrame = False
Expand All @@ -79,7 +81,7 @@ def read(self):
if self._is_valid(resp, checksum):
content[name] = value
else:
logging.error("MODEM------ ** DONNEES HS ! ** sur trame : " + resp)
logging.debug("MODEM------ ** DONNEES HS ! ** sur trame : " + resp)
logging.debug('MODEM----name : ' + name + ' value : ' + value + ' Horodate : ' + horodate + ' checksum : ' + checksum)
else:
name, value, checksum = resp.replace('\r', '').replace('\n', '').split('\x09')
Expand Down Expand Up @@ -291,7 +293,7 @@ def read(self):
name = 'RELAIS'

else:
logging.error('MODEM------ ** DONNEES HS ! ** sur trame : ' + resp + ' checksum : ' + checksum)
logging.debug('MODEM------ ** DONNEES HS ! ** sur trame : ' + resp + ' checksum : ' + checksum)

logging.debug('MODEM------ name : ' + name + ' value : ' + value + ' Horodate : ' + " " + ' checksum : ' + checksum)
logging.debug('MODEM------ Content : ' + str(content))
Expand Down Expand Up @@ -371,7 +373,7 @@ def _is_valid(frame, checksum):
my_sum = my_sum + ord(cks)
computed_checksum = ((my_sum + 0x09) & int("111111", 2)) + 0x20
if chr(computed_checksum) != checksum[0:1]:
logging.error('MODEM------ checksum non concordant. Checksum reçu : ' + checksum[0:1] + ' Checksum calcul : ' + chr(
logging.debug('MODEM------ checksum non concordant. Checksum reçu : ' + checksum[0:1] + ' Checksum calcul : ' + chr(
computed_checksum))
else:
logging.debug('MODEM------ .......... checksum concordant. Checksum reçu : ' + checksum[0:1] + ' Checksum calcul : ' + chr(computed_checksum))
Expand All @@ -391,21 +393,20 @@ def run(self):
"""
data = {}
data_temp = {}
raz_calcul = 0
separateur = " "
send_data = ""
raz_day = 0
info_heure_calcul = 0

# Read a frame
raz_time = datetime.now()
# Read a frame + RAZ au changement de date
raz_day = date.today()
info_heure = datetime.now()
while 1:
raz_calcul = datetime.now() - raz_time
if raz_calcul.seconds > 60:
logging.info("MODEM------ HEARTBEAT")
raz_time = datetime.now()
if raz_day != date.today():
raz_day = date.today()
time.sleep(10)
logging.info("MODEM------ HEARTBEAT raz le " + str(raz_day))
for cle, valeur in list(data.items()):
data.pop(cle)
data_temp.pop(cle)
send_data = ""
frame_csv = self.read()
for cle, valeur in frame_csv.items():
if cle == 'PTEC':
Expand All @@ -424,9 +425,18 @@ def run(self):
for cle, valeur in data.items():
if cle in data_temp:
if data[cle] != data_temp[cle]:
_SendData[cle] = valeur
data_temp[cle] = valeur
pending_changes = True
if cle[:3] == 'EAS' or cle[:3] == 'EAI': # test si on a affaire à un index commençant par EAI ou EAS (EAIT, EASF??, ...)
if (int(data[cle]) > int(data_temp[cle])) and (int(data[cle]) < (int(data_temp[cle]) + 10000)): #s i la valeur relevée est plus grande que celle en mémoire et qu'elle n'est pas 10 kwh au dessus c'est ok
_SendData[cle] = valeur
data_temp[cle] = valeur
pending_changes = True
else: # sinon on ne la prend pas en compte
logging.error('Valeur incohérente pour l index ' + str(cle) + ' à ' + str(data[cle]))
data_temp[cle] = valeur # là c'est au cas où la valeur relevée était incohérente mais plus grande que celle en mémoire alors on ne prendrait plus jamais celle relevée
else:
_SendData[cle] = valeur
data_temp[cle] = valeur
pending_changes = True
else:
_SendData[cle] = valeur
data_temp[cle] = valeur
Expand All @@ -442,14 +452,19 @@ def run(self):
except Exception:
error_com = "Connection error"
logging.error(error_com)
info_heure_calcul = datetime.now() - info_heure
if info_heure_calcul.seconds > 1800:
logging.info('MODEM------ Dernières datas reçues de la TIC : ' + str(data))
logging.info('MODEM------ Dernières datas envoyées vers Jeedom : ' + str(_SendData))
info_heure = datetime.now()
logging.debug("MODEM------ START SLEEPING " + str(globals.cycle_sommeil) + " seconds")
time.sleep(globals.cycle_sommeil)
logging.debug("MODEM------ WAITING : " + str(
globals.TELEINFO_SERIAL.inWaiting()) + " octets dans la file apres sleep ")
if globals.TELEINFO_SERIAL.inWaiting() > 1500:
globals.TELEINFO_SERIAL.flushInput()
logging.info("MODEM------ BUFFER OVERFLOW => FLUSH")
logging.debug(str(globals.TELEINFO_SERIAL.inWaiting()) + "octets dans la file apres flush ")
logging.debug("MODEM------ BUFFER OVERFLOW => FLUSH")
logging.debug(str(globals.TELEINFO_SERIAL.inWaiting()) + " octets dans la file apres flush ")
self.terminate()

@staticmethod
Expand Down

0 comments on commit 3d7f1a2

Please sign in to comment.