Stránka: 1 z 1
| [ Príspevkov: 16 ] | |
Autor | Správa |
---|
Registrovaný: 17.02.14 Prihlásený: 22.12.24 Príspevky: 450 Témy: 197 | 197 Bydlisko: Poprad-okolie |
Ahojte, riešim takýto problém. Mám PHP kód. Ako používateľ zadám požiadavku hlasom, prípadne ju napíšem a následne sa zapíše do .txt súboru ako text. Mikroprocesor si to prečíta a vykoná akciu. Je tu ale takýto problém. Chcem aby sa súbor dal otvoriť iba raz a následne sa buď už nedal otvoriť, alebo sa zmazal jeho obsah. Jeho obsah mením cez php kód cez funkciu put contents. Príklad: Mikroprocesor si prečíta, že chcem zapnúť vonkajšie osvetlenie, prečíta si to opäť za pár sekúnd, nič sa nezmení, lebo požiadavka je stále tá istá a výstup je stále aktivovaný. Predstavme si ale tlmené PWM osvetlenie, ktoré navýšim o 10 a chcem to iba raz. Ako následne zabrániť prečítaniu súboru, aby mi do nekonečna mikroprocesor nepridával hodnoty na výstupe na základe prečítania požiadavky, aj keď som ju nezmenil na stále je tam zapísaná? Nejaké tipy? Dá sa to riešiť cez .htaccess alebo apache nastavenia? Ako najvhodnejšie by ste podobnú vec riešili vy?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Musí mikroprocesor čítať súbor? Nemôžeš mu dať url? V takom prípade si vieš v php ustrážiť, že to bolo prečítané.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 17.02.14 Prihlásený: 22.12.24 Príspevky: 450 Témy: 197 | 197 Bydlisko: Poprad-okolie |
Vyriešil som to tak, že mikroprocesor si prečíta a porovná s tým reťazcom z minula. Ak sa zhodujú, neurobí nič.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Aha, ja som pochopil, že k mikroprocesoru prístup nemáš. Ak ho vieš ovládať, tak jasné že to porieš tam. Ale lepšie by bolo dať tam nejaké id (napríklad timestamp, alebo veľké random číslo) príkazu a porovnávať to. To len pre prípad, že by si náhodou potreboval vykonať dva rovnaké príkazy za sebou (napr. to zvýšenie o 10% a potom zase o 10%)
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 17.02.14 Prihlásený: 22.12.24 Príspevky: 450 Témy: 197 | 197 Bydlisko: Poprad-okolie |
Porovnávam celý reťazec s reťazcom uloženým v kóde mikroprocesora a používam ekvivalenciu == čiže tam by som s timestampom nepochodil. Treba mi nad tým ešte porozmýšľať, že ako efektívne to vymyslieť.
|
|
Registrovaný: 07.04.12 Prihlásený: 02.06.21 Príspevky: 907 Témy: 54 | 54 |
MCU dokáže editovať ten súbor?
_________________ 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.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Tak reťazec pred tým rozbiješ podľa delimitera (napríklad dvojbodka, alebo čokoľvek), nič zložité. V súbore tak bude príkaz ako 125318:prikaz.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 17.02.14 Prihlásený: 22.12.24 Príspevky: 450 Témy: 197 | 197 Bydlisko: Poprad-okolie |
Ado, ako to myslíš? Textový súbor viem editovať ak potrebujem. V tomto riešení to nerobím, iba ho sťahujem na základe jeho obsahu vykoná MCU akciu. Ale áno, dá sa to, napr cez PHP kód. Urobíš GET request, teda napríklad stranka.php?akcia="Zopnute%20osvetlenie"&rezim="Manualny" Následne to môžeš uložiť do MySQL databázy, či do .txt súboru. Ale samozrejme dá sa jedno s druhým kombinovať. NodeMCU má až 1MB pamäte pre program, takže tam máš priestoru pre podobné veci až až.. Stiahnem si súbor a je tam napríklad Zapni LED 1 tak to porovnám a ak mám niekde ten reťazec tak ju zapnem atď.. Vydal som aj článoček.. Môžeš mrk a skúsiť.
|
|
Registrovaný: 07.04.12 Prihlásený: 02.06.21 Príspevky: 907 Témy: 54 | 54 |
Buď ako písal BX, na základe nejakého ID pred príkazom, tzn. do MCU uložíš ID a príkaz, ak sa bude ID zhodovať s predchádzajúcim, vieš, že ide o ten istý príkaz - ID bude ako autoincrement pri zadaní nového príkazu. Prečo som sa pýtal, či MCU dokáže prepisovať ten *.TXT, na napr. 1. riadku bude hodnota 0/1 - v prípade, že je tam nový príkaz bude tam 1, v prípade, že MCU už príkaz prečítal a vykonal prepíše na 0; na 2. riadku bude samotný príkaz.
_________________ 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.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Ak vie ten súbor prepisovať, tak ho môže rovno vyprázdniť a nič viac neriešiť...
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | 39 |
Čo ak mu medzitým MCU začne do súboru zapisovať niečo ďalšie? Osobne stále nie som presvedčený, že prenášať niečo takto jednoduché cez texťák je naozaj najlepšie riešenie.
_________________ always is always wrong |
|
Registrovaný: 07.04.12 Prihlásený: 02.06.21 Príspevky: 907 Témy: 54 | 54 |
BX: skôr než prázdny súbor by som asi radšej čítal 0/1, u prázdneho súboru by som sa obával skrytých znakov a podobne, tzn. radšej si budem istý 0/1 než niečim nedefinovaným. Napadla mi varianta, ak je to lepšie, že bude súbor zmazaný, tak MCU odošle HTTP request a ak bude správny, tak php daný súbor zmaže.
killer: súhlasím, že *.txt asi nie je to ideálne pre takýto druh komunikácie ale to už by bolo aj na zváženie, či Arduino je vhodné na seriózne projekty - pre domáce použitie asi dostačuje.
_________________ 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.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Mikroprocesor by určite nemal ten súbor nijak upravovať, iba čítať. Ako rýchle riešenie by to samozrejme prešlo, ale seriózne nie, pretože môže dôjsť k race condition. Čítanie príkazu vo formáte ID:prikaz je dostatočne bezpečné. Textový súbor je v pohode, ak nejde o nejakú time-critical real-time aplikáciu. Podobne funguje takmer všetok hardware v PC, tak prečo by to nefungovalo aj tu. V HW sa často používajú dva úložiská - do jedného zapisuje A a B len číta (príkaz od A do B) a do druhého zapisuje B a A len číta (potvrdenie o vykonaní). To je tu zbytočné, ak netreba zisťovať stav, či sa akcia podarila.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 17.02.14 Prihlásený: 22.12.24 Príspevky: 450 Témy: 197 | 197 Bydlisko: Poprad-okolie |
Určite sa to dá efektívnejšie, toto bol len taký test.. Inak na real-time veci sa používa MQTT protokol. Nevýhoda je tam ale, že musíš použiť Broker. Teda ti treba doma živiť o počítač viac. Ale zvláda ho aj Rpi.
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | 39 |
Osobne by som to riešil databázou. Keď už máš PHP, databáza väčšinou nikdy nie je ďaleko. - PHP zapíše príkaz (nie to čo nadiktuješ, ale iba ak rozpozná príkaz) do databázy s časovou značkou - Mikroprocesor bude v pravidelných intervaloch robiť HTTP request, ktorý vyberie z databázy príkazy, ktoré sa majú vykonať (to čo sa mu vráti môže mať ľubovoľnú podobu, kľudne plain-text, alebo aj json, pre autorizáciu stačí posielať token, aby ti to neotvárali roboty, ale vadiť by to v konečnom dôsledku nemalo, rozumieť tomu aj tak nebudú) - Mikroprocesor vykoná príkaz a môže cez iný HTTP request, označiť úlohu ako dokončenú (naštuduj si prerušenia, ten mega veľký if nie je efektívny)
Výhody: - nemusíš riešiť komplikovanú prácu so súborom - môžeš plánovať úlohy do blízkej, aj ďalekej budúcnosti - efektívnejšie debuggovanie a testovanie
_________________ always is always wrong |
|
Registrovaný: 17.02.14 Prihlásený: 22.12.24 Príspevky: 450 Témy: 197 | 197 Bydlisko: Poprad-okolie |
Tu je ten problém. PHP kód aj keď mi vráti iba jedno slovo tak mi ho NodeMCU neprečíta. Prečíta mi iba .txt súbor. Skúšal som to, že som mal 1 ako výpis z MySQL db. NodeMCU prečítalo php stránku ako 12f489fdgn takže takto to nejde. Vyskúšam to viac zefektívniť. Práve to overenie, že sa to vykonalo robí MQTT. Ak sa tu spustí s tým protokolom tak ten to má priamo integrovaný. No na štandardnom webserveri to nemáš. Okrem toho používa špecifické porty. Ten je robený priamo pre toto.
|
|
Stránka: 1 z 1
| [ Príspevkov: 16 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Delphi, Visual Basic | 0 | 888 | 09.03.2015 14:46 robeno67 | | v Ostatné programy | 2 | 770 | 30.07.2011 15:37 liveman | | v Delphi, Visual Basic | 5 | 669 | 27.03.2012 19:50 Fico | | v PHP, ASP | 24 | 1236 | 10.07.2008 12:06 rooobertek | | v Delphi, Visual Basic | 1 | 867 | 01.01.2010 12:08 B.A.X.O | | v PHP, ASP | 6 | 1104 | 12.06.2010 10:54 kexo | | v PHP, ASP | 4 | 646 | 14.01.2009 6:58 JanoF | | v Sieťové a internetové programy | 0 | 866 | 25.08.2011 20:20 Hanoj | | v Video programy | 2 | 35511 | 25.09.2006 10:47 palinodsl | | v Operačné systémy Microsoft | 6 | 498 | 29.03.2009 12:30 shiro | | v Assembler, C, C++, Pascal, Java | 2 | 1238 | 13.04.2011 22:46 blabla630 | | v Delphi, Visual Basic | 0 | 604 | 19.07.2011 19:14 kotlas6667 | | v JavaScript, VBScript, Ajax | 11 | 793 | 22.01.2015 23:15 chrono | | v Ostatné | 7 | 752 | 14.11.2017 7:37 BX | | v Video programy | 2 | 1841 | 10.10.2008 22:18 vazovski | | v PHP, ASP | 6 | 1042 | 10.12.2009 19:39 stenley |
|