Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

ESP8266 (ESP-01)WiFi Manager a posílání teploty
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další)
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: pá prosinec 27 2019, 13:52    Předmět: ESP8266 (ESP-01)WiFi Manager a posílání teploty Citovat

Tady jsem našel WiFi Manager https://www.arduinoslovakia.eu/blog/2017/7/esp8266---ukladanie-hesiel-pomocou-wifimanager?lang=cs
Já jsem to upravil takto označeno ************* je to dobře? zatím nevím jak předávat SSID a PASSWORD ale to zatím neřeším
GPIO0 je na ESP-01 je při programování musí být na LOW ,jak zapojit tlačítko mám tam dát jako Pull UP odpor na zem nebo na 3V3 nebo to je zapnuto tímto pinMode(TRIGGER_PIN, INPUT_PULLUP)? díky


#include <ESP8266WebServer.h>
#include <WiFiManager.h>
#include <DNSServer.h>
//http://www.urel.feec.vutbr.cz/MPOA/2015/esp8266-ds18b20
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS); // Inicializace DS18B20 na pinu GPIO2
DallasTemperature DS18B20(&oneWire);

*********** #define TRIGGER_PIN 0 //GPIO0 na ESP8266 ESP-01 ***************
const char* ssid = " "; // Nastavení připojení k síti
const char* password = " ";

const char* host = "api.thingspeak.com"; // Informace pro připojení k thingspeak.com
const char* APIkey = "";

bool scnd = false;
void setup() {
// put your setup code here, to run once:
***** pinMode(TRIGGER_PIN, INPUT_PULLUP);********
***** if(digitalRead(TRIGGER_PIN) == LOW) {***********
***** WiFiManager wifiManager; ***********
***** wifiManager.startConfigPortal("ArduinoAP");*********

**** }***********

Serial.begin(115200); // Otevření komunikace po sériové lince
delay(10);

Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password); // Inicializace připojení k síti

while (WiFi.status() != WL_CONNECTED) { // Potvrzení připojení k síti
delay(500);
Serial.print(".");

}


Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.println();



}

void loop() {
// put your main code here, to run repeatedly:
delay(30000); // Měření a odesílání teploty probíhá v intervalu cca 30s

float temp;

DS18B20.requestTemperatures(); // Získání informace o teplotě teploty
temp = DS18B20.getTempCByIndex(0);
Serial.print("Temperature: ");
Serial.println(temp);

char charVal[12];

dtostrf(temp, 8, 2, charVal); // Konverze vyčtené teploty do stringu
// (hodnota, počet míst, počet desetinných míst,
// umístění stringu)
if(scnd){

Serial.print("connecting to ");
Serial.println(host);

WiFiClient client;

const int httpPort = 80;

if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}

String url = "/update?key="; // Vytvoření URL pro odeslání informace o teplotě
url += APIkey;
url += "&field1=";
url += charVal;

Serial.print("Requesting URL: ");
Serial.println(url);

// Odeslání požadavku na server
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
delay(10);

Serial.println();
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line); // tisk informací přijatých ze serveru
}

Serial.println();
Serial.println("connection completed"); // potvrzení ukončení odesílání
Serial.println();
Serial.println();
}
else
{
Serial.println("uncorrect first temperatue");
Serial.println(); // Ošetření nesprávnosti první změřené hodnoty po připojení
scnd=true; // k napájení
}
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



Založen: Jul 24, 2014
Příspěvky: 655
Bydliště: Ano, mam

PříspěvekZaslal: ne prosinec 29 2019, 14:56    Předmět: Citovat

Když jsem přežraný salátu a ryb, tak mi to nepřemýšlí, ale jen první postřeh.

citace:
GPIO0 je na ESP-01 je při programování musí být na LOW.

Takže víš, že když připojíš na GPIO0 LOW, přepne se ti to do stavu programovaní.
A níže máš if(digitalRead(TRIGGER_PIN) == LOW)
Co se asi stane, když připojíš na ten pin GPIO0 LOW a resetneš to?
Ale možna se mylim Sad
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: ne prosinec 29 2019, 15:21    Předmět: Citovat

já vím že se to asi nastaví na programovacího módu ale u toho modelu ESP-01 nemáš na výběr na GPIO2 je připojené čidlo DS18B20,já bych se nejraději obešel bez tlačítka ale jak to udělat aby si mohl vynutit kdykoliv skočit do módu AP? díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



Založen: Jul 24, 2014
Příspěvky: 655
Bydliště: Ano, mam

PříspěvekZaslal: ne prosinec 29 2019, 15:44    Předmět: Citovat

Ono zaleží na co to máš.
Když budu mít ESP-01 někde na chatě a pokud se nepřipojí třeba za 5 minut, tak se spustí ten WiFi Manager je kravina.

To tlačítko je tak nejlepší nápad.
Ale nějak to ošetřit a ne to nacpat přimo do void setup.

By mělo stačit to dat do
kód:

while (WiFi.status() != WL_CONNECTED) { // Potvrzení připojení k síti
delay(500);
Serial.print(".");
}


https://arduino.stackexchange.com/questions/29938/how-to-i-make-the-tx-and-rx-pins-on-an-esp-8266-01-into-gpio-pins
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: ne prosinec 29 2019, 17:30    Předmět: Citovat

Můžeš mi poskytnou upravený příklad včetně těch proměnných ssid, password o které ve své podstatě jde uložení a pak následné dosazení do toho měřiče teploty už na tím trávím mnoho času a mám to u PC jako vrabčí hnízdo díky předem
V tom odkazu je změna GPIO a to jde? Shocked
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



Založen: Jul 24, 2014
Příspěvky: 655
Bydliště: Ano, mam

PříspěvekZaslal: ne prosinec 29 2019, 17:44    Předmět: Citovat

Nemužu, jsem na chatě a mam jen mobil.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: ne prosinec 29 2019, 17:48    Předmět: Citovat

To tak nespěchá až budeš mít čas a předem díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



Založen: Jul 24, 2014
Příspěvky: 655
Bydliště: Ano, mam

PříspěvekZaslal: ne prosinec 29 2019, 18:45    Předmět: Citovat

prostě cele to if(digitalRead(TRIGGER_PIN) == LOW) atd. překopiruj tam, kde jsem ti předtim napsal - nad delay(500)

Bude kontrolovat zda maš na tom pinu LOW, až když se nedude moct připoji.
Neznam ten WiFi Manager, tak musiš zkusit.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: ne prosinec 29 2019, 19:14    Předmět: Citovat

Tak asi a tu knihovnu wifimanager tady podívej se na to předem díky


WifiManager.jpg
 Komentář:
 Velikost:  148.26 kB
 Zobrazeno:  121 krát

WifiManager.jpg



WiFiManager-master.zip
 Komentář:

Stáhnout
 Soubor:  WiFiManager-master.zip
 Velikost:  38.71 kB
 Staženo:  151 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pocitujlasku



Založen: Dec 12, 2005
Příspěvky: 2156

PříspěvekZaslal: ne prosinec 29 2019, 21:01    Předmět: Citovat

ja to mam riesene tak, ze po zapnuti sa spusti rezim ap+ klient. ked sa pripoji na klienta, tak ap vypne. ak pocas behu sa odpoji od wifi automaticky opat nabieha do stavu ap+ klient. teda bud je normalne pripojeny na wifi, alebo pripojenie zlyhalo a je v rezime ap a vtedy sa viem nan pripojit a nastavit.
momentalne nemam tie zdrojaky pri sebe, ale je to par riadkov a da sa to vygooglit. len mala pripomienka, ak je tam delay 30 sekund, tak cely program stoji, teda sa nan neda pripojit. ja to riesim tak, ze si ukladam cas, a ten kontrolujem, ci uz je viac ako 30 sekund. a vtedy viem jednak reagovat hned na stav wifi a aj dokazem obsluhovat stranku

_________________
No vidis, a tak si sa bal
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



Založen: Jul 24, 2014
Příspěvky: 655
Bydliště: Ano, mam

PříspěvekZaslal: po prosinec 30 2019, 9:49    Předmět: Citovat

Psal jsem, cele to IF.
Toto zpatky.
pinMode(TRIGGER_PIN, INPUT_PULLUP);

a jak psal pocitujlasku, delay(30000) je blbost.
Zjistiš teplotu, odešleš ji, a pak na 30 sekund tu ESP-01 zastavič.

kód:
unsigned long time = millis();
int toggle = 1;

void loop() {
   if(millis()-time > 30000)     
  {   
   // co je tady, se vykona každých 30 sekund
    time = millis();           
  }
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
p32



Založen: Jan 13, 2007
Příspěvky: 15512
Bydliště: Olomouc

PříspěvekZaslal: po prosinec 30 2019, 10:55    Předmět: Citovat

Přitom by stačilo změřenou hodnotu dát do pomocné proměnné (na začátku nulové) a potom ji s ní porovnávat dokud se nezmění anebo až neuběhne nějaký minimální čas a potom teprve posílat.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: po prosinec 30 2019, 11:08    Předmět: Citovat

něco jako takto
kód:

if(millis()-time > 30000)

    float temp;
 
    DS18B20.requestTemperatures();               // Získání informace o teplotě teploty
    temp = DS18B20.getTempCByIndex(0);
    Serial.print("Temperature: ");
    Serial.println(temp);
 
    char charVal[12];
 
    dtostrf(temp, 8, 2, charVal);                // Konverze vyčtené teploty do stringu
                                                 // (hodnota, počet míst, počet desetinných míst,
                                                 // umístění stringu)
  if(scnd){
 
    Serial.print("connecting to ");
    Serial.println(host);
 
    WiFiClient client;
 
    const int httpPort = 80;
 
    if (!client.connect(host, httpPort)) {
      Serial.println("connection failed");
      return;
    }
 
    String url = "/update?key=";                // Vytvoření URL pro odeslání informace o teplotě
    url += APIkey;
    url += "&field1=";
    url += charVal;       
 
    Serial.print("Requesting URL: ");
    Serial.println(url);
 
                                                 // Odeslání požadavku na server
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");
    delay(10);
 
    Serial.println();
    while (client.available()) {
      String line = client.readStringUntil('\r');
      Serial.print(line);                        // tisk informací přijatých ze serveru
    }
 
    Serial.println();
    Serial.println("connection completed");      // potvrzení ukončení odesílání
    Serial.println();
    Serial.println();
   }
   else
   {
    Serial.println("uncorrect first temperatue");
    Serial.println();                            // Ošetření nesprávnosti první změřené hodnoty po připojení
    scnd=true;                                   // k napájení
   }                                             
  }}

ale předáván těch parametrů SSID a heslem mezi WiFiManagerem a vlastním odesíláním teploty vůbec nevím jak řešit ,WiFiManager to někde uloží v paměti asi v eeprom po resetu ESP najede vlastní program co posílá teplotu na server ale musí někde najít ty přístupové parametry co uložil ten WiFiManager v eeprom aby se přihlásil k wifi síti
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



Založen: Jul 24, 2014
Příspěvky: 655
Bydliště: Ano, mam

PříspěvekZaslal: po prosinec 30 2019, 11:51    Předmět: Citovat

Tak na 5" mobilu moc zázraky ode mně neočekávej.
Vyzkoušej a uvidíš. Až Ti něco nepůjde, tak se ozvi.

Jsem kdysi zkoušel ten WiFi Manager, ale moc spokojeny nebyl, tak jsem to moc neřešil.
Jsem to zkoušel na ESP8266 NodeMcu a zabere to 65% paměti.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: po prosinec 30 2019, 13:33    Předmět: Citovat

tento příklad funguje ale musím zadat mě údaje do wifi sítě
kód:
/*********
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-input-data-html-form/
 
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
 
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*********/

#include <Arduino.h>
#ifdef ESP32
  #include <WiFi.h>
  #include <AsyncTCP.h>
#else
  #include <ESP8266WiFi.h>
  #include <ESPAsyncTCP.h>
#endif
#include <ESPAsyncWebServer.h>

AsyncWebServer server(80);

// REPLACE WITH YOUR NETWORK CREDENTIALS
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

const char* PARAM_INPUT_1 = "input1";
const char* PARAM_INPUT_2 = "input2";
const char* PARAM_INPUT_3 = "input3";

// HTML web page to handle 3 input fields (input1, input2, input3)
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html><head>
  <title>ESP Input Form</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  </head><body>
  <form action="/get">
    input1: <input type="text" name="input1">
    <input type="submit" value="Submit">
  </form><br>
  <form action="/get">
    input2: <input type="text" name="input2">
    <input type="submit" value="Submit">
  </form><br>
  <form action="/get">
    input3: <input type="text" name="input3">
    <input type="submit" value="Submit">
  </form>
</body></html>)rawliteral";

void notFound(AsyncWebServerRequest *request) {
  request->send(404, "text/plain", "Not found");
}

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("WiFi Failed!");
    return;
  }
  Serial.println();
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  // Send web page with input fields to client
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html);
  });

  // Send a GET request to <ESP_IP>/get?input1=<inputMessage>
  server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
    String inputMessage;
    String inputParam;
    // GET input1 value on <ESP_IP>/get?input1=<inputMessage>
    if (request->hasParam(PARAM_INPUT_1)) {
      inputMessage = request->getParam(PARAM_INPUT_1)->value();
      inputParam = PARAM_INPUT_1;
    }
    // GET input2 value on <ESP_IP>/get?input2=<inputMessage>
    else if (request->hasParam(PARAM_INPUT_2)) {
      inputMessage = request->getParam(PARAM_INPUT_2)->value();
      inputParam = PARAM_INPUT_2;
    }
    // GET input3 value on <ESP_IP>/get?input3=<inputMessage>
    else if (request->hasParam(PARAM_INPUT_3)) {
      inputMessage = request->getParam(PARAM_INPUT_3)->value();
      inputParam = PARAM_INPUT_3;
    }
    else {
      inputMessage = "No message sent";
      inputParam = "none";
    }
    Serial.println(inputMessage);
    request->send(200, "text/html", "HTTP GET request sent to your ESP on input field ("
                                     + inputParam + ") with value: " + inputMessage +
                                     "<br><a href=\"/\">Return to Home Page</a>");
  });
  server.onNotFound(notFound);
  server.begin();
}

void loop() {
 
}


ale já potřebuji aby to vystupovalo jako AP abych si jeho jméno mohl vyvolat na telefonu a přihlásit se k tomu a tam do formuláře zadat ty údaje k té které síti bych to potřeboval nehledě k tomu ten příklad neřeší uložení údajů díky



ESPForm.jpg
 Komentář:
 Velikost:  61.96 kB
 Zobrazeno:  134 krát

ESPForm.jpg


Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další) Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.16 sekund