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 - Ovladaní přes web.
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
Le_Ze



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

PříspěvekZaslal: po květen 11 2020, 7:42    Předmět: ESP8266 - Ovladaní přes web. Citovat

Zdravím.
Mužete nasměrovat na nějake fajne www ohledně komunikace ESP8266 s web rozhraním.
Bych vše chtěl řešit timto zpusobem.
https://circuits4you.com/2019/03/20/esp8266-receive-post-get-request-data-from-website/

A par dotazu k tomuto.

Je tam Void handleForm() This routine is executed when you press submit
Když přidam do web stranky dalši tlačitko, jak zjistím na ktere bylo kliknuto?

void handleRoot() This routine is executed when you open its IP in browser
<input type="text" name="firstname" value="Mickey">
Jak na to, kdybych chtěl zadat value až při spuštění stranky v tom handleRoot?
String firstname = "Mickey";

Dik moc.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: po květen 11 2020, 12:24    Předmět: Citovat

Le_Ze napsal(a):

Je tam Void handleForm() This routine is executed when you press submit
Když přidam do web stranky dalši tlačitko, jak zjistím na ktere bylo kliknuto?


Např. takto (mají-li obě tlačítka zároveň odeslat formulář):
kód:

<input type="submit" name="akce" value="Btn1" />
<input type="submit" name="akce" value="Btn2" />

kód:
String akce = server.arg("akce");

Handler musí být napsaný podle toho, zda formulářová data budeš odesílat pomocí POST nebo GET

Le_Ze napsal(a):
Jak na to, kdybych chtěl zadat value až při spuštění stranky v tom handleRoot?
String firstname = "Mickey";


Buď úpravou html před odesláním do prohlížeče, nebo po načtení stránky prohlížečem pomocí AJAXu
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 květen 11 2020, 17:24    Předmět: Citovat

Dik.
Pomalu, postupně, AJAX přijde na řadu až se pokoušu zaklady.

Už umím zapsat text do inputu při spuštění HTML stranky.
Načist data z imputu po kliknutí na button a i zjistil, na který button jsem klik.

Na řadě je Checkbox
https://arduino.stackexchange.com/questions/53343/exporting-an-html-for-esp8266
https://arduino.stackexchange.com/questions/26773/server-checkbox-not-working-properly

kód:
<input type="checkbox" name="alarm1" id="alarm1">1</button>


Podle prvního odkazu a přikladu dole kod patři do void handleSubmit

kód:
void handleSubmit(){
    if (server.arg("alarm1") == "on") {
       Serial.println("Alarm 1 is set");
    }
    server.send(200, "text/plain", MAIN_page);     

A do void setup
kód:
server.on ( "/submit", handleSubmit );


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



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

PříspěvekZaslal: po květen 11 2020, 22:11    Předmět: Citovat

pozor, nie kazdy prehliadac posiela checkbox ako on, je lepsie tam pridat value="on" resp. to, co sa ma poslat pri zaskrtnuti.
co presne znamena nefunguje?

_________________
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: út květen 12 2020, 4:15    Předmět: Citovat

checkbox v HTML funguje ale nic se neposila
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: út květen 12 2020, 11:43    Předmět: Citovat

kód:

<input type="checkbox" name="check">


kód:

if (server.hasArg("check")
{
}
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: st květen 13 2020, 10:05    Předmět: Citovat

Jsem už vyzkoušel vše co mně napadlo a nefunguje.
Kopanec budu mit jinde nebo to tak jak chci nejde.
https://arduino.stackexchange.com/questions/53343/exporting-an-html-for-esp8266
Uplně dole.
Ma to v void handleSubmit()

Když strčim na web třeba 10 tlačitek.
kód:

void handleForm() {
Serial.println("hups");
}

Procedura se zavola pokažde, když kliknu na jakekoliv tlačitko.
A pak až v ní testují, na ktere jsem klik.

To same by měl dělat ten checkbox, ne?
Měla by se zavolat rutina handleSubmit a pak až v ní testovat na který checkbox jsem klik.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: st květen 13 2020, 13:06    Předmět: Citovat

"Odlaď" si tu stránku úplně mimo ESP, pak snadno zjistíš co prohlížeč doopravdy posílá. Používám k tomu WampServer + VSCode + XDebug. Jde to i jednodušeji, akorát to není tak pohodlné: Otevři si stránku v prohlížeči a zapni si "nástroje pro vývojáře". A tam si zobraz, co poslal prohlížeč na server. Ve všech prohlížečích to bude velmi podobné.

Případně jsem dej zdrojový kód stránky z prohlížeče, podívám se na to.
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: čt květen 14 2020, 8:44    Předmět: Citovat

FHonza napsal(a):

Případně jsem dej zdrojový kód stránky z prohlížeče, podívám se na to.

https://www.w3schools.com/tags/att_input_type_checkbox.asp

Na jednom foru mi jeden čípek napsal, že mi to nefunguje, protože checkbox je jen blbe zaškrtávátko, které nic neposila.
Odesílaní infa o stavu checkboxu je prý třeba dodělat přes JavaScrip.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: čt květen 14 2020, 9:45    Předmět: Citovat

Myslel jsem zdrojový kód tvé stránky.
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: čt květen 14 2020, 18:28    Předmět: Citovat

Ja zas myslel, že koukneš, jestli ten checkbox neco posila Very Happy
Zda měl ten čipek pravdu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: čt květen 14 2020, 22:25    Předmět: Citovat

To co jsem napsal květen 12, 2020 11:43 funguje. Když není checkbox zaškrtnutý, tak se nic nepošle. V případě že je, tak se pošle parametr s názvem dle atributu "name", hodnota bude dle atributu "value". Proto jsem tam psal
kód:
if (server.hasArg("vehicle1")
{
}


Opravdu bych nehledal chybu v prohlížeči.

Nejjednodušší test dle tvého odkazu:
kód:
<!DOCTYPE html>
<html>
<body>

<h1>Show Checkboxes</h1>

<form action="/index.php">
  <input type="checkbox" id="vehicle11" name="vehicle1" value="Bike">
  <label for="vehicle1"> I have a bike</label><br>
  <input type="checkbox" id="vehicle22" name="vehicle2" value="Car">
  <label for="vehicle2"> I have a car</label><br>
  <input type="checkbox" id="vehicle33" name="vehicle3" value="Boat">
  <label for="vehicle3"> I have a boat</label><br><br>
  <input type="submit" value="Submit">
</form>

<p>
<h1>Params</h1>
<?php

  echo "count: ".count($_GET)."<br/>";
  if (count($_GET))
  {
    foreach ($_GET as $key => $value)
    {
      echo $key." => ".$value."<br/>";
    }
  }
?>
</p>
</body>
</html>
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: pá květen 15 2020, 7:41    Předmět: Citovat

Hm, tak koukam že si celou dobu nerozumime. Sad
Ja tam nechci ten button.
Chci aby při kliknutí na ten checkbox, byl odeslan jeho stav.

Takže ten čipek měl pravdu.
Neumiš to pořešit přes ten JavaScrip?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: pá květen 15 2020, 21:49    Předmět: Citovat

To si fakt nerozumíme. Copak jakýkoli jiný HTML prvek něco někam odesílá při změně stavu ?

Například takto:
kód:

<!DOCTYPE html>
<html>

{script}
function changeCheckbox(box)
  {
    var url = "/zpracovani?" + box.name + "=";
    url += (box.checked) ? "1" : "0";

    var xh = new XMLHttpRequest();
    xh.onreadystatechange = function()
    {
      if (xh.readyState == 4)
      {
        if (xh.status == 200)
        {
          // tady je mozne zpracovat pripadnou odpoved
          console.log(xh.responseText);
        }
      }
    }
    xh.open("GET", url, true);
    xh.send(null);
  }
{/script}
<body>
  <h1>Show Checkboxes</h1>

  <form action="/index.php">
    <input type="checkbox" id="vehicle11" name="vehicle1" value="Bike" onchange="changeCheckbox(this)">
    <label for="vehicle1"> I have a bike</label><br>
    <input type="checkbox" id="vehicle22" name="vehicle2" value="Car" onchange="changeCheckbox(this)">
    <label for="vehicle2"> I have a car</label><br>
    <input type="checkbox" id="vehicle33" name="vehicle3" value="Boat" onchange="changeCheckbox(this)">
    <label for="vehicle3"> I have a boat</label><br><br>
  </form>
</body>

</html>



Jako jméno argumentu je opět atribut name, hodnota pak "0" nebo "1".

Nevím co tím chceš ovládat, ale pro kontinuální ovládání (něco jako řízení nějaké hračky a pod) je vhodnější navázat spojení přes WebSocket (ESP i všechny moderní prohlížeče to podporují) a posílat příkazy přes to. Má-li to být na něco jako "občas něco zapnout/vypnout", tak je to takto mnohem jednodušší.

Exclamation Tag script je nutné opravit (nešel by tady odeslat příspěvek).
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: so květen 16 2020, 8:00    Předmět: Citovat

Je to pro souseda.
8 relay modul přes PCF8574
Mam to udělame tak jak jsi napsal.
Zaškrtne ty co chce zapnout / vypnout a klik na button.
Ten button se mu ale nelibi a chce, aby to reagovalo hned při změně stavu toho checkboxu.
Až budu v praci vyzkoušim.
Děkuji.
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.19 sekund