Git Product home page Git Product logo

Comments (7)

vmaubert avatar vmaubert commented on May 26, 2024 1

En effet ça ne crash plus du tout, l’erreur est juste affichée dans les logs.
Je ferme donc cette issue.
Pour information, l’erreur est remontée 36 fois en 3 jours.
Est-ce que je peux vous aider pour corriger le problème (même si la correction me paraît suffisante).

Merci.

from linkytic.

hekmon avatar hekmon commented on May 26, 2024

Bonjour,

Intéressant je n'avais jamais rencontré de linky par SCHLUMBERGER / ACTARIS / ITRON ! L'erreur est étrange, le checksum est sensé être un seul caractère... pas 3 !

Je viens de rajouter une sécurité qui devrait catch cette erreur inattendue et au moins empêcher le crash du thread de la lecture de la connexion série. Elle est disponible dans la version v2.0.2 de l'intégration.

Pouvez-vous la tester et me faire un retour ?

Idéalement des logs en mode debug de l'intégration juste avant un crash aiderait beaucoup. Pour activer les logs debug juste pour l'intégration, modifier votre configuration.yaml comme suit:

logger:
  default: info
  logs:
    custom_components.linkytic: debug

Merci pour votre retour !

from linkytic.

hekmon avatar hekmon commented on May 26, 2024

Avez-vous pu regarder la nouvelle version ?

from linkytic.

vmaubert avatar vmaubert commented on May 26, 2024

Désolé je n’ai pas pris le temps de mettre à jour votre correction (très rapide).
Je viens de le faire à l’instant en activant les logs en mode debug.
Je surveille ça et je reviens vers vous.

Merci pour votre réactivité.

from linkytic.

vmaubert avatar vmaubert commented on May 26, 2024

Bonjour,

après quelques jours l’erreur est apparue plusieurs fois :

Encountered an unexpected checksum (ord() expected a character, but string of length 4 found): b'#\r\x03\x04'
Encountered an unexpected checksum (ord() expected a character, but string of length 3 found): b'K\r\x04'
Encountered an unexpected checksum (ord() expected a character, but string of length 3 found): b'M\r\x04'
Encountered an unexpected checksum (ord() expected a character, but string of length 4 found): b'L\r\x03\x04'
Encountered an unexpected checksum (ord() expected a character, but string of length 3 found): b'7\r\x04'

Voici en détail l’une des ces erreurs : 

2023-06-11 12:42:31.598 DEBUG (LinkyTIC for /dev/ttyUSB0) [custom_components.linkytic.serial_reader] line to parse: b'HCHP 019571184 7\r\x04\x02\n'
2023-06-11 12:42:31.598 ERROR (LinkyTIC for /dev/ttyUSB0) [custom_components.linkytic.serial_reader] Encountered an unexpected checksum (ord() expected a character, but string of length 3 found): b'7\r\x04'
Traceback (most recent call last):
  File "/config/custom_components/linkytic/serial_reader.py", line 333, in _validate_checksum
    if computed_checksum != ord(checksum):
TypeError: ord() expected a character, but string of length 3 found
2023-06-11 12:42:31.600 ERROR (LinkyTIC for /dev/ttyUSB0) [custom_components.linkytic.serial_reader] Failed to validate the checksum of line 'b'HCHP 019571184 7\r\x04'': HCHP -> 019571184 (None) | s1 791 0b1100010111 | truncated 23 0b10111  | computed 55 0b110111 7 | expected 48 0b110000 0

Bon courage et merci encore.

from linkytic.

hekmon avatar hekmon commented on May 26, 2024

Au moins l'intégration ne crash plus ? (ce qui était le vrai problème principal, si vous pouviez confirmer cet état de fait là cela me permettrait de fermer cette issue, nous pourrons tout de même continuer à échanger dedans).

Il ne reste plus qu'à élucider la cause de ses trames invalides. D'après le standard Enedis, le checksum n'est que d'un seul caractère. Seulement la ligne que vous m'avez transmis :

line to parse: b'HCHP 019571184 7\r\x04\x02\n'

Ressemble étrangement à une fin de cycle de transmission (qui est normalement indiqué par \r\x03\x02\n). En imaginant qu'il s'agisse effectivement d'une fin de trame, ces caractères ne sont pas enlevés (car ne correspondant pas exactement au pattern normal d'une fin de trame) par mon code de lecture série TIC et se retrouvent donc "dans" le checksum (qui aurait du seulement être 7 dans la ligne du dessus).

Cela expliquerait les messages d'erreurs obtenus. Maintenant sur le pourquoi les données lues sur le lien série ne sont pas valides... Je pencherai pour la même explication qu'ici : #11 (comment)

Avoir les lignes complètes (line to parse:) aiderait beaucoup a mettre en contexte les différentes erreurs mais je commence à penser qu'elles proviennent de données non valides lu sur le lien série.

Même conclusion que pour le commentaire que j'ai lier plus haut:

  • des informations erronées (abimées lors du transit ?) sont lues depuis le lien série
  • la protection par vérification du checksum s'active et la ligne n'est pas prise en compte car invalide
  • mon intégration remonte une erreur pour indiquer que la ligne n'a pas pu être intégrée car non valide
  • cela peut arriver de temps en temps mais c'est sensé être un évènement rare
  • s'il est persistant, je chercherai du côté du lien série (cables, module TIC, plus d'info dans mon autre commentaire linké ci dessus)

from linkytic.

hekmon avatar hekmon commented on May 26, 2024

Pour information, l’erreur est remontée 36 fois en 3 jours.

C'est effectivement beaucoup.

Est-ce que je peux vous aider pour corriger le problème (même si la correction me paraît suffisante).

Je reste convaincu que le problème se situe en amont, dans ce qui amène l'information série. Quel module utilisez vous, quel type de cablage entre le linky et le module ? Personnellement j'utilise du câblage électrique 2 fils, type lampe, avec une bonne section et un gainage autour de chaque cable + un global autour des deux. Concernant le module que j'utilise, c'est le lixee qui est linké au début du readme.

from linkytic.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.