Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
GPIO externe / Méthode GET/POST
#1
Bonjour André,

Merci pour cette version pour ESP32-S3.

Je suis en beta 15.
Je rencontre un problème pour faire fonctionner l'actionneur de type SSR en GPIO externe.
je renseigne l'HOST, PORT, je sélection la méthode de GET à POST et je complète Ordre ON et Ordre OFF.
Je sauvegarde le logigramme et j'ouvre à nouveau l'actionneur. La méthode est revenue à GET.
J'ai refait l'opération plusieurs fois avec reset de l'ESP32-S3... rien n'y fait.

J'ai ouvert le code dans VSCODE et corrigé le code pour faire du POST avec GET. J'ai aussi corrigé le HTTP.addHeader

  if (getPost == false) {
    // Requête GET
    //httpCode = http.GET();
    // Requête POST
    http.addHeader("Content-Length", "0");
    httpCode = http.POST("");
  } else {
    // Requête POST
    //http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    http.addHeader("Content-Length", "0");
    // POST vide
    httpCode = http.POST("");
  }

et cette fois j'arrive à contrôler mon relais en GPIO externe.

Bug ou mauvaise méthode pour faire la sélection et la sauvegarde dans le logigramme?

David
Répondre

#2
Bonjour,
Je pense qu'il y a un soucis avec les single quotes à la ligne 214 de JS_paraBloc.js :
LesPara += `<div class='tcR'><select id='methodSelect' onclick='UpdatePara('GetPost',event,this,${bl});' onchange='UpdatePara('GetPost',event,this,${bl});'>`;

Le onclick et onchange contiennent des single quotes, il faudrait donc qu'ils soient encadré par des double quotes :
LesPara += `<div class='tcR'><select id='methodSelect' onclick="UpdatePara('GetPost',event,this,${bl});" onchange="UpdatePara('GetPost',event,this,${bl});">`;

C'est ce qui est fait pour les autres paramètres d'ailleurs.

Étant en déplacement, je ne peux pas tester de mon coté. Si vous le faites, il faut bien penser à supprimer le hack que vous avez rajouté dans Bloc_Action::CallExterne.
Répondre

#3
(Hier, 01:01 PM)Mike a écrit : Bonjour,
Je pense qu'il y a un soucis avec les single quotes à la ligne 214 de JS_paraBloc.js :
LesPara += `<div class='tcR'><select id='methodSelect' onclick='UpdatePara('GetPost',event,this,${bl});' onchange='UpdatePara('GetPost',event,this,${bl});'>`;

Le onclick et onchange contiennent des single quotes, il faudrait donc qu'ils soient encadré par des double quotes :
LesPara += `<div class='tcR'><select id='methodSelect' onclick="UpdatePara('GetPost',event,this,${bl});" onchange="UpdatePara('GetPost',event,this,${bl});">`;

C'est ce qui est fait pour les autres paramètres d'ailleurs.

Étant en déplacement, je ne peux pas tester de mon coté. Si vous le faites, il faut bien penser à supprimer le hack que vous avez rajouté dans Bloc_Action::CallExterne.

Bien vu Mike. Je corrige.

André dans la version beta.16
Répondre

#4
(Hier, 01:01 PM)Mike a écrit : Bonjour,
Je pense qu'il y a un soucis avec les single quotes à la ligne 214 de JS_paraBloc.js :
LesPara += `<div class='tcR'><select id='methodSelect' onclick='UpdatePara('GetPost',event,this,${bl});' onchange='UpdatePara('GetPost',event,this,${bl});'>`;

Le onclick et onchange contiennent des single quotes, il faudrait donc qu'ils soient encadré par des double quotes :
LesPara += `<div class='tcR'><select id='methodSelect' onclick="UpdatePara('GetPost',event,this,${bl});" onchange="UpdatePara('GetPost',event,this,${bl});">`;

C'est ce qui est fait pour les autres paramètres d'ailleurs.

Étant en déplacement, je ne peux pas tester de mon coté. Si vous le faites, il faut bien penser à supprimer le hack que vous avez rajouté dans Bloc_Action::CallExterne.

Bonjour Mike,

Merci pour ce correctif.

Je suis reparti de la source originale et j'ai fait les correctifs suivant:

/src/BlockActions.cpp ligne 174

remplacer : http.addHeader("Content-Type", "application/x-www-form-urlencoded");
par : http.addHeader("Content-Length", "0");

et dans /Web/JS_Actions/JS_paraBloc.js ligne 214

remplacer : LesPara += `<div class='tcR'><select id='methodSelect' onclick='UpdatePara('GetPost',event,this,${bl});' on change='UpdatePara('GetPost',event,this,${bl});'>`;

par : LesPara += `<div class='tcR'><select id='methodSelect' onclick="UpdatePara('GetPost',event,this,${bl});" onchange="UpdatePara('GetPost',event,this,${bl});">`;

Cette fois j'arrive à sélectionner la méthode POST puis je sauvegarde le logigramme.
Le relais externe fonctionne mais quand j'ouvre à nouveau l'actionneur, c'est GET qui est affiché et non POST. Le fonctionnel reste comme si j'avais un POST de sélectionné.
On y est presque!

David

David
Répondre

#5
Est ce vraiment nécessaire de changer le header ?

Concernant le problème de selection, je pense que ça vient cette fois de la ligne 217 de JS_paraBloc.js :
let selected = (value == bloc[bl].Para.GetPost) ? "selected" : "";

On ne veut pas comparer avec value mais plutôt avec i :
let selected = (i == bloc[bl].Para.GetPost) ? "selected" : "";
Répondre

#6
(Hier, 03:40 PM)Mike a écrit : Est ce vraiment nécessaire de changer le header ?

Concernant le problème de selection, je pense que ça vient cette fois de la ligne 217 de JS_paraBloc.js :
let selected = (value == bloc[bl].Para.GetPost) ? "selected" : "";

On ne veut pas comparer avec value mais plutôt avec i :
let selected = (i == bloc[bl].Para.GetPost) ? "selected" : "";

Oui, j'ai vu cela et corrigé en beta.16

Mes tests en local avec un POST sont bons.

André
Répondre

#7
Bonjour, 

Merci pour votre réactivité et votre travail. 

J'ai testé la version béta.16

Elle est bien fonctionnelle pour la partie saisie du mode POST/GET mais pour commander mon relais wifi Sonoff MINIR4 reprogrammé sous ESPHome (en version 7.3) je dois avoir le header modifié . Sur quel type de relais faite vous vos tests ? Je voudrai savoir sur quel matériel je dois me diriger pour revenir dans le standard du routeur.

David
Répondre

#8
(Il y a 1 heure)D4v1d a écrit : Bonjour, 

Merci pour votre réactivité et votre travail. 

J'ai testé la version béta.16

Elle est bien fonctionnelle pour la partie saisie du mode POST/GET mais pour commander mon relais wifi Sonoff MINIR4 reprogrammé sous ESPHome (en version 7.3) je dois avoir le header modifié . Sur quel type de relais faite vous vos tests ? Je voudrai savoir sur quel matériel je dois me diriger pour revenir dans le standard du routeur.

David

Je l'ai testé hier en envoyant une commande à un relais sous ESPHOME qui attend la commande: 
Code :
POST http://192.168.1.50/button/mon_bouton/press
J'ai rempli le Host avec 192.168.1.50  adresse IP à adapter
Ordre On:   /button/mon_bouton/press

et cela a bien fonctionné
Répondre



Atteindre :


Utilisateur(s) parcourant ce sujet :
1 visiteur(s)

Moteur MyBB, © 2002-2026 Melroy van den Berg.