Forum: Haus & Smart Home Arduino soll ESP8266 ansteuern


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Wolfram F. (mega-hz)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe einen ESP8266 auf dem ein kleiner Webserver läuft und ein 
Relays schaltet.

HTTP://192.168.2.221:84/relays-on";
und
HTTP://192.168.2.221:84/relays-off";

funktioniert im Browser prima.

Nun ist da aber noch ein Arduino-Uno mit ETH Shield im Netz, auf diesem 
läuft ein anderer Webserver.
Von diesem soll in regelmäßigen Abständen von 30Sekunden auf den ESP 
Webserver mit eine der beiden Zeilen zugegriffen werden, um das Relays 
zu schalten.

Wie kann man vom Arduino Webserver die IP Adresse des ESP ansprechen?

von Server (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Wolfram F. schrieb:
> Wie kann man vom Arduino Webserver die IP Adresse des ESP ansprechen?

Ein Server ist ein Server und kein Client. Zwei Server unterhalten sich 
nicht.

von Tek (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wie schon erwähnt geht das wohl mit dem Server nicht, aber hiermit 
sollte es funktionieren:
https://www.arduino.cc/en/Tutorial/WebClient

von Oliver S. (phetty)


Bewertung
0 lesenswert
nicht lesenswert
Hier wäre es sinnvoller auf MQTT zu setzen.

von Wolfram F. (mega-hz)


Bewertung
0 lesenswert
nicht lesenswert
würde evt schon ein Ping auf
HTTP://192.168.2.221:84/relays-on";

reichen oder nimmt Ping nicht den ganzen Pfad?

das o.g. Beispiel funktioniert nicht mit dem /relays-on ...
mit google schon.

der Code der auf dem Uno existiert sieht so aus:
1
  EthernetClient client = server.available();  // try to get client
2
3
  if (client)
4
  { // got client?
5
    boolean currentLineIsBlank = true;
6
7
    while (client.connected())
8
    {
9
      int count = 0;
10
      if (client.available())
11
      { // client data available to read
12
        char c = client.read(); // read 1 byte (character) from client
13
        // limit the size of the stored received HTTP request
14
        // buffer first part of HTTP request in HTTP_req array (string)
15
        // leave last element in array as 0 to null terminate string (REQ_BUF_SZ - 1)
16
        if (req_index < (REQ_BUF_SZ - 1))
17
        {
18
          HTTP_req[req_index] = c;          // save HTTP request character
19
          req_index++;
20
        }
21
        // last line of client request is blank and ends with \n
22
        // respond to client only after last line received
23
        //        if (c == '\n' && currentLineIsBlank)
24
        if (c == '\n')
25
        {
26
          client.println(F("HTTP/1.1 200 OK"));
27
          client.println(F("Access-Control-Allow-Origin: *"));
28
          // nur Ajax requests - send XML file
29
          if (StrContains(HTTP_req, "ajax_inputs"))
30
          {
31
            digitalWriteFast(A0, HIGH);               // LED einschalten
32
            // send rest of HTTP header
33
            client.println(F("Content-Type: text/xml"));
34
            client.println(F("Connection: keep-alive"));
35
            client.println();
36
            SetLEDs();                                // alle Ausgangs - Zustände setzen
37
            // send XML file containing input states
38
            XML_response(client);                     // alle Daten zurücksenden
39
            digitalWriteFast(A0, LOW);                // LED ausschalten
40
          }
41
42
          // reset buffer index and all buffer elements to 0
43
          req_index = 0;
44
          StrClear(HTTP_req, REQ_BUF_SZ);
45
46
          break;
47
        }
48
49
        // every line of text received from the client ends with \r\n
50
        if (c == '\n')
51
        {
52
          // last character on line of received text
53
          // starting new line with next character read
54
          currentLineIsBlank = true;
55
        }
56
        else if (c != '\r')
57
        {
58
          // a text character was received from client
59
          currentLineIsBlank = false;
60
        }             // end if (client.available())
61
      }               // end while (client.connected())
62
    }
63
    delay(1);     // give the web browser time to receive the data
64
65
    client.stop();  // close the connection
66
  }                 // end if (client)

Kann man nicht einen Aufruf vor dem client.stop() einfügen der den ESP 
anspricht?

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.