nacitani hodnot z PHP na synology

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: nacitani hodnot z PHP na synology

Příspěvek od Kony » 01 lis 2021, 07:00

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é ?

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: nacitani hodnot z PHP na synology

Příspěvek od KamilV » 01 lis 2021, 08:10

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);

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: nacitani hodnot z PHP na synology

Příspěvek od Kony » 01 lis 2021, 08:24

V promene line ?

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: nacitani hodnot z PHP na synology

Příspěvek od KamilV » 01 lis 2021, 08:31

Jaká je druhá možnost?

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: nacitani hodnot z PHP na synology

Příspěvek od Kony » 01 lis 2021, 08:59

Bylo to jen otazka :) nejsem nyní u toho.. jak přijdu domů tak vyzkouším...

peterple
Příspěvky: 156
Registrován: 22 zář 2021, 20:20
Reputation: 0

Re: nacitani hodnot z PHP na synology

Příspěvek od peterple » 01 lis 2021, 18:01

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ť.

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: nacitani hodnot z PHP na synology

Příspěvek od Kony » 01 lis 2021, 19:48

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

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: nacitani hodnot z PHP na synology

Příspěvek od Kony » 01 lis 2021, 20:03

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 ;+(

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: nacitani hodnot z PHP na synology

Příspěvek od KamilV » 01 lis 2021, 20:05

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".

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: nacitani hodnot z PHP na synology

Příspěvek od Kony » 01 lis 2021, 20:09

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 ?

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů