WebServer étrange
-
Bonjour à tous,
Et bien voila, j'ai assemblé ma Remora, compilé et uploadé le programme dans le nodeMCU, super content de moi, mais voila....
Je rencontre un problème étrange que j'ai du mal à m'expliquer:
Lorsque je compile le sketch (version 1.3.2) avec l'IDE Arduino 1.6.7, la Remora est super lent et ne répond pas à certains moments.
Lorsque je compile avec la version 1.6.5 de l'IDE Arduino, la Remora répond très bien, sauf qu'il me retourne des 404 pour les URI (/relais
,/fp
,/delestage
,/fpX
). Par contre, il répond bien à la requête/uptime
,?relais=1
.
J'ai bien la téléinfo et les infos sur l'afficheur OLED.Remora v1.3.2 avec MOD_TELEINFO, MOD_OLED
Le SDK esp8266 : 1.5.1_16_01_08Options de compilation :
- Carte: NodeMCU 1.0
- CPU Frequency: 160MHz
- Flash Size: 4M (1M SPIFFS)
- Upload Speed: 115200
Alimentation: sur le nodeMCU avec un chargeur 5V 700mA.
J'ai cherché sur le forum, mais je n'ai pas trouvé de réponse à mon problème, hormis le problème des erreurs 404, mais le problème semble être corrigé depuis décembre.
Voici ma carte
Merci d'avance pour votre aide,
Manuel -
Plusieurs choses depuis hier,
Il semblerait que la trame téléinfo envoyée à Jeedom soit erronée:Trame : ADCO=03122803739 / api=XXXXXXXXXXXXXXX / OPTARIF=BASE / ISOUSC=30 / BASE=007193055 / PTEC=TH.. / IINST=001 / IMAX=032 / PAPP=00320 / MOTDETAT=000000 / OPTARINST=001IMAX / ISOUE=007192PTEC / SC=30
La fin de la trame n'a pas l'air en forme
Sinon, en regardant sur l'afficheur OLED, le compteur des heures pleines ne s'incrémentent pas.Et une question, fallait'il souder les résistances R23 et R24 ?
Voici mes infos systèmes:
[ {"na":"Uptime","va":"44890"}, {"na":"Version Logiciel","va":"1.3.2"}, {"na":"Compilé le","va":"Apr 15 2016 16:49:13"}, {"na":"Version Matériel","va":"V1.3 avec MCP23017"}, {"na":"Modules activés","va":"OLED TELEINFO "}, {"na":"SDK Version","va":"1.5.2(7eee54f4)"}, {"na":"Chip ID","va":"0xD27311"}, {"na":"Boot Version","va":"0x1F"}, {"na":"Flash Real Size","va":"4.00 MB"}, {"na":"Firmware Size","va":"322.65 KB"}, {"na":"Free Size","va":"2.68 MB"}, {"na":"Analog","va":"4 mV"}, {"na":"SPIFFS Total","va":"934.88 KB"}, {"na":"SPIFFS Used","va":"141.92 KB"}, {"na":"SPIFFS Occupation","va":"15%"}, {"na":"Fil Pilote #1","va":"Hors Gel"}, {"na":"Fil Pilote #2","va":"Hors Gel"}, {"na":"Fil Pilote #3","va":"Hors Gel"}, {"na":"Fil Pilote #4","va":"Hors Gel"}, {"na":"Fil Pilote #5","va":"Hors Gel"}, {"na":"Fil Pilote #6","va":"Hors Gel"}, {"na":"Fil Pilote #7","va":"Hors Gel"}, {"na":"Etat Relais","va":"Ouvert"}, {"na":"Delestage","va":"27.00A"}, {"na":"Relestage","va":"24.00A"}, {"na":"Etat Delestage","va":"Niveau 0 Zone 1"}, {"na":"Free Ram","va":"24.93 KB"} ]
-
Bonjour à tous,
Pour répondre à une de mes interrogations
@AuFilElec said:Sinon, en regardant sur l'afficheur OLED, le compteur des heures pleines ne s'incrémentent pas.
Et bien, tout simplement parce que mon abonnement se trouve être en heures pleines seulement (PTEC: TH..) et se PTEC n'est pas pris en compte dans l'affichage.
Sinon, j'ai eu un reboot ce matin, je ne sais pas pourquoi.
Concernant les problèmes de requêtes d'interrogation du relais et délestage, j'ai ajouter les fonctions aux déclarations du serveur. Il faut que je rajoute aussi les fil pilotes, mais c'est un peu plus compliqué.
Le problème vient de la transformation de l'URI en char * qui ne passe pas bien. Le debug n'affiche qu'un seul caractère, soit un espace, soit la lettre 'V', du moins de ce que j'ai vu pour le moment. Voila surement pourquoi la comparaison ne pouvait être correcte, ce qui redirigeait vers la fonctionhandleFileRead
qui retourne un simple 404.En espérant qu'une âme charitable pourra m'aider à y voir un peu plus clair.
Bon week-end à tous -
Je continue de me répondre, peut être que cela servira à d'autres.
En ce qui concerne mon problème de requêtes d'interrogation qui n'étaient pas trouvées (
/relais
,/delestage
,/fp
), je pense qu'il s'agit d'une modification dans la classe String (fichier: WString) du core ESP8266, car en changeant de SDK (1.5.2 -> 1.3.0), je n'ai plus de problèmes. En mes recherches m'ont amené à la fonction changeBuffer qui a été modifiée et qui ré-alloue la mémoire en modifiant le buffer de la classe String. Sachant que la fonctionc_str
retourne le buffer de la classe String.J'attends maintenant de voir si les données de la téléinfo vont déconnées ou pas avec le changement de SDK.
-
@AuFilElec bonsoir,
Cela me rappelle les trucs étranges potentiellement liés au SDK (cf le post https://community.hallard.me/topic/105/ordres-fp-et-relais-non-transmis), mais sur la façon de positionner les valeurs.
Cela donne quoi chez toi si tu mets //relais au lieu de /relais ?
Bon courage,
Laurent -
Salut @laurent ,
Je te remercie pour ton aide, c'est sympa.
Maintenant que je suis redescendu au SDK 1.3.0, je n'ai plus de problème avec l'API. Lorsque j'aurai résolu tous les problèmes, je tenterai peut-être d'upgrader le SDK.
Le problème maintenant se situe au niveau de la télé-info, j'ai des valeurs incohérentes qui sont ajoutées:
Teleinfo absente/perdue! IMAOTDETAT=PTEC Added BASE=007204843 Updated PAPP=00310 Updated PAPP=00300 Updated PAPP=00310 Updated PAPP=00300 Updated URI[3]='/fp'
Je précise que mon optocoupleur est un LTV-814.
Précédemment, je récupérais la télé-info avec un Arduino et un SFH620A, et cela fonctionnait correctement, mais je vérifiais les étiquettes.
Je précise que seul le Remora est branché au compteur. -
Bonjour à tous,
Voici les derniers logs concernant la télé-info:
1) ADCO=XXXXXXXXXXXX '65' Flags:0x04 =>Exist 2) OPTARIF=BASE '48' Flags:0x04 =>Exist 3) IMAX=032 '68' Flags:0x04 =>Exist 4) MOTDETAT=000000 '66' Flags:0x04 =>Exist 5) BASE=007205877 '47' Flags:0x08 =>Updated 6) IINST=002ASE '89' Flags:0x04 =>Exist 7) PTEC=TH..MOTDETA000 '66' Flags:0x04 =>Exist 8) ISOUSC=30ASE '57' Flags:0x04 =>Exist 9) PAPP=00440F '41' Flags:0x08 =>Updated 10) SC=30 '57' Flags:0x04 =>Exist 11) MADCO=03127394 '65' Flags:0x02 =>New 12) OPAPP=00MOTDETAT '66' Flags:0x02 =>New Teleinfo absente/perdue! Teleinfo toujours absente! 1) ADCO=XXXXXXXXXXXX '65' Flags:0x04 =>Exist 2) OPTARIF=BASE '48' Flags:0x04 =>Exist 3) IMAX=032 '68' Flags:0x04 =>Exist 4) MOTDETAT=000000 '66' Flags:0x04 =>Exist 5) BASE=007205877 '47' Flags:0x04 =>Exist 6) IINST=002ASE '89' Flags:0x04 =>Exist 7) PTEC=TH..MOTDETA000 '66' Flags:0x04 =>Exist 8) ISOUSC=30ASE '57' Flags:0x04 =>Exist 9) PAPP=00440F '41' Flags:0x04 =>Exist 10) SC=30 '57' Flags:0x04 =>Exist 11) MADCO=03127394 '65' Flags:0x02 =>New 12) OPAPP=00MOTDETAT '66' Flags:0x02 =>New Teleinfo absente/perdue! Teleinfo toujours absente!
Les étiquettes erronées ont toujours le flag NEW.
Pourquoi le debug de la téléinfo est redirigée vers
Serial1
pour l'ESP ? -
bonjour,
@AuFilElec / Website said:
Pourquoi le debug de la téléinfo est redirigée vers Serial1 pour l'ESP ?
Parce que 'Serial' est utilsé par la téléinfo.
-
Salut @mjeanne
Merci pour ta réponse.
Par contre, comment fait on pour récupérer les logs sur le port Serial1 ?Sinon, j'ai changé la résistance R1 en 3.3k, mais j'ai quand même des valeurs erronées. Assez étrange, les valeurs erronées ont un checksum valide, voilà pourquoi elles passent.
Bonne journée à tous
-
pour les logs, il faut un adaptateur serie/usb sur la broche TX2 (il n'y a pas de RX2).
Pour les valeurs erronées, nous sommes quelques uns à avoir ce soucis, et je ne suis pas certain que ce soit coté téléinfo que ce situe le problème, car il y a en effet un contrôle de checksum. Je penche plus pour un débordement de mémoire, mais je ne trouve pas (encore) ou et quand ça se produit (faut dire que du debug de listes dynamiques, c'est déjà lourd quand on l'a programmé soit même, alors quand il s'agit du code d'un autre, c'est pas facile).
-
Salut @mjeanne ,
Merci pour les logs, je vais tester ça.
Je suis d'accord avec toi concernant le débordement de mémoire et je vais devoir replonger dans mes cours de C pour rechercher plus finement le problème.
Je continue donc mes investigations, en espérant trouver le problème ou bien qu'une autre personne la trouve et nous en fasse profiter.Bonne journée,
Manuel -
Bon et bien, j'ai réalisé une petite modification au sein du code de la télé-info et cela a l'air de fonctionner, car je n'ai plus de données erronées et ce depuis pratiquement 24 heures d'uptime.
-
Salut, @AuFilElec j'ai le même problème que toi et ta modification pourrait m’intéresser.
Tiens nous au courant.
Merci pour ton aide -
Salut,
Bien qu'il n'y est pas eu grand monde à me filer un coup de main lorsque je l'ai demandé, je vous fournis quand même les modifs que j'ai fait sur les sources du Remora.
Les sources sont sur mon dépôt Github, je vous laisse faire le diff avec le dépôt de monsieur Hallard.
-
Merci pour les modifs. J'espère que @Charles pourra les intégrer dans son code.
-
Mauvaise nouvelle, il semblerait que les modifs apportées ne soient pas suffisantes.
-
Bonjour,
je pensais aussi à un débordement de mémoire mais ce qui est curieux c'est que la RAM dispo est quand même largement suffisante d'ou mon scepticisme, j'avoue ne pas avoir eu le temps d'y jeter un oeil pour le momentPour les modifs, aucun problème pour les intégrer il suffit de faire un Pull Request sur votre repo.
-
@AuFilElec Merci pour ton partage
-
@Yoan De rien, même si cela ne résout pas le problème. Mais c'est très étrange, car avec le SDK en 1.5.1 et après mes modifs, la télé-information n'a pas déconné pendant plusieurs jours. J'ai refait quelques modifs dans le code et rechargé le sketch et ça s'est mis à déconné.
Je viens de repasser au SDK 1.3 et le serveur ne voulais plus répondre, j'ai redémarré et maintenant ça fonctionne. Il est super capricieux le Remora.Sinon, j'ai voulu alimenté la carte avec une alimentation 5V 2.4A MeanWell sur les bornes +5V et GND, mais la LED RGB s'est mise à flasher rouge ou bien rester bloqué bleu, avec une légère lueur rouge dans la LED du relais. Je me suis planté quelques par dans le branchement ?
-
Moi aussi il y a une légère lueur dans la led du relais c'est tout à fait normal vu son mode d'alimentation. Pour le reste je n'explique pas le problème. Une autre chose la compilation ne passe pas chez moi avec la dernière version de l'environement ESP pour arduino (problème sur httpwebserver ou un truc du genre).