Téléinfo radio

les autres capteurs : Sondes Météo, switches
Répondre
pguillot
Messages : 22
Enregistré le : 27 janv. 2015, 19:20

Re: Téléinfo radio

Message par pguillot »

J'ai de la vie sur Domoticz! Cela affiche bien le relevé du compteur :

Image

Et voici la partie terminal :

Code : Tout sélectionner

ADCO 0xxxxxxxxxx5
1
OPTARIF BASE
2
ISOUSC 30
3
BASE 022845423
4
PTEC TH..
5
IINST 001
6
IMAX 022
7
PAPP 00320
8
MOTDETAT 000000
9
 
ADCO 0xxxxxxxxxx5
OPTARIF BASE
ISOUSC 30
HCHC 0
HCHP 22845423
PTEC TH..
IINST 1
IMAX 22
PAPP 320
HHPHC -
MOTDETAT 000000
Suis-je censé avoir d'autre informations? En tout cas un grand BRAVO à toi!

snips
Messages : 272
Enregistré le : 18 mars 2015, 22:37

Re: Téléinfo radio

Message par snips »

D'après les infos de la console l'arduino recupere bien toutes les infos index et puissance apparente notamment ...,

Domoticz va récupérer les deux infos (puissance apparente et index compteur), et rien d'autre car le protocole owl180 ne retourne que ces 2 infos.

Ps il faut sélectionner le périphérique (owl 180) en cliquant sur la flèche verte à droite sur la ligne. Ça va rajouter le compteur dans l'onglet utility et tu pourras voir l'index+ papp ainsi que les graphiques.

pguillot
Messages : 22
Enregistré le : 27 janv. 2015, 19:20

Re: Téléinfo radio

Message par pguillot »

snips a écrit :D'après les infos de la console l'arduino recupere bien toutes les infos index et puissance apparente notamment ...,

Domoticz va récupérer les deux infos (puissance apparente et index compteur), et rien d'autre car le protocole owl180 ne retourne que ces 2 infos.

Ps il faut sélectionner le périphérique (owl 180) en cliquant sur la flèche verte à droite sur la ligne. Ça va rajouter le compteur dans l'onglet utility et tu pourras voir l'index+ papp ainsi que les graphiques.
Effectivement, pour moi c'est juste PARFAIT! Consommation et compteur c'est juste ce qu'il me faut. Je vais refaire mon montage pour qu'il soit plus petit et sans utiliser mon adaptateur USB FTDI. Je pense poster des photos quand cela sera fait.

En tout cas encore MERCI!!!!!!!!!!!!

activa73
Messages : 12
Enregistré le : 10 févr. 2015, 12:12

Re: Téléinfo radio

Message par activa73 »

Bonjour à tous,

je viens de mettre en place ce système. Je possède un tarif base uniquement donc j'ai utilisé le dernier script de snips du 13 Juin 2015, 10:52.
merci pour ce script, malheureusement il ne marchait pas avec mon compteur car mon compteur retourne aussi la tension.
J'avais donc le message "sequence error" car le programme ne décodait pas le terme TENSION.

Voici ce que me donne mon compteur :

Code : Tout sélectionner

ADCO 030xxxxxxxx1
OPTARIF BASE
ISOUSC 30
BASE 054637892
PTEC TH..
IINST 003
IMAX 033
TENSION 234
PAPP 00620
MOTDETAT 000000
J'ai réalisé des modifs dans le code pour que le script puisse lire le champs TENSION et j'obtient donc après lecture et mise en forme :

Code : Tout sélectionner

ADCO 030xxxxxxxx1
OPTARIF BASE
ISOUSC 30
HCHC 0
HCHP 57211256
PTEC TH..
TENSION 234
IINST 4
IMAX 33
PAPP 870
HHPHC -
MOTDETAT 000000
Voici le code avec mes modifs :

Code : Tout sélectionner

/* Ce programme a été élaboré à partir du code de M. Olivier LEBRUN réutilisé en grande partie pour réaliser un encodeur OWL CM180 (Micro+)
/* ainsi qu'à partir du code (+ carte électronique à relier au compteur) de M. Pascal CARDON pour la partie téléinfo 
/* Onlinux a fourni des trames du OWL CM180 pour le reverse ingineering (il a développé lui même un code de décodage des trames, différent de mon code )
/* j'ai fait le reverse ingineering du OWL CM180 et les algo d'encodage pour le RFXCOM - il n'est pas garantie que cet encodeur marche avec un autre recepteur que RFXCOM 
/* Je remercie les auteurs. Ci-dessous les liens vers leur site internet.
******** Snips *******

/* ***** version test du 13/06/2015 : adaptation pour un compteur teleinfo tarif de base (non HC et HP), 
// ****** adaptation pour un compteur qui ne retourne pas la puissance apparente PAPP (approximation IINST * 230)
// ****** exemple librairie LOWPOWER pour mettre en veille

//version test du 02/10/2015 : par Activa73 , ajout du décodage du champs TENSION
/*=======================================================================================================================

ONLINUX :   Decode and parse the Oregon Scientific V3 radio data transmitted by OWL CM180 Energy sensor (433.92MHz)

http://blog.onlinux.fr

https://github.com/onlinux/OWL-CMR180
/*=======================================================================================================================


/*=======================================================================================================================
/*
 * connectingStuff, Oregon Scientific v2.1 Emitter
 * http://connectingstuff.net/blog/encodage-protocoles-oregon-scientific-sur-arduino/
 *
 * Copyright (C) 2013 olivier.lebrun@gmail.com
 
*/
//=======================================================================================================================


/*=======================================================================================================================
                                                        my_teleinfo
                                                 (c) 2012-2013 by  
                                                  Script name : my_teleinfo
                                 http://www.domotique-info.fr/2014/05/recuperer-teleinformation-arduino/

 Usage :                                                                                   
     + Arduino Teleinfo report program
     + This program receives data frames from the EDF counter teleinfo port, it parse it,
       validate each data group by verfying the checksum, stores it in local variables, 
       displays the actual counter, consumption ...
       Frame content is sent to a remote PHP server, thru Internet. The remote PHP
       server records the received data in a MySQL data base.                                                           
     + Runs on a Leonardo, RX on PIN 0
                                      
======================================================================================================================*/
// montage électronique conforme à http://www.domotique-info.fr/2014/05/recuperer-teleinformation-arduino/
// pin 8 de la carte arduino utilisé pour recevoir les informations téléinfo du compteur
// pin 4 utilisé pour l'emetteur 433 MHZ 


#include <SoftwareSerial.h>
//#include <LowPower.h> //snips : télécharger la librairie LOwPower.h sur https://github.com/rocketscream/Low-Power/archive/master.zip et décompresser dans arduino\libraries


const byte TX_PIN = 4;  //emetteur 433 MHZ 
const unsigned long TIME = 488;
const unsigned long TWOTIME = TIME*2;

#define SEND_HIGH() digitalWrite(TX_PIN, HIGH)
#define SEND_LOW() digitalWrite(TX_PIN, LOW)
byte OregonMessageBuffer[13];  //  OWL180
//*********************************************************
SoftwareSerial* mySerial;
  char HHPHC;
  int ISOUSC;             // intensité souscrite  
  int IINST;              // intensité instantanée en A
  int IMAX;               // intensité maxi en A
  int PAPP;               // puissance apparente en VA
  int TENSION;            // tension en V //Activa73 : pour les compteur retournant la tension
  unsigned long HCHC;  // compteur Heures Creuses en W
  unsigned long HCHP;  // compteur Heures Pleines en W
  String PTEC;            // Régime actuel : HPJB, HCJB, HPJW, HCJW, HPJR, HCJR
  String ADCO;            // adresse compteur
  String OPTARIF;         // option tarifaire
  String MOTDETAT;        // status word
  String pgmVersion;      // TeleInfo program version
  boolean ethernetIsOK;
  boolean teleInfoReceived;


  char chksum(char *buff, uint8_t len);
  boolean handleBuffer(char *bufferTeleinfo, int sequenceNumnber);
  char version[17] = "TeleInfo  V 1.00";
  
  unsigned long PAPP_arrondi;               // PAPP*497/500/16 arrondi
  unsigned long chksum_CM180;
  unsigned long long HCP; 
  
  //********** debug
 // char buffer[100];// à  virer ***************
//**********************************************************************

/**
 * \brief    Send logical "0" over RF
 * \details  azero bit be represented by an off-to-on transition
 * \         of the RF signal at the middle of a clock period.
 * \         Remenber, the Oregon v2.1 protocol add an inverted bit first 
 */
inline void sendZero(void)
{
  SEND_LOW();
  delayMicroseconds(TIME); 
  SEND_HIGH();
  delayMicroseconds(TIME);
}

/**
 * \brief    Send logical "1" over RF
 * \details  a one bit be represented by an on-to-off transition
 * \         of the RF signal at the middle of a clock period.
 * \         Remenber, the Oregon v2.1 protocol add an inverted bit first 
 */
inline void sendOne(void)
{
   SEND_HIGH();
   delayMicroseconds(TIME);
   SEND_LOW();
   delayMicroseconds(TIME);
}


/**
 * \brief    Send a buffer over RF
 * \param    data   Data to send
 * \param    size   size of data to send
 */
void sendData(byte *data, byte size)
{
  for(byte i = 0; i < size; ++i)
  {
  (bitRead(data[i], 0)) ? sendOne() : sendZero();
  (bitRead(data[i], 1)) ? sendOne() : sendZero();
  (bitRead(data[i], 2)) ? sendOne() : sendZero();
  (bitRead(data[i], 3)) ? sendOne() : sendZero();
  (bitRead(data[i], 4)) ? sendOne() : sendZero();
  (bitRead(data[i], 5)) ? sendOne() : sendZero();
  (bitRead(data[i], 6)) ? sendOne() : sendZero();
  (bitRead(data[i], 7)) ? sendOne() : sendZero();    
  }
}

/**
 * \brief    Send an Oregon message
 * \param    data   The Oregon message
 */
void sendOregon(byte *data, byte size)
{
    sendPreamble();
    sendData(data,size);   
    sendPostamble();
}

/**
 * \brief    Send preamble
 * \details  The preamble consists of 10 X "1" bits (minimum)
 */
inline void sendPreamble(void)
{
  for(byte i = 0; i < 10; ++i)   //OWL CM180
  {
    sendOne();
  }
}

/**
 * \brief    Send postamble
 */
inline void sendPostamble(void)
{

 for(byte i = 0; i <4 ; ++i)    //OWL CM180
  {
    sendZero() ;
  }
  SEND_LOW();
  delayMicroseconds(TIME);
}

//=================================================================================================================
// Basic constructor
//=================================================================================================================
void TeleInfo(String version)
{
  //  Serial.begin(1200,SERIAL_7E1);
  mySerial = new SoftwareSerial(8, 9); // RX, TX
  mySerial->begin(1200);
  pgmVersion = version;
  
  // variables initializations
  ADCO = "270622224349";
  OPTARIF = "----";
  ISOUSC = 0;
  HCHC = 0L;  // compteur Heures Creuses en W
  HCHP = 0L;  // compteur Heures Pleines en W
  PTEC = "----";    // Régime actuel : HPJB, HCJB, HPJW, HCJW, HPJR, HCJR
  HHPHC = '-';
  IINST = 0;        // intensité instantanée en A
  IMAX = 0;         // intensité maxi en A
  TENSION = 0;      // tension en V //Activa73 : pour les compteur retournant la tension
  PAPP = -1;         // puissance apparente en VA
  MOTDETAT = "------";
}

//=================================================================================================================
// Capture des trames de Teleinfo
//=================================================================================================================
boolean readTeleInfo(boolean ethernetIsConnected)
{
#define startFrame 0x02
#define endFrame 0x03
#define startLine 0x0A
#define endLine 0x0D
#define maxFrameLen 280

  int comptChar=0; // variable de comptage des caractères reçus 
  char charIn=0; // variable de mémorisation du caractère courant en réception

  char bufferTeleinfo[21] = "";
  int bufferLen = 0;
  int checkSum;

  ethernetIsOK = ethernetIsConnected;

  int sequenceNumnber= 0;    // number of information group
   
   // ************ snips : pour ceux qui n'ont pas de PAPP on réinitialise pour tester une valeur PAPP est reçu ***************
   PAPP = -1;         // puissance apparente en VA
    // ************ snips : fin ajout***********************************************************

  //--- wait for starting frame character 
  while (charIn != startFrame)
  { // "Start Text" STX (002 h) is the beginning of the frame
    if (mySerial->available())
     charIn = mySerial->read()& 0x7F; // Serial.read() vide buffer au fur et à mesure
  } // fin while (tant que) pas caractère 0x02
  //  while (charIn != endFrame and comptChar<=maxFrameLen)
  while (charIn != endFrame)
  { // tant que des octets sont disponibles en lecture : on lit les caractères
    // if (Serial.available())
    if (mySerial->available())
    {
      charIn = mySerial->read()& 0x7F;
      // incrémente le compteur de caractère reçus
      comptChar++;
      if (charIn == startLine)
        bufferLen = 0;
      bufferTeleinfo[bufferLen] = charIn;
      // on utilise une limite max pour éviter String trop long en cas erreur réception
      // ajoute le caractère reçu au String pour les N premiers caractères
      if (charIn == endLine)
      {
        checkSum = bufferTeleinfo[bufferLen -1];
        if (chksum(bufferTeleinfo, bufferLen) == checkSum)
        {// we clear the 1st character
          strncpy(&bufferTeleinfo[0], &bufferTeleinfo[1], bufferLen -3);
          bufferTeleinfo[bufferLen -3] =  0x00;
          sequenceNumnber++;
          Serial.println(bufferTeleinfo); // debug  
          Serial.println(sequenceNumnber); //debug
          if (!handleBuffer(bufferTeleinfo, sequenceNumnber))
          {
            Serial.println(F("Sequence error ..."));
            return false;
          }
        }
        else
        {
          Serial.println(F("Checksum error ..."));
          return false;
        }
      }
      else
        bufferLen++;
    }
    if (comptChar > maxFrameLen)
    {
      Serial.println(F("Overflow error ..."));
      return false;
    }
  }
  return true;
}

//=================================================================================================================
// Frame parsing
//=================================================================================================================
//void handleBuffer(char *bufferTeleinfo, uint8_t len)
boolean handleBuffer(char *bufferTeleinfo, int sequenceNumnber)
{
  // create a pointer to the first char after the space
  char* resultString = strchr(bufferTeleinfo,' ') + 1;
  boolean sequenceIsOK;

  switch(sequenceNumnber)
  {
  case 1:
    if (sequenceIsOK = bufferTeleinfo[0]=='A')
      ADCO = String(resultString);
    break;
  case 2:
    if (sequenceIsOK = bufferTeleinfo[0]=='O')
      OPTARIF = String(resultString);
    break;
  case 3:
    if (sequenceIsOK = bufferTeleinfo[1]=='S')
      ISOUSC = atol(resultString);
    break;
  default: 
      if (sequenceIsOK = (bufferTeleinfo[2]=='H' && bufferTeleinfo[3]=='C'))
          {
          HCHC = atol(resultString);
          break;
          }
 
      if (sequenceIsOK = (bufferTeleinfo[2]=='H' && bufferTeleinfo[3]=='P'))
          {
          HCHP = atol(resultString);
          break;
          }
    // *******snips : ajout pour gérer compteur de base *****************
    if (sequenceIsOK = bufferTeleinfo[0]=='B')
          {
          HCHP = atol(resultString);
          break;
          }
   // ******* fin ajout pour gérer compteur de base *****************
    
    if (sequenceIsOK = bufferTeleinfo[1]=='T')
          {
          PTEC = String(resultString);
          break;
          }
 
    if (sequenceIsOK = bufferTeleinfo[1]=='I')
          {
          IINST =atol(resultString);
          break;
          }
  
    if (sequenceIsOK = bufferTeleinfo[1]=='M')
          {
          IMAX =atol(resultString);
          break;
          }
      //Activa73 : pour les compteur retournant la tension
    if ((strncmp("TENSION ", &bufferTeleinfo[0] , 8)) == 0)
          {
          sequenceIsOK = 1;
          TENSION = atol(resultString);
          break;
          }
    if (sequenceIsOK = (bufferTeleinfo[0]=='P' && bufferTeleinfo[1]=='A'))
          {
          PAPP =atol(resultString);
          break;
          }
    if (sequenceIsOK = bufferTeleinfo[1]=='H')
          {
          HHPHC = resultString[0];
          break;
          }
          
    if (sequenceIsOK = bufferTeleinfo[1]=='O')
          {
          MOTDETAT = String(resultString);
          break;
          }
  }
  
#ifdef debug
  if(!sequenceIsOK)
  {
    Serial.print(F("Out of sequence ..."));
    Serial.println(bufferTeleinfo);
  }
#endif
  return sequenceIsOK;
}

//=================================================================================================================
// Calculates teleinfo Checksum
//=================================================================================================================
char chksum(char *buff, uint8_t len)
{
  int i;
  char sum = 0;
  for (i=1; i<(len-2); i++) 
    sum = sum + buff[i];
  sum = (sum & 0x3F) + 0x20;
  return(sum);
}


//=================================================================================================================
// This function displays the TeleInfo Internal counters
// It's usefull for debug purpose
//=================================================================================================================
void displayTeleInfo()
{  
/*
ADCO 270622224349 B
 OPTARIF HC.. <
 ISOUSC 30 9
 HCHC 014460852 $
 HCHP 012506372 -
 PTEC HP..  
 IINST 002 Y
 IMAX 035 G
 PAPP 00520 (
 HHPHC C .
 MOTDETAT 000000 B
 */
  
Serial.print(F(" "));
  Serial.println();
  Serial.print(F("ADCO "));
  Serial.println(ADCO);
  Serial.print(F("OPTARIF "));
  Serial.println(OPTARIF);
  Serial.print(F("ISOUSC "));
  Serial.println(ISOUSC);
  Serial.print(F("HCHC "));
  Serial.println(HCHC);
  Serial.print(F("HCHP "));
  Serial.println(HCHP);
  Serial.print(F("PTEC "));
  Serial.println(PTEC);
   Serial.print(F("TENSION ")); //Activa73 : pour les compteur retournant la tension
   Serial.println(TENSION); //Activa73 : pour les compteur retournant la tension
  Serial.print(F("IINST "));
  Serial.println(IINST);
  Serial.print(F("IMAX "));
  Serial.println(IMAX);
  Serial.print(F("PAPP "));
  Serial.println(PAPP);
  Serial.print(F("HHPHC "));
  Serial.println(HHPHC);
  Serial.print(F("MOTDETAT "));
  Serial.println(MOTDETAT);   
}



void encodeur_OWL_CM180()
{

if (PTEC.substring(1,2)=="C")
{
  HCP=(HCHC*223666LL)/1000LL;
}
if (PTEC.substring(1,2)=="P")
{
  HCP=(HCHP*223666LL)/1000LL;
}
// ********* snips : si tarif de base ******************* 
if (PTEC.substring(1,2)=="H")
{
  HCP=(HCHP*223666LL)/1000LL;
}
// ********* snips : fin tarif de base *******************

// ********* snips : si pas de PAPP reçu du compteur on approxime PAPP ******************* 
if (PAPP==-1)
{
  PAPP=IINST*230LL;
}
// ********* snips : fin pas de PAPP  *******************


OregonMessageBuffer[0] =0x62; // imposé
OregonMessageBuffer[1] =0x80; // GH   G= non décodé par RFXCOLM,  H = Count


//OregonMessageBuffer[2] =0x3C; // IJ  ID compteur : "L IJ 2" soit (L & 1110 )*16*16*16+I*16*16+J*16+2
// si heure creuse compteur 3D, si HP compteur 3C 
if (PTEC.substring(1,2)=="C")
{
  OregonMessageBuffer[2] =0x3D; 
  // Serial.print(F("HEURE CREUSE 0x3D"));  //débug *******************************
}
else
{
OregonMessageBuffer[2] =0x3C;
}

//OregonMessageBuffer[3] =0xE1; // KL  K sert pour puissance instantanée, L sert pour identifiant compteur 
PAPP_arrondi=long(long(PAPP)*497/500/16);

// améliore un peu la précision de la puissance apparente encodée (le CM180 transmet la PAPP * 497/500/16)
if ((float(PAPP)*497/500/16-PAPP_arrondi)>0.5)
{
++PAPP_arrondi;
}

OregonMessageBuffer[3]=(PAPP_arrondi&0x0F)<<4;

//OregonMessageBuffer[4] =0x00; // MN  puissance instantée = (P MN K)*16 soit : (P*16*16*16 + M*16*16 +N*16+K)*16*500/497. attention RFXCOM corrige cette valeur en multipliant par 16 puis 500/497.
OregonMessageBuffer[4]=(PAPP_arrondi>>4)&0xFF;

//OregonMessageBuffer[5] =0xCD; // OP  Total conso :  YZ WX UV ST QR O : Y*16^10 + Z*16^9..R*16 + O
OregonMessageBuffer[5] =((PAPP_arrondi>>12)&0X0F)+((HCP&0x0F)<<4);

//OregonMessageBuffer[6] =0x97; // QR sert total conso
OregonMessageBuffer[6] =(HCP>>4)&0xFF;

//OregonMessageBuffer[7] =0xCE; // ST sert total conso
OregonMessageBuffer[7] =(HCP>>12)&0xFF; // ST sert total conso

//OregonMessageBuffer[8] =0x12; // UV sert total conso
OregonMessageBuffer[8] =(HCP>>20)&0xFF; // UV sert total conso

//OregonMessageBuffer[9] =0x00; // WX sert total conso
OregonMessageBuffer[9] =(HCP>>28)&0xFF; 

//OregonMessageBuffer[10] =0x00; //YZ sert total conso
OregonMessageBuffer[10] =(HCP>>36)&0xFF; 


  chksum_CM180= 0;
  for (byte i=0; i<11; i++) 
  {
    chksum_CM180 += long(OregonMessageBuffer[i]&0x0F) + long(OregonMessageBuffer[i]>>4) ;
  }
  
chksum_CM180 -=2; // = =b*16^2 + d*16+ a ou [b d a]

//OregonMessageBuffer[11] =0xD0; //ab sert CHECKSUM  somme(nibbles ci-dessuus)=b*16^2 + d*16+ a + 2
OregonMessageBuffer[11] =((chksum_CM180&0x0F)<<4) + ((chksum_CM180>>8)&0x0F);

//OregonMessageBuffer[12] =0xF6; //cd  d sert checksum, a non décodé par RFXCOM
OregonMessageBuffer[12] =(int(chksum_CM180>>4)&0x0F);  //C = 0 mais inutilisé

}

//************************************************************************************

void setup() {
  
  Serial.begin(115200);   // pour la console, enlever les barres de commentaires ci dessous pour displayTeleInfo()
  TeleInfo(version); 
}

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_8S, 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
  }

}
Jusque la tout fonctionne bien mais j'ai juste une petite question en ce qui concerne le retour d'info dans Domoticz.
Domoticz à bien reconnu un capteur de type general et de sous type kWh. il ne reconnait pas le capteur comme étant un CM180 comme sur l'imprime écran de pguillot du 16 Juin 2015, 18:02.

Avez-vous une idée?

J'ai la version v2.3532 de Domoticz.

Merci par avance

snips
Messages : 272
Enregistré le : 18 mars 2015, 22:37

Re: Téléinfo radio

Message par snips »

Je viens de mettre à jour à l'instant (enfin !) mon domoticz en v2.3530 et effectivement mes CM180 (telinfo radio) sont devenus "General". je n'ai pas constaté d'anomalie.

snips
Messages : 272
Enregistré le : 18 mars 2015, 22:37

Re: Téléinfo radio

Message par snips »

Finalement le passage en v2.3530 avec un device précédemment "cm180" nommé maintenant en "General" provoque chez moi un plantage de l'application (payante) idomotic sur iphone qui permet d'accéder à domoticz sans passer par le navigateur, et s'agissant de Dromatica (gratuit sous Android cette fois) je n'accède plus au cm180 -teleinfo radio (c'est écrit " This device is not yet supported ").

Remarque : Cependant pour Dromatica j'accede toujours au compteur HPHC (qui est un compteur virtuel P1 smart meter dans lequel je déverse par script les mesures des cm180-teleinfo (post du 08 Mai 2015, 12:17, plus haut).

patoche
Messages : 167
Enregistré le : 25 oct. 2015, 15:51

Re: Téléinfo radio

Message par patoche »

Bonjour,

Je viens de recevoir un arduino un emeteur rf433 et son antenne. J'ai effectué le montage comme indiqué. Je précise je n'ai pas encore l'optocoupleur donc je ne suis pas relié au compteur.

J'ai fait un copié collé du dernier script ci dessus dans le logiciel ardruino à partir d'une page vierge.
Puis lancer téléversement
Message compilation
Clignotement rapide des led
Message "televersement terminé"

Je branche l'arduino sur une sortie USB, je mesure bien 4,5 v aux borne de l'emetteur.

Par contre pas de nouveau matériel détecté dans domoticz. Est ce normal tant que l'on est pas raccordé au compteur teleinfo, ou signe d'un PB?

J'ai utilisé ce site pour le cablage. On parle de pin 3 pour relier le RF, alors que dans le soft on parle de pin 4 ????

http://domotique.web2diz.net/?p=11

J'ai televersé le soft du site ci dessus correspondant à mon cablage, toujours rien dans domoticz !!

Merci d'avance de votre expérience.
RPI2 OSMC + domoticz + Rfx 433e + chacon dio, teleinfo 433 via arduino nano, sonde T° innovaley et TFA 303139, sonde T° piscine DIY 433 oregon, OWL 180, RPI zero W + camera

snips
Messages : 272
Enregistré le : 18 mars 2015, 22:37

Re: Téléinfo radio

Message par snips »

Hello
Tant que l'arduino n'est pas raccordé au compteur (teleinfo), l'arduino ne peut récupérer les données de comptage et donc il ne va rien émettre par radio (avec l'ino fonctionnel). Par conséquent domoticz ne va rien recevoir du rfxcom (ou rflink).

Vous pouvez quand même faire un test avec l'encodeur (ino pour tester l'emission/reception) qui se contente juste de simuler un cm180 (sans lire le compteur électrique) en renvoyant toujours les mêmes valeurs fixees arbitrairement. L'.ino à televerser pour ce faire se trouve ici : http://connectingstuff.net/dw/encodeur_CM180.ino

Domoticz devrait détecter un nouveau device.

patoche
Messages : 167
Enregistré le : 25 oct. 2015, 15:51

Re: Téléinfo radio

Message par patoche »

Merci snips,

C est clair.
Je vais faire le test., et la semaine prochaine j aurai de quoi faire km e raccordement au compteur.
Et pour la pin de l émetteur 3 ou 4 ?
Il faut faire en fonction de la version de l ino ?
RPI2 OSMC + domoticz + Rfx 433e + chacon dio, teleinfo 433 via arduino nano, sonde T° innovaley et TFA 303139, sonde T° piscine DIY 433 oregon, OWL 180, RPI zero W + camera

patoche
Messages : 167
Enregistré le : 25 oct. 2015, 15:51

Re: Téléinfo radio

Message par patoche »

Salut,

Merci pour ton ino test. Ca fonctionne :) avec cablage en pin 4.
Prochaine étape Raccorder au compteur via opto et ré injecter le soft complet dans l'arduino.
Je ferai un retour semaine prochaine.
RPI2 OSMC + domoticz + Rfx 433e + chacon dio, teleinfo 433 via arduino nano, sonde T° innovaley et TFA 303139, sonde T° piscine DIY 433 oregon, OWL 180, RPI zero W + camera

Répondre