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

      Bonjour,

      Vraiment du bon boulot.
      Merci.

      1 Reply Last reply Reply Quote
      • 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

                          3

                          Online

                          5.7k

                          Users

                          534

                          Topics

                          5.0k

                          Posts

                          Top Topics

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

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

                          • CC1101
                            CharlesC
                            Charles
                            0
                            2
                            117

                          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