Remontée d'informations ESP32

Bonjour,

Je vous sollicite car j’ai du mal a m’y retrouver !
Je viens récemment de découvrir le monde Arduino et ai réalisé une petite installation avec un ESP32 et différents capteurs : Sonde PH, capteur DHT22, Sonde t° DS18B20, le tout couplé à un LCD qui me permet de visualiser les résultats.

Le but maintenant est de remonter les différentes informations sur Jeedom, est-ce que le plug-in Jeedouino le permet ? Je tente de comprendre son utilisation mais je ne comprends pas comment faire… est-il nécessaire que je télécharge un sketch alors que le mien est déjà créé ?

Merci d’avance de votre aide.

Bonjour,

La solution la plus simple et évolutive que j’ai trouvé est esphome avec publication en mqtt

Bonjour @SWR,

Je tente de comprendre comment fonctionne ESPHOME mais mes capacités en informatique ont leurs limites, j’ai également regardé espeasy et jeedouino …
Aurais-tu un lien vers un tutoriel ou une base explicative pour comprendre simplement comment cela fonctionne ?

Merci

Simple

Pour dht22, il suffit d’ajouter au code

Example configuration entry

sensor:

  • platform: dht
    pin: D2
    temperature:
    name: « Living Room Temperature »
    humidity:
    name: « Living Room Humidity »
    update_interval: 60s

Ok, merci encore de ton retour , au risque de me faire passer pour un « chiant », j’ai encore des interrogations.

  • Il n’existe pas de plug-in ESPHOME sur jeedom, ni de logiciel ESPHOME windows… Tout doit se faire via le programme python ? C’est bien cela ?

  • j’ai codé mon petit programme sur l’esp32 avec Arduino IDE dont voici le code :

//Bibliothèques
#include "WiFi.h"
#include "DHT.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <SimpleTimer.h>
#include <TFT_eSPI.h>

TFT_eSPI tft = TFT_eSPI();
SimpleTimer timer;

//Codage Sonde PH
float calibration_value = 21.46;
int phval = 0; 
unsigned long int avgval; 
int buffer_arr[10],temp;

float ph_act;



//Définition des PIN
//Capteur humidité et t° de l'air
#define DHTPIN 19
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
//Sonde t° eau
#define ONE_WIRE_BUS 22

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

//Réseau et MP internet
const char* ssid = "reseau";
const char* password = "mp";

void setup() {
  Serial.begin(115200);

  tft.init();
  tft.setRotation(1);

//Connection internet
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  Serial.println(F("DHTxx test!"));

//Capteur DHT22
  dht.begin();
}

void loop() {
//Codage Sonde PH
 timer.run(); // Initiates SimpleTimer
 for(int i=0;i<10;i++) 
 { 
 buffer_arr[i]=analogRead(32);
 delay(30);
 }
 for(int i=0;i<9;i++)
 {
 for(int j=i+1;j<10;j++)
 {
 if(buffer_arr[i]>buffer_arr[j])
 {
 temp=buffer_arr[i];
 buffer_arr[i]=buffer_arr[j];
 buffer_arr[j]=temp;
 }
 }
 }
 avgval=0;
 for(int i=2;i<8;i++)
 avgval+=buffer_arr[i];
 float volt=(float)avgval*3.3/4095/6; 
  ph_act = -5.70 * volt + calibration_value;

 Serial.print("Ph : ");
 Serial.print(ph_act);
 Serial.println();
 //Fin Code Sonde PH

  delay(5000);

  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }


  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Humidite dans la serre : "));
  Serial.print(h);
  Serial.print(F("%"));
  Serial.println();
  Serial.print(F("Temperature dans la serre : "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.println();

//Codage pour capteur de t° DS18B20 - Capteur de t° eau//
sensors.requestTemperatures();
  float tempC = sensors.getTempCByIndex(0);

  Serial.print("Temperature de l'eau : ");
  Serial.print(tempC);
  Serial.print(F(" C "));
  Serial.println();
  Serial.print("- - - - - - - - - - - - - - - -");  
  Serial.println();


//Affichage sur écran LCD
  tft.fillScreen(TFT_BLACK);
  tft.setCursor(105, 40, 2);

  tft.setTextSize(1);
  tft.setTextFont(2);
  tft.setFreeFont(&FreeSansBold18pt7b); // police de caractère
  tft.setTextColor(TFT_WHITE, TFT_BLACK);

  tft.print("Ph : ");
  tft.print(ph_act);
  tft.println();
  tft.println();
  tft.setCursor(35, 100, 2);
  tft.print(F("Humid. : "));
  tft.print(h);
  tft.print(F(" %"));
  tft.println();
  tft.println();
  tft.setCursor(5, 160, 2);
  tft.print(F("Temp. air : "));
  tft.print(t);
  tft.print(F(" c "));
  tft.println();
  tft.println();
  tft.setCursor(0, 220, 2);  
  tft.print("Temp. eau : ");
  tft.print(tempC);
  tft.print(F(" c "));
  tft.println();
}

Si je flash mon esp32 avec ESPHOME, je vais perdre tout ce code ou il va être conservé ? je ne comprends pas comment associer ESPHOME et mon code actuel

Merci

Tu vas tout prendre :smiling_face_with_tear:
Cependant, avec quelques lignes, esphome publie en mqtt et se connecte au wifi, et fait proxy bluetooth (je n’arrive pas a le gérer), il fait même les mises en jour en live (en wifi ).

La Doc esphome est super bien faite pour chacun des modules, le code est donné

Encore moi :upside_down_face:
Je désespère !

Je tente de configurer ESPHOME mais impossible de le mettre en lien avec mon ESP32,
J’ai installé python puis avec les lignes de commandes installer ESPHOME, ainsi que le dashboard, j’arrive a m’y connecter avec l’adresse locahsot:6052, je créé un new device, je connecte mon esp32, je le retrouve bien dans les COM mais apparait un message d’erreur :

Installation

Unable to compile the configuration

ESPHome will now create your configuration and install it on your device.

Connect your ESP8266 or ESP32 with a USB cable to your computer and click on connect. You need to do this once. Later updates install wirelessly. Learn more

Skip this step to install it on your device later or if you are using a Raspberry Pi Pico.

J’ai également des messages d’erreur qui s’affichent dans le cmd :

2023-02-15 21:04:47,476 ERROR Uncaught exception GET /compile (127.0.0.1)
HTTPServerRequest(protocol='http', host='localhost:6052', method='GET', uri='/compile', version='HTTP/1.1', remote_ip='127.0.0.1')
Traceback (most recent call last):
  File "C:\Users\rodol\AppData\Local\Programs\Python\Python311\Lib\site-packages\tornado\websocket.py", line 635, in _run_callback
    result = callback(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rodol\AppData\Local\Programs\Python\Python311\Lib\site-packages\esphome\dashboard\dashboard.py", line 138, in decorator
    return func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rodol\AppData\Local\Programs\Python\Python311\Lib\site-packages\esphome\dashboard\dashboard.py", line 212, in on_message
    handlers[type_](self, json_message)
  File "C:\Users\rodol\AppData\Local\Programs\Python\Python311\Lib\site-packages\esphome\dashboard\dashboard.py", line 221, in handle_spawn
    self._proc = tornado.process.Subprocess(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rodol\AppData\Local\Programs\Python\Python311\Lib\site-packages\tornado\process.py", line 226, in __init__
    self.stdin = PipeIOStream(in_w)
                 ^^^^^^^^^^^^^^^^^^
  File "C:\Users\rodol\AppData\Local\Programs\Python\Python311\Lib\site-packages\tornado\iostream.py", line 1640, in __init__
    raise AssertionError("PipeIOStream is not supported on Windows")
AssertionError: PipeIOStream is not supported on Windows

Existe t’il un moyen plus simple d’obtenir les remontées ESP32 vers jeedom car je suis totalement pommé dans cet environnement et ne comprends même pas ce que je fait !

Cela ressemble à une erreur d’installation de Esphome

Également,as tu pensé à appuyer sur le bouton reset lors de la connexion pour l’autoriser