Stránka 1 z 1

ESP8266 ESP-01

Napsal: 28 črc 2019, 17:49
od Le-Ze
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í

Re: ESP8266 ESP-01

Napsal: 28 črc 2019, 19:03
od MartinL
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.

Re: ESP8266 ESP-01

Napsal: 28 črc 2019, 19:24
od Le-Ze
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 ;)

Re: ESP8266 ESP-01

Napsal: 28 črc 2019, 20:44
od gilhad
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.

Re: ESP8266 ESP-01

Napsal: 28 črc 2019, 20:46
od MartinL
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();
}


Re: ESP8266 ESP-01

Napsal: 29 črc 2019, 09:06
od Le-Ze
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?

Re: ESP8266 ESP-01

Napsal: 29 črc 2019, 11:01
od MartinL
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);         
}

Re: ESP8266 ESP-01

Napsal: 20 zář 2019, 14:59
od Le-Ze
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?

Re: ESP8266 ESP-01

Napsal: 22 zář 2019, 10:10
od DavidO
Zkusil jsi tohle?
knihovna ESP8266WebServer, příklad HttpBasicAuth.