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 ?