Stránka 3 z 5
Re: nacitani hodnot z PHP na synology
Napsal: 01 lis 2021, 07:00
od Kony
to se prave snazim, ale nikde nevidim v kodu, aby hledal ":".
porad to prochazim dokola a nikde nic nevidim...
Napadá mě, že vlastně poslední řádek je můj požadovaný..
Takže pouze uložit poslední řádek do proměné ?
Re: nacitani hodnot z PHP na synology
Napsal: 01 lis 2021, 08:10
od KamilV
Ale vždyť už ho v proměnné máš...
Kód: Vybrat vše
if (client.connect(host, httpPort)) {
String url = F("/testik/cas.php");
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
if (line == F("\r")) {
break;
}
}
String line = client.readString(); //PAYLOAD
Serial.println(line);
Re: nacitani hodnot z PHP na synology
Napsal: 01 lis 2021, 08:24
od Kony
V promene line ?
Re: nacitani hodnot z PHP na synology
Napsal: 01 lis 2021, 08:31
od KamilV
Jaká je druhá možnost?
Re: nacitani hodnot z PHP na synology
Napsal: 01 lis 2021, 08:59
od Kony
Bylo to jen otazka
nejsem nyní u toho.. jak přijdu domů tak vyzkouším...
Re: nacitani hodnot z PHP na synology
Napsal: 01 lis 2021, 18:01
od peterple
Prepáč že som ťa pomýlil. Ten algoritmus tam naprogramovaný nie je. Zbytočne si hľadal. Objaviť a naprogramovať ho mala byť tvoja úloha. Pokiaľ ale stačí zobrať len jeden údaj zo stránky (čas), tak žiadnu špéciu vymýšľať nemusíš. Niečo mi ale hovorí že onedlho príde na rad aj čítanie viacerých hodnôt nie len jednej. Nakoniec aj ten čas budeš potrebovať rozparsovať.
Re: nacitani hodnot z PHP na synology
Napsal: 01 lis 2021, 19:48
od Kony
tak sjem nahodil toto, abych se snazil vypisovat pouze hodnotu
Kód: Vybrat vše
//Pripojenie na webserver a nacitanie HTTP hlavicky, Payloadu (text / HTML / JSON...)
#include <ESP8266WiFi.h>
const char* ssid = "Kony"; //SSID WiFi siete
const char* password = "Heslowifi"; //HESLO WiFi siete
const char* host = "192.168.1.250"; //IP adresa, alebo domena webservera
const int httpPort = 80;
WiFiClient client; //pre HTTP
void hodiny();
String aktualni;
void setup() {
Serial.begin(9600); //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() {
hodiny();
}
void hodiny() {
if (client.connect(host, httpPort)) {
String url = F("/doma/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);
aktualni = line;
} else if (!client.connect(host, httpPort)) {
Serial.println(F("Nepodarilo sa pripojit na webserver"));
client.stop();
}
Serial.println(aktualni);
}
a vypisuje to chvilku dobre a pak to vypisuje i hlavicku
Kód: Vybrat vše
19:48:27.694 -> Wifi pripojene
19:48:27.694 -> Pridelena IP adresa z DHCP: 192.168.1.6
19:48:32.696 -> Server: nginx
19:48:32.696 -> Date: Mon, 01 Nov 2021 18:48:27 GMT
19:48:32.696 -> Content-Type: text/html; charset=UTF-8
19:48:32.744 -> Connection: close
19:48:32.791 -> Vary: Accept-Encoding
19:48:32.838 -> Vary: Accept-Encoding
19:48:32.838 ->
19:48:32.838 -> 19:48
19:48:37.695 -> 19:48
19:48:42.739 -> 19:48
19:48:47.740 -> Server: nginx
19:48:47.740 -> Date: Mon, 01 Nov 2021 18:48:42 GMT
19:48:47.788 -> Content-Type: text/html; charset=UTF-8
19:48:47.835 -> Connection: close
19:48:47.835 -> Vary: Accept-Encoding
19:48:47.883 -> Vary: Accept-Encoding
19:48:47.883 ->
19:48:47.883 -> 19:48
takze pokud bych chtel tu hodnotu vypisovat na LCD, tak se mi bude zobrazovat vse vcetne te hlavicky stranky a ne jen cas
Re: nacitani hodnot z PHP na synology
Napsal: 01 lis 2021, 20:03
od Kony
Kód: Vybrat vše
//Pripojenie na webserver a nacitanie HTTP hlavicky, Payloadu (text / HTML / JSON...)
#include <ESP8266WiFi.h>
const char* ssid = "Kony"; //SSID WiFi siete
const char* password = "heslowifi"; //HESLO WiFi siete
const char* host = "192.168.1.250"; //IP adresa, alebo domena webservera
const int httpPort = 80;
WiFiClient client; //pre HTTP
void hodiny();
String aktualni;
unsigned long cas = 0;
void setup() {
Serial.begin(9600); //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() {
hodiny();
}
void hodiny() {
if (client.connect(host, httpPort)) {
String url = F("/doma/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"));
delay(1000);
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);
aktualni = line;
} else if (!client.connect(host, httpPort)) {
Serial.println(F("Nepodarilo sa pripojit na webserver"));
client.stop();
}
Serial.print("Cas : ");
Serial.println(aktualni);
}
a vysledek
Kód: Vybrat vše
20:03:07.028 -> Cas : HTTP/1.1 200 OK
20:03:07.028 -> Server: nginx
20:03:07.071 -> Date: Mon, 01 Nov 2021 19:03:00 GMT
20:03:07.071 -> Content-Type: text/html; charset=UTF-8
20:03:07.116 -> Connection: close
20:03:07.157 -> Vary: Accept-Encoding
20:03:07.157 -> Vary: Accept-Encoding
20:03:07.202 ->
20:03:07.202 -> 20:03
20:03:13.079 -> Cas : HTTP/1.1 200 OK
20:03:13.079 -> Server: nginx
20:03:13.124 -> Date: Mon, 01 Nov 2021 19:03:07 GMT
20:03:13.168 -> Content-Type: text/html; charset=UTF-8
20:03:13.214 -> Connection: close
20:03:13.214 -> Vary: Accept-Encoding
20:03:13.214 -> Vary: Accept-Encoding
20:03:13.256 ->
20:03:13.256 -> 20:03
takze to pred samotnym casem vypise i jeste nejaky veci... a to je spatne ;+(
Re: nacitani hodnot z PHP na synology
Napsal: 01 lis 2021, 20:05
od KamilV
Proč jsi dal pryč delay mezi requestem a čtením response?
Dál bych načítal payload jen tehdy, pokud byly načteny hlavičky, tzn. došlo k tomu breaku.
Protože pokud selže client.connected(), readString() načte cokoliv, klidně třeba hlavičku - a ta se pak dostane do "aktualni".
Re: nacitani hodnot z PHP na synology
Napsal: 01 lis 2021, 20:09
od Kony
tak ja uz fakt nevim hihihi, jsem se do toho zase zamotal....
jsem okopiroval presne ten kod co tady byl a stejne to takto vypisovalo
Mohl bych tedy poprosit presne jak ten kod ma vypadat ?