Handling einer ESP(32)App

Hi zusammen,

ich will hier nur mal ne kleine Diskussion zu einem Thema starten, das mich gerade beschäftigt (gerade wenn es in Richtung Entwicklung von Consumer-Produkten auf Basis eines ESP(32) geht.

Wenn man ESP32-"Apps" (nenn ich jetz einfach mal so) programmiert, hat man am Ende ja immer einen Webserver, der entweder per AP oder STATION-Mode bereitgestellt wird.

Anders wie bei einer Android-App, die ich einfach nur antippe und dann in der App bin, muss ich, um auf die Startseite der ESP-"App" (also auf den Webserver) zu gelangen ja einen Browser öffnen und die IP-Adresse eintippen, also z.B. "http://192.168.178.30". Erst dann wird die vermeintliche App geöffnet.

Der erfahrene Internet-User wird sich - wenn er auf der Startseite angelangt ist, ein Lesezeichen setzen und sich irgendwo auf dem Desktop seines Smartphones ablegen, damit er nächstes mal wie bei einer normalen Android-App mit einem Klick auf die Seite kommt. Beim Microsoft Edge gibt es ja mittlerweile auch die Funktion "Diese Seite als APP speichern", über die man aus einer Internetseite sozusagen eine Art Windows-App kreiert.

Nun die alles entscheidende Frage:
Gibt es die Möglichkeit, automatisch ein Lesezeichen (z.B. per Javascript) zu erzeugen und auf dem Desktop des Clients abzulegen? Ich würde jetzt spontan sagen: Nein auf keinen Fall - kann ja nicht gehen, weil Javascript nicht auf das Android-Betriebssystem zugreifen kann.

Aber: Gibt es irgendwelche anderen ausgeklügelten Ansätze, um das Handling einer ESP-"App" so zu gestalten, das es sich mehr anfühlt, wie eine normale Smartphone App - und zwar beginnend mit dem ersten Aufruf.

Ich könnte mir z.B. folgendes vorstellen (dazu müsste man natürlich ein paar Android-Programmier-Kenntnisse haben):

Der user lädt sich eine spezielle Android-App runter (diese müsste ich natürlich entwickeln).
Er hat dann ein App-Icon auf dem Desktop, genau wie auch bei anderen Apps.
Beim Starten sucht diese App automatisch nach einem ESP-Accesspoint (dessen Namen sie schon kennt) stellt eine Verbindung damit her, meldet sich mit einem Standard-Passwort an (z.B. 123456789) und ruft dann die Seite "http://192.168.4.1" mit einem Browser auf - alles mit einem klick. Das könnte man natürlich noch OHNE eine Android-App alles mit einem WiFi-QR-Code umsetzen, wenn das Smartphone dieses unterstützt.

Aber nun geht ja weiter:
Der User gelangt auf eine Anmeldeseite, gibt dort seine WLAN-Zugangsdaten ein und klickt auf "Speichern".

Der ESP ändert den Verbindungsmodus auf WIFI_STA und verbindet sich mit dem Router.
Gleichzeitig übergibt er (und hier ist wahrscheinlich das unmögliche) die ermittelte WiFI.localIP() an die Android-App.

Wenn der User die Android-App (die bereits als Icon auf dem Smartphone wie alle anderen Apps abliegt) beim nächsten Mal öffnet, ruft diese einen Browser auf und steuert automatisch die WiFi-localIIP() an. D.h. ab sofort kennt die Android-App die IP-Adresse und erspart es dem User, diese in einen Browser eingeben zu müssen

Ist das total crazy oder irgendwie in der Form denkbar/machbar?

Und jetzt erklärt mich bitte nicht für verrückt :wink:

LG und schönen Abend

Daniel

Einfach: nein.
Weiters vermische nicht Begriffe.
Ein Webserver auf einem ESP32 ist keine App.
Läuft der ESP32 im AP Modus, hast du gewisse Möglichkeiten. Stichwort captive portal wurde dir sicher schon genannt.
Wenn du eine App für das Smartphone schreibst, dann kannst du natürlich eine Webseite - die vom ESP32 - darin aufrufen und optisch so tun, als wäre das eine native App (fürs smartphone).
Ist aber dann auch nur eben ein Browser der den ESP32 im lokalen Netz sucht und Die webseite des ESP32 darstellt.

Einige Gedanken dazu, da Du ja Consumer-Produkte entwickeln willst.
Stell Dir mal vor in einem Haus in 3 nahe beieinander liegenden Wohnung kaufen 3 Leute Dein Produkt.
Alle 3 melden sich gleichzeitig an der gleichen AP-SSID (Du nennst es Name, der in der App hinterlegt ist), mit dem gleichen Passwort an und rufen die gleiche "http://192.168.4.1" auf.

Was meinst Du was da passiert? Ich würde sagen erst mal Chaos.

Gruß Tommy

Nene, natürlich nicht, sagte ich ja hier:

Mir ist schon klar, dass ich hier einen Webserver ansteuere, wäre ja schlinn wenn ich das noch nicht begriffen hätte;-)

Genau das sowas suche ich. Falls ihr in der Richtung schon mal was gemacht habt, freu ich mich über Links und Tipps

Das Problem hab ich aber auch, wenn der User im WLAN Netzwerk nach dem ESP sucht und sich manuell verbindet. Da findet er auch sie ESPs der Nachbarn.

Das Problem könnte man aber umgehen, indem jeder ESP eine eindeutige Netzwerk-SSID hat. Auf der Verpackung des Gerätes findet der User die SSID seines Gerätes. Die App listet dann alle gefundenen auf und der User wählt sein Gerät.

Ich spinn ja nur bissl rum, um abzustecken, was möglich ist bzw. mich inspirieren zu lassen;-)

Und auch jedes sein eigenes Passwort. Das war früher mal bei WLAN-Geräten so üblich.
Aber das wolltest Du doch in einem vorherigen Thread vermeiden, weil Du dann individuelle Software bzw. Konfiguration auf jedes Produkt spielen musst.
Irgendwie beißt sich die Katze noch in den Schwanz.

Gruß Tommy

Nö, hier liegt ein Irrtum oder eine unglückliche Formulierung vor.

Der ESP32 kann als Webserver eine HTML-Seite zur Verfügung stellen, die in einem Browser dargestellt wird. Dann stimmt Deine Beschreibung. In einem Händi nennt man den Browser dann auch Anwendung, also App. Das meinst Du vermutlich aber nicht.

Andererseits kann sich ein ESP32 auch als AP am Händi anmelden, was beim zweiten Mal auch automatisch erfolgen kann, wenn man das möchte. Im Händi muß man dann nur die zum ESP-Programm passende App starten, die Verbindung erfolgt dann automatisch ganz ohne Browser und Eingabe einer IP. Ich habe es gerade nochmal probiert:

grafik
Die Anzeige war für ein anderes Programm. Die LEDs habe eingebaute Vorwiderstände!

Das soll auch per Router (z. B. Fritz!Box) möglich sein, habe ich aber noch nicht probiert.

Niemals! Aber vergiß mal den Browser.

PS. Ich habe das für mich lieber mit Browser und HTML gemacht, aber das ist für mich privat, da ist ein Lesezeichen kein Problem :wink:

Ja da hast du Recht. Ein individuelles Passwort wäre sicherlich der bessere Weg

Und um genau die geht es mir. Eine Android App, die mit dem ESP kommuniziert und am Ende ein App-ähnliches Bedienerlebnis für den User bereitstellt, also quasi die Verbindung mit dem AP des ESP und die Passworteingabe und den Browseraufruf übernimmt. Am besten hat die App einen integrieren Browser

Bei der Fritz!Box ja, die integriert den Hostnamen den sie beim DHCP bekommt in ihr lokales DNS. Andere Router tun das meist nicht. Wir haben das nebenan diskutiert.

Gruß Tommy

Bin grad schon am Youtube-suchen, so was in der Richtung:

Leider habe ich da wenig Erfahrung.

Hier im Forum bin ich über RemoteXY gestolpert, wo die natürlich begrenzte App-Konfiguration im ESP32-Programm erfolgt. Die Konfiguration für die App im Foto:

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// RemoteXY select connection mode and include library 
#define REMOTEXY_MODE__ESP32CORE_WIFI_POINT
#include <WiFi.h>

#include <RemoteXY.h>

// RemoteXY connection settings 
#define REMOTEXY_WIFI_SSID "ESP32_Naturmaterialien"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377


// RemoteXY configurate  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,5,0,0,0,70,0,13,19,1,
  1,0,8,9,12,12,12,31,76,0,
  1,0,24,9,12,12,5,31,77,0,
  1,0,40,9,12,12,12,31,82,0,
  1,0,33,28,12,12,1,31,87,97,
  114,110,98,108,105,110,107,101,114,0,
  2,1,18,47,22,11,0,26,31,31,
  65,110,0,65,117,115,0 };
  
// this structure defines all the variables and events of your control interface 
struct {

    // input variables
  uint8_t button_L; // =1 if button pressed, else =0 
  uint8_t button_M; // =1 if button pressed, else =0 
  uint8_t button_R; // =1 if button pressed, else =0 
  uint8_t button_W; // =1 if button pressed, else =0 
  uint8_t switch_1; // =1 if switch ON and =0 if OFF 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

Die kryptischen Zahlen holt man sich aus dem Editor der Weboberfläche. Etwas Schieben, Klicken und Kopieren, fertig ist die Oberfläche. Das ist so einfach, das ich es mal eben schnell probiert habe.

Da es sich um eine russische Software handelt ...

AppGyver kommt aus Finnland und wirbt mit DHL und "Composer Pro is free for life.". Probiert habe ich es noch nicht.

irgendwie dreht sich das alles im Kreis bei dir.

Wenn du eine App mit einem Browser Fenster willst, dann such nach webview Android.
Dazu etwas was das lokale netz nach deinem ESP durchsucht.
Und wenns nur reihum alle anderen IP's.
80er port aufrufen,
Smartphone App fragt auf 80er Port "wer bist"
Gegenstelle antworten lassen,
wenns einer deiner ESP ist Hurra - mit dieser IP im webview anzeigen.
Gibts mehrere IPs die richtig antworten, User auswählen lassen zu wem er sich verbinden will.

Kuck ich mal rein, Danke.

So bin ich halt :wink:
Aber ich denke die Message ist klar:
Ich möchte mehr "App"-Feeling bei einer ESP-"Web"anwendung.
Aber danke euch, das reicht mir erstmal.
Ich googel mich mal in ein paar Themen rein.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.