Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 7 ] 
AutorSpráva
Offline

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

Registrovaný: 17.02.14
Prihlásený: 31.03.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok NapísalOffline : 06.01.2018 4:18

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
Príspevok NapísalOffline : 06.01.2018 8:10

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ý: 31.03.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok Napísal autor témyOffline : 06.01.2018 11:41

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
Príspevok NapísalOffline : 06.01.2018 15:53

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ý: 31.03.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok Napísal autor témyOffline : 06.01.2018 15:56

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
Príspevok NapísalOffline : 06.01.2018 16:47

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ý: 31.03.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok Napísal autor témyOffline : 06.01.2018 18:11

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


Odpovedať na tému [ Príspevkov: 7 ] 


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

739

21.02.2020 22:42

martinius96 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Meteostanica s Arduinom a Ethernet Shieldom - HTTP

v Mikropočítače

0

726

16.09.2017 14:32

martinius96 Zobrazenie posledných príspevkov

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

355

26.04.2014 19:29

chrono Zobrazenie posledných príspevkov

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

1251

06.01.2009 16:04

Cruel Zobrazenie posledných príspevkov

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

v PHP, ASP

2

618

29.04.2009 16:10

Draex Zobrazenie posledných príspevkov

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

2827

29.01.2017 21:04

mokus Zobrazenie posledných príspevkov

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

v PHP, ASP

6

719

16.08.2009 23:12

Snacker Zobrazenie posledných príspevkov

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

v PHP, ASP

4

563

16.11.2007 15:41

chrono Zobrazenie posledných príspevkov

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

v PHP, ASP

3

372

09.04.2013 21:22

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. scanner a parser v C#

v Technológia .NET

1

1628

25.02.2009 21:54

suchy Zobrazenie posledných príspevkov

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

632

27.09.2007 19:57

qacer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. XML parser nacita cistu stranku s riadkami

v PHP, ASP

2

920

03.12.2021 16:27

aspasia Zobrazenie posledných príspevkov

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

v PHP, ASP

2

566

07.09.2009 16:24

d0.0b Zobrazenie posledných príspevkov

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

v Ostatné

9

689

20.03.2012 19:01

ewil Zobrazenie posledných príspevkov

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

v PHP, ASP

13

963

12.08.2008 22:23

fortes Zobrazenie posledných príspevkov

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

v Webhosting a servery

6

877

22.03.2008 12:51

pepek92 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra