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 jak odeslat data
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: 650
Bydliště: Ano, mam

PříspěvekZaslal: pá září 27 2019, 14:42    Předmět: ESP8266 jak odeslat data Citovat

Zdravím.
Mam vytvořený servr a jsem připojený k routru.
Takto si zvladnu z ESP8266 stahnoud data jak přes python, lazarus,PHP.
kód:

void loop()
{
 WiFiClient client = server.available();
 if (!client) {
 return;
 }
 client.println("Jsem tu");
}

Jak ale na to, když chci data odeslat z ESP8266 na raspi?
Je jiný zpusob, než PHP?
Ja to zkoušel přes ten PHP a nějak mi to nefunguje.
Kde muže byt kopanec?
kód:

const char* host = "http://192.168.1.91";
WiFiClient client;


void loop() {
  if (client.connect(host,8888)) {
      client.print("POST /update HTTP/1.1\n");
      client.print("Host: /nacti.php\n");
      client.print("test");   
  }
  else
  {
  Serial.println("nepovedlo se");
  }
  client.stop();
  delay(30000);
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Osmdesat



Založen: Jan 19, 2016
Příspěvky: 1514
Bydliště: Liberecko

PříspěvekZaslal: pá září 27 2019, 19:06    Předmět: Citovat

Matně si pamatuji, že mezi sekcí záhlaví a dat musejí být dvě odřádkování. No a samozřejmě na konci http přenosu musí být odřádkování také. No a hlavička host je jen název domény, ne soubor, jak tam píšeš. Jak potom v php skriptu čteš přijatá data (pole $_POST asi nic obsahovat nebude, kdyžs to neposlal v url-formátování arg1=bla1&arg2=bla2...)?
WifiClient bere asi snad jen adresu, bez protokolové předpony (http://)?
Takže by tam bylo:
kód:
const char* host = "192.168.1.91";
 WiFiClient client;


 void loop() {
   if (client.connect(host,8888)) {
       client.print("POST /update/nacti.php HTTP/1.1\n");
       client.print("Host: 192.168.1.91\n\n");
       client.print("test\n");   
   }
   else
   {
   Serial.println("nepovedlo se");
   }
   client.stop();
   delay(30000);
 }


Ale jestli je chyba opravdu v tomhle, nemohu zaručit.
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á září 27 2019, 19:23    Předmět: Citovat

kód:

HTTPClient http;

http.begin("http://192.168.1.88:8888/nacti.php");
http.addHeader("Content-Type", "text/plain");
int navrat = http.POST("Zprava od ESP");
String data = http.getString();
http.end();


Takhle ve zkratce mi to funguje.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



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

PříspěvekZaslal: so září 28 2019, 21:07    Předmět: Citovat

@FHonza
Mi ne.
V tom nacti.php mam toto
kód:

<?php
$soubor = fopen("./Disk1/text.txt", "w");
fwrite($soubor, "$_POST");
fclose($soubor);
?>

A do toho text.txt se uklada misto Zprava od ESP tak Array
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: so září 28 2019, 21:59    Předmět: Citovat

Jestli si dobře pamatuju, tak $_POST je vždy asociativní pole. A php převede pole na text jako řetězec "Array". Zkus
kód:
implode($_POST);
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



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

PříspěvekZaslal: ne září 29 2019, 9:15    Předmět: Citovat

fwrite($soubor, implode($_POST));

Textak furt prazdný.
Timto zpusobem člověk nevi, kde je problem, jestli na straně ESP8266, nebo PHP.

Jsem zkusil wiresharka a filtr ip.addr == 192.168.1.20
a hledal něco, co odesila, a nic.

ip.addr == 192.168.1.20 and http.request.method == "POST"
Vubec nic nevypsal.

Asi bude rozumnější to řešit přes client.print, kde vidim, že se to vypisuje a pak to jen řešit na straně PHP.

kód:

void loop()
{
 WiFiClient client = server.available();
 if (!client) {
 return;
 }
 client.println("Jsem tu");
}

kód:

<?php
$homepage = file_get_contents('http://192.168.1.20');
echo $homepage;
$soubor = fopen("./Disk1/text.txt", "w");
fwrite($soubor, "$homepage");
fclose($soubor);
?>

Toto funguje, ale tu PHP stranku musim spustit ja.
Takže nějak pořešit, aby tu PHP stranku spustila ta ESP8266.
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: ne září 29 2019, 11:08    Předmět: Citovat

Tu stránku "spustí" dotaz na server (ať už GET nebo POST). V první řadě bych se podíval důkladně na obsah superglobální proměnné $_POST při zpracování dotazu. Vypiš si na straně serveru někam do logu (nebo prostě kamkoli) obsah pomocí metody var_dump, případně print_r.
Ten příklad, jak jsem psal, mi funguje. Myslím si, že je něco špatně při zpracování na straně serveru.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



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

PříspěvekZaslal: ne září 29 2019, 11:22    Předmět: Citovat

FHonza napsal(a):
Vypiš si na straně serveru někam do logu (nebo prostě kamkoli) obsah pomocí metody var_dump, případně print_r.

Tak v PHP zrovna moc neumím Neutral
Toto jde mimo mně.
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: ne září 29 2019, 11:33    Předmět: Citovat

Jestli provozuješ Windows, tak Ti zítra můžu napsat krátký testovací prográmek pro WAMPServer.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



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

PříspěvekZaslal: ne září 29 2019, 17:25    Předmět: Citovat

Zkusim počkat na kamoše, možna poradi, pokud ne, ozvu se.
Dik.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



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

PříspěvekZaslal: po září 30 2019, 11:55    Předmět: Citovat

Tak toto poslal kamoš
kód:
$req_dump = print_r($_REQUEST, TRUE);
$fp = fopen('./Disk1/request.log', 'a');
fwrite($fp, $req_dump);
fclose($fp);

V souboru mam
kód:
Array
(
)
Array
(
)
Array
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 září 30 2019, 12:35    Předmět: Citovat

zkus ještě $_POST místo $_REQUEST
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



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

PříspěvekZaslal: po září 30 2019, 13:31    Předmět: Citovat

To same ale napadla mně takova prasarna.
O kousek výše jsem dal to co mi funguje.

Takže vytvořit toho klienta.
V něm zavolat tu php stranku.
HTTPClient http;
http.begin("http://192.168.1.88:8888/nacti.php");

a pak mu tam vlepit client.println("Jsem tu");

Very Happy
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 září 30 2019, 14:03    Předmět: Citovat

A jakou hodnotu Ti vrací
kód:
int navrat = http.POST("Zprava od ESP");
?

Večer se na to ještě jednou podívám u sebe a dám vědět.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Le_Ze



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

PříspěvekZaslal: po září 30 2019, 19:07    Předmět: Citovat

1852798249
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.15 sekund