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

    Simulation de trames teleInfo par WinInfo.ino

    Scheduled Pinned Locked Moved WifInfo
    6 Posts 2 Posters 2.3k 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
      Marco40
      last edited by

      Bonjour,
      j'ai ajouté une option pour simuler des trames teleInfo en bouclant TX serial1 vers Rx serial2.
      Je vous joint 1 fichier avec les modifications à ajouter à WinInfo.ino ainsi qu'un copie décran de l'onglet tinfo associé.
      0_1518804358183_onglet tabinfo .JPG

      [0_1518804378137_modif WinInfo.txt](Envoi en cours 100%)

      1 Reply Last reply Reply Quote
      • M Offline
        Marco40
        last edited by

        Je vous colle le code directement, problème avec un fichier.

        #define SIMUTRAMETEMPO

        #ifdef SIMUTRAMETEMPO

        //avec esp12 0.9
        //strapper ces 2 pins:
        //emission sur serial1 esp12-->GPIO2--->TXD1-->D4
        //réception sur serial après le swap-->GPIO13---->RXD2--->D7

        //fonctions calcChecksum de LibTeleinfo modifié
        unsigned char calcChecksum(char *mot)
        {
        unsigned int i;
        unsigned int sum = ' '; // Somme des codes ASCII du message + un espace

        						  // avoid dead loop, always check all is fine 
        if (mot) {
        	// this will not hurt and may save our life ;-)
        	if (strlen(mot)) {
        		while (*mot)
        			sum += *mot++;
        		return ((sum & 63) + ' ');
        	}
        }
        return 0;
        

        }

        /* ======================================================================
        Function: initSimuTrame
        Purpose :
        Input :
        Output : -
        Comments: -
        ====================================================================== */
        int cptChar = 500;
        unsigned long cpt = 0; //max:4294967295
        #define END_STR '\0' // End of group
        #define NBCHAR 23
        #define NBCHAMP 17

        //options supplémentaire du compilateur, ajouter -fpermissive

        //ATTENTION a tabnames de webserver.cpp si version LibTeleinfo-syslog.zip
        char TRAME[][NBCHAR] = { "\x02\0","\rADCO 039801172264 \0", "\rOPTARIF BBR* \0", "\rISOUSC 45 \0",
        "\rBBRHCJB 008078393 \0", "\rBBRHPJB 015766489 \0", "\rBBRHCJW 001256887 \0",
        "\rBBRHPJW 002075407 \0", "\rBBRHCJR 000153905 \0", "\rBBRHPJR 000532607 \0",
        "\rPTEC HCJW \0", "\rDEMAIN BLEU \0", "\rIINST 001 \0","\rIMAX 025 \0",
        "\rHHPHC Y \0","\rMOTDETAT 000000 \0","\x03\0" };
        void initSimuTrameTempo(void)
        {
        for (int i = 1; i < NBCHAMP - 1; i++)
        {
        TRAME[i][0] = TINFO_SGR;
        for (int j = 0; j <NBCHAR; j++)
        {
        if (TRAME[i][j] == END_STR)
        {
        TRAME[i][j] = calcChecksum(&TRAME[i][1]); //CRC
        TRAME[i][j + 1] = TINFO_EGR;
        TRAME[i][j + 2] = END_STR;
        break;
        }
        }
        }
        }
        void emetTrameTempo(void)
        {
        char Etiq[] = "ADCO";
        //mise a jour du compteur
        char buffer[13];
        sprintf(buffer, "%012u", cpt);
        for (int i = 0; i < 12; i++)
        TRAME[1][i + 6] = buffer[i];
        TRAME[1][19] = tinfo.calcChecksum(&Etiq[0], &buffer[0]);
        //emission d'une trame complète
        for (int i = 0; i < NBCHAMP; i++)
        {
        for (int j = 0; j < NBCHAR; j++)
        {
        if (TRAME[i][j] != END_STR)
        Serial1.write(TRAME[i][j]);
        else
        break;
        }
        delay(10);//tempo inter champ
        }
        cpt += 1; //pas de test de débordement...
        delay(10);//tempo intertrame
        }

        #endif //SIMUTRAMETEMPO

        #ifdef SIMUTRAMETEMPO
        //dans setup juste avant Init teleinfo
        Serial1.begin(1200, SERIAL_7E1);
        Serial1.setRxBufferSize(1024);
        initSimuTrameTempo();
        #endif // SIMUTRAMETEMPO

        #ifdef SIMUTRAMETEMPO
        //au début de loop
        cptChar += 1;
        if(cptChar>=500)
        {
        emetTrameTempo();
        cptChar = 0;
        }
        #endif //SIMUTRAMETEMPO

        1 Reply Last reply Reply Quote
        • M Offline
          mjeanne
          last edited by

          Bonjour,

          c'est pas con un mode débug. L'idéal serait de pouvoir l'activer depuis l'interface web, et sans modification de cablage. Cela permettrait en cas de soucis de faire un debug plus simple. Sur d'autres forums, certains se plaignent de ne pas recevoir de trames, ce mode permettrait déjà de savoir si le soucis est coté compteur ou coté ordinateur.

          1 Reply Last reply Reply Quote
          • M Offline
            Marco40
            last edited by

            Bonjour
            C'est toujours possible mais il faudrait prévoir un relais pour commuter l'entrée série entre la liaison teleinfo ou la simulation.

            1 Reply Last reply Reply Quote
            • M Offline
              mjeanne
              last edited by

              non, c'est juste en sortie que ça devrait se jouer. Selon une option dans l'interface web, on pourrait choisir d'avoir les données réelles ou des données simulées.
              Si on a une box domotique derrière qui ne reçoit rien, le mode debug permettrait de savoir si le soucis est en amont ou en aval de l'esp

              M 1 Reply Last reply Reply Quote
              • M Offline
                Marco40 @mjeanne
                last edited by

                @mjeanne
                Vous parlez-donc d'une version wifinfo modifiée? qui réémet les informations reçues de Rx serial vers Tx serial1 au profit d'une box domotique.

                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