Possédant un petit PC serveur à notre domicile, il semblait intéressant de le raccorder aux onduleurs afin de télécharger les données,
pour les stocker et analyser jour par jour. Pour cela, Siemens avait développé un logiciel Sitop Log (Sous windows XP)
Le PC était relié à l'onduleur Maitre par un cable RS232.
Le logiciel Sitop Log n'avait pas été développé pour une automatisation des transferts. Il fallait lancer manuellement les connexions et les transferts
Après 7 ou 8 mois, nous n'avons plus utilisé cette solution trop contraignante. Je relevai mensuellement les compteurs en fin de mois.
Le logiciel permettait de réaliser des graphes journaliers etc...
En janvier 2016, avril 2006, nous avons relié un Raspberry PI2 au compteur EDF à l'aide d'un cordon USB Téléinfo de chez GCE-Electronics.
Sur ce PI est installé la solution Domoticz (sous Rasbian) qui a été configurée pour enregistrer les valeurs de production toutes les 5 mn.
Domoticz permet de conserver et d'analyser toutes ces données toutes les 2 minutes et avec des cumuls à l'heure, jours, mois etc...
Matériel: Raspberry PI2, Module Téléinfo-USB. Logiciel: Domoticz.
En avril 2019, suite au remplacement des compteurs Photovoltaïques par un compteur Linky, nous avons du racheté un nouveau module Téléinfo USB car la version de l'ancien n'était plus compatible.
Le compteur Linky Photovoltaïque remplace les deux anciens compteurs. Ce nouveau compteur Linky a été configuré en mode Standard (et non mode Historique qui est compatible avec les anciens).
Le mode Standard est plus intéressant car il permet de télécharger beaucoup plus d'informations.
Mais en 2019, il n'y avait pas dans Domoticz de "device" Linky standard (uniquement mode historique), nous avons du développer une interface Linky standard - Domoticz en Python.
Les informations du Linky sont enregistrées dans Domoticz comme par le passé.
Doc du Linky utilisées pour trouver la signification des codes registres
Exemple de programme en Python pour tester la collecte des informations du Compteur Linky configuré en mode Standard et en utilisant le module Téléinfo de GCE-Electronics
C'est une base similaire qui me sert à mettre à jour les compteurs conrespondants de DomoticZ, pour un suivi possible toutes les 5 minutes
#!/usr/bin/env python # coding: utf8 ### PROGRAMME DES TESTS POUR CHARGER DES VALEURS DU COMPTEUR LINKY MODE STANDARD import serial, time, json, urllib2, requests from requests.auth import HTTPBasicAuth from datetime import datetime xSerialPort='/dev/ttyUSB0' # Port xSerialSpeed=9600 # vitesse en bauds xSerialTimeout=2 # Time out en s None 0 xxx xSeurveurHTTP = "http://10.0.0.16:8080" # Adresse PI2-ENERGIE HTTP ### Fonction Mise a jour des valeurs texte dans Domotique par index gValeur="0" def UpdTexte(gIndex , gValeur): # Recherche valeur avant mise a jour getdta_domoticz = xSeurveurHTTP +"/json.htm?type=devices&rid=" + str(gIndex) getreq = requests.get(getdta_domoticz,auth=HTTPBasicAuth("","")) status = getreq.status_code if status == 200: # si OK = 200 xListeVal=getreq.json() terme_recherche = 'Data' for i, v in enumerate(xListeVal["result"]): xVal = xListeVal["result"][i][terme_recherche] # print(xVal) # print(type(xVal)) # print(type(str(xVal))) # print(gValeur) # print(str(gValeur)) # if gValeur.strip() != str(xVal).strip() : # print("dif") if str(xVal).strip() != gValeur.strip() : # Si different alors modif upddta_rotex = xSeurveurHTTP +"/json.htm?type=command¶m=udevice&idx=" + str(gIndex) + "&nvalue=0&svalue=" + str(gValeur) req = urllib2.Request(upddta_rotex) result = urllib2.urlopen(req) LinkyPVPort = serial.Serial( xSerialPort, baudrate=xSerialSpeed, parity=serial.PARITY_EVEN, stopbits=serial.STOPBITS_ONE, bytesize=serial.SEVENBITS, timeout=xSerialTimeout ) xTab = [] for i in range(85): xTab.append(LinkyPVPort.readline(17)) LinkyPVPort.close() xValeurEAIT = "0" xValeurERQ1 = "0" xValeurSINSTI = "0" for i in range(85): if len(xTab[i]) > 0: # Test si longueur valide # Energie active totale injectee if xTab[i][:4] == "EAIT": print(xTab[i]) xValeurEAIT = xTab[i][5:14] print(xValeurEAIT) # Energie reactive Q1 totale if xTab[i][:4] == "ERQ1": print(xTab[i]) xValeurERQ1 = xTab[i][5:14] print(xValeurERQ1) # Index Energie active index 1 # A revoir if xTab[i][:6] == "EASF01": print(xTab[i]) xValeur = xTab[i][7:16] # print(xValeur) # Index Energie active index 1 Distribution # A Revoir if xTab[i][:6] == "EASD01": print(xTab[i]) xValeur = xTab[i][7:16] # print(xValeur) # Index Energie active index 1 # A revoir if xTab[i][:6] == "SINSTI": print(xTab[i]) xValeurSINSTI = xTab[i][7:12] print(xValeurSINSTI) UpdTexte("151" , xValeurEAIT + ";0;0;0;" +xValeurSINSTI + ";0")
Exemples de suivi dans Domoticz