SebastienReuiller / teleinfo-linky-with-raspberry

Surveiller sa consommation électrique en temps réel avec un compteur Linky et un Raspberry
Apache License 2.0
83 stars 29 forks source link

incompatibilité avec la TIC Standarf #2

Open dusscloud opened 5 years ago

dusscloud commented 5 years ago

Le script ne fonctionne qu'avec la TIC dite "Historique". Le compteur Linky permet de passer en TIC " Standard" (plus verbeux, plus rapide, etc.) Cependant le script ne permet pas de gérer les données dans ce cas.

Decription du mode standard : https://www.enedis.fr/sites/default/files/Enedis-NOI-CPT_54E.pdf

NathanRDN commented 4 years ago

Hello, je sais pas si c'est trop tard mais j'ai adapté le code afin de le rendre fonctionnel avec la TIC Standard

paulolesgaz commented 2 years ago

Bonjour, Je suis intéressé par le code pour le rendre fonctionnel avec la TIC standard.

ervalade commented 2 years ago

Bonjour, Je suis intéressé par le code pour le rendre fonctionnel avec la TIC standard.

NathanRDN commented 2 years ago

Hello, pour faire simple voici l'idée. C'est en python

import serial, time
import mysql.connector #import de mysql.conncetor - pip3 install mysql-connector-python - pip3 install mysqlclient
import datetime
import logging

int_measure_keys = {'URMS2', 'HCHC', 'IRMS2', 'SINSTS', 'PREF', 'SINSTS2', 'HCHP', 'PTEC'}

ser = serial.Serial(
    port="/dev/ttyAMA0",   
    baudrate=1200,        
    parity=serial.PARITY_NONE,          
    stopbits=serial.STOPBITS_ONE,      
    bytesize=serial.SEVENBITS,
    #xonxoff=True,
    timeout=1
    )

print("START")

i = 0
while (i < 1):
    try:
    logging.info("Teleinfo is reading on /dev/ttyAMA0..")
    current_line = ser.readline()
    char_puissance = "SINSTS"
    current_date = datetime.datetime.now()
    current_date = str(current_date.replace(second=0, microsecond=0))

    if(b'SINSTS\t' in current_line):
        current_line = str(current_line) 
        pos1 = current_line.find('SINSTS')
        pos1 = pos1+len(char_puissance)+2
        pos2 = pos1+5

        value_puiss = current_line[pos1:pos2]
        print("Current line : ",current_line)

        if(value_puiss.isdigit()):
            value_puiss = int(current_line[pos1:pos2])
            print("Puissance inst : ",value_puiss, "VA, pos1 : ",pos1, ", pos2 : ",pos2)

        print("Nouvelle boucle")
        #time.sleep(delay+compteur)
Charlymd commented 2 years ago

Bonjour,

Le travail à déjà été réalisé par la communauté :-) Plusieurs fork prennent en charge le mode standard dont le mien : https://github.com/Charlymd/teleinfo-linky-with-raspberry

NathanRDN commented 2 years ago

Bah voilà. Je me disais que depuis le temps quelqu'un avait du le faire ^^