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

    Denky D4 + Tempo

    Scheduled Pinned Locked Moved Denky D4
    23 Posts 5 Posters 1.7k 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.
    • T Offline
      Tostaky @Charles
      last edited by

      @Charles said in Denky D4 + Tempo:

      @Tostaky said in Denky D4 + Tempo:

      STGE = xBxxxxx => B = 1011 => aujourd'hui rouge (3), demain blanc (2).
      L'interface affiche toujours rouge / rouge

      je comprends pas j'ai testé le même code et aucun soucis

      https://onlinegdb.com/_VnKGhRZ5

      #include <stdio.h>
      #include <stdlib.h>
      #include <stdint.h>
      
      
      int main()
      {
          uint32_t status_register = strtol("9B3AD501", NULL, 16);
          printf("Status Register is 0x%08X\r\n", status_register);
          
          if (status_register >> 24) {
              char txt[32]; 
              uint8_t sr = status_register >> 24;
              uint8_t val = sr & 0x03;
              if (val) {
                  printf("Jour %s\r\n", val==1?"Bleu":val==2?"Blanc":"Rouge");
              }
              val = (sr >> 2) & 0x03;
              if (val) {
                  printf("Demain %s\r\n", val==1?"Bleu":val==2?"Blanc":"Rouge");
              }
              val = (sr >> 4) & 0x03;
              if (val) {
                  printf("Préavis pointe mobile %d\r\n", val);
              }
              val = (sr >> 6) & 0x03;
              if (val) {
                  printf("Pointe mobile en cours %d\r\n", val);
              }
          }
          return 0;
      }
      

      La sortie donne bien ça

      Status Register is 0x9B3AD501
      Jour Rouge
      Demain Blanc
      Préavis Pointe mobile 1
      Pointe mobile En cours 2
      

      peut être essayer cette 2eme méthode au cas ou (avec aussi le strtol changé en strtoul)
      https://onlinegdb.com/ADbvc4273

      #include <stdio.h>
      #include <stdlib.h>
      #include <stdint.h>
      
      
      int main()
      {
          uint32_t status_register = strtoul("9B3AD501", NULL, 16);
          printf("Status Register is 0x%08X\r\n", status_register);
          
          if (status_register >> 24) {
              char txt[32]; 
              char coul[4][6] = { "----", "Bleu", "Blanc", "Rouge" };
              
              uint8_t sr = status_register >> 24;
              uint8_t val = sr & 0x03;
              if (val) {
                  printf("Jour %s\r\n", coul[val]);
              }
              val = (sr >> 2) & 0x03;
              if (val) {
                  printf("Demain %s\r\n", coul[val]);
              }
              val = (sr >> 4) & 0x03;
              if (val) {
                  printf("Préavis pointe mobile %d\r\n", val);
              }
              val = (sr >> 6) & 0x03;
              if (val) {
                  printf("Pointe mobile en cours %d\r\n", val);
              }
          }
          return 0;
          return 0;
      }
      

      qui donne la même chose mais codé différemment, t'as moyen de tester ?

      Je n'ai pas modifié de code coté Denky car j'ai pris un firmware déjà compilé.
      A la lecture du code, je suis 100% d'accord avec le fonctionnement.
      Comme le script Berry accède à la valeur STGE et la décode correctement pour la transmettre à EmonCMS, j'en déduis que c'est quelque part entre la libteleinfo et l'affichage.

      C'est plus à titre informatif que je fais remonter car j'utilise peu l'affichage

      1 Reply Last reply Reply Quote
      • T Offline
        Tostaky
        last edited by

        Bonjour,

        Pour continuer sur ce sujet, j'ai essayé de passer sur le firmware de @Nicolas-Bernaerts. Les différents retours que j'ai pu lire est que cela améliore la comptabilisation de l'énergie entre Enedis, le Denky et EmonCMS.

        Aujourd'hui j'utilise un firmware "standard" et un script Berry pour alimenter EmonCMS toutes les 8500ms.

        En passant à la version 14.9beta de @Nicolas-Bernaerts, je n'ai plus de données qui remlontent. Le script Berry ne fonctionne plus.
        J'ai fait un rollback et tout est rentré dans l'ordre.

        Néanmoins, je voudrais tester ce firmware. De manière à préparer le script avant (je n'ai pas accès au Denky avant le WE prochain), est-il possible de valider que le script simplifié suivant

        var payload = {}
        def rule_tic(value, trigger)
        
          payload['IDX_SOUT'] = value['EAST']
          payload['IDX_SOUT_HP'] = value['EASF02']
          payload['IDX_SOUT_HC'] = value['EASF01']
          payload['IDX_INJ'] = value['EAIT']
          payload['PUI_SOUT'] = value['SINSTS']
          payload['PUI_INJ'] = value['SINSTI']
        
        end
        
        def start()
          # Callback on each frame interception
          tasmota.add_rule("TIC",rule_tic)
          # fire first post in 5s 
          tasmota.set_timer(5000, send_emoncms)
        end
        
        def send_emoncms()
         ...
        end
        

        devient

        var payload = {}
        
        def rule_meter (value, trigger)
          payload['PUI_SOUT'] = value['W']
          payload['PUI_INJ'] = value['PW']
           
        end
        
        def rule_contract (value, trigger)
          payload['IDX_SOUT'] = value['CONSO']
          payload['IDX_SOUT_HP'] = value['EASF02']
          payload['IDX_SOUT_HC'] = value['EASF01']
          payload['IDX_INJ'] = value['PROD']
        end
        
        def send_emoncms()
         ...
        end
        
        def start()
          # Callback on each frame interception
          tasmota.add_rule("METER",rule_meter)
          tasmota.add_rule("CONTRACT",rule_contract)
          # fire first post in 5s 
          tasmota.set_timer(5000, send_emoncms)
        end
        
        T 1 Reply Last reply Reply Quote
        • T Offline
          Tostaky @Tostaky
          last edited by

          @Tostaky said in Denky D4 + Tempo:

          payload['IDX_SOUT_HP'] = value['EASF02']
          payload['IDX_SOUT_HC'] = value['EASF01']

          Evidement, ces lignes sont en trop

          1 Reply Last reply Reply Quote
          • First post
            Last post

          4

          Online

          5.7k

          Users

          534

          Topics

          5.0k

          Posts

          Top Topics

          • Bonjour Nicolas
            Nicolas BernaertsN
            Nicolas Bernaerts
            0
            19
            309

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

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

          • CC1101 mini shield pour raspberry
            CharlesC
            Charles
            0
            5
            150

          • CC1101
            CharlesC
            Charles
            0
            2
            66

          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