Text von webseite Lesen

Sali Zämä

Leider bich ich nach langem suchen und Probieren nicht zu Laufen gebracht. Ich setzte zwar ein ESP32 ein jedoch nutze ich die Arduino IDLE was mit hilfe eines Plugins auch problemlos Funktioniert. (Hofe ich darf meine frage trozdem hier stellen)

Grundätzlich musste ich 8 Linien über eine einzlne webseiten, von unterschiedlichen geräten, auf dem OLED Display uber I2C anzeigen. Die Anzeige selbst funktioniert Ptoblem Los nur die dafür genutzte Variablen Werden nicht mit text sondern mit zahlen gefluttet.

Hier der HTML Code:

Hallo Welt7

Und Hier der des ESP32:
//WLAN
#include <WiFi.h>
#include <HttpClient.h>

const char* ssid = “SSID”;
const char* password = “Passwort”;

//URL der Webseiten
const char* serverNameIN1 = “http://192.168.1.1/Lieferanten-Lebensmittel/K1/L1.html”;
const char* serverNameIN2 = “http://192.168.1.2/Lieferanten-Lebensmittel/K1/L2.html”;
const char* serverNameIN3 = “http://192.168.1.3/Lieferanten-Lebensmittel/K1/L3.html”;
const char* serverNameIN4 = “http://192.168.1.4/Lieferanten-Lebensmittel/K1/L4.html”;
const char* serverNameIN5 = “http://192.168.1.5/Lieferanten-Lebensmittel/K1/L5.html”;
const char* serverNameIN6 = “http://192.168.1.6/Lieferanten-Lebensmittel/K1/L6.html”;
const char* serverNameIN7 = “http://192.168.1.7/Lieferanten-Lebensmittel/K1/L7.html”;
const char* serverNameIN8 = “http://192.168.1.8/Lieferanten-Lebensmittel/K1/L8.html”;

//Fuer die Anzeige auf dem OLED
#include <Wire.h>
#include <Adafruit_GFX.h> //Version 1.4.9
#include <Adafruit_SSD1306.h> //Version 1.2.9

#define OLED_RESET 4
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

//Wariablen Für Input
String IN1;
String IN2;
String IN3;
String IN4;
String IN5;
String IN6;
String IN7;
String IN8;

void setup() {
Serial.begin(9600); //legt BAUD fuer den seriellen Monitor fest
Serial.println(“Aktiv”);
displaySetup();
WiFiSetup();
}

void loop() {
// delay in ms → 1000 bedeutet alle Sekunde
delay(1000);
//Einlesen
DataInput();
}

//setzt den Display zurück und legt die Textgröße fest, wird einmalig beim Start aufgerufen → setup()
void displaySetup() {
Serial.println(“Display wird Konfiguriert”);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
display.clearDisplay(); //reinigt den Bildschirm am Anfang
display.setTextSize(1); //Textgroesse 4 entspricht dem halbem Bildschirm
display.setTextColor(INVERSE); //Inverse des schwarzen Bildschirms → weiss
Serial.println(“Display Konfiguriert”);
displayOutput(“Display”,“Konfiguriert”,"","","","","","");
}

//Legt die einstelungen des WIFI fest, und giebt die IP aus
void WiFiSetup(){
WiFi.begin(ssid, password);
Serial.println(“Connecting”);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(“Connected to WiFi network with IP Address: “);
Serial.println(WiFi.localIP());
displayOutput(“Verunden”,“mit”,“Server”,””,"","","","");
}

//Legt das ziel und die herkunft fest
void DataInput(){
if(WiFi.status()== WL_CONNECTED ){
IN1 = httpGETRequest(serverNameIN1);
IN2 = httpGETRequest(serverNameIN2);
IN3 = httpGETRequest(serverNameIN3);
IN4 = httpGETRequest(serverNameIN4);
IN5 = httpGETRequest(serverNameIN5);
IN6 = httpGETRequest(serverNameIN6);
IN7 = httpGETRequest(serverNameIN7);
IN8 = httpGETRequest(serverNameIN8);
displayOutput(IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8);
}
else {
Serial.println(“WiFi Disconnected”);
//Ferbindungsfehler auf Display
displayOutput(“Verbindung”,“Fehlgeschlagen”,"","","","","","");
}
}

//Füllt das display aus
void displayOutput(String L1,String L2,String L3,String L4,String L5,String L6,String L7,String L8) {
Serial.println(“Display bereinigt”);
Serial.println(“Display wird beschriftet…”);
Serial.println("Linie1: " + L1 + "/ Linie2 : " + L2 + "/ Linie3 : " + L3 + "/ Linie4 : " + L4 + "/ Linie5 : " + L5 + "/ Linie6 : " + L6 + "/ Linie7 : " + L7 + "/ Linie8 : " + L8);
display.clearDisplay();
//Display Ausgabe Position 0.0
display.setCursor(0,0);
//Ausgabe der werten
display.print(L1);
display.print(L2);
display.print(L3);
display.print(L4);
display.print(L5);
display.print(L6);
display.print(L7);
display.print(L8);
Serial.println(“Display beschriftet”);
}

//Lest die daten aus der webseite Raus
String httpGETRequest(const char* serverName) {

String Inhalt;
// Initialize die library
HttpClient client;

// Ruft die Webseite Auf
client.get(serverName);

//Liest die daten in eine Variable
while(client.available()) {
Inhalt = client.read();
Serial.println(Inhalt);
}
//Gibt den inhalt zurück
return Inhalt;
}

ESP32_OLED_V2.ino (4.29 KB)

... a...ha...

Wenn Du mich noch aufklären würdest, Was Dein Sketch so treibt?
Oder wo Er was Anderes treibt, als Du haben willst?

Bisher ist mir nicht mal klar, wer oder was 'flutet' - und mit welchem Inhalt hier 'geflutet' wird - und was Du aus dieser Flut extrahieren willst.
Und wofür überhaupt.

MfG

    Inhalt = client.read();

Was liefert read() zurück?

Gibt Leute, die den Rest dir überlassen, aber ausnahmsweise die Antwort hier und für dich aufbereitet:

Ein int, welches entweder -1 oder ein Zeichen im WerteBereich 0 … 255 darstellt.
Dass du das sinnloser weise in ein String - Objekt verwandelst, nutzt danach nichts mehr:
String(65) ergibt ein String- Objekt, das im Innern den Text “65” enthält.
Du hättest gern stattdessen nur ein ‘A’

Hallo,

versuch noch mal neu zu beschreiben was Du vorhast, ich habs nicht verstanden. Aus dem Sketch kann ich auch nicht erkennen was der machen soll.
Was ist mit der HTML Seite , liegt die auf dem ESP32. ?
Soll das der Webserver sein?
Was sind das für 8 andere Geräte (IP Adressen) ?

Heinz