【问题标题】:Communication between wemos d1(as a client) and a webserver(on arduino or wemos d1) through LAN [closed]wemos d1(作为客户端)和网络服务器(在 arduino 或 wemos d1 上)通过 LAN [关闭]
【发布时间】:2018-05-21 01:08:33
【问题描述】:

所以我想做一些家庭自动化,所以我为我家的每个房间分配了一个 esp8266,所有房间都连接到一个 wifi 作为具有静态 IP 地址的客户端,所以我可以通过发送来控制我的灯获取对每个 esps IP 的请求,所以我的问题是我想在 arduino 或 esp8266 上运行一个网络服务器,以便它可以保存房子所有灯的状态。我可以在 wammp 上轻松地做到这一点,其中 php 将处理客户端 esps 发出的所有 get 请求并将数据保存在数据库中,但是 webserver(在 esp 或 arduino 上)可以处理这些 get 请求并将状态保存在一些内存中。

【问题讨论】:

    标签: php c++ http arduino arduino-esp8266


    【解决方案1】:

    是的,您可以使用 Arduino 运行网络服务器。这是来自https://www.arduino.cc/en/Tutorial/WebServer的示例

    /*
      Web Server
    
     A simple web server that shows the value of the analog input pins.
     using an Arduino Wiznet Ethernet shield.
    
     Circuit:
     * Ethernet shield attached to pins 10, 11, 12, 13
     * Analog inputs attached to pins A0 through A5 (optional)
    
     created 18 Dec 2009
     by David A. Mellis
     modified 9 Apr 2012
     by Tom Igoe
     modified 02 Sept 2015
     by Arturo Guadalupi
    
     */
    
    #include <SPI.h>
    #include <Ethernet.h>
    
    // Enter a MAC address and IP address for your controller below.
    // The IP address will be dependent on your local network:
    byte mac[] = {
      0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
    };
    IPAddress ip(192, 168, 1, 177);
    
    // Initialize the Ethernet server library
    // with the IP address and port you want to use
    // (port 80 is default for HTTP):
    EthernetServer server(80);
    
    void setup() {
      // Open serial communications and wait for port to open:
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
    
    
      // start the Ethernet connection and the server:
      Ethernet.begin(mac, ip);
      server.begin();
      Serial.print("server is at ");
      Serial.println(Ethernet.localIP());
    }
    
    
    void loop() {
      // listen for incoming clients
      EthernetClient client = server.available();
      if (client) {
        Serial.println("new client");
        // an http request ends with a blank line
        boolean currentLineIsBlank = true;
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();
            Serial.write(c);
            // if you've gotten to the end of the line (received a newline
            // character) and the line is blank, the http request has ended,
            // so you can send a reply
            if (c == '\n' && currentLineIsBlank) {
              // send a standard http response header
              client.println("HTTP/1.1 200 OK");
              client.println("Content-Type: text/html");
              client.println("Connection: close");  // the connection will be closed after completion of the response
              client.println("Refresh: 5");  // refresh the page automatically every 5 sec
              client.println();
              client.println("<!DOCTYPE HTML>");
              client.println("<html>");
              // output the value of each analog input pin
              for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
                int sensorReading = analogRead(analogChannel);
                client.print("analog input ");
                client.print(analogChannel);
                client.print(" is ");
                client.print(sensorReading);
                client.println("<br />");
              }
              client.println("</html>");
              break;
            }
            if (c == '\n') {
              // you're starting a new line
              currentLineIsBlank = true;
            } else if (c != '\r') {
              // you've gotten a character on the current line
              currentLineIsBlank = false;
            }
          }
        }
        // give the web browser time to receive the data
        delay(1);
        // close the connection:
        client.stop();
        Serial.println("client disconnected");
      }
    }
    

    将状态保存在一个全局变量中并在setup() 中初始化它们。当客户端发送它的请求时,它必须发送它的 id 或 ip 并且服务器可以响应状​​态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      相关资源
      最近更新 更多