Obsah fóra
PravidláRegistrovaťPrihlásenie




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

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

Registrovaný: 17.02.14
Prihlásený: 18.01.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok NapísalOffline : 09.09.2017 19:55

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?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 12.09.2017 14:34

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!
Offline

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

Registrovaný: 17.02.14
Prihlásený: 18.01.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok Napísal autor témyOffline : 13.09.2017 15:08

Vyriešil som to tak, že mikroprocesor si prečíta a porovná s tým reťazcom z minula. Ak sa zhodujú, neurobí nič. :)


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 13.09.2017 18:01

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!
Offline

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

Registrovaný: 17.02.14
Prihlásený: 18.01.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok Napísal autor témyOffline : 14.09.2017 23:26

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ť.


Offline

Užívateľ
Užívateľ
Riešenie pre otvorenie txt súboru 1x

Registrovaný: 07.04.12
Prihlásený: 02.06.21
Príspevky: 907
Témy: 54
Príspevok NapísalOffline : 15.09.2017 6:22

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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 15.09.2017 7:40

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!
Offline

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

Registrovaný: 17.02.14
Prihlásený: 18.01.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok Napísal autor témyOffline : 16.09.2017 1:48

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ť.


Offline

Užívateľ
Užívateľ
Riešenie pre otvorenie txt súboru 1x

Registrovaný: 07.04.12
Prihlásený: 02.06.21
Príspevky: 907
Témy: 54
Príspevok NapísalOffline : 16.09.2017 9:06

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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 16.09.2017 9:58

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!
Offline

Správca fóra
Správca fóra
Riešenie pre otvorenie txt súboru 1x

Registrovaný: 08.08.09
Príspevky: 12449
Témy: 39
Príspevok NapísalOffline : 16.09.2017 10:42

Č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
Offline

Užívateľ
Užívateľ
Riešenie pre otvorenie txt súboru 1x

Registrovaný: 07.04.12
Prihlásený: 02.06.21
Príspevky: 907
Témy: 54
Príspevok NapísalOffline : 16.09.2017 11:27

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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 16.09.2017 12:07

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!
Offline

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

Registrovaný: 17.02.14
Prihlásený: 18.01.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok Napísal autor témyOffline : 16.09.2017 12:49

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.


Offline

Správca fóra
Správca fóra
Riešenie pre otvorenie txt súboru 1x

Registrovaný: 08.08.09
Príspevky: 12449
Témy: 39
Príspevok NapísalOffline : 16.09.2017 13:02

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
Offline

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

Registrovaný: 17.02.14
Prihlásený: 18.01.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok Napísal autor témyOffline : 16.09.2017 13:12

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.


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


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. VBA Code pre otvorenie Word súboru inak

v Delphi, Visual Basic

0

827

09.03.2015 14:46

robeno67 Zobrazenie posledných príspevkov

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

v Ostatné programy

2

726

30.07.2011 15:37

liveman Zobrazenie posledných príspevkov

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

v Delphi, Visual Basic

5

616

27.03.2012 19:50

Fico Zobrazenie posledných príspevkov

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

v PHP, ASP

24

1138

10.07.2008 12:06

rooobertek Zobrazenie posledných príspevkov

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

v Delphi, Visual Basic

1

827

01.01.2010 12:08

B.A.X.O Zobrazenie posledných príspevkov

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

v PHP, ASP

6

1053

12.06.2010 10:54

kexo Zobrazenie posledných príspevkov

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

v PHP, ASP

4

605

14.01.2009 6:58

JanoF Zobrazenie posledných príspevkov

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

v Sieťové a internetové programy

0

814

25.08.2011 20:20

Hanoj Zobrazenie posledných príspevkov

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

v Video programy

2

35431

25.09.2006 10:47

palinodsl Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Obnova .txt súboru v win XP

v Operačné systémy Microsoft

6

455

29.03.2009 12:30

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ kombinatorika/zapis do txt suboru

v Assembler, C, C++, Pascal, Java

2

1175

13.04.2011 22:46

blabla630 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zapis zo txt suboru do excelu..

v Delphi, Visual Basic

0

555

19.07.2011 19:14

kotlas6667 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zapis do txt suboru pomocou javascriptu

v JavaScript, VBScript, Ajax

11

730

22.01.2015 23:15

chrono Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Sťahovanie web stránky do txt súboru

v Ostatné

7

661

14.11.2017 7:37

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Otvorenie suboru z Al Zip-u

v Video programy

2

1793

10.10.2008 22:18

vazovski Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP skript, vyber udajov z TXT suboru

v PHP, ASP

6

994

10.12.2009 19:39

stenley 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