bug acquisition script teleinfo standard

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Répondre
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

bug acquisition script teleinfo standard

Message 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
Pièces jointes
raspi2.jpg
raspi2.jpg (247.69 Kio) Consulté 1525 fois
raspi1.jpg
raspi1.jpg (248.13 Kio) Consulté 1525 fois
higgins91
Messages : 668
Inscription : 17 nov. 2016, 11:06

Re: bug acquisition script teleinfo standard

Message 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.
Dz version : 2023.2
Rpi 4 avec dongle téléinfo, RFXCom, sondes 1-wire et GPIO
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: bug acquisition script teleinfo standard

Message 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
Dernière modification par Keros le 15 août 2022, 15:54, modifié 2 fois.
Raison : Citation supprimée. Merci de ne pas citer le message précédent lors d'une réponse directe. Modification des balise quote en code
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: bug acquisition script teleinfo standard

Message 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.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: bug acquisition script teleinfo standard

Message 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.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: bug acquisition script teleinfo standard

Message 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.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: bug acquisition script teleinfo standard

Message 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.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: bug acquisition script teleinfo standard

Message 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
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: bug acquisition script teleinfo standard

Message 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
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: bug acquisition script teleinfo standard

Message 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....
Pièces jointes
schma-final-tlinfo-transistor-fet.jpg
schma-final-tlinfo-transistor-fet.jpg (36.1 Kio) Consulté 1344 fois
Capture d’écran 2022-08-24 152133.jpg
Capture d’écran 2022-08-24 152133.jpg (42.16 Kio) Consulté 1344 fois
microusb.jpeg
microusb.jpeg (2.05 Mio) Consulté 1344 fois
Répondre