Navigation

    Community Forum

    • Register
    • Login
    • Search
    • Blog
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    1. Home
    2. Charles
    3. Best
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    Best posts made by Charles

    • RE: Request to vote for ULPNode board format

      Vote for this board, with enclosure format

      The size is as follow

      ULPNode_size_2.png

      enclosure_pp42.jpg

      Enclosure reference and datasheet
      http://evatron.com/enclosures/sensor-cases/pp42m/

      posted in ULPNode
      Charles
    • RE: Request to vote for ULPNode board format

      Vote for current board

      The size is as follow

      ULPNode_size_1.png

      posted in ULPNode
      Charles
    • RE: WebServer étrange

      @AuFilElec
      Géniale ton interface WEB pour les zones, c'est cool ;-)

      Pour l'interface WEB je viens de tout passer en AsyncTCP (merci à @me-no-dev) et je t'assure qu'au niveau performance, c'est juste le jour et la nuit, avant au 1er refresh le temps de charger bootstrap ça prenait genre 3/4 secondes, maintenant en moins d'une seconde c'est bouclé!
      En plus j'ai tout migré en WebSockets et j'ai ajouté une console série WEB pour passer des commandes, la config et voir les LOG, ça commence à donner un truc qui me plait.
      Plus qu'a finaliser et intégrer ça dans le remora car pour le moment c'est pour un autre projet.

      0_1462683081961_Capture.JPG

      Tu peux déjà regarder l'exemple de la console Web Serial to Websocket si tu veux c'est ici car il y a aussi un dossier intéressant (webdev) qui contient :

      • des scripts nodejs pour le développement de l'interface web afin de tester les pages Web de dev rapidos sans avoir à les flasher dans l'ESP
      • un script pour copier tous les fichiers de dev sans le dossier data pour flash dans la SPIFFS

      J'utilise le même principe sur remora et WiFinfo avec qui scripts plus avancés car ils minifient les js et css non minifiés, et en plus ils les concatène tous en 1 seul fichier pour un chargement plus rapide depuis l'ESP vers le browser.

      posted in Remora
      Charles
    • RE: Et une nouvelle REMORA

      @Fab_33

      • en version 5mm
      • en version 8mm
      posted in Remora
      Charles
    • Problème de fils pilotes, passer les optos en 3.3V

      Bonjour,

      Pour ceux qui rencontrent des soucis de commande de fils pilote avec les optos blanc (TLP168J), il faut essayer d'alimenter les optocoupleurs en 3.3V en lieu et place du 5V, pour cela il faut :

      • couper la piste entre 5V et le Pad du milieu.
      • s'assurer que la piste est bien coupée au multimètre si besoin (une fois la carte alimentée, la tension sur le pad du milieu doit être 0V et non plus 5V.
      • une fois vérifié, redébrancher l'alim puis relier les 2 autres pads 3V3
      • une fois la carte alimentée à nouveau, la tension sur le pad du milieu doit être 3.3V et non plus 0V

      Une photo valant mieux que des explications, la voici :

      0_1450974589141_remora-opto-3V3.jpg

      Je vous souhaite à tous un très joyeux noël.

      posted in Remora
      Charles
    • RE: Teleinfo Broadcast comptatible avec Emoncms

      @arthurlutz
      Merci pour ton commentaire.
      Alors, je te répondrais, oui, j'ai vu un tas de choses bizarre avec emoncms et je t'avouerais que parfois la mise en oeuvre et la compréhension des graphes relève de la magie vaudou !
      En plus ils ont récemment mis à jour la version sur le site officiel et je ne suis pas persuadé que ça n'ai pas ajouté des soucis.
      Peux-tu nous copier ta liste de feed et d'input ?

      posted in Téléinfo
      Charles
    • Fix problème de réception µTéléinfo V1.1

      Bonjour,

      Comme vu dans ce post, il se peu que dans certains cas après quelques mois d'utilisation, que la réception de la téléinfo ne fonctionne plus correctement.
      Ayant eu entre les mains le cas, et pour rappel le schéma est le suivant

      0_1483523815048_upload-47c3b21c-72f6-4055-8745-1118a7bafd4f

      J'ai donc commencé par:

      • Changer l'optocooupleur (pas mieux)
      • Changer le mosfet (pas mieux)

      Etant donné que le 3eme composant sur lequel le signal arrive est le RXD du chip FTDI FT230SX, j'en ai déduit (peut être à tord) que la resistance de pull-up interne devait varier avec le temps et qu'en fonction des compteurs électriques, sortir de la plage de fonctionnement.

      J'ai donc testé en ajoutant une pull-up de 10K comme le montage ci dessous et tout rentre dans l'ordre.

      0_1483525262560_uTeleinfo-fix.jpg

      Le montage final devient alors le suivant avec R7 rajoutée.

      0_1483525391839_upload-6036d054-5c83-4ad7-8578-7683578edff1

      La prochaine révision V1.2 contiendra le fix.

      posted in MicroTéléinfo
      Charles
    • RE: WebServer étrange

      @scalz
      ouais c'est compliqué (voir même complètement fou) de vouloir gérer le hard et le soft, nous sommes que des humains, notre gros soucis c'est que le temps est le même pour tout le monde et il nous faudrait des journées de 48H, une soft, une hard hahahaha

      En plus tout le socle Arduino ESP8266 ça bouge tout le temps, l'équipe est super active et réactive, ça avance vite et une version OK peu ne plus compiler 6 mois après car tout à changé mais que en bien !

      Ah oui je ne vous ai pas dit aussi, j'ai tout passé le JSON avec la super librairie ArduinoJSon de Benoit (encore un Frenchy), la encore trop de la balle à tel point que la AsyncWeb socket de @me-no-dev inclue tout ce qu'il faut pour s'intégrer avec cette lib.

      Après je suis pas super calé en C++ (class, template, virtual) et parfois je galère pour contribuer aux codes de ces super dev. En revanche le C ça va très bien ;-)

      @AuFilElec
      Pour la partie du code dont tu parles, tu as du voir mais je fais un rappel, plus on aura d'yeux sur le soucis plus vite on le trouvera (bien que je suis pas certain que ça vienne du code, je l'utilise sous linux depuis des lustres sans le moindre soucis). Donc

      La structure de la liste chaînée _ValueList contient pour chaque élément (je fais grace du premier (root) qui est vide)

      // Linked list structure containing all values received
      typedef struct _ValueList ValueList;
      struct _ValueList 
      {
        ValueList *next; // next element
        uint8_t checksum;// checksum
        uint8_t flags;   // specific flags
        char  * name;    // LABEL of value name
        char  * value;   // value 
      };
      

      Donc pour chaque élément, tu as:

      • *next un pointeur sur la même structure du prochain élément, sauf si nous sommes sur le dernier élément bien sûr auquel cas ce pointeur est NULL
      • checksum la checksum du couple LABEL/VALUE de l'élément
      • flags des drapeaux servant a savoir su l'élément vient d'être ajouté, ou juste modifié, .. (par exemple une valeur IINST modifiée)
      • *nameun pointeur sur la chaine qui va contenir le nom du label (ex IINST)
      • *value un pointeur sur la chaine qui va contenir la valeur (ex 23)

      Ce qu'il faut bien comprendre c'est que quand tu alloues un élément de la liste chaînée (parce que viens de recevoir une nouvelle étiquette) tu n'as pas la taille pour stocker le nom de l'étiquette ainsi que sa valeur, ce ne sont que des pointeurs *name et *value il faut donc allouer l'espace mémoire nécessaire et c'est la qu'interviennent les lignes dont tu parles.

      Donc dans un 1er temps on crée un node vide de la taille de la structure auquel on ajoute la taille de l'étiquette+1 et de sa valeur+1 (les 2 +1 pour les fins de chaine \0) newNode

      
            // Our linked list structure sizeof(ValueList)
            // + Name  + '\0'
            // + Value + '\0'
            size_t size = sizeof(ValueList) + lgname + 1 + lgvalue + 1  ;
            // Create new node with size to store strings
            if ((newNode = (ValueList  *) malloc(size) ) == NULL) 
              return ( (ValueList *) NULL );
            else 
              // get our buffer Safe
              memset(newNode, 0, size);
            
            // Put the new node on the list
            me->next = newNode;
      

      Ensuite on positionne les valeurs de la structure, et la, c'est la ruse on stocke la chaîne du nom à la fin de la structure (car y on a réservé plus de place), donc son pointeur est l'adresse du noeud + la taille de la structure
      newNode->name = (char *) newNode + sizeof(ValueList);
      et enfin le pointeur de la valeur juste après la valeur du nom
      newNode->value = (char *) newNode->name + lgname + 1;

      D'ou le code suivant:

            // First String located after last struct element
            // Second String located after the First + \0
            newNode->checksum = checksum;
            newNode->name = (char *)  newNode + sizeof(ValueList);
            newNode->value = (char *) newNode->name + lgname + 1;
      

      Et après on y copie label + valeur

            // Copy the string data
            memcpy(newNode->name , name  , lgname );
            memcpy(newNode->value, value , lgvalue );
      

      Voilà j'espère avoir pu éclairer sur le sujet ;-)

      Et Tadaaaaaaaaaaaa , la vache, en écrivant ça je viens de percuter sur un truc, je crois comprendre ce qu'il se passe et je pense avoir trouvé le bug !!!!!
      L'ESP aligne par défaut les structures et leur contenu sur 4 octets et donc en fonction des tailles label/value tout peut changer et on se retrouve avec des alignement foireux (j'ai déjà rencontré ce souci en sauvant des config sous forme de structure en flash) que j'ai réglé avec des directives pragma pour aligner sur 1 octet.

      Peux-tu essayer de changer le code de déclaration de la structure en y ajoutant les pragma avant et après déclaration de la structure? Si ça ne suffit pas il faudra aussi tenter d'aligner malloc pour label/value sur 4

      #pragma pack(push)  // push current alignment to stack
      #pragma pack(1)        // set alignment to 1 byte boundary
      
      // Linked list structure containing all values received
      typedef struct _ValueList ValueList;
      struct _ValueList 
      {
        ValueList *next; // next element
        uint8_t checksum;// checksum
        uint8_t flags;   // specific flags
        char  * name;    // LABEL of value name
        char  * value;   // value 
      };
      
      #pragma pack(pop)
      

      Bon tests ;-)

      Charles

      posted in Remora
      Charles