ESP8266 - ESPEASY OU IDE ARDUINO

Forum dédié aux bricolages d'objets connectés IOT et leurs communications avec DomoticZ :
- Remplacement de firmware des prises, modules relais ...
- Fabrication à base d'ESP8266, de NodeMCU, de Weemos et consorts ...
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

ESP8266 - ESPEASY OU IDE ARDUINO

Message 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.
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: ESP8266 - ESPEASY OU IDE ARDUINO

Message par Keros »

Tu peux nous mettre ton script ? Avec seulement la ligne d'erreur, c'est assez mince pour te répondre.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: ESP8266 - ESPEASY OU IDE ARDUINO

Message 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&param=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&param=switchlight&idx=667&switchcmd=On";
    sendDomoticz(url);
  }
  else
  {
    digitalWrite(led, HIGH);
    Serial.println("LED éteinte");
    String url = "/json.htm?type=command&param=switchlight&idx=667&switchcmd=Off";
    sendDomoticz(url);
  }
delay(1000);
} //FIN DU LOOP


//void sendDomoticz(){
void sendDomoticz(String url){
//  url = "/json.htm?type=command&param=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");
*/
Dernière modification par david86 le 17 janv. 2022, 12:46, modifié 1 fois.
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: ESP8266 - ESPEASY OU IDE ARDUINO

Message 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,
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
e111111
Messages : 225
Inscription : 11 déc. 2018, 19:44

Re: ESP8266 - ESPEASY OU IDE ARDUINO

Message 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.
Domoticz V4.10 sur Synology DS216j (DSM 6.3), clef Z-Wave Sigma
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: ESP8266 - ESPEASY OU IDE ARDUINO

Message 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. ;-)
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: ESP8266 - ESPEASY OU IDE ARDUINO

Message par Neutrino »

ça ressemble à un problème d'authentification.
https://www.domoticz.com/wiki/Domoticz_ ... parameters
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: ESP8266 - ESPEASY OU IDE ARDUINO

Message 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
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: ESP8266 - ESPEASY OU IDE ARDUINO

Message 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.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: ESP8266 - ESPEASY OU IDE ARDUINO

Message par david86 »

En effet en navigation privée ça ne fonctionne pas.... :shock: :shock:
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.... ;-)
Dernière modification par david86 le 17 janv. 2022, 19:07, modifié 1 fois.
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Répondre