| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 17.02.14 Prihlásený: 31.03.24 Príspevky: 450 Témy: 198 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. 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
|
|
Registrovaný: 07.04.12 Prihlásený: 02.06.21 Príspevky: 907 Témy: 54 | Napísal ado130: 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 |
|
Registrovaný: 17.02.14 Prihlásený: 31.03.24 Príspevky: 450 Témy: 198 Bydlisko: Poprad-okolie |
Nedá sa to, lebo ako char c dostaneš bit po bite celú HTTP hlavičku s tvojou premennou.
|
|
Registrovaný: 07.04.12 Prihlásený: 02.06.21 Príspevky: 907 Témy: 54 | Napísal ado130: 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 |
|
Registrovaný: 17.02.14 Prihlásený: 31.03.24 Príspevky: 450 Témy: 198 Bydlisko: Poprad-okolie |
Jo správne, po bajte.. Nenašiel som na internete podobný sketch. Neviem či by to fungovalo Nie som až tak zbehlý v tomto
|
|
Registrovaný: 07.04.12 Prihlásený: 02.06.21 Príspevky: 907 Témy: 54 | Napísal ado130: 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 |
|
Registrovaný: 17.02.14 Prihlásený: 31.03.24 Príspevky: 450 Témy: 198 Bydlisko: Poprad-okolie |
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
|
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Monitor teplôt, vlhkostí - Arduino Mega + Ethernet W5100 v Články | 0 | 739 | 21.02.2020 22:42 martinius96 | | Meteostanica s Arduinom a Ethernet Shieldom - HTTP v Mikropočítače | 0 | 726 | 16.09.2017 14:32 martinius96 | | An AJAX HTTP error occurred. HTTP Result Code: 500 v Redakčné systémy | 1 | 355 | 26.04.2014 19:29 chrono | | 4-Port Ethernet Switch HWIC with Power Over Ethernet, Cisco, v Siete | 2 | 1251 | 06.01.2009 16:04 Cruel | | xml parser v PHP, ASP | 2 | 618 | 29.04.2009 16:10 Draex | | php HTML parser [ Choď na stránku: 1, 2, 3 ] v PHP, ASP | 70 | 2827 | 29.01.2017 21:04 mokus | | Parser kurzov mien v PHP, ASP | 6 | 719 | 16.08.2009 23:12 Snacker | | HTML parser web stranok v PHP, ASP | 4 | 563 | 16.11.2007 15:41 chrono | | PHP simle html DOM parser v PHP, ASP | 3 | 372 | 09.04.2013 21:22 Ďuri | | scanner a parser v C# v Technológia .NET | 1 | 1628 | 25.02.2009 21:54 suchy | | http://www.nieco.sk presmerovane na http://nieco.sk v PHP, ASP | 8 | 632 | 27.09.2007 19:57 qacer | | XML parser nacita cistu stranku s riadkami v PHP, ASP | 2 | 920 | 03.12.2021 16:27 aspasia | | HTTP Header v PHP, ASP | 2 | 566 | 07.09.2009 16:24 d0.0b | | HTTP protokol v Ostatné | 9 | 689 | 20.03.2012 19:01 ewil | | HTTP poziadavka v PHP, ASP | 13 | 963 | 12.08.2008 22:23 fortes | | http://freeweb.sk/ v Webhosting a servery | 6 | 877 | 22.03.2008 12:51 pepek92 |
| 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
|
|