Téléinfo EDF Arduino sans fil avec RFXCOM

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 :

téléinfoEDF

Téléinfor EDF 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 :

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.

Module téléinfo sans fil

Module téléinfo sans fil (A noter que pour simplifier le schémas les résistance R1 et R2 de l’optocoupleur ne sont pas symbolisées)

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 :

cm180

Puis vous pourrez voir de belles courbes EDF comme ceci :

téléinfo EDF RF

Courbes consommation EDF avec module RF

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é)

67 réflexions au sujet de « Téléinfo EDF Arduino sans fil avec RFXCOM »

  1. Manu Auteur de l’article

    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…

    Répondre
  2. Brouty

    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

    Répondre
  3. Manu Auteur de l’article

    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..

    Répondre
  4. domotruc

    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.

    Répondre
  5. Manu Auteur de l’article

    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+

    Répondre
    1. domotruc

      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.

      Répondre
  6. Nicolas

    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).

    Répondre
    1. Nicolas

      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 ?

      Répondre
  7. gresset

    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

    Répondre
    1. Gresset

      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?

      Répondre
      1. Manu Auteur de l’article

        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

        Répondre
  8. nicozozo

    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

    Répondre
  9. Yoann

    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 !

    Répondre
    1. Manu Auteur de l’article

      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…

      Répondre
  10. Fred B

    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…

    Répondre
  11. Ping : Téléinfo ERDF sans fil pour compteur triphasé - Petitssuisses

  12. lepongebobby

    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 ….

    Répondre
  13. Fred

    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

    Répondre
  14. Fred

    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

    Répondre
  15. Bastien

    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!

    Répondre
  16. Bastien

    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…….)

    Répondre
    1. Manu Auteur de l’article

      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…

      Répondre
  17. Bastien

    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

    Répondre
  18. Fred B

    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
    }

    }

    Répondre
    1. Manu Auteur de l’article

      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+

      Répondre
  19. bastien

    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……

    Répondre
    1. Manu Auteur de l’article

      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?

      Répondre
  20. bastien

    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.

    Répondre
  21. bastien

    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?

    Répondre
  22. bastien

    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

    Répondre
  23. bastien

    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
    }

    }

    Répondre
  24. bastien

    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

    Répondre
  25. bastien

    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

    Répondre
  26. Christopher

    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

    Répondre
  27. Cr1cr1

    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.

    Répondre
    1. Cr1cr1

      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 !

      Répondre
      1. bastien

        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é

        Répondre
  28. Cr1cr1

    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)

    Répondre
  29. JF

    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

    Répondre
    1. Seb T

      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 🙂

      Répondre
  30. Fred B

    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.

    Répondre
    1. Manu Auteur de l’article

      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.

      Répondre
  31. Guillaume

    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

    Répondre
  32. Cédric Bernard

    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

    Répondre
  33. Matthieu

    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

    Répondre
  34. TCS

    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!

    Répondre
  35. TCS

    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 😉

    Répondre
  36. Tiaw

    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é.

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *