Bonjour,
Je suis actuellement en BTS, et mon projet de fin d'année est de crée une serre automatique.
Je doit donc créer un IHM avec Processing et un serveur qui va regrouper toute les données des capteurs.
Mon IHM sur processing est mon client, qui va afficher les données de la serre mais qui va aussi permettre à l'utilisateur de modifier les paramètres de la serre.
Le client doit donc recevoir des données du serveur mais aussi lui en envoyer.
Le serveur est un ESP32 WROOM. J'ai déjà réussi à faire un programme où Processing est le client et envoie des données au serveur ESP32. Mais je n'arrive pas à faire l'inverse (le serveur ESP32 envoie des données au client Processing). J'ai fait beaucoup de recherches et je n'arrive pas à trouver.
Je viens donc vous demander de l'aide pour m'aider à avancer sur ce petit blocage.
Merci par avance pour vos conseille.
Les programme suivant sont ceux qui marche et que j'ai réussis a faire, mais impossible de trouver pour que le client reçoit des données du serveur.
CODE PROCESSING CLIEN
import processing.net.*;
Client c;
String input;
int data[];
void setup()
{
size(450, 255);
background(204);
stroke(0);
frameRate(5); // Slow it down a little
// Connect to the server's IP address and port
c = new Client(this, "adress IP du server", 80); // Replace with your server's IP and port
}
void draw()
{
if (mousePressed == true) {
// Draw our line
stroke(255);
line(pmouseX, pmouseY, mouseX, mouseY);
// Send mouse coords to other person
c.write(pmouseX + " " + pmouseY + " " + mouseX + " " + mouseY + "\n");
println(pmouseX + " " + pmouseY + " " + mouseX + " " + mouseY + "\n");
}
// Receive data from server
if (c.available() > 0) {
input = c.readString();
input = input.substring(0, input.indexOf("\n")); // Only up to the newline
data = int(split(input, ' ')); // Split values into an array
// Draw line using received coords
stroke(0);
line(data[0], data[1], data[2], data[3]);
println("reading message from client at " + c.ip() + " <- input=", input, "; data=", data);
}
}
CODE SERVEUR ESP32
#include <WiFi.h>
const char* ssid = "";
const char* password = "";
int counter;
WiFiServer server(80);
void setup()
{
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
}
void loop(){
WiFiClient client = server.available();
if (client) { // if you get a client,
Serial.println("New Client."); // print a message out the serial port
String currentLine = ""; // make a String to hold incoming data from the client
while (client.connected()) {
server.write(200);// loop while the client's connected
if (client.available()) { // if there's bytes to read from the client,
char c = client.read();// read a byte, then
Serial.write(c);
// print it out the serial monitor
}
}
// close the connection:
client.stop();
Serial.println("Client Disconnected.");
}
}