Page 4 sur 25

Re: Les Informations Linky en temps Réel

Publié : 18 nov. 2019, 09:21
par philou55
il semble que le service a été rétabli, ce lundi 18 NOV, vers 09h10
(Heureusement que ce n'est pas pour un usage industriel)

Re: Les Informations Linky en temps Réel

Publié : 18 nov. 2019, 18:33
par denis_brasseur
Effectivement, fonctionne à nouveau depuis 9h30 ce lundi.

Re: Les Informations Linky en temps Réel

Publié : 22 nov. 2019, 20:45
par philou55
Bon, il y a visiblement des essais, ou un bug qui provoque des messages dans le log Domoticz :
2019-11-22 20:39:17.368 Error: (D2L) 'onHeartbeat' failed 'KeyError'.
2019-11-22 20:39:17.369 Error: (D2L) ----> Line 162 in '/home/pi/domoticz/plugins/LinkyD2L/plugin.py', function onHeartbeat
2019-11-22 20:39:17.369 Error: (D2L) ----> Line 106 in '/home/pi/domoticz/plugins/LinkyD2L/plugin.py', function onHeartbeat

C'est du au fait que l'on n'arrive à récupérer qu'un index (et pas le précédent)
et ça s'en va et ça revient (comme un tout petit rien ==> faut avoir au moins 55 (ans) pour apprécier)
Je n'aime pas bien ça, surtout le vendredi soir
Bon j'attends un peu et j'ouvre un incident chez eeSmart

Re: Les Informations Linky en temps Réel

Publié : 23 nov. 2019, 00:14
par denis_brasseur
denis_brasseur a écrit : 12 oct. 2019, 14:25 Erreur récurrente visible dans les logs, en plus de l'erreur régulière lié à la conversion de la date de dernier index.
J'ai apporté quelques modifcations afin de corriger cette problématique d'erreur :

Code : Tout sélectionner

#
# Author: Philou55 sur base GizMoCuz
#
# Integration Domoticz de l ERL D2L pour le compteur Linky 
#
"""
<plugin key="LinkyD2L" name="D2L pour Linky" author="Philou55" version="1.0.0">
    <description>
        Declarez le D2L avec vos identifiants ConsoSpy et vous obtiendrez
        <ul style="list-style-type:square">
                <li>votre index de relève en temps réel</li>
        </ul>
    </description>
    <params>
         <param field="Username" label="Identifiant" width="100px" required="true" default=""/>
         <param field="Password" label="mot de passe" width="100px" required="true" default=""/>
         <param field="Mode1" label="Scan Delay (mn)" width="20px" required="true" default="1"/>
         <param field="Mode2" label="Debug  Y/N"  width="20px" required="true" default="N"/>
    </params>
</plugin>
"""

import Domoticz
import json
import os
from datetime import datetime
import time

#import requests

class BasePlugin:

    # controle du heartbeat
    flag01 = 0
    nflag01 = 6
    sMins = None 
    path = None
    sUser = None
    sPassword = None
    sDebug = None
    debug = False
    def __init__(self):
        #self.var = 123
        return

    def onStart(self):
        self.flag01=0
        # self.nflag01 = int(Parameters["Frequence"])
        Domoticz.Heartbeat(20)
        self.path=os.getcwd() + "/plugins/LinkyD2L"
        self.sUser=Parameters["Username"]
        self.sPassword=Parameters["Password"]
        self.sMins=Parameters["Mode1"]
        self.nflag01 = int(self.sMins) * 3
        self.sDebug=Parameters["Mode2"].upper()
        if self.sDebug == "Y" : self.debug=True
        Domoticz.Log("START with (" + self.sUser+","+self.sPassword+") scan every "+self.sMins+" mn ("+str(self.nflag01)+ "HB) , Debug="+self.sDebug)

        if(len(Devices)==0): 
           Domoticz.Device(Name="LKY_IndexKWH",  Unit=1, TypeName="Custom", Used=1).Create()
           Domoticz.Device(Name="LKY_Amperes",  Unit=2, TypeName="Current/Ampere", Used=1).Create()
           Domoticz.Device(Name="LKY_Watts",  Unit=3, TypeName="kWh", Used=1).Create()
  
        if self.debug: DumpConfigToLog()

    def onStop(self):
        Domoticz.Log("onStop called")

    def onConnect(self, Connection, Status, Description):
        Domoticz.Log("onConnect called")

    def onMessage(self, Connection, Data):
        Domoticz.Log("onMessage called")

    def onCommand(self, Unit, Command, Level, Hue):
        Domoticz.Log("onCommand called for Unit " + str(Unit) + ": Parameter '" + str(Command) + "', Level: " + str(Level))

    def onNotification(self, Name, Subject, Text, Status, Priority, Sound, ImageFile):
        Domoticz.Log("Notification: " + Name + "," + Subject + "," + Text + "," + Status + "," + str(Priority) + "," + Sound + "," + ImageFile)

    def onDisconnect(self, Connection):
        Domoticz.Log("onDisconnect called")

    def onHeartbeat(self):
        if self.flag01 == 0:
          script=self.path + "/D2L.py"
          res=os.system("python " + script + " " + self.sUser + " "+ self.sPassword)
          if self.debug: Domoticz.Log(script+"Result is "+str(res))

          fichier=(self.path + "/" + "D2L.json")
          if os.path.isfile(fichier):
            with open(fichier) as json_file:
              data = json.load(json_file)
              # print (data)
            # Domoticz.Log(data['Heure']+"="+data['Index'])
            # index recupere par GetIndexBetween
            try:
              ix0=data['Index0'].split("=")
              nValue=float(ix0[1])/1000.
              #Domoticz.Log(str(nValue)+ " Kwh")
              Devices[1].Update(nValue=int(data['Index']),sValue=str(nValue))
            except:
              Domoticz.Log("Erreur calcul Index")
            # intensite du courant
            try:
              sValue2=data['Courant']+";0;0"
              Devices[2].Update(nValue=int(data['Courant']),sValue=sValue2)
              # Domoticz.Log(Devices[2].Name+" : "+sValue2)
              # calcul de la puissance en WH
            except:
              Domoticz.Log("Erreur calcul Courant")
            try:
              ix1=data['Index1'].split("=")
              conso=int(ix0[1]) - int(ix1[1])
              try:
                dat0 = datetime.strptime(ix0[0], '%Y-%m-%dT%H:%M:%S')
              except TypeError:
                dat0 = datetime.fromtimestamp(time.mktime(time.strptime(ix0[0], '%Y-%m-%dT%H:%M:%S')))
              try:
                dat1 = datetime.strptime(ix1[0], '%Y-%m-%dT%H:%M:%S')
              except TypeError:
                dat1 = datetime.fromtimestamp(time.mktime(time.strptime(ix1[0], '%Y-%m-%dT%H:%M:%S')))
              duree=(dat0-dat1).seconds
              if int(duree) != 0 :
                instantwatt=float(conso)*3600/float(duree)
                # Domoticz.Log("Conso:"+str(conso)+" de "+ix1[0]+" a "+ix0[0]+" soit "+ str(duree)+ "==> " +str(instantwatt))
                sValue3=str(instantwatt)+";"+str(nValue*1000)
                Devices[3].Update(nValue=0,sValue=sValue3)
                # Domoticz.Log(Devices[3].Name+" ==> "+sValue3)
            except:
              Domoticz.Log("Erreur calcul Puissance")
          else:
            Domoticz.Log("fichier D2L.txt inexistant")
        
        self.flag01 = self.flag01 + 1
        if self.flag01 >= self.nflag01: self.flag01=0


global _plugin
_plugin = BasePlugin()

def onStart():
    global _plugin
    _plugin.onStart()

def onStop():
    global _plugin
    _plugin.onStop()

def onConnect(Connection, Status, Description):
    global _plugin
    _plugin.onConnect(Connection, Status, Description)

def onMessage(Connection, Data):
    global _plugin
    _plugin.onMessage(Connection, Data)

def onCommand(Unit, Command, Level, Hue):
    global _plugin
    _plugin.onCommand(Unit, Command, Level, Hue)

def onNotification(Name, Subject, Text, Status, Priority, Sound, ImageFile):
    global _plugin
    _plugin.onNotification(Name, Subject, Text, Status, Priority, Sound, ImageFile)

def onDisconnect(Connection):
    global _plugin
    _plugin.onDisconnect(Connection)

def onHeartbeat():
    global _plugin
    _plugin.onHeartbeat()

    # Generic helper functions

def DumpConfigToLog():
    for x in Parameters:
        if Parameters[x] != "":
            Domoticz.Log( "'" + x + "':'" + str(Parameters[x]) + "'")
    Domoticz.Log("Device count: " + str(len(Devices)))
    for x in Devices:
        Domoticz.Log("Device:           " + str(x) + " - " + str(Devices[x]))
        Domoticz.Log("Device ID:       '" + str(Devices[x].ID) + "'")
        Domoticz.Log("Device Name:     '" + Devices[x].Name + "'")
        Domoticz.Log("Device nValue:    " + str(Devices[x].nValue))
        Domoticz.Log("Device sValue:   '" + Devices[x].sValue + "'")
        Domoticz.Log("Device LastLevel: " + str(Devices[x].LastLevel))
    return
L'erreur que tu décris est celle que je rencontrais depuis le début, et pour laquelle j'avais proposé ce correctif afin d'éviter de saturer les logs.

Re: Les Informations Linky en temps Réel

Publié : 18 déc. 2019, 19:22
par xbu05400
Bonjour ,
J'ai reçut mon D2L . J'ai eut des problèmes pour le configurer ( j'ai dut changer de smartphone pour lancer la conf) .
Mais le support D2L est très réactif !!!.

Voila je n'ai pas remis mon raspy Domoticz en route mais j'ai toujours une conf sur W10 :
- l'integration en suivant le github c'est bien passé mais j'ai toutes les mesures qui restent à 0 !!!
Il y a t il quelques choses ç faire sous w10 ?
Merci pour plugins
Xavier

Re: Les Informations Linky en temps Réel

Publié : 19 déc. 2019, 20:15
par xbu05400
Bonsoir ,
J'ai ré installé Domoticz sur un Raspberry aujourd'hui et mis le plugin D2L ( par transfert de fichiers) .
Toujours le même problème : valeurs à 0 .
Par contre dans les logs des 2 domotcz : fichier D2L.txt inexistant !!!!

Re: Les Informations Linky en temps Réel

Publié : 24 déc. 2019, 05:27
par denis_brasseur
xbu05400 a écrit : 19 déc. 2019, 20:15 Bonsoir ,
J'ai ré installé Domoticz sur un Raspberry aujourd'hui et mis le plugin D2L ( par transfert de fichiers) .
Toujours le même problème : valeurs à 0 .
Par contre dans les logs des 2 domotcz : fichier D2L.txt inexistant !!!!
Et quoi d'autre dans les logs, après avoir activé évidement les logs du plugin ?

Re: Les Informations Linky en temps Réel

Publié : 29 déc. 2019, 14:19
par xbu05400
Bonjour et merci de la réponse , je suis en congé et donc je n'ai put répondre plus rapidement .
En fait ce sont des problèmes d'installation Python. Actuellement cela fonctionne sur le windows ( pas acces au PI) sauf qu'il me donne juste l'index de bon , l'ampérage et la puissance ne correspondent pas .....je verrais plus tard ...
Merci

Re: Les Informations Linky en temps Réel

Publié : 25 févr. 2020, 21:14
par epierre
toujours pas d'amperes et plus de données depuis le 21 février, et vous ?

Re: Les Informations Linky en temps Réel

Publié : 26 févr. 2020, 05:18
par denis_brasseur
epierre a écrit : 25 févr. 2020, 21:14 toujours pas d'amperes et plus de données depuis le 21 février, et vous ?
Via suivi.consospy.fr, mes données remontent, et idem via le plugin, aucun problème de remonté de l'intensité et de la puissance.