ARDUINO - načtení stránky do proměnné

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 02:00

ARDUINO - načtení stránky do proměnné

#1 Příspěvek od jiri255 »

Zdravím vespolek,
už se pár dnů snažím načíst obsah webové stránky do proměnné, ale vůbec se mi to nedaří, tak bych chtěl požádat někoho o pomoc.
Našel jsem spoustu věcí pro php nějaké javascripty a funkci file_get_contents, ale nic s toho se mi nepodařilo zapracovat do html kódu na mém arduinu :-(
Mám jedno arduino hlavní a druhé na ip adrese http://192.168.9.25:88/ a potřeboval bych tu stránku z adresy http://192.168.9.25:88 uložit do proměnné jako text a zobrazit na stránce toho hlavního arduina v html kódu níže:

Kód: Vybrat vše

  //---------------web stranka
  
   WiFiClient client = server.available();
  if (client) { //Připojil se klient?
              Serial.println("new client");
    boolean current_line_is_blank = true;

   String buffer = "";
   while (client.connected()) {

     if (client.available()) {
        char c = client.read();
         buffer = buffer + c;

         if (c == '\n' && current_line_is_blank) {

  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("Connection: close");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
           client.println("<head>");
          client.println("<title>Teplomer Hlavni</title>");
          client.println("</head>");
                    client.println("<body bgcolor=#f9a46f>");
         
  client.println("<h1>TEPLOMER</h1>");
  client.print("<h3>Teplota: "); 
  client.print(teplomer1());
  client.print("°C");   
   client.print("</h3>");  
   client.print("<br>");
  
     //SEM BYCH POTŘEBOVAL DOSTAT OBSAH STRÁNKY
  client.print("http://192.168.9.25:88/"); 

  client.print("</body>");     
  client.print("<meta http-equiv=\"refresh\" content=\"5\">"); 
    client.println("</html>");
           break;   
           } 

        if (c == '\n') {
          current_line_is_blank = true;
        } else if (c != '\r') {
          current_line_is_blank = false;
        }

    }
   }
           
  delay(20);
     
           client.stop();      
  Serial.println("Client disconnected");
  Serial.println("");
  }
  
  //--------------konec web stranky
Předem děkuji za pomoc

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#2 Příspěvek od Cowley »

K cemu Ti je na cteni cele stranky? Nestacil by jen nektery parametr, ktery ma to druhe Arduino?
Mozna dost dobre nechapu o co se vlastne snazis.

Uživatelský avatar
LukinoOl
Příspěvky: 66
Registrován: 09 čer 2016, 02:00

#3 Příspěvek od LukinoOl »

A, na jakém železe ti to jede?
B, takhle zpracovávat stránku pro poslání je zvěrstvo
C, na PHP zapomeň
D, js úplně stačí

L:

Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 02:00

#4 Příspěvek od jiri255 »

jo php sem pochopil, že je úplně jiná kapitola, ale js neumím zapsat tak, aby to načetlo do proměné stránku. No jede to na Mega 2560 a UNO a teď to ještě zkouším rozchodit na nodemcu.
Ta stránka na té adrese http://192.168.9.25:88/ obsahuje jen úplně jednoduchý kód:

Kód: Vybrat vše

 <!DOCTYPE HTML>
  <html>
      <head>
         <title>Teplomer 2</title>
         </head>         
  <h1>TEPLOMER 2</h1>
  <h3>Teplota: 
  22,23°C 
   </h3>  
    Doba behu pristroje: 3dny 11:10:54
   <br>
  </h6></body>
  <meta http-equiv=\"refresh\" content=\"5\">
    </html>
A tu stránku výše potřebuju, jako text načíst do proměnné a ten text zobrazit v té stránce toho hlavního ARDUINA takže výsledná stránka, kterou uvidím v prohlížeči by pak vypadala nějak takhle
  • TEPLOMER

    24,12 °C

    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Teplomer 2</title>
    </head>
    <h1>TEPLOMER 2</h1>
    <h3>Teplota:
    22,23°C
    </h3>
    Doba behu pristroje: 3dny 11:10:54
    <br>
    </h6></body>
    <meta http-equiv=\"refresh\" content=\"5\">
    </html>
no pokud by se ta proměnná dala upravovat nějak tak, že "načti jen to co je mezi <head> a </head> nebo mezi <h1> a </h1> a podobně ,tak to by bylo ještě o dost lepší, ale stačila by mi i jen celá ta stránka...

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#5 Příspěvek od Cowley »

A co ti brání použít něco z tohoto ?
Předat si info o teplotě z podružného do hlavního a teprve na něm generovat HTML tagy?

Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 02:00

#6 Příspěvek od jiri255 »

díky, ale já potřebuju stáhnout obsah stránky a uložit ho do proměnné z podružného ARDUINA 192.168.9.25:88 ,....26:88 ,....27:88, atd. podle toho z jakého budu potřebovat a zobrazit pouze jako text nebo nejlépe část textu ve stránce toho hlavního ARDUINA, nechci vytvářet žádnou komunikaci pro několik ARDUIN mezi sebou.

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#7 Příspěvek od Cowley »

vždyť mezi nimi vlastně svým způsobem komunikuješ, podružná arduina dělají svoje webovky s údaji a chceš aby hlavní arduino po nich pokukovalo a sosalo z nich hodnoty.
Pokud bys na hlavním arduinu zasílal do podružných arduin UDP datagramy, ony by ti je vracely a měl bys to.
Předpokládám, že každé Arduino má svůj vlastní ETH shield?

Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 02:00

#8 Příspěvek od jiri255 »

ano každé má ETH shield a potřebuju, aby to hlavní po nich kouklo a natáhlo část obsahu stránky do proměnné a zobrazilo to na stránce hlavního arduina, ale potom sem to s toho kódu v tom odkazu teda vůbec nepochopil, jak to takhle pracuje. Tam mě přišlo, že se na každém tom arduinu musí vytvořit program, který tomu hlavnímu bude zasílat jen potřebná data a to nechci nebo se pletu? Co přesně za funkci s toho kódu si dokáže stáhnout obsah jiné stránky a uložit ho do proměnné?

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#9 Příspěvek od Cowley »

Nevím, proč pořád trváš na místních "malých" webovkách, ale pokud hlavní Arduino pošle do podružného UDP dotaz, malé Arduino jej zachytí a odpoví na něj. To zachytí hlavní Arduino, zařadí jej do svého hlavního programu, vytvoří svojí stránku a jde třeba za chvíi volat znovu, nebo jiné apod.

Koukni ještě sem

Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 02:00

#10 Příspěvek od jiri255 »

ale tohle taky musí být upravený program v těch podružných zařízeních, který bude přes udp něco posílat a to hlavní to bude přes udp číst a zobrazovat. To pro mě nejde použít na těch podružných zařízeních nesmí dojít ke změně programu ani žádný jiný úpravě to hlavní arduino si to musí umět natáhnout ze stránky těch podružných zařízení a každé to podružné zařízení musí mít svoji dostupnou stránku.
Už jsem myslel, že jsem teď našel skvělou věc, ale radoval jsem se předčasně je to na 50% to co bych potřeboval v tom webu se mi zobrazí okno a v něm se načte ta stránka toho podružného zařízení, jenže to funguje jen na starým Internet Exploreru a to ještě podle nálady jednou jo a jednou ne a není to proměnná, takže se s tím nedá dál nijak pracovat jinak by to bylo celkem OK:

Kód: Vybrat vše

 client.println("<iframe name=teplomer2 src='http://192.168.9.25:88/' scrolling=no width=240 height=190></iframe>");

Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“