Community Forum
    • Blog
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Librairie Universelle Pour la Téléinformation

    Scheduled Pinned Locked Moved Librairie Téléinfo
    corearduinoesp8266librairiejson
    12 Posts 5 Posters 17.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M Offline
      mersing
      last edited by mersing

      Re,

      Tout fonctionne parfaitement sur un Moteino, jusqu'à l'utilisation de la fonction Radio.

      J'ai pris Arduino_Softserial_Etiquette.ino comme exemple.

      J'ai uniquement ajouter la fonction radio.initialize( RF69_868MHZ, NODEID, NETWORKID ) à la fin de Setup().

      L'execution est bloquée. Rien ne s'affiche.

      Dans la librairie RFM69.cpp, si l'on commente les lignes :

      //do writeReg(REG_SYNCVALUE1, 0xAA); while (readReg(REG_SYNCVALUE1) != 0xAA);
      //do writeReg(REG_SYNCVALUE1, 0x55); while (readReg(REG_SYNCVALUE1) != 0x55);
      //while ((readReg(REG_IRQFLAGS1) & RF_IRQFLAGS1_MODEREADY) == 0x00); // wait for ModeReady

      ca fonctionne à nouveau (la partie Teleinfo, pas la partie radio bien sur).
      La fonction radio.initialize ne bloque plus.

      Une idée de ce qui peut se passer ?

      Cordialement.

      1 Reply Last reply Reply Quote
      • CharlesC Offline
        Charles
        last edited by Charles

        Bonjour,

        Merci pour le commentaire. C'est rigolo quand j'ai développé la librairie je l'ai fait sur un moteino 😉 mais je n'ai pas activé la radio, faudrait que j'essais!
        Mais je ne suis pas surpris que ce çà ne fonctionne pas, le SoftSerial c'est vraiment pas terrible et surtout incompatible avec d'autres librairies. C'est pas sa faute, mais il prends une IRQ à chaque changement d'état sur la pin soft RX, donc çà le travaille pas mal. Quand je vois déjà comment il torpille le millis(), j'imagine avec le moteino et les IRQ (quoique çà peut être asynchrone) çà pourrait marcher
        Il y a 3 solutions pour se sortir de là:

        • Privilégier la liaison Série Hardware, et switcher la pin RX (D0) entre celle de l'adaptateur FTDI pour l'upload la téléinfo une fois le sketch uploadé, ouais je sais, galère!!
        • Passer sur un moteino mega qui a 2 liaisons série hard et utiliser Serial1 pour la téléinfo 😉
        • Activer l'OTA sur le moteino, comme çà les upload se font en RF et la liaison série hard reste disponible pour la téléinfo 😉
        1 Reply Last reply Reply Quote
        • M Offline
          mersing
          last edited by

          Bonjour,
          J'ai change de Moteino - Tout fonctionne bien.

          Je dois avoir un probleme HW sur la Moteino précedente: les codes basic RF69 ne fonctionnent pas non plus : bloquent au niveau de radio.initialize.

          Cordialement.

          1 Reply Last reply Reply Quote
          • CharlesC Offline
            Charles
            last edited by Charles

            Ah cool alors 🙂

            j'aime pas trop le initialize de la librairie d'origine de Felix, car justement en cas de problème çà bloque et on ne sait jamais d'ou çà vient.
            Je l'avais déjà modifié pour çà, regarde sur mon git rfm69.cpp la fonction me retourne true si module trouvé ou false si time-out (50ms)

            bool RFM69::initialize(byte freqBand, byte nodeID, byte networkID)
            {
              unsigned long start_to;
              const byte CONFIG[][2] =
              {
                /* 0x01 */ { REG_OPMODE, RF_OPMODE_SEQUENCER_ON | RF_OPMODE_LISTEN_OFF | RF_OPMODE_STANDBY },
                /* 0x02 */ { REG_DATAMODUL, RF_DATAMODUL_DATAMODE_PACKET | RF_DATAMODUL_MODULATIONTYPE_FSK | RF_DATAMODUL_MODULATIONSHAPING_00 }, //no shaping
                /* 0x03 */ { REG_BITRATEMSB, RF_BITRATEMSB_55555}, //default:4.8 KBPS
                /* 0x04 */ { REG_BITRATELSB, RF_BITRATELSB_55555},
                /* 0x05 */ { REG_FDEVMSB, RF_FDEVMSB_50000}, //default:5khz, (FDEV + BitRate/2 <= 500Khz)
                /* 0x06 */ { REG_FDEVLSB, RF_FDEVLSB_50000},
            
                /* 0x07 */ { REG_FRFMSB, (freqBand==RF69_315MHZ ? RF_FRFMSB_315 : (freqBand==RF69_433MHZ ? RF_FRFMSB_433 : (freqBand==RF69_868MHZ ? RF_FRFMSB_868 : RF_FRFMSB_915))) },
                /* 0x08 */ { REG_FRFMID, (freqBand==RF69_315MHZ ? RF_FRFMID_315 : (freqBand==RF69_433MHZ ? RF_FRFMID_433 : (freqBand==RF69_868MHZ ? RF_FRFMID_868 : RF_FRFMID_915))) },
                /* 0x09 */ { REG_FRFLSB, (freqBand==RF69_315MHZ ? RF_FRFLSB_315 : (freqBand==RF69_433MHZ ? RF_FRFLSB_433 : (freqBand==RF69_868MHZ ? RF_FRFLSB_868 : RF_FRFLSB_915))) },
            
                // looks like PA1 and PA2 are not implemented on RFM69W, hence the max output power is 13dBm
                // +17dBm and +20dBm are possible on RFM69HW
                // +13dBm formula: Pout=-18+OutputPower (with PA0 or PA1**)
                // +17dBm formula: Pout=-14+OutputPower (with PA1 and PA2)**
                // +20dBm formula: Pout=-11+OutputPower (with PA1 and PA2)** and high power PA settings (section 3.3.7 in datasheet)
                ///* 0x11 */ { REG_PALEVEL, RF_PALEVEL_PA0_ON | RF_PALEVEL_PA1_OFF | RF_PALEVEL_PA2_OFF | RF_PALEVEL_OUTPUTPOWER_11111},
                ///* 0x13 */ { REG_OCP, RF_OCP_ON | RF_OCP_TRIM_95 }, //over current protection (default is 95mA)
            
                // RXBW defaults are { REG_RXBW, RF_RXBW_DCCFREQ_010 | RF_RXBW_MANT_24 | RF_RXBW_EXP_5} (RxBw: 10.4khz)
                /* 0x19 */ { REG_RXBW, RF_RXBW_DCCFREQ_010 | RF_RXBW_MANT_16 | RF_RXBW_EXP_2 }, //(BitRate < 2 * RxBw)
                //for BR-19200: //* 0x19 */ { REG_RXBW, RF_RXBW_DCCFREQ_010 | RF_RXBW_MANT_24 | RF_RXBW_EXP_3 },
                /* 0x25 */ { REG_DIOMAPPING1, RF_DIOMAPPING1_DIO0_01 }, //DIO0 is the only IRQ we're using
                /* 0x29 */ { REG_RSSITHRESH, 220 }, //must be set to dBm = (-Sensitivity / 2) - default is 0xE4=228 so -114dBm
                ///* 0x2d */ { REG_PREAMBLELSB, RF_PREAMBLESIZE_LSB_VALUE } // default 3 preamble bytes 0xAAAAAA
                /* 0x2e */ { REG_SYNCCONFIG, RF_SYNC_ON | RF_SYNC_FIFOFILL_AUTO | RF_SYNC_SIZE_2 | RF_SYNC_TOL_0 },
                /* 0x2f */ { REG_SYNCVALUE1, 0x2D },      //attempt to make this compatible with sync1 byte of RFM12B lib
                /* 0x30 */ { REG_SYNCVALUE2, networkID }, //NETWORK ID
                /* 0x37 */ { REG_PACKETCONFIG1, RF_PACKET1_FORMAT_VARIABLE | RF_PACKET1_DCFREE_OFF | RF_PACKET1_CRC_ON | RF_PACKET1_CRCAUTOCLEAR_ON | RF_PACKET1_ADRSFILTERING_OFF },
                /* 0x38 */ { REG_PAYLOADLENGTH, 66 }, //in variable length mode: the max frame size, not used in TX
                //* 0x39 */ { REG_NODEADRS, nodeID }, //turned off because we're not using address filtering
                /* 0x3C */ { REG_FIFOTHRESH, RF_FIFOTHRESH_TXSTART_FIFONOTEMPTY | RF_FIFOTHRESH_VALUE }, //TX on FIFO not empty
                /* 0x3d */ { REG_PACKETCONFIG2, RF_PACKET2_RXRESTARTDELAY_2BITS | RF_PACKET2_AUTORXRESTART_ON | RF_PACKET2_AES_OFF }, //RXRESTARTDELAY must match transmitter PA ramp-down time (bitrate dependent)
                //for BR-19200: //* 0x3d */ { REG_PACKETCONFIG2, RF_PACKET2_RXRESTARTDELAY_NONE | RF_PACKET2_AUTORXRESTART_ON | RF_PACKET2_AES_OFF }, //RXRESTARTDELAY must match transmitter PA ramp-down time (bitrate dependent)
                //* 0x6F */ { REG_TESTDAGC, RF_DAGC_CONTINUOUS }, // run DAGC continuously in RX mode
                /* 0x6F */ { REG_TESTDAGC, RF_DAGC_IMPROVED_LOWBETA0 }, // run DAGC continuously in RX mode, recommended default for AfcLowBetaOn=0
                {255, 0}
              };
            
              pinMode(_slaveSelectPin, OUTPUT);
              SPI.begin();
             
              // Set time out to 50ms
              #define TIME_OUT 50
              
              start_to = millis() ;
            
              do 
                writeReg(REG_SYNCVALUE1, 0xaa); 
              while (readReg(REG_SYNCVALUE1) != 0xaa && millis()-start_to < TIME_OUT);
            
              if (millis()-start_to >= TIME_OUT) 
                return (false);
                
              // Set time out 
              start_to = millis()  ;  
              do 
                  writeReg(REG_SYNCVALUE1, 0x55);
              while (readReg(REG_SYNCVALUE1) != 0x55 && millis()-start_to < TIME_OUT);
              
              if (millis()-start_to >= TIME_OUT) 
                return (false);
              for (byte i = 0; CONFIG[i][0] != 255; i++)
                writeReg(CONFIG[i][0], CONFIG[i][1]);
            
              // Encryption is persistent between resets and can trip you up during debugging.
              // Disable it during initialization so we always start from a known state.
              encrypt(0);
            
              setHighPower(_isRFM69HW); //called regardless if it's a RFM69W or RFM69HW
              setMode(RF69_MODE_STANDBY);
              // Set time out 
              start_to = millis() ;
            	while (((readReg(REG_IRQFLAGS1) & RF_IRQFLAGS1_MODEREADY) == 0x00) && millis()-start_to < TIME_OUT); // Wait for ModeReady
              if (millis()-start_to >= TIME_OUT) return (false);
              attachInterrupt(_interruptNum, RFM69::isr0, RISING);
            
              selfPointer = this;
              _address = nodeID;
              return true;
            }
            
            
            1 Reply Last reply Reply Quote
            • X Offline
              XxP1asmaxX
              last edited by

              Bonjour,

              Je me demandais si il était possible d'utiliser facilement l'ESP8266 et la téléinfo ?? en effet les deux utilise le serial il faudrait donc un softserial et un serial physique ça ne risque pas de poser des problèmes lors de la communication ?

              Merci d'avance !

              1 Reply Last reply Reply Quote
              • CharlesC Offline
                Charles
                last edited by

                Bonjour,

                Oui c'est ce qui est fait avec la carte WifInfo, mais en revanche on perd la serial. J'utilise le TXD1 (la 1/2 uart serial restante) pour le débug.

                J'ai essayé le soft serial (sur l'entrée téléinfo), pas concluant, ça génère tellement d'interruption que ça ralenti le processus.
                Ceci dit, comme on est réseau avec l'ESP rien n'empêche d'utiliser une interface style telnet.

                1 Reply Last reply Reply Quote
                • ? Offline
                  A Former User
                  last edited by

                  This post is deleted!
                  1 Reply Last reply Reply Quote
                  • CharlesC Offline
                    Charles
                    last edited by

                    @J6B
                    Merci merci, dans la nouvelle version tous les retours se font en JSON 😉
                    Normalement la 1ere entrée de la liste chainée est vide (histoire de toujours avoir un pointeur en cas de liste vide justement) donc le me->next pointe bien sur la réelle 1ere entrée de la liste. et si la liste est vide le 1er me->next vaut null

                    1 Reply Last reply Reply Quote
                    • F Offline
                      fred
                      last edited by

                      Bonjour,
                      je m’intéresse aux nouvelles technologies et à la domotique.
                      Je souhaite avoir un relevé de ma conso électrique dans l'environnement Domoticz.
                      Pour se faire après lecture sur différents forums je me suis équipé d'un Arduino Nano et d'un Opto SFH620. Le but de mon installation est de transférer les trames via un RF433.
                      Sur différents forums le montage fonctionne et la remontée d'infos se fait bien via le mode RF433.
                      Le problème me concernant est que je suis en Tempo triphasé et le scripts pour l'Aruino sont écrits pour les monophasé
                      Pensez-vous que votre script peut fonctionner pour un Arduino Nano et un abonnement Tempo triphasé ?
                      Si oui est-il possible de le partager sur le forum "Easydomoticz" pour essayer de l'adapter pour qu'il puisse fonctionner en RF433.
                      Je n'y connais rien en progs d'où peut-être des questions bêtes !!!

                      En tout cas félicitation pour votre travail.

                      Fred

                      1 Reply Last reply Reply Quote
                      • CharlesC Offline
                        Charles
                        last edited by

                        @fred
                        Normalement le code dans l'Arduino (donc ça doit marcher sur Nano) ne fait que transmettre les informations.

                        Tu parles de quel code ? quel sketch tu mets dans ton Arduino?

                        1 Reply Last reply Reply Quote
                        • First post
                          Last post

                        8

                        Online

                        5.7k

                        Users

                        534

                        Topics

                        5.0k

                        Posts

                        Top Topics

                        • Denky 4 - Domoticz - Triphasé -
                          Nicolas BernaertsN
                          Nicolas Bernaerts
                          0
                          7
                          241

                        • Denky D4 et Linky Standard TInfo Rx Non Configuré
                          CharlesC
                          Charles
                          0
                          5
                          280

                        • CC1101
                          CharlesC
                          Charles
                          0
                          2
                          116

                        Popular Tags

                        teleinfo
                        24 topics
                        arduino
                        19 topics
                        remora
                        16 topics
                        esp8266
                        10 topics
                        arduipi
                        10 topics
                        wifinfo
                        7 topics
                        raspberry
                        7 topics
                        broadcast
                        7 topics
                        Copyright © 2022 Charles-Henri Hallard | Return to blog page | Powered by NodeBB