Zunächst muss die Bibliothek im Sketch inkludiert werden.
#include "thk_EspCamServer.h" // WIFI und HTTP-Server
Anschließend wird das WiFI-Netzwerk konfiguriert und (optional) der Name des HTTP-Ressource festgelegt.
const char *ssid = "FRITZBOX";
const char *password = "qqqqqqqq";
const char *uri = "/stream";
Nun kann das Objekt erzeugt werden.
thk_EspCamServer server(ssid, password, uri);
Für die Verwendung der Klasse ist ein sogenannter Handler erforderlich. Dieser regelt das Verhalten beim Aufrufen der Internetressource (bspw. beim eintippen von http://172.02.11/server im Browser innerhalb des lokalen Netzwerks).\
Hier kann für den Anfang die folgende Funktion außerhalb der setup() und loop() Routine erstellt werden:
Zum Verwenden des Skriptes muss das Netzwerk vorab angepasst werden
const char* ssid = "iPhone von Vladislav";
const char* password = "qqqqqqqq";
Im Anschluss den Sketch auf den ESP32 One hochladen. Hierbei als Board "ESP32 DEV MODULE(esp32)" wählen. Nun kann mit einem im Netzwerk befindlichen Gerät über die Https-Adresse das Bild im Webserver angezeigt und gespeichert werden.
Im Seriellen Monitor wird hier durch das Neustarten des ESP (Reset-Button) die Adresse ausgegeben.
[OK] WiFi verbunden: 172.20.10.2
[OK] HTTP_Get-Server bereit ( Port 80 ) HTTP: 172.20.10.2/stream
### Erläuterung des Skripts
Zunächst wird die erforderliche Bibliothek zum Interagieren mit der Kamera und Starten des Servers inkludiert
#include "thk_EspCamDriver.h" // ESP32 Kamera
#include "thk_EspCamServer.h" // WIFI und HTTP-Server
Im Anschluss wird das Netzwerk eingerichtet
const char *ssid = "iPhone von Vladislav";
const char *password = "qqqqqqqq";
Optional kann auch die Internetressource unbenannt werden. Diese wird beim Aufruf des Servers benötigt.
const char *uri = "/stream";
Die folgenden Objekte sind für den Datenaustausch mit der Kamera notwendig
camera_config_t cameraconfig; // Konfig
esp_err_t cameraerror; // Fehler
camera_fb_t *fb = NULL; // Framebuffer
Um sowohl die Kamera als auch den Server möglichst kompakt für den Anwender nutzbar zu machen, sind zwei benutzerdefinierten Klassen vorhanden
Anschließend kann in der Setup-Routine die Kamera initialisiert
camera.init();
Und mit dem WiFi-Netzwerk verbunden werden
server.connect();
Abschließend wird der Webserver gestartet. Dafür ist ein sogenannter Handler erforderlich. Dieser bildet die Antwort auf den Zugriff über HTTP. Hier kann neben dem Stream-Handler für das Kamerabild
server.start_webserver(&get_stream_handler);
auch stattdessen das HelloWorld Beispiel ausprobiert werden. Hierzu die Referenz entsprechend anpassen.
server.start_webserver(&get_helloworld_handler);
Das Kamerabild wird hier als Buffer gespeichert. Die Länge und der Inhalt (Pixel) können über die Server-Bibliothek bezogen werden.