Forum GraphWeather

Forum d'aide GraphWeather
Nous sommes actuellement le Dim Avr 28, 2024 12:45 am

Le fuseau horaire est UTC+1 heure




Publier un nouveau sujet Répondre au sujet  [ 21 message(s) ]  Aller vers la page Précédent  1, 2
Auteur Message
MessagePublié: Mar Nov 04, 2014 1:32 am 
Hors-ligne
Membre
Avatar de l’utilisateur

Inscription : Dim Jan 17, 2010 7:16 pm
Message(s) : 2624
Localisation : 1555 Villarzel - Switzerland
Salut,

Joli travail, pour info tu récupères avec quoi ta conso EDF ?

A+

_________________
_________________________________________________________________________________________________________
Station Vantage Pro2+ avec station agricole - Weatherlink 6.0.3 - GraphWeather 3.0.15b - Cumulus 1.9.4 - Windows W10 ultimate x64
http://www.boock.ch/meteo-villarzel.php
Image


Haut
 Profil  
Répondre en citant  
MessagePublié: Mar Nov 04, 2014 6:12 pm 
Hors-ligne
Membre

Inscription : Mer Sep 24, 2014 8:50 pm
Message(s) : 170
Localisation : Valreas 84600
bonjour
pour le soft
-pour le programme une petite routine qui lit le port série en visual basic .
-pour les graph: la librairie RRDTOOL
-pour les pages web et les calculs de cout jour/mensuel, pareil une petite routine en VB6

sinon sur le web il y a plein de routine de récupération de la trame teleinfo en:
Pyton
C ou C++ .... et certainement en d'autre language
pour ceux qui sont a l'aise avec SQL un exemple de table:
https://code.google.com/p/teleinfosticksystem/source/browse/trunk/sql/tbTeleinfo.sql

pour ceux qui sont a l'aise avec Highcharts
http://penhard.anthony.free.fr/?p=283

la trame telinfo est simple bien entendu cela fonctionne avec les compteurs electronique et sera compatible avec le Linky


Détail des trames téléinformation
Citer:
'Les infos sont transmises cycliquement sur la ligne, modulées en ASK à 50kHz,
'ce qui correspond en gros à : soit aucune tension présente, soit un signal à 50kHz de 10V CC environ.
'Le 0V équivaut à un 1 logique, le 50kHz à un 0 logique.

'Pour être exploitées, ces infos doivent être démodulées pour être aux formats TTL ou RS232.
'C 'est donc une liaison série qui délivre des caractères ASCII suivant le protocole suivant :
'
' * 1200 bits/s
' * 7 bits/caractères
' * parité paire
' * 1 bit de stop
'Un groupe de messages complet constitue une trame qui débute par le caractère STX (code ASCII = 02), et se termine par ETX (03).
'
'Chaque message composant la trame comprend :
'
'LF (0x0A) Etiquette (4 à 8 caractères) SP (0x20) Données (1 à 12 caractères) SP (0x20) CC (caractère de contrôle) CR (0x0D)
'
'
'Ces différents messages donnent les indications suivantes en fonction de l'abonnement souscrit :

' * n° d'identification du compteur, étiquette: ADCO (12 caractères)
' * option tarifaire (type d'abonnement) : OPTARIF (4 car.)
' * intensité souscrite : ISOUSC ( 2 car. unité = ampères)
' * index si option = base : BASE ( 9 car. unité = Wh)
' * index heures creuses si option = heures creuses : HCHC ( 9 car. unité = Wh)
' * index heures pleines si option = heures creuses : HCHP ( 9 car. unité = Wh)
' * index heures normales si option = EJP : EJP HN ( 9 car. unité = Wh)
' * index heures de pointe mobile si option = EJP : EJP HPM ( 9 car. unité = Wh)
' * index heures creuses jours bleus si option = tempo : BBR HC JB ( 9 car. unité = Wh)
' * index heures pleines jours bleus si option = tempo : BBR HP JB ( 9 car. unité = Wh)
' * index heures creuses jours blancs si option = tempo : BBR HC JW ( 9 car. unité = Wh)
' * index heures pleines jours blancs si option = tempo : BBR HP JW ( 9 car. unité = Wh)
' * index heures creuses jours rouges si option = tempo : BBR HC JR ( 9 car. unité = Wh)
' * index heures pleines jours rouges si option = tempo : BBR HP JR ( 9 car. unité = Wh)
' * préavis EJP si option = EJP : PEJP ( 2 car.) 30mn avant période EJP
' * période tarifaire en cours : PTEC ( 4 car.)
' * couleur du lendemain si option = tempo : DEMAIN
' * intensité instantanée : IINST ( 3 car. unité = ampères)
' * avertissement de dépassement de puissance souscrite : ADPS ( 3 car. unité = ampères) (message émis uniquement en cas de dépassement effectif, dans ce cas il est immédiat)
' * intensité maximale : IMAX ( 3 car. unité = ampères)
' * Puissance apparente : PAPP ( 5 car. unité = Volt.ampères)
' * groupe horaire si option = heures creuses ou tempo : HHPHC (1 car.)
' * mot d'état (autocontrôle) : MOTDETAT (6 car.)
'
'Nota : le compteur peut être configuré en mode "veille" et n'émettre que l'étiquette ADCO. Pour avoir accès au jeu d'informations complet, il suffit de le faire paramétrer en conséquent par EDF.


perso j'utilise un code a l'aide d'un OCX mais sur le net on trouve facilement comment decoder la trame.
exemple en visual basic:
on écoute le port:
Code :
Private Static Sub LiaisonTI_OnComm()
Select Case LiaisonTI.CommEvent
    'liste des erreurs possibles
    Case comEventBreak          ' On a reçu un signal d’interruption (Break)
    Case comEventCDTO           ' Timeout de la porteuse
    Case comEventCTSTO          ' Timeout du signal CTS (Clear To Send)
    Case comEventDSRTO          ' Timeout du signal de réception
    Case comEventFrame          ' Erreur de trame
    Case comEventOverrun        ' Des données ont été perdues
    Case comEventRxOver         ' Tampon de réception saturé
    Case comEventRxParity       ' Erreur de parité
    Case comEventTxFull         ' Tampon d’envoi saturé
    Case comEventDCB            ' Erreur de réception DCB (jamais vu)

    ' liste des événements possibles qui sont, eux, normaux

    Case comEvCD                ' Changement dans la broche CD (porteuse)
    Case comEvCTS               ' Changement dans broche CTS
    Case comEvDSR               ' Changement dans broche DSR (réception)
    Case comEvRing              ' Changement dans broche RING (sonnerie)
    Case comEvReceive           ' Si on reçoit des données
        Tampon = LiaisonTI.Input
        Pile = Pile + Tampon
        i = InStr(Pile, Chr(2))
        If i > 0 Then
            j = InStr(i + 1, Pile, Chr(3))
            If j > 0 Then
                LiaisonTI.PortOpen = False
                Timer1.Enabled = False
                Pile = Mid(Pile, i, j - i + 1)
                Call TraiteTampon
                Pile = ""
            End If
        End If
    Case comEvSend              ' Il y a des caractères à envoyer
    Case comEvEOF               ' On a reçu le caractère EOF
End Select
End Sub


puis on traite. Dans l'exemple ci desssous DList est une zone d'affichage simple
et edf.AddNew permet d'alimenter une base access ne sont traité dans cet exemple que les HC/HP


Code :
'-----------------------------------------------
'   décodage de la trame de téléinformation
'   et stockage dans la base
'-----------------------------------------------
Private Sub TraiteTampon()
Dim r As Boolean, tr As Boolean
Dim a As Byte
        If Asc(Right(Pile, 1)) <> 3 Then
            GoTo Exote
        End If
        If Asc(Left(Pile, 1)) <> 2 Then
            GoTo Exote
        End If
    DList = "": tr = False: message = ""
    IndexDec = 1
    Do While IndexDec < Len(Pile) + 1
        a = Asc(Mid(Pile, IndexDec, 1))
        IndexDec = IndexDec + 1
        If a < 32 Then
            Select Case a
            Case 2 'Début trame
                edf.AddNew
                edf("Date") = Now
                DList = DList + "---- Début trame --" + Format(Now, "dd-mm-yy hh:mm:ss") + "-----" + vbCrLf
            Case 3 'Fin trame
                DList = DList + "---- Fin trame ------"
                edf.Update
                Exit Do
            Case 10 ' Début message
                message = ""
            Case 13 'Fin message
                i = InStr(message, " ")
                If i > 0 Then
                    étiquette = Left(message, i - 1)
                    d$ = Right(message, Len(message) - i)
                    Select Case étiquette
                    Case "ADCO"     'Identification compteur 12 car.
                        idc$ = Left(d$, 12)
                        edf("n° compteur") = idc$
                        DList = DList + "Identification compteur : " + idc$ + vbCrLf
                    Case "OPTARIF"  'option tarifaire 4 car.
                        idc$ = Left(d$, 4)
                        edf("tarif") = idc$
                        DList = DList + "Option tarifaire : " + idc$ + vbCrLf
                    Case "ISOUSC"   'intensité souscrite 2 car.
                        idc$ = Left(d$, 2)
                        DList = DList + "Intensité souscrite : " + idc$ + vbCrLf
                        edf("Intensité souscrite") = CInt(idc$)
                    Case "HCHC"     'Heures creuses 9 car.
                        idc$ = Left(d$, 9)
                        edf("Heures creuses") = CLng(idc$)
                        DList = DList + "Compteur heures creuses : " + idc$ + vbCrLf
                    Case "HCHP"     'Heures pleines 9 car.
                        idc$ = Left(d$, 9)
                        edf("Heures pleines") = CLng(idc$)
                        DList = DList + "Compteur heures pleines : " + idc$ + vbCrLf
                    Case "PTEC"     'Tarif en cours 4 car.
                        idc$ = Left(d$, 4)
                        edf("Tarif en cours") = idc$
                        DList = DList + "Tarif en cours : " + idc$ + vbCrLf
                    Case "IINST"    'Intensité instantanée 3 car.
                        idc$ = Left(d$, 3)
                        edf("Intensité instantanée") = CInt(idc$)
                        DList = DList + "Intensité instantanée : " + idc$ + vbCrLf
                    Case "IMAX"     'Intensité maximale 3 car.
                        idc$ = Left(d$, 3)
                        DList = DList + "Intensité maximale : " + idc$ + vbCrLf
                    Case "PAPP"     'Puissance apparente 5 car.
                        idc$ = Left(d$, 5)
                        edf("Puissance apparente") = CInt(idc$)
                        DList = DList + "Puissance apparente : " + idc$ + vbCrLf
                    Case "HHPHC"    'Groupe horaire 1 car.
                        idc$ = Left(d$, 1)
                        DList = DList + "Groupe horaire: " + idc$ + vbCrLf
                    Case "MOTDETAT" 'Mot d'état autocontrôle 6 car.
                    Case Else
                    End Select
                End If
            Case Else
            End Select
        Else
            message = message + Chr(a)
        End If
TrouveDébutTrame:
    DoEvents
Loop
Exote:
Timer1.Enabled = True
End Sub


par contre certain compteurs ne donne pas la puissance apparente dans la trame, de toutes façon c'est trop peu precis, pour faire le graph et pour calculer la consommation il faut se servir des index:
nouvelle lecture moins ancienne lecture
ou plus concrètement:

Code :
Initialisation des variables:
date_old = lecture de la date courante en millisecondes
compteur_old = lecture du compteur

Traitement déclenché en principe toutes les minutes, mais cela peut être moins:
date_new = lecture de la date courante en millisecondes
secondes_entre_deux_mesures = (date_new - date_old)/1000;
compteur_new = lecture du compteur
kWh_consommés = ((compteur_new - compteur_old) / secondes_entre_deux_mesures) * 3600 / 1000;
compteur_old = compteur_new;
date_old = date_new;



Si j'ai un peu renseigné je suis très content de pouvoir rendre un peu de ce que l'on me donne ici.
Alain

_________________
station Orégon WMR 200
logiciel Xnet version 2012-03-17a et Graphweather V 3.0.15
http://mapetitemeteo.esy.es/


Dernière édition par juju le Mar Nov 04, 2014 6:21 pm, édité 1 fois.

Haut
 Profil  
Répondre en citant  
MessagePublié: Mar Nov 04, 2014 6:15 pm 
Hors-ligne
Membre

Inscription : Mer Sep 24, 2014 8:50 pm
Message(s) : 170
Localisation : Valreas 84600
suite

pour le hard

le plus simple est l'interface utilisant un optocoupleur"alternatif". cette interface fonctionne quasiment avec tout: PC, RASPI, ARDUINO juste a adapter la résistance si RASPI.
elle a été mis en ligne sur le site: Chaleur Terre, site dédié a la pompe a chaleur
http://www.chaleurterre.com/forum/viewtopic.php?f=49&t=13232

apres pour ceux qui ont autant de mal avec le fer a souder que moi avec le PHP il existe des interfaces toutes faites ayant la forme d'une clé USB, je dit bien interface et non data log.

sinon dans mes favoris un site très complet avec des information sur la teleinfo et le 1wire
je me permet de mettre ces lien car ce site ne vend rien, le bouton acheter dirige vers les endroits ou l'on peut trouver le maternel ( j’espère ne pas transgresser la charte)
http://itow.fr/site/
http://itow.fr/site/compteurs.html
http://itow.fr/site/temperature.html
http://itow.fr/itow/index.php?r=tabDeBord&u=1266526522
[b]

_________________
station Orégon WMR 200
logiciel Xnet version 2012-03-17a et Graphweather V 3.0.15
http://mapetitemeteo.esy.es/


Haut
 Profil  
Répondre en citant  
MessagePublié: Mer Nov 05, 2014 8:15 am 
Hors-ligne
Membre
Avatar de l’utilisateur

Inscription : Mar Août 22, 2006 8:38 am
Message(s) : 3145
Localisation : 34410 Sérignan - Languedoc
juju a écrit:
Cela me permettra, si ça fonctionne de regrouper toutes mes informations sur le même site.en attendant de comprendre les bases de données, et MYSQL

Bonjour Alain,
pour info, j'ai écrit une petite explication à ce sujet viewtopic.php?f=2&t=611 C'est très succinct, mais ça donne les grandes lignes pour aiguiser l'appétit.
Par contre, je suis plutôt intéressé par le contrôle de consommation électrique, j'utilise depuis 2011 une console CC128 (EnviR ou barowatt) et je suis en train de réécrire son programme de contrôle pour exploiter toutes les sondes à la demande de Pierre-André (ce programme alimente naturellement une table dans ma base de données !
Si avec ta méthode, je peux suivre mes 3 compteurs (consommation, Production injection et non consommation), ce ne sera que du bonheur !

Tu peux me contacter sur le sujet par MP si tu le souhaites

Cdlt

Jean


Haut
 Profil  
Répondre en citant  
MessagePublié: Mer Nov 05, 2014 9:30 pm 
Hors-ligne
Membre

Inscription : Mer Sep 24, 2014 8:50 pm
Message(s) : 170
Localisation : Valreas 84600
bonjour
est ce que l'on parle de la même chose?
le but serait de communiquer avec trois compteur EDF?
si c'est le cas c'est simplissime.
après le traitement des données chacun fait sa sauce selon le besoin :wink:
ce qu'il faut savoir c'est que EDF se sert du réseaux pour porter ses informations:(en superposition) donc il suffit juste de décoder ces trames.
en fait sur un compteur electronique (pas les anciens a disque) il y a tout ce que tu peut lire sur l'afficheur de transmis deux fois:

-une fois vers EDF c'est la telrelevée c'est sous le cache en haut plombé, a ne pas ouvrir car il y a un détecteur d’effraction.

- une seconde fois sous le cache du bas tu trouve selon les modèles quatre ou six bornes.
-deux servent a transmettre l'information nuit/jour
-deux servent a asservir des programmes de gestions d'eau chaude utile dans le cas de l'abonnement tempo
-et deux envoie les informations au client (les même informations que la telerelevée)
ces ces deux bornes qui nous intéresses, les information sont envoyée en boucle. Il suffit de les décoder après comme je disais plus haut on fait ce que l'on veut avec.

la seule chose qui est nécessaire c'est une interface compteur EDF/PC
la soit on a l’âme bricoleur et on la réalise, soit plusieurs modèles sont en vente quelques euros, franchement un prix ridicule.
L'interface la plus connu en vente est
http://vimeo.com/55713254

perso j'ai celle la a droite vendue 30,10€ (la noire avec les fils verts)
https://store.adtek.fr/9-teleinfo

- tout ça est très utilisé voir le forum photovoltaique

en règle générale on fait le monitoring de :
--son compteur générale (1)
--son sous compteur chauffage(2°
--de ce fait on trouve un compteur (3) qui est virtuel et qui représente la consommation de la maison ( compteur générale moins sous compteur chauffage égale consommation du ménage.
-- et puis ceux qui produisent font aussi leur courbes et statistique de production

le cas le plus bête c'est quand on est équipé d'un ancien compteur mécanique, la la vrai solution consiste a placer a l'entrée du tableau d'abonné un sous compteur electronique. (c'est chez soit on a le droit c'est vu comme un compteur divisionnaire)
on peut placer autant de compteur electronique qu'on le veut rien n'est perturbé chaque compteur lit les trames, il faut juste programmer son compteur selon son type d'abonnement.
les compteurs se vendent une trentaine d'euros sur Ebay Attention les modèle ayant le sigle ST dans leur nom de modèle sont des simples tarif donc sans télé-information client !

le manuel de programmation du compteur est ici
http://www.chaleurterre.com/forum/viewtopic.php?f=49&t=10209
mais la programmation suit toujours la même séquence quel que soit le type.

pour info je fait le monitoring de ma conso maison, de ma pompe a chaleur. cela me permet de suivre en temps reel ma consommation. Ridicule diron certain, ben non un exemple

mon fils est passé chez moi il s'est acheté des bieres les a mis au frigo et pour les refoidir plus vite a mis le frigo a fond. sur les graphiques j'ai remarqué un temps de fonctionnement anormal du frigo, il aurait fallut un sacré bout de temps avant que l'on réagisse, mais plus serieusement la gestion du chauffage: le suivit des consommation permet de se rendre compte en temps reel que quelque chose ne va pas.
cela semble ridicule ais les taris entre 2008 et 2014 on augmenté de 27% pour le tari de base
58% pour les heures creuses et 86% pour le bleu nuit tempo!!!!!!

http://itow.fr/Forum/index.php?action=dlattach;topic=862.0;attach=1336;image

c'est passé inaperçue mais au Premier novembre on vient de prendre une nouvelle augmentation
http://itow.fr/Forum/index.php/topic,862.msg5774/topicseen.html#msg5774

voila je suis a ta disposition et a celle de ceux qui voudrais des informations si il le faut on peut ouvrir un fil.

perso j'ai réussit a faire fonctionner GW avec le CSV de ma station, puis j'ai lancé une deuxième instance du programme avec un csv perso issue de la téléinfo GW fait bien mes courbes, mais mon csv doit être un peut tordu il ne le garde pas toujours, c'est pour cela que j'integre mon image. mon but final étant de faire une base de données et Hichart..... mais je n'y connait rien en php ni en sql tout ça c'est des gros mot pour moi, mais je suis a la retraite je vais lire le site du zéro et avec votre aide l'année prochaine j’espère refondre tout en un.

sinon comme tu connait le php il y a plein de code sur le net
https://github.com/BmdOnline/Teleinfo

au plaisir Alain

_________________
station Orégon WMR 200
logiciel Xnet version 2012-03-17a et Graphweather V 3.0.15
http://mapetitemeteo.esy.es/


Dernière édition par juju le Mer Nov 05, 2014 10:17 pm, édité 1 fois.

Haut
 Profil  
Répondre en citant  
MessagePublié: Mer Nov 05, 2014 9:33 pm 
Hors-ligne
Membre

Inscription : Mer Sep 24, 2014 8:50 pm
Message(s) : 170
Localisation : Valreas 84600
oups
j'ai oublié de te donner un exemple de trame teleinfo.
voila ce que tu reçoit en boucle de ton compteur:
Citer:
ADCO 02092xxxxxx @
OPTARIF HC.. <
ISOUSC 45 ?
HCHC 010956910 %
HCHP 016779643 >
PTEC HP..
IINST 021 Z
IMAX 047 J
PAPP 04860 3
HHPHC A ,
MOTDETAT 000000 B


PAPP 04860 3 ( la puissance apparente en VA que tu voit sur ton afficheur n'est pas toujours envoyée, d’où le calcul sur les index que je donnait en exemple plus haut)
cordialement

_________________
station Orégon WMR 200
logiciel Xnet version 2012-03-17a et Graphweather V 3.0.15
http://mapetitemeteo.esy.es/


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 21 message(s) ]  Aller vers la page Précédent  1, 2

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 66 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers :  
POWERED_BY
Traduction et support en françaisHébergement de site