Forum: Haus & Smart Home Arduino soll ESP8266 ansteuern


von Wolfram F. (mega-hz)


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)


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)


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)


Lesenswert?

Hier wäre es sinnvoller auf MQTT zu setzen.

von Wolfram F. (mega-hz)


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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.