ESP32 Relais übers Handy ansteuern

Gestern kam ein ESP32 an und heute hab ich damit gespielt.
Ich bin sehr überrascht, wie leicht es war erste Ergebnisse zu bekommen.

Aufgabenstellung:
Zwei Garagentorantriebe sollen übers Handy gesteuert werden (die alten Funkempfänger funktionieren leider nicht mehr).
Mit dem Beispielsketch hat das geklappt. Ich rufe über meinen browser die IP-Adresse auf
Dann erscheint auf dem Handy die Auswahl leider zu klein. Kann man das irgendwie dauerhaft größer machen?
Brauchts dafür ein App?

Danke schon mal im Voraus für Eure Hilfe.

/*
  ESP32 House Automation

  learnelectronics
  14 SEPT 2017
  https://www.youtube.com/watch?v=-9D-vtZ-wl4&t=103s
  www.youtube.com/c/learnelectronics
  arduino0169@gmail.com

*/

#include <WiFi.h>

const char* ssid     = "FRITZ!Box****";
const char* password = "XXXXXXXXXXX";

WiFiServer server(80);

void setup()
{
  Serial.begin(115200);
  pinMode(5, OUTPUT);      // set the LED pin mode
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);


  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();

}

int value = 0;

void loop() {
  WiFiClient client = server.available();   // listen for incoming clients

  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()) {            // 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
        if (c == '\n') {                    // if the byte is a newline character

          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();

            // the content of the HTTP response follows the header:
            client.print("Click <a href=\"/L\">here</a> to turn Garage links auf.
");
            client.print("Click <a href=\"/H\">here</a> to turn Garage links zu.
");


            client.print("Click <a href=\"/I\">here</a> to turn Garage rechts auf.
");
            client.print("Click <a href=\"/J\">here</a> to turn Garage rechts zu.
");

            client.print("Click <a href=\"/O\">here</a> to turn Verbindung beenden.
");
            /*           client.print("Click <a href=\"/P\">here</a> to turn BACK DOOR off.
");
            */

            // The HTTP response ends with another blank line:
            client.println();
            // break out of the while loop:
            break;
          } else {    // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }

        // Check to see if the client request was "GET /H" or "GET /L":
        if (currentLine.endsWith("GET /H")) { 
          Serial.println("**********************************************************************************");
         Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
           Serial.println("Garage links wird geöffnet"); Serial.println("********************************");
          Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
          digitalWrite(5, HIGH);               // GET /H turns the LED on
        }
        if (currentLine.endsWith("GET /L")) {
          Serial.println();
          Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
          Serial.println("Garage links wird geschlossen"); Serial.println();
          Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
          digitalWrite(5, LOW);                // GET /L turns the LED off
        }

        if (currentLine.endsWith("GET /I")) {
          Serial.println();
          Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
          Serial.println("Garage rechts wird geöffnet"); Serial.println();
          Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
          Serial.println("**********************************************************************************");
          digitalWrite(12, HIGH);               // GET /H turns the LED on
        }
        if (currentLine.endsWith("GET /J")) {
          Serial.println();
          Serial.print("Garage rechts wird geschlossen"); Serial.println();
          digitalWrite(12, LOW);                // GET /L turns the LED off
        }

        if (currentLine.endsWith("GET /O")) {
          digitalWrite(13, HIGH);               // GET /H turns the LED on
          WiFi.disconnect();//(ssid, password);
        }
        /*  if (currentLine.endsWith("GET /P")) {
           digitalWrite(13, LOW);                // GET /L turns the LED off
          }*/
      }
    }
    // close the connection:
    client.stop();
    Serial.println("Client Disconnected.");
  }
}

Hausknecht:
Dann erscheint auf dem Handy die Auswahl leider zu klein. Kann man das irgendwie dauerhaft größer machen?

Ja!
In dem man den viewport richtig einstellt.

Gruß Fips

Hallo,

ich würde einen Webseite bauen mit 4 buttons drauf , da kannst Du die Grösse festlegen. In die Webseite musst Du die Zeile mit in den Head Bereich schreiben, dann macht der Brauser eine Grössenanpassung.

Heinz

Wunderbar!
Vielen Dank für die Lösung.

client.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=2\"></head>");

Heinz, ich hab noch nie eine Website gebaut. Das ist natürlich kein Grund es nicht doch zu versuchen. Ich muss mal nach einer Anleitung suchen.

Es ist schon toll, welche Hilfe man hier bekommt. Das ist nicht selbstverständlich.
Danke.

Hallo,

@Hans der Link den Flips angegeben hat ist gut zum lernen und üben.

ich hab da mal zwei Zeilen aus meiner LED Lampe rauskopiert, die hatte ich vor einiger Zeit mal hier unter zeigt her eure… eingestellt. Die Webseiten hab ich mit einem Editor auf dem PC erstellt und dann auf das Filesystem des ESP8266-01 übertragen. Ob das bei einem ESP32 auch geht weiss ich nicht. Für ein paar Variable trage ich in die Webseite ein z.B %d mit ein , was dann bei der Ausgabe mittes sprintf() durch die Variablen ersetzt wird. Aber für zwei Buttons wird das nicht benötigt.

Ich muss mich mal mit dem Thema Ajax beschäftigen, bisher hat´s aber immer so gereicht.

Damit Du weisst wo du suchen must
Heinz

<input type="submit" name="buton1" value="Ein"  style="width:90pt; height: 30pt; font-size:12pt; background: Lime">
<input type="submit" name="buton2" value="Aus"  style="width:90pt; height: 30pt; font-size:12pt; background: red">

Rentner:
Die Webseiten hab ich mit einem Editor auf dem PC erstellt und dann auf das Filesystem des ESP8266-01 übertragen. Ob das bei einem ESP32 auch geht weiss ich nicht.

Was der Einzylinder kann, schafft der Zweizylinder locker!!

Gruß Fips

Das Schließen und Öffnen des Garagentors mit dem Handy übers Wlan klappt problemlos.

Ein Problem gelöst kommt das nächste.
Wenn man mit dem Auto nach Hause kommt und das Garagentor öffnen will, dann benötigt die Verbindung zum Wlan geschätzt 30 sec. Wenn man darauf wartet, dann ist das ganz schön lange.

Gibt es eine Möglichkeit das Einwählen ins Wlan zu beschleunigen?
Als Router wird eine Fritzbox 7530PR verwendet.

Eher nicht....
WLAN kann große Datenmengen transportieren.
Aber für schnelle Anmeldungen ist es nun wirklich nicht bekannt/berühmt.

Hmmm ... eine andere Funktechnik zu verwenden.
z.B. HC-12 Module
Dann können dein Auto und deine Garage schon auf 1km Entfernung miteinander quasseln.

Danke combie, das habe ich vermutet, dass man da wenig machen kann.
Ich habs gestern mit einer 315MHz Funk-Fernbedienung versucht.
Die Reichweite war zu gering.
Ich bräuchte ein kleineres Auto, so dass ich bis auf einen Meter vors Tor fahren könnte. Warum sind die Autos nur so groß.
Ich muss mal versuchen die Antenne zu optimieren. Gibts da eine Formel für die Länge (vielleicht spielt auch die Drahtstärke eine Rolle) der Antenne.

Oha ...
315 MHz ist in DE-Land dem Militär vorbehalten.

Du bewegst dich also auf ganz dünnem Eis.

Gibts da eine Formel für die Länge

Ja klar!

λ = Wellenlänge

λ geteilt durch möglichst kleinen ganzzahligen Wert.

Bewährt hat sich λ/4 und auch λ/2

Danke.

Wenn ich in die Formel 315 000 000 Hz eingebe, dann erhalte ich was ganz anderes, als bei 315 MHz.
Egal, ich versuch mal die Antenne auf die richtige Länge zu kürzen.
Ich dachte so in meinem jugendlichen Leichtsinn: Wo wenig hilft, kann viel nicht schaden und hatte sie 4m lang ( so lange war auch die Antenne des Originalempfängers).
Ich bin gespannt, ob es damit deutliche Reichweitenverbesserung gibt.

Ja, es werden die Mhz ung Ghz nicht übernommen, sieht man in der Formel dann drunter ...

Gruß André

Hausknecht:
.....
Ich bin gespannt, ob es damit deutliche Reichweitenverbesserung gibt.

Du hast offensichtlich den Einwand von combie nicht gelesen oder nicht verstanden.
315 MHz sind in Deutschland verboten.

Und einfach die Antenne länger machen hilft nicht, die muss shon richtig angepasst werden, damit das richtig funktioniert.

Du solltest dich an dem Tipp mit den HC-12 Modulen orientieren.
Die reichen für deine Reichweite dicke aus.

Dieter ich habe bereits 2 Stück bestellt. Ich hatte den 315 MHz Sender/Empfänger in der Schublade.

315 MHz sind wohl fürs Militär vorbehalten.

Hausknecht:
Dieter ich habe bereits 2 Stück bestellt. Ich hatte den 315 MHz Sender/Empfänger in der Schublade.

315 MHz sind wohl fürs Militär vorbehalten.

Welche hast du bestellt ?

Und ja, nur das Militär darf.....

Wenn ich in die Formel 315 000 000 Hz eingebe, dann erhalte ich was ganz anderes, als bei 315 MHz.

Ja, Rechenfehler, durch Falschbedienung.
Damit (dass du sowas tust) habe ich nicht gerechnet und der Ersteller der Seite auch wohl nicht.

Um den Fehler zu vermeiden gibts ja extra die Möglichkeit MHz zu wählen.
Schade, dass der Fehler auf der Website nicht abgefangen wird.
Aber eine Fehlbedienung ist es alle male.

Mache die Gegenprobe mit deinem Taschenrechner.
Dann siehst du wo der Hase lang läuft.

HotSystems:
Welche hast du bestellt ?

Und ja, nur das Militär darf…

433 MHz hab ich bestellt.

Hausknecht:
433 MHz hab ich bestellt.

Sorry....433MHz sagt nur etwas über die Frequenz aus, nichts über die Hardware selbst.

Also, welche Module/Type hast du bestellt ?

Den hab ich bestellt.

combie, ich möchte nicht ausschließen, dass ich den Rechner falsch bedient habe. Was hab ich denn falsch gemacht?
315 Mhz =315 000 kHz= 315 000 000 Hz

Ich bin ja lernwillig und will den Fehler nicht wiederholen.

Habe ich schon erklärt.
Besser kann ich es nicht.

Es tut mir leid, dass ich dir den Link gepostet habe.
Kommt garantiert nicht wieder vor!