• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 и датчик протечки

raccoon

New member
Приветствую! Стоит задача - подключить датчик протечки к ESP8266 и выводить его показания на поднятый веб сервер. Датчик подключается след. образом: Vcc -> +5V, GND -> GND, Signal -> GPIO5 (1). Как можно это написать на луа? Я в упор не понимаю данный язык.
Код:
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","PASSWD")
print(wifi.sta.getip())

raz = 1

gpio.mode(raz, gpio.OUTPUT)

srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
        local buf = "";
        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
        if(method == nil)then
            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
        end
        local _GET = {}
        if (vars ~= nil)then
            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                _GET[k] = v
            end
        end
<html>
<head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>My control</title>
   </head><body>
        <div class="container">
            <section class="color-1">
                <p>
                    <input maxlenght="25" size="40" value="raz">
                </p>
            </section>
        </div>
</body></html>')

        end
        client:send(buf);
        client:close();
        collectgarbage();
    end)
end)
Пробовал написать и загрузить на привычном Wiring через Arduino IDE, исходники компилятся, загружаются, но в итоге к Wi-Fi сети ESP не цепляется. Если же шить через ESPlorer то все хорошо, ESP цепляется, но зайти на веб сервер по ip не могу.
Код:
#include <SPI.h>
#include <WiFi.h>

char ssid[] = "SSID";      // your network SSID (name)
char pass[] = "PASSWD";   // your network password
int keyIndex = 0;                 // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;

int data = 1;

WiFiServer server(80);

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while (true);
  }

  String fv = WiFi.firmwareVersion();
  if (fv != "1.1.0") {
    Serial.println("Please upgrade the firmware");
  }

  // attempt to connect to Wifi network:
  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }
  server.begin();
  // you're connected now, so print out the status:
  printWifiStatus();
  pinMode(data,OUTPUT);
}


void loop() {
  // listen for incoming clients
  WiFiClient 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.print("Value: ");
            client.print(data);
            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 disonnected");
  }
}


void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}
 

Shyster

New member
1. берите примеры для esp, а не те что у вас, у есп другие библиотеки
#include <Arduino.h>
#include <ESP8266WiFi.h>
2. не понимаете Луа, пишпте на С
 

raccoon

New member
1. берите примеры для esp, а не те что у вас, у есп другие библиотеки
#include <Arduino.h>
#include <ESP8266WiFi.h>
2. не понимаете Луа, пишпте на С
Что касается примеров - так и делал. Примеры -> WiFi ->
1. берите примеры для esp, а не те что у вас, у есп другие библиотеки
#include <Arduino.h>
#include <ESP8266WiFi.h>
2. не понимаете Луа, пишпте на С
Спасибо, к WiFi подцепился, а как теперь мне непосредственно выводить на главную страницу веб сервера показания с датчика? Если просто принтить, то он пустой
 
Сверху Снизу