ESP8266 ESP-01

Odpovědět
Le-Ze
Příspěvky: 79
Registrován: 31 kvě 2017, 15:37

ESP8266 ESP-01

Příspěvek od Le-Ze » 28 črc 2019, 17:49

Zdravím.
Už jsem toto před hodně dlouhou dobou řešil u W5100 ale nepamatují.
Bych chtěl volat stranku s parametrem.

http://192.168.1.20/?-1 // vypni rele
http://192.168.1.20/?+1 // zapni rele

Jak to http://192.168.1.20/?-1 načtu do řetězce?
Děkují

MartinL
Příspěvky: 179
Registrován: 24 úno 2013, 14:13
Kontaktovat uživatele:

Re: ESP8266 ESP-01

Příspěvek od MartinL » 28 črc 2019, 19:03

Chtělo by to trochu specifikovat problém. Předpokládám, že ESP má fungovat v roli webserveru, který bude ovládat to relé?
Pokud ano, tak dobrý příklad je https://www.zive.cz/clanky/pojdme-progr ... fault.aspx.

Le-Ze
Příspěvky: 79
Registrován: 31 kvě 2017, 15:37

Re: ESP8266 ESP-01

Příspěvek od Le-Ze » 28 črc 2019, 19:24

No nechcí žadný servr s tlačitky.
Prostě do prohližeče zadam http://192.168.1.20/?+1
Potřebují v kodu zjistit co je za ?
Pokud -1 vypni rele
Pokud +1 zapni rele
Nic vic ;)

Uživatelský avatar
gilhad
Příspěvky: 204
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: ESP8266 ESP-01

Příspěvek od gilhad » 28 črc 2019, 20:44

Tak to udelej jako server bez tlacitek. Proste prijde pozadavek, ty ho vyridis a vratis prazdnou stranku (nebo stranku s napisem OK, nebo napisem vypnuto/zapnuto). Adresu at si kazdy zada sam (a jednodussi na vyhodnocovani bdes mit http://192.168.1.20/vyp a http://192.168.1.20/zap nebo tak neco - klidne jen /v /z).

Ale pokud se to ma bavit prez web (ovladani z browseru), tak tam nejaky server proste budes mit, jedno jak jednoduchy ci slozity - protoze to bude prijimat pozadavky a na zaklade nich slouzit.

MartinL
Příspěvky: 179
Registrován: 24 úno 2013, 14:13
Kontaktovat uživatele:

Re: ESP8266 ESP-01

Příspěvek od MartinL » 28 črc 2019, 20:46

Však vždyť to tak funguje (jediný rozdíl je v tom, že reaguje na /ZapnoutSvetlo, resp. /VypnoutSvetlo). Jestli na straně clienta mám zobrazená tlačítka, nebo to zapisuji ručně do adresního řádku je přeci jedno.
Tady je upravený kód podle zadání:

Kód: Vybrat vše

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

// Wi-Fi Settings
const char* ssid = ""; // your wireless network name (SSID)
const char* password = ""; // your Wi-Fi network password 
  
ESP8266WebServer server(80);

#define LED D3

//**********************************************************************
void handleRoot() { 
  if (server.argName(0) == " 1") {
    digitalWrite(LED, 1);
  } else if (server.argName(0) == "-1") {
    digitalWrite(LED, 0);
  }
  server.send(200, "text/plain", "");         
}

//************************************************************************
void handleNotFound(){
  server.send(200, "text/plain", "Invalid page");   
}

//*************************************************************** 
void setup(void){
  pinMode(LED, OUTPUT);
  Serial.begin(115200);

  WiFi.mode(WIFI_STA);
  WiFi.persistent(false);  
  WiFi.begin(ssid, password);
  
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  server.on("/", handleRoot);  
  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
}

//*********************************************************************
void loop(void){   
  server.handleClient();
}


Le-Ze
Příspěvky: 79
Registrován: 31 kvě 2017, 15:37

Re: ESP8266 ESP-01

Příspěvek od Le-Ze » 29 črc 2019, 09:06

Dik moc, přes web jsem uplna lama ;), budu muset učit, ale ted nestiham.

Ještě dotaz.
V tom void handleRoot, když se provede digitalWrite(LED, 1), jak vypsat na stranku stav toho pinu přes echo?

MartinL
Příspěvky: 179
Registrován: 24 úno 2013, 14:13
Kontaktovat uživatele:

Re: ESP8266 ESP-01

Příspěvek od MartinL » 29 črc 2019, 11:01

Jestli je myšleno na stránku jako webovou stránku v prohlížeči, tak tam zase vrátíme to, co jsem z toho příkladu vyhodil.
Webserver tedy nebude jen ovládat výstup, ale vracet i nějakou odpověď. Tedy doplníme:

Kód: Vybrat vše

void handleRoot() { 
  String odpoved;
  
  if (server.argName(0) == " 1") {
    digitalWrite(LED, 1);
    odpoved = "Zapnuto";
  } else if (server.argName(0) == "-1") {
    digitalWrite(LED, 0);
    odpoved = "Vypnuto";
  }
  server.send(200, "text/plain", odpoved);         
}

Le-Ze
Příspěvky: 79
Registrován: 31 kvě 2017, 15:37

Re: ESP8266 ESP-01

Příspěvek od Le-Ze » 20 zář 2019, 14:59

By byla dalši prozba.

Kód: Vybrat vše

void loop() 
{
 // Cekej, dokud se nepripoji nejaky klient
 WiFiClient client = server.available();
 if (!client) {
 return;
 }
 client.println(" Klient je připojen "); 
}
Na web strankach použivál login.

Kód: Vybrat vše

<?php
 if ($_SERVER['PHP_AUTH_USER']!="admin" || $_SERVER['PHP_AUTH_PW']!="admin")
   {
       header("WWW-Authenticate: Basic realm=\"hups\"");
       header("HTTP/1.0 401 Unauthorized");
       die("Authentization required\n");
   }
Jak to pořešit u te ESP8266?

DavidO
Příspěvky: 959
Registrován: 01 kvě 2013, 21:27

Re: ESP8266 ESP-01

Příspěvek od DavidO » 22 zář 2019, 10:10

Zkusil jsi tohle?
knihovna ESP8266WebServer, příklad HttpBasicAuth.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host