[ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 20.04.26
Príspevky: 404
Témy: 152 | 152
Bydlisko: Poprad-okolie

Ahojte, tak sa mi konečne podaril parser pre Ethernet shield, ktorý sa mi podarilo z časti naportovať z NodeMCU. Parser dokáže z celej prijatej HTTP hlavičky vytiahnuť premennú, ktorá je uložená v Json súbore, alebo textovom súbore. Rád by som sa s vami podelil o výsledok. Parser bol skúšaný na jednoriadkovú premennú, na viacriadkovom súbore nebude fungovať, nakoľko je nastavený fixný riadok prijatej response na parsovanie.

HTTP parser s Ethernet Wiznet W5100
S premennou je možné následne pracovať ako s textom, dá sa jednoducho porovnávať cez operátor == s jednoduchým if/else statementom pre vykonanie akcie.
Kód:
if(readString=="VYP"){
  Serial.println("Vypnutie spotrebica");
digitalWrite(6, LOW);
  }else if(readString=="ZAP"){
  Serial.println("Zapnutie spotrebica");
digitalWrite(6, HIGH);
  }

Využitie napríklad pre ovládanie výstupov z internetu, ovládanie rôznych periférii.

Sketch môže a nemusí fungovať pri všetkých weboch správne. Je to z dôvodu nastavenia počtu riadkov prijatej response na konkrétne číslo. Response sa môže líšiť v závislosti od hostingu a od webservera, ktorý môže vracať rôzny počet riadkov HTTP hlavičky, ktorá môže byť "obohatená" o doplnkové hlavičky. Hlavičky sa líšia aj v závislosti od enginu stránky, napríklad nginx, Apache atď. Testovaná hlavička bola na serveri php5.sk.
Nezabúdajte, že toto funguje iba na HTTP stránkach. S Ethernet shieldom W5100 sa na HTTPS stránku nepripojíte, nepodporuje TLS/SSL.
Kód:
#include <SPI.h>
#include <Ethernet.h>
int led = 6;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //fyzicka adresa MAC
char serverName[] = "www.arduino.php5.sk"; // webserver
IPAddress ip(192, 168, 2, 40);
EthernetClient client;
String readString;
int x=0; //pocitadlo riadkov
char lf=10; //line feed character
void setup(){
pinMode(led, OUTPUT);
 if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }
  Serial.begin(9600);
}

void loop(){
if (client.connect(serverName, 80)) {  //starts client connection, checks for connection
    Serial.println("connected");
    client.println("GET /PHP_sk/preklady.txt HTTP/1.1"); //download text
    client.println("Host: www.arduino.php5.sk");
    client.println("Connection: close");  //close 1.1 persistent connection 
    client.println(); //end of get request
  }
  else {
    Serial.println("Pripojenie neuspesne"); //chyba ak nie som pripojeny
    Serial.println();
  }

  while(client.connected() && !client.available()) delay(1); //cakaj na data
  while (client.connected() || client.available()) { //pramenna
    char c = client.read(); //dostan bity z buffera
    Serial.print(c); //cela http hlavicka
    if (c==lf) x=(x+1); //pocitaj
    else if (x==12) readString += c; //nasa premenna

   }
if(readString=="Zapni"){
  digitalWrite(led, HIGH);
  }else if(readString=="Vypni"){
  digitalWrite(led, LOW); 
    }
    else{
 Serial.println("Nepodporovana premenna.");
 }
 
  readString = ("");
  x=0;
  client.stop(); //ukonc spojenie
  delay(5000); //pockaj 5s a vykonaj novu slucku loop
}


Vzorový sketch funguje, je univerzálny pre tento demo kód. Upravte si ho podľa potreby pre váš projekt.
Zmeniť výstup servera do súboru môžete hlasom/textom na: https://arduino.php5.sk/PHP_sk/ - používajte Google Chrome pre zadávanie hlasom.

Podporované príkazy:
    Zapni všetko/Zapni/Zapnúť/Zapnúť všetko
    Vypni všetko/Vypni/Vypnúť/Vypnúť všetko

Podpora/kontakt: Projekty, ktoré som realizoval a podporiť ma môžete prostredníctvom PayPalu na mojej stránke: https://arduino.php5.sk


Offline

Užívateľ
Užívateľ
HTTP parser s Ethernet Wiznet W5100

Registrovaný: 07.04.12
Prihlásený: 02.06.21
Príspevky: 907
Témy: 54 | 54
NapísalOffline : 06.01.2018 8:10 | HTTP parser s Ethernet Wiznet W5100

Len otázka, prečo počítaš riadky namiesto toho, aby si kontroloval niečo štýlom, že ak sa tam nachádza napr. LED=ZAP, tak keď narazíš na LED vieš že to je tvoj command.


_________________
Notebook: Dell Inspiron 15-7537= i5-4200U|nVidia GT 750M 2GB|RAM 6GB|250GB Samsung 850 EVO|W8.1|Cooler Master NotePal U3
Pc: Asus Rog Strix B360-G | i7-8700 | MSI 1080 Gaming X | Crucial Ballistix 16GB 2666MHz Dual Ranked | Samsung 970 Evo | Crucial MX500 | WD Red | Fera 3 | Arctic F12 Silent | Seasonic Focus Plus 650W Gold | Fractal Design Mini C TG
Disk: Western Digital Elements 1TB USB 2.0; Seagate Expansion 2TB USB 3.0
Príslušenstvo: A4tech Bloody V3 V-Track Core 3 + A4tech Bloody B-070; A4tech Bloody B120; A4tech Bloody G501; ATH-M40x; MSI Clutch M40
Monitor: Dell U2515H
Mobil: Xiaomi Redmi Note 3 Special Edition
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 20.04.26
Príspevky: 404
Témy: 152 | 152
Bydlisko: Poprad-okolie
Napísal autor témyOffline : 06.01.2018 11:41 | HTTP parser s Ethernet Wiznet W5100

Nedá sa to, lebo ako char c dostaneš bit po bite celú HTTP hlavičku s tvojou premennou.


Offline

Užívateľ
Užívateľ
HTTP parser s Ethernet Wiznet W5100

Registrovaný: 07.04.12
Prihlásený: 02.06.21
Príspevky: 907
Témy: 54 | 54
NapísalOffline : 06.01.2018 15:53 | HTTP parser s Ethernet Wiznet W5100

Snáď máš na mysli byte po byte a nie bit po bite. Tak môžeš kontrolovať kedy bude znak L, následne musí byť E, atď. Alebo celú hlavičku uložiť niekde do buffera a potom nájsť tvoj cmd, napr. pomocou regex.


_________________
Notebook: Dell Inspiron 15-7537= i5-4200U|nVidia GT 750M 2GB|RAM 6GB|250GB Samsung 850 EVO|W8.1|Cooler Master NotePal U3
Pc: Asus Rog Strix B360-G | i7-8700 | MSI 1080 Gaming X | Crucial Ballistix 16GB 2666MHz Dual Ranked | Samsung 970 Evo | Crucial MX500 | WD Red | Fera 3 | Arctic F12 Silent | Seasonic Focus Plus 650W Gold | Fractal Design Mini C TG
Disk: Western Digital Elements 1TB USB 2.0; Seagate Expansion 2TB USB 3.0
Príslušenstvo: A4tech Bloody V3 V-Track Core 3 + A4tech Bloody B-070; A4tech Bloody B120; A4tech Bloody G501; ATH-M40x; MSI Clutch M40
Monitor: Dell U2515H
Mobil: Xiaomi Redmi Note 3 Special Edition
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 20.04.26
Príspevky: 404
Témy: 152 | 152
Bydlisko: Poprad-okolie
Napísal autor témyOffline : 06.01.2018 15:56 | HTTP parser s Ethernet Wiznet W5100

Jo správne, po bajte.. Nenašiel som na internete podobný sketch. Neviem či by to fungovalo :) Nie som až tak zbehlý v tomto


Offline

Užívateľ
Užívateľ
HTTP parser s Ethernet Wiznet W5100

Registrovaný: 07.04.12
Prihlásený: 02.06.21
Príspevky: 907
Témy: 54 | 54
NapísalOffline : 06.01.2018 16:47 | HTTP parser s Ethernet Wiznet W5100

Zbehlý v čom? Predsa aj tu na fóre máš niekoľko tém, kde ponúkaš hotové riešenia, snáď to nie je len copy and paste od niekal.
Prípadne zahodiť tie Shitdruina a venovať sa "normálnym" MCU.


_________________
Notebook: Dell Inspiron 15-7537= i5-4200U|nVidia GT 750M 2GB|RAM 6GB|250GB Samsung 850 EVO|W8.1|Cooler Master NotePal U3
Pc: Asus Rog Strix B360-G | i7-8700 | MSI 1080 Gaming X | Crucial Ballistix 16GB 2666MHz Dual Ranked | Samsung 970 Evo | Crucial MX500 | WD Red | Fera 3 | Arctic F12 Silent | Seasonic Focus Plus 650W Gold | Fractal Design Mini C TG
Disk: Western Digital Elements 1TB USB 2.0; Seagate Expansion 2TB USB 3.0
Príslušenstvo: A4tech Bloody V3 V-Track Core 3 + A4tech Bloody B-070; A4tech Bloody B120; A4tech Bloody G501; ATH-M40x; MSI Clutch M40
Monitor: Dell U2515H
Mobil: Xiaomi Redmi Note 3 Special Edition
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 20.04.26
Príspevky: 404
Témy: 152 | 152
Bydlisko: Poprad-okolie
Napísal autor témyOffline : 06.01.2018 18:11 | HTTP parser s Ethernet Wiznet W5100

Ja som na parsovanie využíval najmä NodeMCU, ktoré má už priamo implementovanú funkciu na tieto veci.
Nie som profi programátor. Využívam to, čo je, zapájam to podľa schém, schémy k hotovým produktom robím


 [ Príspevkov: 7 ] 


HTTP parser s Ethernet Wiznet W5100



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Meteostanica s Arduinom a Ethernet Shieldom - HTTP

v Mikropočítače

0

828

16.09.2017 14:32

martinius96

V tomto fóre nie sú ďalšie neprečítané témy.

An AJAX HTTP error occurred. HTTP Result Code: 500

v CMS

1

455

26.04.2014 19:29

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

4-Port Ethernet Switch HWIC with Power Over Ethernet, Cisco,

v Siete

2

1416

06.01.2009 16:04

Cruel

V tomto fóre nie sú ďalšie neprečítané témy.

xml parser

v Backend

2

701

29.04.2009 16:10

Draex

V tomto fóre nie sú ďalšie neprečítané témy.

Parser kurzov mien

v Backend

6

815

16.08.2009 23:12

Snacker

V tomto fóre nie sú ďalšie neprečítané témy.

php HTML parser

[ Choď na stránku:Choď na stránku: 1, 2, 3 ]

v Backend

70

3272

29.01.2017 21:04

mokus

V tomto fóre nie sú ďalšie neprečítané témy.

HTML parser web stranok

v Backend

4

657

16.11.2007 15:41

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

PHP simle html DOM parser

v Backend

3

445

09.04.2013 21:22

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

scanner a parser v C#

v Backend

1

1698

25.02.2009 21:54

suchy

V tomto fóre nie sú ďalšie neprečítané témy.

http://www.nieco.sk presmerovane na http://nieco.sk

v Backend

8

732

27.09.2007 19:57

qacer

V tomto fóre nie sú ďalšie neprečítané témy.

XML parser nacita cistu stranku s riadkami

v Backend

2

1545

03.12.2021 16:27

aspasia

V tomto fóre nie sú ďalšie neprečítané témy.

HTTP protokol

v Ostatné

9

831

20.03.2012 19:01

ewil

V tomto fóre nie sú ďalšie neprečítané témy.

HTTP Header

v Backend

2

649

07.09.2009 16:24

d0.0b

V tomto fóre nie sú ďalšie neprečítané témy.

HTTP poziadavka

v Backend

13

1067

12.08.2008 22:23

fortes

V tomto fóre nie sú ďalšie neprečítané témy.

Ukladnie adries http

v Sieťové programy

7

704

21.01.2007 23:25

xyz

V tomto fóre nie sú ďalšie neprečítané témy.

http://GREENGARDEN kritika

v Frontend

2

945

16.01.2007 12:59

jord



© 2005 - 2026 PCforum, edited by JanoF