Page 1 sur 2
ESP8266 - ESPEASY OU IDE ARDUINO
Publié : 16 janv. 2022, 23:39
par david86
Bonjour,
Parmi les utilisateurs d’esp8266, je cherche à m’en bricoler un pour envoyer des infos à domoticz, je trouve beaucoup mais vraiment beaucoup d’info avec l’utilisation d’espeasy, mais beaucoup moins qui fonctionne avec arduino.
J’ai fait un avec espeasy l’été dernier (petite station météo très sommaire), envoi vers domoticz ok égalent.
Je voudrais le faire moi même avec le code sous l’ide arduino.
Connexion wifi ok + info wifi sur terminal ok
Je fais un contact (interrupteur) sur D1 (Gpio 5)et j’ai bien l’information sur le terminal ok
J’ai fait une page web de l’esp8266 qui récupérer l’état de D1 (Gpio 5)
Mais impossible à envoyer à domoticz.. domoticz donne dans les logs « error parsing ffff:192.168.1.1 »
Bon je me dis que si je bascule sous espeasy je règle tous les problèmes mais j’aimerai bien arriver par moi même….
Ou tout le monde utilise espeasy dorénavant car plus facile en tout point de vue ?
Merci.
Re: ESP8266 - ESPEASY OU IDE ARDUINO
Publié : 16 janv. 2022, 23:44
par Keros
Tu peux nous mettre ton script ? Avec seulement la ligne d'erreur, c'est assez mince pour te répondre.
Re: ESP8266 - ESPEASY OU IDE ARDUINO
Publié : 17 janv. 2022, 07:07
par david86
Salut,
je me suis dit cela aussi... Désolé, alors voici mon code :
Dedans j'ai mis pas mal de commentaires car je début dedans et ça me fait toujours un mémo personnellement. Il y a aussi des /* ... */ car ce sont des bouts de variantes que j'ai essayé sans résultats concluant.
Voici le retour des logs de Domoticz :
Error parsing http request address: ::ffff:192.168.1.1
Je tiens à préciser que quand je tape dans mon explorateur ippublique:port/json.htm?type=command¶m=switchlight&idx=667&switchcmd=On ou Off cela fonctionne. (en local comme en extérieur bien sur)
Merci pour l'aide.
Code : Tout sélectionner
#include <Arduino_JSON.h>
#include <ESP8266WiFi.h> //pour connexion wifi
#include <ESP8266WebServer.h> //pour génerer page web interne ESP8266
#include <ESP8266HTTPClient.h> //pour envoi vers domoticz
ESP8266WebServer serverWeb(80); // On démarre un serveur qui écoute sur le port 80 les demande du client, l'utilisateur sur son navigateur internet
const char* ssid = "ssid"; // Identifiant WiFi
const char* password = "mdp"; // Mot de passe WiFi
const char* host = "adresse_IP_publique";
const int port = port;
WiFiClient client;
HTTPClient http;
#define led LED_BUILTIN
#define BP 5
void handle_root() {
// int etatGPIOD0;
int etatGPIOD1;
etatGPIOD1=digitalRead(5);
// etatGPIOD0=digitalRead(16);
serverWeb.send(200,"html","<head> <meta http-equiv='refresh' content='5'> <title>ESP8266 PICPIC</title> </head> " //avec cette commande on refresh la page en seconde dans content
"<body> <H1>ESP8266 Portail Picpic</H1>" //écriture dans page avec taille selon H1
"<p>Etat de la broche GPIOD1(pin5): " + String(etatGPIOD1) + "</p>" //<p>nouveau paragraphe à la ligne
// "<p>Etat de la broche GPIOD0(pin16): " + String(etatGPIOD0) + "</p>" //<p>nouveau paragraphe à la ligne
"<p>David</p></body>"); //nouvelle ligne
delay(100);
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
// on attend d'etre connecte au WiFi avant de continuer
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
// on definit les points d'entree (les URL a saisir dans le navigateur web) et on affiche un simple texte
serverWeb.on("/", handle_root); //on appelle la fonction handle_root quand serveurWeb est à ON
/*{
// serverWeb.send(200, "text/plain", "Page d'accueil");
// });
// serverWeb.on("/parametres", [](){
// serverWeb.send(200, "text/plain", "Une page de parametres");
// });
*/
// on demarre le serveur web
serverWeb.begin();
pinMode(led, OUTPUT); // Initialise la broche "led" comme une sortie
pinMode(BP,INPUT_PULLUP); //on dit que BP est une entrée
} //fin du SETUP
void loop() {
// put your main code here, to run repeatedly:
// a chaque iteration, la fonction handleClient traite les requetes
serverWeb.handleClient();
if (digitalRead(BP)==1)
{
digitalWrite(led, LOW);
Serial.println("LED allumée");
String url = "/json.htm?type=command¶m=switchlight&idx=667&switchcmd=On";
sendDomoticz(url);
}
else
{
digitalWrite(led, HIGH);
Serial.println("LED éteinte");
String url = "/json.htm?type=command¶m=switchlight&idx=667&switchcmd=Off";
sendDomoticz(url);
}
delay(1000);
} //FIN DU LOOP
//void sendDomoticz(){
void sendDomoticz(String url){
// url = "/json.htm?type=command¶m=switchlight&idx=667&switchcmd=Off";
Serial.print("connecting to ");
Serial.println(host);
Serial.print("Requesting URL: ");
Serial.println(url);
// http.begin(host,port,url); (ligne d'origine mais erreur remontée à la vérification/compilation API OBSELETE : use begin(client....)
http.begin(client,host,port,url);
int httpCode = http.GET();
if (httpCode) {
if (httpCode == 200) {
String payload = http.getString();
Serial.println("Réponse de Domoticz : ");
Serial.println(payload);
}
}
Serial.println("Fermeture connection");
http.end();
delay(1000);
} // FIN DE SENDDOMOTICZ
/*
if (client.connect(host,port)) {
client.println(String("GET ") + url + " HTTP/1.1");
client.println("Connection : close");
client.println();
}
delay(5000);
Serial.println("Message envoyé à DOmoticz");
*/
Re: ESP8266 - ESPEASY OU IDE ARDUINO
Publié : 17 janv. 2022, 11:41
par david86
Petite question, vaut-il mieux le faire en requête http ou plutôt passer par un broker type mosquitto.
Je l'avoue j'ai un broker sur mon domoticz mais je ne comprend pas vraiment la subtilité entre broker et http en direct.
Mon problème peut-il venir de là ? Aucun rapport quoi qu'il en soit ?
HTTP ?
Broker ?
Merci,
Re: ESP8266 - ESPEASY OU IDE ARDUINO
Publié : 17 janv. 2022, 15:59
par e111111
Salut,
perso j'ai essayé les deux, je me suis très vite tourné vers ESPEASY qui me permet d'avoir une base stable et évolutive et de pouvoir ajouter de nouveaux périph ou d'en inverser sans prise de tête...
J'utilise l'IDE Arduino au boulot pour des trucs très spécifiques, mais à la maison, espeasy suffit amplement.
J'en ai maintenant une vingtaine et tout tourne très bien, en HTTP, car pour moi le broker signifie encore une passerelle vers l'extérieur, ce que je préfère éviter pour rester le plus autonome possible.
Re: ESP8266 - ESPEASY OU IDE ARDUINO
Publié : 17 janv. 2022, 16:15
par david86
Bonjour, merci, si je vois que je n'y arrive pas je ferai probablement cela en effet, j'en ai 2 sous ESPEASY, mais c'est rigolo d'essayer de coder tout ça... Je retomberai sur terre peut-être d'ici 2/3 jours où je me dirai que ça dépasse mes compétences.

Re: ESP8266 - ESPEASY OU IDE ARDUINO
Publié : 17 janv. 2022, 17:50
par Neutrino
Re: ESP8266 - ESPEASY OU IDE ARDUINO
Publié : 17 janv. 2022, 18:09
par david86
Bonjour Neutrino,
je vais y regarder mais pourquoi je n'ai pas ce problème lorsque je tape dans ma barre d'adresse la commande json et tout fonctionne correctement, les log détecte mon ordre et l'interrupteur permute ?
Merci
Re: ESP8266 - ESPEASY OU IDE ARDUINO
Publié : 17 janv. 2022, 18:13
par Neutrino
Dans ton navigateur l'authentification est peut-être déjà faite en amont.
Essaye avec en mode incognito/navigation privée voir si ça passe ou pas.
Re: ESP8266 - ESPEASY OU IDE ARDUINO
Publié : 17 janv. 2022, 18:16
par david86
En effet en navigation privée ça ne fonctionne pas....
Mais je ne comprend pas la méthode sur le lien que tu as donné sur l'authentification :
Authorization with parameters
An other way to set username and password when calling the API is :
http://domoticz-ip<:port>/json.htm?username=MkE=&password=OVM=&api-call
MkE= is the base64 encoded username ('2A' in this example)
OVM= is the base64 encoded password ('9S' in this example)
Cette histoire de MkE OVM 2A et 9S.... Tout n'est pas clair pour ma tete... lol
EDIT : j'ai compris l'encodage MkE OVM....
