Page 1 sur 1

bug acquisition script teleinfo standard

Publié : 15 août 2022, 10:39
par knasson
Bonjour,

pour l'acquisition de ma production photovoltaïque, j'utilise depuis longtemps un script teleinfo python qui a fait l'objet d'une adaptation personnelle et qui a fait l'objet d'une mise au point icihttps://easydomoticz.com/forum/viewtopi ... 415#p95415.
Le problème que je rencontre est une erreur d'acquisition du second digit pour l'etiquette EAIT ainsi si mon compteur indique 9663798 l'acquisition me donne de temps en temps 9463798 et c'est toujours le second digit qui est concerné.
Il semble que ce soit un problème de stabilité qui devient plus fréquent quand les températures de Raspberry s'élèvent.
j'ai rajouté un ventilateur sur le raspi mais avec les températures actuelles cela ne semble pas suffisant.
Avez vous une idée de comment résoudre ce problème?.
Merci de votre aide,

knasson

Re: bug acquisition script teleinfo standard

Publié : 15 août 2022, 13:53
par higgins91
salut, essaye d'enlever le couvercle de ton boitier, cela ventilera mieux le Pi. Tu peux aussi conserver la dernière valeur lue dans une variable, si la nouvelle est différente de l'ancienne de plus de 100 (par exemple) alors il ne faut pas la prendre en compte et attendre la prochaine.

Re: bug acquisition script teleinfo standard

Publié : 15 août 2022, 15:15
par knasson
Sur le couvercle du Pi il y a le petit ventilo.
J'aime bien ton idée de stocker la dernière valeur dans une variable et de la tester , je vais essayer, mes connaissances en python sont limitées si tu peux aider?

Code : Tout sélectionner

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# __author__ = "Jordan Martin"
# __licence__ = "Apache License 2.0"
import serial
import logging
import subprocess
import requests
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s')
# Port serial
stty_port = '/dev/ttyUSB0'
 # Clé à récupérer et id de l'info dans Jeedom (pas necessaire dans domoticz)
measure_keys = ['EAIT','SINSTI']
measures=[0,0]
def main():
    logging.info('Starting...')
    # Reconfigure le port serial pour eviter
    # l'erreur: termios.error: (22, 'Invalid argument')
    logging.info('Reconfigure stty %s' % stty_port)
    subprocess.call(['stty', '-F',  stty_port, 'iexten'])
    with serial.Serial(port=stty_port, baudrate=9600, parity=serial.PARITY_EVEN, stopbits=serial.STOPBITS_ONE,
                       bytesize=serial.SEVENBITS, timeout=1) as ser:
        logging.info('Reading on %s' % stty_port)
        while True:
            line = ser.readline()
            arr = line.decode('ascii').split('\t')
            if len(arr) != 3:
                continue
            send_measure(arr)
def send_measure(arr):
    key = arr[0]
def main():
    logging.info('Starting...')
    # Reconfigure le port serial pour eviter
    # l'erreur: termios.error: (22, 'Invalid argument')
    logging.info('Reconfigure stty %s' % stty_port)
    subprocess.call(['stty', '-F',  stty_port, 'iexten'])
    with serial.Serial(port=stty_port, baudrate=9600, parity=serial.PARITY_EVEN, stopbits=serial.STOPBITS_ONE,
                       bytesize=serial.SEVENBITS, timeout=1) as ser:
        logging.info('Reading on %s' % stty_port)
        while True:
            line = ser.readline()
            arr = line.decode('ascii').split('\t')
            if len(arr) != 3:
                continue
            send_measure(arr)
def send_measure(arr):
    key = arr[0]
    if key not in measure_keys:
        return False
    if not verify_checksum(arr):
#       logging.warn('checksum failure for %s' % key)
        return False
    value = int(arr[1])
    if 'EAIT' in key:
        EAIT = value
        measures[0]=EAIT
    if 'SINSTI' in key:
        SINSTI = value
        measures[1]=SINSTI
#    print ("measures=", measures)

#        on envoie dans la base que lorsque  EAIT  est non nulle (compteur totalisateur)
    if measures[0] != 0:
        x=requests.get("http://192.168.1.38:8080/json.htm?type=command&param=udevice&idx=20&nvalue=0&svalue="+str(measures[1])+";"+str(measures[0]))
#       print (x.status_code)
    return True

Re: bug acquisition script teleinfo standard

Publié : 15 août 2022, 22:52
par Neutrino
Le plugin inclu prend en charge le mode standard et gère justement le contrôle d'erreur.
Pourquoi ne pas l'utiliser ?
Je ne sais pas ce qu'il vaut, je suis en historique.

Re: bug acquisition script teleinfo standard

Publié : 16 août 2022, 07:49
par knasson
Bonjour,

Merci pour cette reponse, j'ai bien noté que le plugin concerne aussi en principe le mode standard mais ca ne fonctionne pas.
2022-08-16 07:47:50.317 Error: Production_solaire: CRC check failed on Teleinfo line 'EASD03 0000000000 #' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:50.353 Error: Production_solaire: CRC check failed on Teleinfo line 'EAIT' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:50.513 Error: Production_solaire: CRC check failed on Teleinfo line 'RQ ^ ' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:50.663 Error: Production_solaire: CRC check failed on Teleinfo line 'SISTS 00000 F' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:50.727 Error: Production_solaire: CRC check failed on Teleinfo line 'SM' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:50.765 Error: Production_solaire: CRC check failed on Teleinfo line 'SMAXS-1 E220' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:50.864 Error: Production_solaire: CRC check failed on Teleinfo line 'SMAXIN.' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:51.060 Error: Production_solaire: CRC check failed on Teleinfo line 'M MESSAGE <' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:51.108 Error: Production_solaire: CRC check failed on Teleinfo line 'PM 1<' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:51.203 Error: Production_solaire: CRC check failed on Teleinfo line 'RELAIS 000' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:51.235 Error: Production_solaire: CRC check failed on Teleinfo line 'NJOURF+1 00 ' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:51.379 Error: Production_solaire: CRC check failed on Teleinfo line 'PJOURF+1 00008001 NONUTILE ONUTIL' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:51.537 Error: Production_solaire: CRC check failed on Teleinfo line 'VTIC 02 J747 NUR .' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:51.617 Error: Production_solaire: CRC check failed on Teleinfo line 'LTARF INDEX NON CON00000394 _' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:51.778 Error: Production_solaire: CRC check failed on Teleinfo line 'E4 20 #0000000 %' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:52.026 Error: Production_solaire: CRC check failed on Teleinfo line 'EAF09 000000000 * "' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:52.058 Error: Production_solaire: CRC check failed on Teleinfo line 'ASD01 000000394 0' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:52.534 Error: Production_solaire: CRC check failed on Teleinfo line 'SISTS 00000 F' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:52.673 Error: Production_solaire: CRC check failed on Teleinfo line 'SMAXSN E220816064133 00020 05071652 00020 Q' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:52.729 Error: Production_solaire: CRC check failed on Teleinfo line 'SMAXIN.' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:52.867 Error: Production_solaire: CRC check failed on Teleinfo line 'MOY1.=' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:53.073 radiateursalon2kw(Inv): onHeartbeat called
2022-08-16 07:47:53.000 Error: Production_solaire: CRC check failed on Teleinfo line 'MSG1 MESSAGE <527 <' using both modes 1 and 2. Line skipped.
2022-08-16 07:47:53.032 Error: Production_solaire: CRC check failed on Teleinfo line 'NARF' using both modes 1 and 2. Line skipped.

Re: bug acquisition script teleinfo standard

Publié : 16 août 2022, 10:24
par Neutrino
Elle est là la racine de ton problème.
Ta connexion n'est pas propre entre ton linky et ta clé USB.
Domoticz détecte des trames malformées et les droppe, ce que ne fait pas ton script.
Essaye avec une rallonge USB et moins de longueur entre ta clé et le compteur.

Re: bug acquisition script teleinfo standard

Publié : 16 août 2022, 12:45
par knasson
1) le plugin teleinfo marche impeccable en mode historique avec l'interface serie du RASPI /dev/ttyAMA0
2)Pour l mode Standard: la clé USB est connectée sur le RPI donc pas de câble, le câble entre le compteur linky et la clé USB fait 80 cm et le blindage est relié a la terre;
Comment faire mieux?
3) je ne vois pourquoi tu interprètes le log du plugin comme démontrant une mauvaise connexion. Moi j'y vois plutôt une mauvaise séparation des modes 1 et 2.

Re: bug acquisition script teleinfo standard

Publié : 16 août 2022, 17:42
par Neutrino
1)Le mode historique tourne à une vitesse moins élevée, ce qui le rend plus robuste aux interférences.
2)80cm, même blindé, ça peut être trop long.
Pour faire mieux, déporter la clé au plus prêt du linky.
Le Pi est connu pour parasiter pas mal son environement au niveau de l'USB3. Essaie de brancher sur l'usb2 pour commencer.
3)
CRC check failed on Teleinfo line 'VTIC 02 J747 NUR .' using both modes 1 and 2. Line skipped.
ça veut dire que la trame reçue est incorrect. Peu importe le calcul CRC utilisé (mode 1 ou 2) le checksum ne correspond pas à celui que devrait avoir la trame.

Même chose qu'ici : https://easydomoticz.com/forum/viewtopi ... 38#p106238

Re: bug acquisition script teleinfo standard

Publié : 17 août 2022, 18:08
par knasson
Merci des conseils que je suis a la lettre,
j'ai mis mon interface USB au bout d'une rallonge USB, raccourci le câble entre l'interface et le linky (environ 20 cm) le blindage relie a la masse
le lancement du plugin en mode standard me donne toujours les mêmes erreurs de CRC et il ne crée pas les "dispositifs".
je vais quand même vérifier avec mon script pour voir si j'ai diminué ou supprimer les erreurs d'acquisition.
A ma connaissance personne n'utilise le plugin pour le mode "standard", ou du moins si quelqu'un l'utilise et que ca fonctionne je suis très intéressé. Je vais me renseigner sur le forum.
je vous tiens au courant.

knasson

Re: bug acquisition script teleinfo standard

Publié : 24 août 2022, 15:36
par knasson
bonjour,

après éloignement du dongle usb du raspberry, raccourcissement du câble:
- toujours les mêmes erreurs de CRC avec le plugin
- je n'ai plus de problème d'erreurs d'acquisition avec mon script python.
j'ai fait vérifier les valeurs de résistances de mon dongle par son concepteur (Charles hallard) RAS.
les valeurs ont déjà été modifiées par rapport au schéma (en particulier R1=470 Ohms)
j'ai recu un schema qui devrait fonctionner de la part du concepteur du plugin. (R2=470 ohms comme R1 sur mon dongle tindie et R1 =4,7kohms)
j'avoue que je ne sais plus trop quoi faire....