[ Príspevkov: 7 ] 
AutorSpráva
Offline

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

Registrovaný: 17.02.14
Prihlásený: 11.04.21
Príspevky: 436
Témy: 189 | 189
Bydlisko: Poprad

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ý: 27.01.21
Príspevky: 908
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ý: 11.04.21
Príspevky: 436
Témy: 189 | 189
Bydlisko: Poprad
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ý: 27.01.21
Príspevky: 908
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ý: 11.04.21
Príspevky: 436
Témy: 189 | 189
Bydlisko: Poprad
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ý: 27.01.21
Príspevky: 908
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ý: 11.04.21
Príspevky: 436
Témy: 189 | 189
Bydlisko: Poprad
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.

Monitor teplôt, vlhkostí - Arduino Mega + Ethernet W5100

v Články

0

173

21.02.2020 22:42

martinius96

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

Meteostanica s Arduinom a Ethernet Shieldom - HTTP

v Mikropočítače

0

488

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 Redakčné systémy

1

239

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

416

06.01.2009 16:04

Cruel

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

xml parser

v PHP, ASP

2

457

29.04.2009 16:10

Draex

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 PHP, ASP

70

2286

29.01.2017 21:04

mokus

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

Parser kurzov mien

v PHP, ASP

6

530

16.08.2009 23:12

Snacker

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

HTML parser web stranok

v PHP, ASP

4

426

16.11.2007 15:41

chrono

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

scanner a parser v C#

v Technológia .NET

1

1473

25.02.2009 21:54

suchy

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

PHP simle html DOM parser

v PHP, ASP

3

210

09.04.2013 21:22

Ďuri

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

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

v PHP, ASP

8

493

27.09.2007 19:57

qacer

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

HTTP protokol

v Ostatné

9

489

20.03.2012 19:01

ewil

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

HTTP Header

v PHP, ASP

2

431

07.09.2009 16:24

d0.0b

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

HTTP poziadavka

v PHP, ASP

13

819

12.08.2008 22:23

fortes

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

http://freeweb.sk/

v Webhosting a servery

6

784

22.03.2008 12:51

pepek92

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

https --> http

v Bezpečnosť a firewally

2

331

18.03.2017 11:43

TobakoLT



© 2005 - 2021 PCforum, edited by JanoF