Bonjour à tous,
voici un nouveau mini projet qui me trotte dans la tête depuis un bon moment. J’utilise Domoticz avec un Rasberry B+ et RFXCOM depuis plusieurs mois.
Je récupères les trames téléinfo de mon compteur EDF grâce à un montage avec un optocoupleur. (vous trouverez les explications détaillées du montage sur le site magdiblog.fr par exemple).
Tout fonctionne très bien et je récupère de belles courbes sur Domoticz :
Comme je souhaiterais me passer de la liaison filaire entre mon compteur EDF et mon Raspberry je souhaiterais pouvoir transmettre les informations relevées sur mon compteur à mon Rasberry via le RFXCOM et donc par onde radio 443Mhz.
Pour se faire je vais utiliser un Arduino nano qui permettra de lire les trames Téléinfo et de les transmettre via ondes Radio grâce à un émetteur RF 443Mhz.
Matériel :
- Rasberry B+ avec Domoticz (39€)
- Module USB RFXCOM (110€)
- Adruino Nano USB (2.5€)
- Optocoupleur SFH620A-x (ref exacte SFH620A-3) (4,20€)
- Module RF 433Mhz (1€)
- Plusieurs résistances (~1€)
Donc si comme moi vous avez déjà un Raspberry, le module RFXcom et le montage optocoupleur vous n’aurez pas plus de 5€ à rajouter pour avoir le module téléinfo RF.
Etape 1 : Montage électronique partie téléinfo
Comme d’habitude, je ne vais pas réinventer le roue, vous trouvez sur internet de multiples schémas qui expliquent le montage avec optocoupleur nécessaire pour récupérer les trames téléinfo de votre compteur EDF.
Je vous conseille par exemple :
- http://www.worldofgz.com/electronique/recuperer-la-teleinformation-erdf-sur-larduino/
- http://www.magdiblog.fr/gpio/teleinfo-edf-suivi-conso-de-votre-compteur-electrique/
- http://lhuet.github.io/blog/2014/01/montage-teleinfo.html
Pour ma part j’utilise le PIN 8 pour réceptionner les données téleinfo.
Etape 2 : Montage électronique partie émeteur RF
Très simple, dans mon cas j’utilise le PIN 3, donc Data sur PIN 3, GND sur GND et +VCC sur 5v de la carte Arduino.
A ce stade vous devez avoir votre Arduino Nano avec l’information de téléinfo qui arrive sur le PIN 8 et le module RF 433Mhz qui émet via le PIN 3.
Etape 3 : Code pour Arduino
j’ai fais pas mal de recherche. Je suis loin d’être capable d’écrire un code complet aussi complexe. Alors j’ai trouvé par exemple sur le site worldofgz.com [REF] un code qui pourrait bien m’aider. Malheureusement il utilise 2 ports serials alors que le Adruino Nano n’en possède qu’un.
Le code que l’on trouve sur le site www.domotique-info.fr [REF] traite très bien le signal téléinfo mais il manque la partie qui envoie l’information sur l’émeteur RF.
J’ai finalement trouvé quelque chose qui correspond exactement à mon besoin, un code qui va lire les trames téléinfo puis les envoyer vers RFXcom en simulant un OWL180. C’est un peux le même principe que ce que j’ai déjà fait pour les sondes thermomètres [Voir : Simulation sonde Oregon avec Atmega ).
Ce code, disponible sur le site connectingstuff.net, s’inspire lui même des références si dessus. L’original peux être trouvé ici. J’ai à mon tour adapté ce code, vous trouverez ma version ici : teleinfo_rf.ino
Etape 4 : c’est fini !
Une fois tout bien branché comme expliqué dans les étapes 1, 2, 3 domoticz devrait identifier un nouvel appareil comme ceci :
Puis vous pourrez voir de belles courbes EDF comme ceci :
J’espère que cet article vous permettra d’avancer. Comme vous le voyez j’ai pas mal réutilisé les information trouvées sur internet. J’ai juste consolider le tout sur une seule page et partagé le tout avec vous.
Ce code a été adapté pour les compteurs triphasés. Pour voir le code adapté à un compteur triphasé allez voir sur le super article sur le site petitssuisses.com. Lien de l’article : Téléinfo ERDF sans fil pour compteur triphasé)
Bonjour, super mais serait il possible de savoir ou tu commandes ton materiel?
Bonjour,
principalement sur ebay. en tapant les référence dans le moteur de recherche d’ebay tu devrais trouver facilement. Par contre si ça vient de Chine faut compter quelque semaine pour que ça arrive chez toi (2 à 3 semaines généralement) .
Désolé d’avoir tardé a répondre…
Merci beaucoup
Rebonjour
tout fonctionne enfin mais j’ai un pb avec les courbes. Je n’ai pas les HC et les HP sur le graph. RFX com m’a cree 3 dispositifs different. As tu une explication?
Voici la copie d’un dispositif:
{
« ActTime » : 1439531876,
« ServerTime » : « Aug 14 2015 07:57:56 »,
« Sunrise » : « 06:40:00 »,
« Sunset » : « 20:48:00 »,
« result » : [
{
« BatteryLevel » : 100,
« CounterToday » : « 3.459 kWh »,
« CustomImage » : 0,
« Data » : « 55536.285 kWh »,
« Favorite » : 0,
« HardwareID » : 9,
« HardwareName » : « Rfxcom »,
« HaveTimeout » : false,
« ID » : « 03C2 »,
« LastUpdate » : « 2015-08-14 07:57:54 »,
« Name » : « Edf »,
« Notifications » : « false »,
« PlanID » : « 0 »,
« Protected » : false,
« ShowNotifications » : true,
« SignalLevel » : 8,
« SubType » : « CM180 »,
« SwitchTypeVal » : 0,
« Timers » : « false »,
« Type » : « Energy »,
« TypeImg » : « current »,
« Unit » : 0,
« Usage » : « 370 Watt »,
« Used » : 1,
« XOffset » : « 0 »,
« YOffset » : « 0 »,
« idx » : « 21 »
}
],
« status » : « OK »,
« title » : « Devices »
}
Merci
Désolé pour la réponse tardive. que donne les courbes , ca ressemble a des courbes HP et HC ? Quel tété elle on après quelques jour de marche ?
Moi ça avait bien reconnu les HP et HC, comme une vrai sonde OWL180..
Salut
Moi j ai 2 sondes 1 pour les pleines et 1 pour les creuses, c est un peu bete.
Salut manu,
Tout d’abord félicitation pour ton tuto.
Je débute à peine sous arduino et je rencontre un soucis : je ne reçois rien sur domoticz et sur la console de l’arduino j’ai sequence error … . J’ai bien sur testé le montage optocoupleur sur un raspberry où je reçois bien les infos sur /dev/ttyAMA1. La sortie de l’optocoupleur est bien sur D8.
Question subsidiaire peut-on rajouter un second optocoupleur sur par exemple le D9 pour relever la production d’électricité en simulant une 2° sonde ( 2° Id pour le CM180 ) ,
Peux-tu STP m’apporter ton aide.
Bonjour domotruc !
Merci pour tes encouragements !
Pour le message « sequence error » tu as quelque chose de plus que ça dans la log ? Pas de problème au niveau des résistance par rapport au montage électronique de l’optocoupleur ? Pas de fils trop longs (plus de 1m) entre l’optocoupleur et le compteur ou entre le l’optocoupleur et le board arduino ?
Pour la seconde question, je ne vois pas de problème d’utiliser un second optocoupleur mais dans le cas le code pour l’arduino devra être réécrit car il n’est pas fait pour cela dans l’état actuel.
A+
Bonsoir Manu,
Merci pour ta réponse rapide, non malheureusement je n’ai pas plus de log sur la console de l’arduino. Sinon pour les longueurs de câble ou la résistance j’utilise le même montage sur le raspberry et décâble uniquement les 3 fils pour aller sur l’arduino nano.
Je vais refaire des tests et te tiens au courant.
Bonsoir,
Toujours les mêmes soucis cette fois j’ai soudé les composants, peux-tu STP me confirmer que tu utilises bien la broche d’alimentation 3.3v avec une résistance de 10Kohms coté arduino et une résistance de 1.2Kohms coté EDF, je me suis inspiré du schéma suivant http://easydomoticz.com/raspberry-et-teleinfo/ .
Merci de ton aide.
J’ai relu pas mal d’articles, il semble que certain sont alimentés en 5v et certain en 3.3v. comme par exemple ici : http://www.worldofgz.com/electronique/recuperer-la-teleinformation-erdf-sur-larduino/ (il faut lire les commentaires)
Tu peux essayer sur le 5v et voir si tu as une info sur ton arduino.
Tiens moi au courant 🙂
A+
Salut, excellent article que j’ai suivi à la ligne, mais (il y a un mais), je ne voit pas la sonde dans domoticz, je voit les trames dans rfxmanager, mais nada dans domoticz (V2.3530), le serial boucle bien des infos à la chaines, quels dispositifs faut-il activer sur le rfxcom dans domoqicz ? (j’ai bien tenté oregon mais sans succés).
J’ai vu mon erreur, si le système n’est pas branché au compteur il n’est pas detecté, (pas d’infos à emettre ?)
je recois le flus suivant dans domoticz
« result » : [
{
« AddjMulti » : 1.0,
« AddjMulti2 » : 1.0,
« AddjValue » : 0.0,
« AddjValue2 » : 0.0,
« BatteryLevel » : 255,
« CounterToday » : « 0.480 kWh »,
« CustomImage » : 0,
« Data » : « 111045.808 kWh »,
« Description » : « »,
« Favorite » : 1,
« HardwareID » : 6,
« HardwareName » : « RFX433 »,
« HardwareType » : « RFXCOM – RFXtrx433 USB 433.92MHz Transceiver »,
« HardwareTypeVal » : 1,
« HaveTimeout » : false,
« ID » : « 000003D2 »,
« LastUpdate » : « 2015-12-20 12:49:11 »,
« Name » : « EDF »,
« Notifications » : « false »,
« PlanID » : « 0 »,
« PlanIDs » : [ 0 ],
« Protected » : false,
« ShowNotifications » : true,
« SignalLevel » : « -« ,
« SubType » : « kWh »,
« SwitchTypeVal » : 0,
« Timers » : « false »,
« Type » : « General »,
« TypeImg » : « current »,
« Unit » : 1,
« Usage » : « 1963.0 Watt »,
« Used » : 1,
« XOffset » : « 0 »,
« YOffset » : « 0 »,
« idx » : « 26 »
Quel champ de donne les heures creuses ?
salut,
Si vous avez un compteur avec un abonnement de Base, sans les heures creuses, il faut utiliser ce code:
http://easydomoticz.com/forum/viewtopic.php?f=7&t=158&start=40#p4677
En tout cas, bravo à tous pour ces Tutos, et ces codes extra !
Frédéric
Hello,
Merci pour ce montage tres intéressant.
Toutefois je rencontre un petit souci, je ne récupéré pas de courbe (à part des valeurs sur la courbe semaine passée).
Le montage avec mon nano est fonctionnel car en me branchant sur son port série avec un PC, je vois bien les trames des messages du compteur.
Pour la partie radio je passe par le module RFLink branché sur un raspberry pi B+ via l’USB, qui détecte bien sa présence dans l’onglet dispositifs (device) de Domoticz.
Est ce qu’il y a une incompatibilité avec RFLink?
A+
Merci de vos lumiere
Hello,
Je reviens sur ce problème avec plus de précision.
Coté Nano en me branchant sur son port serie, j’attrape bien les trames:
ADCO 020022146054
OPTARIF HC..
ISOUSC 45
HCHC 45281559
HCHP 29208749
PTEC HP..
IINST 2
IMAX 37
PAPP 480
HHPHC D
MOTDETAT 000000
Coté Rflink en me branchant sur le port série de l’Arduino Mega, j’attrape des trames de ce type:
– En regardant avec le moniteur du port série de l’IDE Arduino, cela donne ce type de trame
20;00;Nodo RadioFrequencyLink – RFLink Gateway V1.1 – R37;
20;01;Oregon CM180;ID=003C;WATT=0152;KWATT=01bdb0ed;
20;02;Oregon CM180;ID=003C;WATT=0152;KWATT=01bdb0ee;
– En regardant avec le logiciel de Rflink (RFlink loader) en mode normal cela donne ceci
20;00;Nodo RadioFrequencyLink – RFLink Gateway V1.1 – R37;
10;version;
20;01;VER=1.1;REV=37;BUILD=05;
20;02;Oregon CM180;ID=003C;WATT=0182;KWATT=01bdb138;
20;03;Oregon CM180;ID=003C;WATT=0182;KWATT=01bdb139;
20;04;Oregon CM180;ID=003C;WATT=0182;KWATT=01bdb139;
– En regardant avec le logiciel de Rflink (RFlink loader) en mode debug cela donne ca
10;rfdebug=on;
20;05;RFDEBUG=ON;
20;06;DEBUG;Pulses=194;Pulses(uSec)=510,360,420,390,420,360,420,360,420,360,420,870,930,870,420,390,420,390,900,390,420,870,390,390,420,390,420,390,420,390,390,390,420,390,420,390,900,900,420,390,900,390,390,390,390,390,390,900,420,390,420,390,420,390,420,390,420,390,390,390,390,390,390,390,900,390,390,900,390,420,390,420,390,420,390,420,390,420,390,420,390,420,390,420,390,420,390,420,390,420,870,420,390,900,390,420,870,900,390,420,870,420,360,420,360,930,870,420,390,900,390,420,390,420,870,420,390,930,360,420,870,420,360,930,870,930,870,930,360,420,360,420,360,420,870,420,360,930,360,420,360,420,360,420,360,420,360,420,360,420,360,420,360,420,360,420,360,420,360,420,360,420,360,420,360,420,360,420,870,930,360,420,870,930,870,930,360,420,360,420,390,420,360,420,360,420,360,420,360,420,360,420,360,6990;
20;07;Oregon CM180;ID=003C;WATT=0182;KWATT=01bdb13a;
Si vous avez des idées?
Salut,
après quelque recherches et surtout la trame que que a posté plus haut je ne pense pas que cette solution de simulation de sonde OWL180 soit compatible avec Rflink.
cependant c’est bizarre car je pense qu’une vrai sonde devrait être correctement reconnue et utilisable avec Rflink (a confirmer)
Manu
Salut super article !
Je suis en la possession d’un RFLink.
Quelqu’un à un retour sur la compatibilité avec RfLink ?
Aurélien
pour info, j’ai uplodé la dernière version de RFLINK (r42) et depuis ca marche nickel chez moi
Je prêche pour ma paroisse, je possède un RFXCOME, et ce matériel certes cher (95/105€ suivant les sites) est vraiment génial, la mise à jour du firmware quasi tous les mois (voyez sur le site ..) , le mode lighting 4 qui reconnais quasi tout le matos (j’ai réussi à faire reconnaitre un interrupteur livolo acheté sur aliexpress à 23€), mes volets somfy, mes sondes de températures, mes interrupteurs chacons, mes prises achetés chez brico dépot (15€ les 2) , le montage téléinfo , et dérnièrement des contacteurs de portes achetés sur aliexpress (3€ pièces) , donc aprés avoir passé des heures à essayer de faire marcher ma domotique avec rflink, j’ai acheté rfxcom et bim on passe plus
Bonjour,
Petite question d’un amateur, comment alimentez-vous votre module Adruino Nano USB ?
Mon compteur est situé à 50m de ma maison et votre solution me parait idéale.
Merci d’avance pour votre réponse !
Pour ma part j’ai également une prise au niveau de mon compteur… Si as la place et que tu t’y connais un peux en électricité ce n’est pas grand chose a faire. Un disjoncteur 20A + une prise pour tableau électrique et le tour est joué. Un électricien te fera certainement ça pour pas grand chose…
Sinon la méthode du bloc de pile est pas mal aussi mais faut voire combien de temps ça dure…
La liaison téléinfo est cablé à l’intérieur de ma maison sur ma starbox, en parallèle avec le module RF Arduino, avec 50m de liaison cuivre classique vers le compteur. Aucun souci de lecture des données! Si tu veux mettre le module Arduino dans le compteur, ca ne va pas être très réglo avec EDF, il faut mettre des disjoncteurs, …. ou alors sur pile…
Ping : Téléinfo ERDF sans fil pour compteur triphasé - Petitssuisses
Bonjour, je suis nouveau sur raspberry. Je voulais savoir ce qu’il faut faire une fois qu’on a télécharger votre fichier .ino
ou le mettre etc ….
Bonjour à tous,
Dans le montage il faut prévoir 2 résistance, pour la 1ère de 1,2k en entrée de l’octocoupleur ok mais la seconde de 3,3k où faut-il la mettre ?
Entre le pin 8 et l’octocoupleur ?
Merci pour votre retour.
Fred
Bonjour,
le shemas est celui ci :
Tu verras par exemple ici les détails :
http://www.magdiblog.fr/gpio/teleinfo-edf-suivi-conso-de-votre-compteur-electrique/
Je me réponds à moi-même merci de me signaler si je me trompe.
Optocoupleur :
PIN 1 une résistance de 1.2k avant sortie 1 du teleinfo 1
PIN 2 direct teleinfo 2
PIN 3 sur le GND du Nano entre les Pins RST et VIN
PIN 4 sur PIN8 du Nano et après le piquage une résistance de 3.3k et piquage sur alimentation 3.3v du Nano (2ème PIN à gauche du port USB orienté en haut)
J’ai téléchargé le fichier de MANU (teleinfo_rf.ino) « un grand merci pour le partage ».
Je l’ai téléversé dans la Nano grâce à la console IDE d’Arduino.
Je suis stoppé dans mon installation car j’attends le module Rf 433 (commandé depuis 3 semaines frais port gratuit mais ça commence à faire long….).
Dès réception et tests, Je vous tiens informé de la suite.
Fred
Manu,
Merci pour ton schéma, désolé nous messages ce sont croisés.
Fred.
Bonsoir,
Quel dispositif matériel faut-il activer? Pour l’instant j’ai activer P1 smart meter USB et teleinfo EDF USB
Ensuite j’ai branché le circuit…. alors j’ai bien un compteur qui est détecté par domoticz. Néanmoins je crois qu’il y a clairement interférence avec le module OWL 180 qui est déjà installé!!! je reçois des valeurs de dingue!
Je précise j’avais déjà un compteur OWL 180 installé, je voulais vérifier l’écart des mesures qu’il me donne avec la téléinfo…. je crois que je vais laisser tomber du coup car les 2 systèmes font des interférences; de plus je me demande si ca ne perturbe pas les sondes T° également; j’ai de nouvelles sondes qui sont apparues avec des valeurs de dingue la aussi (262°C…….)
Quelqu’un a-t-il eu le même problème ou suis je le seul?
Oui maintenant que tu le dit c’est vrait qu’il y avait des interferances avec les autres appareils. En ajoutant un delay(xxxx) dans le loop ca devrait passser… en plus ca evite de surcharder domoticz et le rfxcom en leur envoyant trop frequament des données… 12s ca me parait pas mal…
Oui, j’ai constaté des interférences possibles. J’ai choisi de ne relever le compteur que toutes les 12 secondes afin de limiter les émissions RF…
Bonsoir
Pardon d’avance pour mes question mais je suis un novice….
Pourquoi 12 s? Il y a une raison?
Le delay(1200) il faut le mettre à quel endroit des le programme?
Merci par avance
Hello Bastien,
Ajoute simplement dans la boucle principale du arduino:
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
Et les includes:
#include //snips : télécharger la librairie LOwPower.h sur https://github.com/rocketscream/Low-Power/archive/master.zip et décompresser dans arduino\libraries
Exemple:
void loop() {
teleInfoReceived=readTeleInfo(true);
if (teleInfoReceived)
{
encodeur_OWL_CM180();
mySerial->end(); //NECESSAIRE !! arrête les interruptions de softwareserial (lecture du port téléinfo) pour émission des trames OWL
sendOregon(OregonMessageBuffer, sizeof(OregonMessageBuffer)); // Send the Message over RF
//**********snips : exemple de mise en veille – activer les lignes ci-dessous pour faire dormir l’arduino pendant 8 secondes ***************************
LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF);
//LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
//**********snips : fin exemple de mise en veille *****************************************************************************************
mySerial->begin(1200); //NECESSAIRE !! relance les interuptions pour la lecture du port téléinfo
displayTeleInfo()void loop() {
teleInfoReceived=readTeleInfo(true);
if (teleInfoReceived)
{
encodeur_OWL_CM180();
mySerial->end(); //NECESSAIRE !! arrête les interruptions de softwareserial (lecture du port téléinfo) pour émission des trames OWL
sendOregon(OregonMessageBuffer, sizeof(OregonMessageBuffer)); // Send the Message over RF
//**********snips : exemple de mise en veille – activer les lignes ci-dessous pour faire dormir l’arduino pendant 8 secondes ***************************
LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF);
//LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
//**********snips : fin exemple de mise en veille *****************************************************************************************
mySerial->begin(1200); //NECESSAIRE !! relance les interuptions pour la lecture du port téléinfo
displayTeleInfo(); // console pour voir les trames téléinfo.. désactiver cette ligne pour économiser de l’énergie
}
}; // console pour voir les trames téléinfo.. désactiver cette ligne pour économiser de l’énergie
}
}
J’ai ajouté la ligne delay(12000) dans le code initial voir ici :
https://github.com/Sirus10/Arduino/blob/master/teleinfo_rf.ino
(j’ai deplacé le code sur github car plus simple pour moi pour mettre a jour… )
Je pense que la méthode de Fred est mieux car durant les 8s (ou 4 ici) de sleep l’Arduino ne consomme quasiment rien comme électricité…
Tu peux tester les deux codes et nous dire si tu as toujours les interférences et surtout à quoi ressembles tes courbes dans domoticz après quelques heure d’utilisation…
A+
Bonsoir
Merci pour vos réponses
J’essaye de tester cela ce week end et vous dit quoi
Bonjour Fred B,
J’essaye de mettre en place ton code; je copie colle ce que tu as posté mais en faisant la vérif, apparemment il y a un pb de { unexpected…. et mon niveau en programmation ne me permets pas de voir ce qui ne va pas……
Un problème de connexion usb / port com peut être? Tu as bien installé les drivers usb et suivis les tuto de configuration usb pour adruino?
Bonjour manu,
Le problème n’est pas un pb de connexion usb, je ne crois pas
mon arduino est bien reconnu par le logiciel arduino; avant de téléverser le programme dans l’arduino on peut « vérifier » celui-ci, le logiciel doit vérifier qu’il n’y ait pas de pb de synthaxe j’imagine, un genre de « débugage ».
Ds le programme de manu, il doit y avoir un { en trop ou il en manque un, je ne sais pas; toujours est-il, lorsque je lance la vérif avant le téléversement, le logiciel me dit qu’il y a un pb.
Tu peux copier coller le message d’erreur lors de la verification?
je viens de retester la compilation et le code ici : https://raw.githubusercontent.com/Sirus10/Arduino/master/teleinfo_rf.ino
fonctionne bien, pas de problème de compilation :
Autre question que je me posais, quel matériel faut-il activer? téléinfo usb ou P1 smart meter? pour l’instant j’active les 2…..
Et au niveau du port on laisse celui du RFXCOM?
In function ‘void loop()’:
teleinfo_rf:506: error: a function-definition is not allowed here before ‘{‘ token
displayTeleInfo(); void loop() {
^
teleinfo_rf:525: error: expected ‘}’ at end of input
}
^
teleinfo_rf:525: error: expected ‘}’ at end of input
exit status 1
a function-definition is not allowed here before ‘{‘ token
Je précise c’est le programme de Fred
J’ai enlevé un void loop() { ds le programme de fred et la compilation a réussi….. je vais donc tester comme cela ; cà donne cela:
void loop() {
teleInfoReceived=readTeleInfo(true);
if (teleInfoReceived)
{
encodeur_OWL_CM180();
mySerial->end(); //NECESSAIRE !! arrête les interruptions de softwareserial (lecture du port téléinfo) pour émission des trames OWL
sendOregon(OregonMessageBuffer, sizeof(OregonMessageBuffer)); // Send the Message over RF
//**********snips : exemple de mise en veille – activer les lignes ci-dessous pour faire dormir l’arduino pendant 8 secondes ***************************
LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF);
//LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
//**********snips : fin exemple de mise en veille *****************************************************************************************
mySerial->begin(1200); //NECESSAIRE !! relance les interuptions pour la lecture du port téléinfo
displayTeleInfo();
{
teleInfoReceived=readTeleInfo(true);
if (teleInfoReceived)
{
encodeur_OWL_CM180();
mySerial->end(); //NECESSAIRE !! arrête les interruptions de softwareserial (lecture du port téléinfo) pour émission des trames OWL
sendOregon(OregonMessageBuffer, sizeof(OregonMessageBuffer)); // Send the Message over RF
//**********snips : exemple de mise en veille – activer les lignes ci-dessous pour faire dormir l’arduino pendant 8 secondes ***************************
LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF);
//LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
//**********snips : fin exemple de mise en veille *****************************************************************************************
mySerial->begin(1200); //NECESSAIRE !! relance les interuptions pour la lecture du port téléinfo
displayTeleInfo(); // console pour voir les trames téléinfo.. désactiver cette ligne pour économiser de l’énergie
}
}; // console pour voir les trames téléinfo.. désactiver cette ligne pour économiser de l’énergie
}
}
Je suis bien bloqué………
J’essaye avec les 2 programmes mais je ne sais pas ce qui va pas.
Dans les LOG de domoticz j’ai
2016-04-30 17:06:09.323 Error: UNHANDLED PACKET TYPE: FS20 81
2016-04-30 17:06:41.088 Error: RFXCOM: input buffer out of sync, going to restart!….
Quel matériel il faut activer? j’ai essayé avec teleinfo usb ou smart meter usb mais rien n’y fait
Je crois que je vais laisser tombre
Quel matériel faut-il ajouter et comment régler le mode du RFXCOM? Il faut cocher quoi? j’ai à peu près tt essayé, par moment j’ai un compteur qui apparaît mais les valeurs ca ne va pas. De plus le RFX n’a plus de synchro; mais il n’y a plus d’interférences à priori
Voici les modes que j’ai d’activés :
Bonjour à tous,
Simplement pour vous informer que chez moi tout est ok.
Merci pour vous infos et à Snpis pour le développement du script adapté au tempo triphasé .
Voici le lien :
http://easydomoticz.com/forum/viewtopic.php?f=7&t=158&start=130
Bonne continuation et merci pour l’aide.
Fred
Bonjour je laisse un commentaire, car je viens de créer mon module et de le branche.
je n’arrive à ne rien recevoir dans domoticz, mais si je branche mon RFXcom sur le PC je reçois ça
20/05/2016 18:12:06
Packettype = ENERGY
subtype = ELEC3 – OWL CM180
Sequence nbr = 85
ID = 962
Count = 0
Instant usage = 0 Watt
total usage = 0 Wh
Signal level = 6 -72dBi
Battery = OK
————————————————
20/05/2016 18:12:21
Packettype = ENERGY
subtype = ELEC3 – OWL CM180
Sequence nbr = 86
ID = 962
Count = 0
Instant usage = 0 Watt
total usage = 0 Wh
Signal level = 6 -72dBi
Battery = OK
————————————————
20/05/2016 18:12:29
Packettype = ENERGY
subtype = ELEC3 – OWL CM180
Sequence nbr = 87
ID = 962
Count = 0
Instant usage = 0 Watt
total usage = 0 Wh
Signal level = 6 -72dBi
Battery = OK
————————————————
20/05/2016 18:12:34
Packettype = ENERGY
subtype = ELEC3 – OWL CM180
Sequence nbr = 88
ID = 962
Count = 0
Instant usage = 0 Watt
total usage = 0 Wh
Signal level = 6 -72dBi
Battery = OK
Peut-t-on m’aider SVP
Bonsoir Christopher
Vous avez activé quel dispositif ?
Il sont toutes activer en faite
Bonjour,
Merci pour ce super tuto, j’ai fabriqué avec succès mon montage, et une fois le programme spécifique pour l’abonnement BASE téléchargé, j’ai pu noter le bon fonctionnement grâce au moniteur série de l’Arduino.
Par contre, je n’ai reçu une trame qu’une fois sur mon RFXCOM / dans Domoticz.
Mon compteur est éloigné de 8 m environs de l’antenne du RFXCOM, mais il faut passer par 3 ou 4 murs de parpaing. Est-ce un souci ? Comment avez-vous positionné l’antenne sur l’émetteur 433MHz? J’ai soudé un bout de fil de 17,3cm dessus. Je vais tenter de déporter la partie émetteur 433 pour l’approcher du RFXCOM.
Bon je me réponds… 🙂
J’ai utilisé un autre émetteur 433MHz. J’avais peut-être un souci avec le premier.
Mais j’ai également déporté l’émetteur avec un câble avec paires torsadées afin de rapprocher l’émetteur du récepteur.
Maintenant, ça marche bien. Mais il me reste une question :
– comment régler la granularité des graphes Domoticz à 1 minute par exemple ? J’ai 5 minutes de granularité et je voudrais temporairement positionner à 1 minutes pour voir des détails.
Merci encore pour ce tuto !
Bonjour
Pour les graphes je ne sais pas
En revanche est ce que tu utilises des sondes de température communiquant par radio et si oui observes tu des interférences ? Personnellement j’ai des sondes Oregon ainsi qu’un owl 180 ; résultat tout était brouillé ; du coup j’ai laissé tombé la remontée de la teleinfo ; à chaque fois les compteurs virtuels domoticz que j’ai créés associés à l’owl 180 me remontaient des valeurs dignes de la conso française d’électricité
Bastien,
Non, j’avais laissé le programme Arduino original au début, avec un envoi des trames très soutenu, et je n’ai observé aucune interférence avec mes nombreuses sondes Oregon (7 THGR810 + 1 UVN800 + 1 PCR800)
J’ai décommenté les lignes afin de faire s’endormir l’arduino pendant 16 secondes entre chaque cycle.
ça marche très bien, et je reçois bien la puissance affichée sur mon compteur (Linky)
Bonjour, je mets en place un raspberry avec domoticz et un RFX, et j’ai fait mettre la téléinfo par edf sur le compteur (30 €);
j’ai réaliser le montage monophasé tempo avec l’arduino, mais cela non fonctionne pas correctement:
avec un programme test et un moniteur sur tx de l’arduino, je vois bien les info compteur défiler, mais avec le prg teleinfo_rf rien;
au niveau de la détection du ‘dispositif’, domoticz détecte le dispositif avec les infos suivantes:
RFX1 2E210C unkown Security X10 security motion.
Le protocole oregon est coché mais pas le X10!
Quelqu’un peut il m’aider?
Merci d’avance et bravo pour l’ensemble ces travaux
Bonjour,
J’ai un peu le même problème lorsque que je lance le moniteur série avec un code de test j’ai bien les infos du compteur, mais dès que je flash avec la teleinfo_rf rien n’est détécté par domoticz + rfxcom… j’ai fais le montage avec un arduino nano et un arduino uno c’est pareil.
Cela dit beau boulot 🙂
Bonjour,
J’ai repris le problème depuis le début, j’avais un « sequence error » car mon compteur transmet plus d’info. Mon problème a été résolu avec le code de Activa73
http://easydomoticz.com/forum/viewtopic.php?f=7&t=158&start=60#p8156
Merci
Pour je viens aussi de me faire installer le compteur Linky à 50m de la maison et de la carte arduino, et…. aucun souci la téléinfo est entièrement compatible avec le code existant.
Seul l’index du compteur a été remis à zéro.
Salut !
Cette configuration marche bien mais ça envoie un paquet de trames sur le 433Mhz, ça ne t’as jamais posé de problèmes ?
Ronan
Bonjour,
Effectivement, sa sature un peu rfxcom et le raspberry sur lequel on voit l’utilisation de la cpu qui augmente fortement.
Je pense qu’ajouter un delay de 2 minutes devrait faire l’affaire.
Bonjour,
Je ne comprends pas un truc,
Faut-il relier la patte 4 de optocoupleur au 3.3v de la carte arduino et aussi à la borne D8 de l’ arduino nano ou faut t’il relier la patte 4 de l’ optocoupleur directement à la borne D8 de l’ arduino sans résistance ?
Est-il possible de mettre un schéma avec les deux résistances s’il vous plait ?
Merci en tout cas pour toutes les informations 😉
Guillaume
Bonjour à tous,
Excellent tuto pour mettre en place un module domotique bien pratique 🙂
Souhaitant l’implémenter, je suis actuellement bloqué côté rfxcom. Il ne décode aucune trame.
Quelqu’un pourrait-il me partager un exemple de trame brute ?
J’ai testé d’envoyer ces patterns mais cela ne donne rien:
//11 5A 02 0A 86 52 00 00 00 00 B1 00 00 00 BE CB 60 70
//62 80 3C E8 00 60 47 D9 12 00 00 D0 85
Afin de valider le SW et le HW, j’ai testé un autre pattern Oregon correspondant à une sonde
//EA 4C 20 BB 2C 11 60 04
et là ca passe.
Je ne dois donc pas être très loin de la vérité, mais sans toutefois pouvoir l’atteindre 🙁
Merci pour votre aide!
Cédric
Bonjour à tous, et merci pour le tuto !
Depuis quelques temps j’utilisais la Téléinfo en filaire sur mon Raspberry, et j’ai décidé de switcher en RF grâce à cet article.
Cependant, je me trouve face à une difficulté imprévue:
J’ai bien les trames qui arrivent sur la PIN 8. Le signal me semble propre, bien que la pile soit un peu faible (Calibre 0.5V/div):
http://img11.hostingpics.net/pics/332562IMG2699.jpg
, mais je n’ai rien en entrée de l’émetteur (PIN 3) : 0V… Je suis sensé avoir une trame toutes les 12 secondes, mais c’est plat…
Avez-vous une idée ?
Je précise que j’ai effectué le montage sur un Mini Pro 16MHz 5V, et non un Nano.
Matthieu
Merci à l’auteur de cet article, j’ai mis du temps à récupérer mon matériel sur différents sites, mais tout est opérationnel pour mon compteur linky avec le code .ino sans HC-HP, bravo pour le taff !
Je vais aussi maintenant modifier un peu le délai pour n’avoir un refresh des infos que toutes les minutes pour ne pas saturer le rfxcom.
Deux petites questions pour l’auteur:
– en branchant mon arduino sur l’usb de mon portable, les infos affichées dans la console sont illisibles (moniteur série / 9600 / pas de fin de ligne): que dois-je faire pour avoir des logs lisibles dans la console?
– j’ai l’impression que la conso live est plus élevée que la normale quand je compare aux données de mon Archos TBH? une idée? 🙂
Merci Manu pour tes conseils!
Je me réponds à moi-même pour ma première question sur la console illisible de mon arduino: j’aurais dû utiliser « moniteur série / 115200/ pas de fin de ligne » je pense 😉
Bonjour,
Super article, le montage a bien fonctionné chez moi. Même s’il reste l’épreuve des 2 murs en pierre à passer. Cela dit, le code pour transférer la température de connectingstuff.net passe bien donc ça ne devrait pas poser de problème.
Cependant j’ai eu un comportement étrange et il y a un truc dans le code que je pige pas très bien.
A un moment, la valeur du compteur est multiplié par 223,666 parce que RFXCOM le divise par 223,666. Mais d’où sort cette constante ? Est-elle complètement arbitraire où s’agit-il d’un calcul afin d’extraire l’intensité ?
Parce que de mon coté, je ne retrouvais pas sur les logs de RFXCOM les mêmes valeurs. Et si du coté arduino j’envoyais comme valeur de compteur 115032, je recevais coté RFXCOM la valeur 111864. Et en fait, après un produit en croix, je me suis rendu compte que RFXCOM divisait par 230 la valeur que je lui transmettais. Du coup j’suis bien paumé parce même si ça marche, je vois pas trop pourquoi j’ai du changer la constante du produit (230 au lieu de 223,666 dans le code) avant l’envoi de la trame.
Si vous avez un point d’éclairage, ça serait le bienvenu ^^.
Ah et sinon, il y a coquille dans l’article, non ? Le code que tu as mis fonctionne pour un compteur monophasé.
Bonjour et Merci pour ce superbe article,
Je suis avec un Raspberry couplé a un RFlink sur lesquels tourne Domoticz
J’ai realisé le montage sans pb (fonctionnel sur pcb pastille ainsi que sur plaque d’essai) et Utilisé le code sur un Arduino Nano,
Mais soucis : je n’arrive pas a maintenir le la communication plus de 24h, On dirai que l’arduino freeze et plus de trame emise au RFlink(-domoticz)
Une idée?
Vérifie tes connections. Le code fonctionne chez moi (Sur un Pro Mini 5V 16MHz) sans problèmes depuis des mois avec un Raspberry Pi 3 qui héberge Domoticz
Sinon, comment alimentes-tu ton Arduino ? Piles ou sur secteur via un transfo ?
Tu peux essayer de voir si le signal est transmit à l’émetteur en mettant une LED (et sa résistance) en parallèle du signal de la PIN3.
=> Tu regardes si tu as bien un signal à l’intervalle défini.
Tu pourras ainsi discriminer un problème de réception (ou d’émission) (niveau, bruit, portée) d’un problème de freeze de la part de ton Arduino.
Il se pourrait également que ton signal téléinfo soit bruité ou atténué.
Bonjour Bertrand,
Tu es sûr que par ailleurs le RFlink est toujours fonctionnel? Moi j’ai eu des blocages entre domoticz et RFlink. Saturation mémoire? Comment débloques-tu la liaison: relance de domoticz, relance de l’arduino teleinfo ?
L’arduino téléinfo peut difficilement planter. Conseil: Emettre seulement toutes les 10 ou 15 sec la teleinfo pour ne pas saturer ta domotique.
salut et merci de ta réponse,
Pour te répondre: le RFlink marche correctement avec les autres modules présents dans la maison donc je doute que cela vienne de là,
pour rétablir le fonctionnement : reset de l’arduino
Je vais essayer de modifier le delais de transmission… mais j’ai qqs soudures a refaire étant donné que j’ai arraché qqs fils en voulant extraire le module du compteur electrique…
Hello bon j’ai remis en route le module en suivant le conseil de Fred B et depuis hier ça tient le coup… merci,
Toutefois j’aimerais régler 2 trucs sur domoticz :
– j’aimerais avoir ma conso H-pleine H-creuse sur le même graph
-Le fait d’avoir relancé le module, il m’a mis un gros (énorme) pic de consommation qui correspond au delta des kWh consommé depuis la dernière mesure effective
Je sais c’est des questions d’ordre esthétique pour certains mais moi j’aime bien quand c’est clair… 😉
Bien a vous
Edit: j’ai supprimé le dispositif et réintégré depuis domoticz : plus de pic de conso
Bonjour,
J’ai fait tout le montage tout est parfais !!! 🙂 merci
mais j’ai un gros probleme c’est que mon arduino change d’ ID :/
un coup il s’appelle 003C et un autre 003D donc mes courbes s’arrete dans Jeedom 🙁
Est ce que quelq’un a une idée svp ?
Bonjour et merci pour votre présentation très détaillée et très claire!
Je me permets de vous contacter car je rencontre quelques difficultés lors de la compilation du code que vous fournissez. Voici la copie des messages d’erreur:
Arduino : 1.6.11 (Windows 7), Carte : « Arduino Nano, ATmega328 »
Z:\Projets Arduino\Module téléinfo EDF 433 MHz\Teleinfo_EDF_Arduino\Teleinfo_EDF_Arduino.ino: In function ‘void sendOregon(byte*, byte)’:
Teleinfo_EDF_Arduino:133: error: ‘sendPreamble’ was not declared in this scope
Teleinfo_EDF_Arduino:135: error: ‘sendPostamble’ was not declared in this scope
Z:\Projets Arduino\Module téléinfo EDF 433 MHz\Teleinfo_EDF_Arduino\Teleinfo_EDF_Arduino.ino: At global scope:
Teleinfo_EDF_Arduino:144: error: two or more data types in declaration of ‘sendPreamble’
Teleinfo_EDF_Arduino:157: error: two or more data types in declaration of ‘sendPostamble’
exit status 1
‘sendPreamble’ was not declared in this scope
Savez-vous d’où peuvent venir ces erreurs ?
En vous remerciant,
Sur Domoticz, il y a toujours la possibilité d’effacer une donnée avec shift + cliquer sur le point du graphe.
Merci pour ta rapide réponse mais trop tard… MDR
Super ça, je ne connaissais pas !
Bonjour à tous,
Quelqu’un pourrait il partager la valeur de la trame hexa partant du module arduino?
Cf mon message du dessus, les trames partant de mon arduino ne sont pas décodées par le rflink :-((
J’ai testé d’envoyer ces patterns mais cela ne donne rien:
//11 5A 02 0A 86 52 00 00 00 00 B1 00 00 00 BE CB 60 70
//62 80 3C E8 00 60 47 D9 12 00 00 D0 85
Alors que la trame suivante est correctement décodée ( mais ne sert à rien pour ce cas d’usage si ce n’est de la validation de chaîne HW 😀 )
//EA 4C 20 BB 2C 11 60 04
Un grand merci pour votre aide!
Bonjour,
Tout d’abord merci pour l’article!! Je compte me lancer dès que j’ai recu les bonnes resistances… j’ai commandé du 1.2ohms au lieu de 1.2KiloOhms…
Quelle est la durée de vie de la batterie?
Je compte alimenter avec un powerbank USB de 2500mah. Ca peut tenir combien de temps?
J’ai vu que la frequence d’envoi variait selon certain de 12s à 2mn… quel est l’interet d’une frequence si rapproche? Suivre les pics en « live »? Je prefere eviter la saturation, deja que j’ai 2 sondes meteo qui me bombardent toutes les 35s… :/
Merci
Bonjour,
Le script a fonctionné 15 jours nickel (avec 2 dispositifs sous Domoticz, 1 HP et l’autre HC), puis d’un coup plus rien… impossible de revoir le dispositif depuis rflink, sauf une brève valeur tous les 3 jours…. Problème d’antenne, de parasites en 433 ?
Merci d’avance pour vos idées….
@Roland
Pour moi, c’est le 30/12/2017 que le capteur a disparu de Domoticz.
J’ai essayé de renvoyer le sktech arduino, de vérifier le câblage au niveau du compteur.
Rien n’y fait.
Les trames ERDF ont changé de tête ? De valeurs ? D’amplitude ?
Idem pour moi, tout a parfaitement fonctionné une semaine et depuis ce matin plus rien.
Par curiosité, comment alimentez-vous l’arduino ?
En USB depuis ma Livebox, qui est sur onduleur.
Tout fonctionne parfaitement mais comment mettre à 0 la conso instantanée de l’autre compteur. Sans cela, elle reste à la dernière valeur reçu, et fausse les stats de vos compteurs HC/HP.
Tout fonctionne parfaitement mais comment mettre à 0 la conso instantanée de l’autre compteur. Sans cela, elle reste à la dernière valeur reçue, et fausse les stats des compteurs HC/HP.
Répondre ↓
bonjour
est ce que le montage est pour un compteur classique ou linki ?
est ce qu’il y a une différence dans le sketch entre les 2 compteurs ?
Bonjour
Me concernant cela fonctionne sur un compteur classique avec option tempo.
j’ai fait le montage avec un arduino uno est rien ne ce passe .
est ce qu’il faut charger un programme différent entre un nano et un uno ?
Je ne suis pas pro donc difficile de vous conseiller
Par il peut y avoir un problème selon le montage.
Il y a un schéma qui relie la patte 3 de l’octo sur le D3 de l’arduino alors que le sketch attend l’info sur D4.
Dans ce cas il suffit de relier la patte 3 sur pin D4 de l’arduiono.
Si cela ne fonctionne pas je ne serai plus vous aider par manque de compétence.
Par contre Si ça fonctionne je serais content de la savoir.
Erreur après relecture du schéma c’est D3/D4 vers le pin data 433mhz qui peut poser pb selon le sketch utilisé.
Le pin 4 de l’octo va bien au 8 de l’arduino.
Bonjour à tous,
Montage réalisé avec succès et connecté à Domoticz. Tout est parfaitement fonctionnel.
Pour info, j’ai réussi à utiliser l’alimentation fournie par le Linky. Il faut utiliser des diodes de redressement schottky qui font gagner un peu de puissance. Cela ne fonctionnait pas avec des diodes classiques.
A l’arrivée, tout le montage est entré dans la petite trappe du compteur, pas un fil qui dépasse.
Super que ca marche via l’alim du compteur!
Merci pour ce retour.
Salut,
si ta question est toujours d’actualité, je te conseille d’essayer de changer les lignes « OregonMessageBuffer[2] =0x3C; » et « OregonMessageBuffer[2] =0x3D; » en changeant le code hexa. Par exemple: 0x3A et 0x3B.
Bonjour à tous,
Merci pour toutes ces informations, ça fonctionne parfaitement !
J’ai quand même un soucis, car j’ai 2 compteurs: un Linky pour la consommation EDF et un Actaris (blanc boutons bleus) pour la production solaire.
Les 2 sorties Téléinfo fonctionnent, j’ai réalisé 2 montages avec optocoupleurs, mais sur Domoticz elles sont reconnues comme un seul dispositif avec donc le même IDX.
Du coup ce n’est pas exploitable.
Y’a t-il un paramètre à modifier dans le code pour que Domoticz voit bien que ce soit 2 compteurs différents ?
Merci pour votre aide et bon confinement !
Salut,
si ta question est toujours d’actualité, je te conseille d’essayer de changer les lignes « OregonMessageBuffer[2] =0x3C; » et « OregonMessageBuffer[2] =0x3D; » en changeant le code hexa. Par exemple: 0x3A et 0x3B.
Merci je vais essayer et je vous dis si ça fonctionne.
nobruu peux tu nous partager ton montage concernant l’alimentation par la teleinfo?
Bonjour,
Je viens de lire l’article qui est très bien expliqué par ailleurs, mais une question me taraude. Dans les schéma avec l’optocoupleur, il y a une résistance de tirage en PULL UP car le raspberry ne propose pas de PULL UP. Cependant, les carte Arduino ont cette possibilité, alors serait-il possible de ne pas utiliser de résistance à la carte Arduino et de rajouter dans Le setup: » pinMode(TELEINFO_PIN,INPUT_PULLUP); » ?
Bonjour,
J’ai un montage Arduino qui capture la teleinfo de mon linky pour me grapher les conso sur Domoticz.
Je vais installer des panneau solaires pour faire de l’autoconsommation.
Que dois-je adapter dans le code pour compter ce que je produit et/ou auto-consomme ?
Merci
Bonjour,
Je suis dans ta futur configuration également en autoconsommation, j’ai mon Linky (arrivée EDF) raccordé en tele-info via le RFXCOM, et j’ai un autre compteur (pour le solaire) raccordé en tele-info via les ports GPIO du Raspberry.
Domoticz m’affiche deux dispositifs, l’EDF et le solaire.
Matthieu
L’installateur ne m’a pas parlé d’un compteur supplémentaire.
En effet, avec 2 compteurs différents, je duplique l’existant (au delta près de changer l’ID du capteur) et roulez jeunesse.
Mais là, je sèche un peu…