Stránka 2 z 5
Re: nacitani hodnot z PHP na synology
Napsal: 29 říj 2021, 17:15
od KamilV
Vs. Tvé:
Kód: Vybrat vše
client.println("GET http://konycz.eu/doma/test/cas.php");
client.println(" HTTP/1.0");
Vidíš ten rozdíl? Hlavně máš odřádkovaný GET od specifikace HTTP, což není validní request.
Co tohle?
Kód: Vybrat vše
client.println("GET /doma/test/cas.php HTTP/1.1");
client.println("Host: konycz.eu");
Re: nacitani hodnot z PHP na synology
Napsal: 30 říj 2021, 11:37
od Kony
no ted uz to vypisuje :
Kód: Vybrat vše
11:36:42.643 -> Cas : HTTP/1.1 200 OK
11:36:42.643 -> _________________________
11:36:48.639 -> Cas : HTTP/1.1 200 OK
11:36:48.639 -> _________________________
11:36:54.629 -> Cas : HTTP/1.1 200 OK
11:36:54.629 -> _________________________
11:37:00.670 -> Cas : HTTP/1.1 200 OK
11:37:00.670 -> _________________________
11:37:06.663 -> Cas : HTTP/1.1 200 OK
11:37:06.663 -> _________________________
ale vypis stranky co ma vypsat ne a ne
Re: nacitani hodnot z PHP na synology
Napsal: 30 říj 2021, 11:45
od KamilV
Špatně parsuješ response.
Teď si tiskneš první řádek z response. Dříve zaslaný kód tohle určitě nevrací a aktuální kód jsi neposlal, takže můžeme jen potvrdit, že výpis stránky ne a ne...
Re: nacitani hodnot z PHP na synology
Napsal: 30 říj 2021, 14:21
od Kony
aktualni
Kód: Vybrat vše
#include <ESP8266WiFi.h>
// Nazev Wi-Fi site, do ktere se mam pripojit
const char* ssid = "Kony";
// Heslo Wi-Fi site, do ktere se mam pripojit
const char* password = "heslowifi";
char server[] = "192.168.1.250"; //URL adresa serveru
WiFiClient client;
unsigned long cas = 0;
String cas_aktualni;
void setup() {
// komunikace přes sériovou linku rychlostí 9600 baud
Serial.begin(9600);
Serial.println();
Serial.print("Pripojuji k ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// Dokud nejsem pripojeny k Wi-Fi,zapisuj do seriove linky tecky progressbaru
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
// Jsem pripojeny k Wi-Fi a mohu pokracovat
Serial.println();
Serial.println("WiFi pripojena!");
// Napis IP adresu, kterou mikropocitac dostal
Serial.print("Pouzij k pripojeni tuto adresu: ");
Serial.print("http://");
Serial.println(WiFi.localIP());
}
void hodiny() {
if (millis() - cas >= 6000 || cas == 0) {
cas = millis();
if (client.connect(server, 80)) { //starts client connection, checks for connection
client.println("GET /doma/test/cas.php HTTP/1.1");
client.println("Host: 192.168.1.250");
client.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
client.println("Connection: close");
client.println();
delay(1000);
while (client.connected()) {
String line = client.readStringUntil('\n');
Serial.println(line); //ak chceme vypísať HTTP header
if (line == "\r") {
break;
}
}
String line = client.readStringUntil('\n');
// Serial.println("Nacitany payload response: Cas - ");
// Serial.println(line); //odpoveď webservera - naše dáta
cas_aktualni = line;
}
else {
Serial.println("Pripojenie na webserver sa nepodarilo");
}
client.stop();
}
Serial.print("Cas : ");
Serial.println(cas_aktualni);
}
void loop() {
hodiny();
Serial.println("_________________________");
delay(5000);
}
Re: nacitani hodnot z PHP na synology
Napsal: 30 říj 2021, 19:44
od KamilV
Kód: Vybrat vše
while (client.connected()) {
String headers = client.readStringUntil('\r');
String data = client.readStringUntil('\r');
}
Serial.print("Headers: ");
Serial.println(headers);
Serial.print("Data: ");
Serial.println(data);
Tohle vypíše co?
Re: nacitani hodnot z PHP na synology
Napsal: 30 říj 2021, 19:57
od Kony
To mam takto zadat do loopu ??
Re: nacitani hodnot z PHP na synology
Napsal: 30 říj 2021, 20:17
od Kony
Kód: Vybrat vše
#include <ESP8266WiFi.h>
// Nazev Wi-Fi site, do ktere se mam pripojit
const char* ssid = "Kony";
// Heslo Wi-Fi site, do ktere se mam pripojit
const char* password = "heslowifi";
char server[] = "192.168.1.250"; //URL adresa serveru
WiFiClient client;
unsigned long cas = 0;
String cas_aktualni;
String headers1;
String data;
void setup() {
// komunikace přes sériovou linku rychlostí 9600 baud
Serial.begin(9600);
Serial.println();
Serial.print("Pripojuji k ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// Dokud nejsem pripojeny k Wi-Fi,zapisuj do seriove linky tecky progressbaru
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
// Jsem pripojeny k Wi-Fi a mohu pokracovat
Serial.println();
Serial.println("WiFi pripojena!");
// Napis IP adresu, kterou mikropocitac dostal
Serial.print("Pouzij k pripojeni tuto adresu: ");
Serial.print("http://");
Serial.println(WiFi.localIP());
}
void hodiny() {
if (millis() - cas >= 6000 || cas == 0) {
cas = millis();
if (client.connect(server, 80)) { //starts client connection, checks for connection
client.println("GET /doma/test/cas.php HTTP/1.1");
client.println("Host: 192.168.1.250");
client.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
client.println("Connection: close");
client.println();
delay(1000);
while (client.connected()) {
headers1 = client.readStringUntil('\r');
data = client.readStringUntil('\r');
}
Serial.print("Headers: ");
Serial.println(headers1);
Serial.print("Data: ");
Serial.println(data);
// Serial.println("Nacitany payload response: Cas - ");
// Serial.println(line); //odpoveď webservera - naše dáta
// cas_aktualni = line;
}
else {
Serial.println("Pripojenie na webserver sa nepodarilo");
}
client.stop();
}
Serial.print("Cas : ");
Serial.println(cas_aktualni);
}
void loop() {
hodiny();
Serial.println("_________________________");
delay(5000);
}
Kód: Vybrat vše
20:16:55.352 -> Headers:
20:16:55.352 -> Data:
20:16:55.352 -> Cas :
20:16:55.352 -> _________________________
Re: nacitani hodnot z PHP na synology
Napsal: 30 říj 2021, 23:42
od martinius96
Kony píše: ↑29 říj 2021, 15:54
Tak taky ne, stejny vysledek
Schvalne muzes vyzkouset
Kód: Vybrat vše
http://213.211.34.227/testik/cas.php
Funguje mi to úplne bez problému. Použil som example kód pre HTTP request z Githubu (Arduino Core pre ESP8266).
Payload je načítaný kompletne, ak by tam bolo viac riadkov payloadu, tak ho načíta celý (ak by bol napr. HTML kód okolo a potreboval by si sa dostať k riadku tvojej premennej a orezať ju, tak je možné načítavať aj po riadkoch).
Kód: Vybrat vše
//Pripojenie na webserver a nacitanie HTTP hlavicky, Payloadu (text / HTML / JSON...)
#include <ESP8266WiFi.h>
const char* ssid = "SSID_NAME"; //SSID WiFi siete
const char* password = "SSID_PASSWORD"; //HESLO WiFi siete
const char* host = "213.211.34.227"; //IP adresa, alebo domena webservera
const int httpPort = 80;
WiFiClient client; //pre HTTP
void hodiny();
void setup() {
Serial.begin(115200); //rychlost seriovej linky
Serial.println();
Serial.print(F("Pripajanie na WiFi siet: "));
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(F("."));
}
Serial.println(F(""));
Serial.println(F("Wifi pripojene"));
Serial.print(F("Pridelena IP adresa z DHCP: "));
Serial.println(WiFi.localIP());
hodiny();
}
void loop() {
}
void hodiny() {
client.stop();
if (client.connect(host, httpPort)) {
String url = F("/testik/cas.php");
Serial.println(F("Pripojenie uspesne, nacitavam odpoved servera"));
client.print(String(F("GET ")) + url + F(" HTTP/1.0\r\n") + F("Host: ") + host + F("\r\n") + F("User-Agent: NodeMCU\r\n") + F("Connection: close\r\n\r\n"));
while (client.connected()) {
String line = client.readStringUntil('\n'); //HTTP HEADER
Serial.println(line);
if (line == F("\r")) {
break;
}
}
String line = client.readString(); //PAYLOAD
Serial.println(line);
} else if (!client.connect(host, httpPort)) {
Serial.println(F("Nepodarilo sa pripojit na webserver"));
}
}
Výstup na UART:
Re: nacitani hodnot z PHP na synology
Napsal: 31 říj 2021, 09:37
od Kony
Super, tak toto mi uz funguje.. a jak z toho vypsat pouze ten cas ??
Abaych odfiltroval vse ostatni ¨?
Re: nacitani hodnot z PHP na synology
Napsal: 31 říj 2021, 12:43
od peterple
Skús sa zamyslieť prečo vyzerá hlavička práve tak ako vyzerá. Potom možno objavíš tento algoritmus:
- načitaj riadol odpovede
- najdi v riadku znak dvojbodka
- čo je predním je klúčové slovo, čo je zaním je hodnota
- ak je to klúčové slovo čo ma zaujíma, tak mám aj hodnotu.
Samozrejme dá sa to ja inak. Ignorovať hlavičku a potom zobrať data stránky. Pre začiatok si skús vypísať len data. Možno zistíš že ten tvoj pôvodný kód by na to už fungoval, alebo ho stačí len mierne modifikovať