[ Príspevkov: 16 ] 
AutorSpráva
Offline

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

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?


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 | 3
NapísalOffline : 12.09.2017 14:34 | Riešenie pre otvorenie txt súboru 1x

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ý: 22.12.24
Príspevky: 450
Témy: 197 | 197
Bydlisko: Poprad-okolie
Napísal autor témyOffline : 13.09.2017 15:08 | Riešenie pre otvorenie txt súboru 1x

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 | 3
NapísalOffline : 13.09.2017 18:01 | Riešenie pre otvorenie txt súboru 1x

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ý: 22.12.24
Príspevky: 450
Témy: 197 | 197
Bydlisko: Poprad-okolie
Napísal autor témyOffline : 14.09.2017 23:26 | Riešenie pre otvorenie txt súboru 1x

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 | 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
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 | 3
NapísalOffline : 15.09.2017 7:40 | Riešenie pre otvorenie txt súboru 1x

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ý: 22.12.24
Príspevky: 450
Témy: 197 | 197
Bydlisko: Poprad-okolie
Napísal autor témyOffline : 16.09.2017 1:48 | Riešenie pre otvorenie txt súboru 1x

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 | 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
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 | 3
NapísalOffline : 16.09.2017 9:58 | Riešenie pre otvorenie txt súboru 1x

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 | 39
NapísalOffline : 16.09.2017 10:42 | Riešenie pre otvorenie txt súboru 1x

Č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 | 54
NapísalOffline : 16.09.2017 11:27 | Riešenie pre otvorenie txt súboru 1x

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 | 3
NapísalOffline : 16.09.2017 12:07 | Riešenie pre otvorenie txt súboru 1x

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ý: 22.12.24
Príspevky: 450
Témy: 197 | 197
Bydlisko: Poprad-okolie
Napísal autor témyOffline : 16.09.2017 12:49 | Riešenie pre otvorenie txt súboru 1x

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 | 39
NapísalOffline : 16.09.2017 13:02 | Riešenie pre otvorenie txt súboru 1x

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ý: 22.12.24
Príspevky: 450
Témy: 197 | 197
Bydlisko: Poprad-okolie
Napísal autor témyOffline : 16.09.2017 13:12 | Riešenie pre otvorenie txt súboru 1x

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.


 [ Príspevkov: 16 ] 


Riešenie pre otvorenie txt súboru 1x



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

888

09.03.2015 14:46

robeno67

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

Otvorenie súboru

v Ostatné programy

2

770

30.07.2011 15:37

liveman

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

Číslovanie .txt súboru

v Delphi, Visual Basic

5

669

27.03.2012 19:50

Fico

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

upload txt suboru

v PHP, ASP

24

1236

10.07.2008 12:06

rooobertek

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

ulozenie suboru txt VB

v Delphi, Visual Basic

1

867

01.01.2010 12:08

B.A.X.O

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

PHP citanie z TXT suboru

v PHP, ASP

6

1104

12.06.2010 10:54

kexo

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

Upravovanie txt suboru pomocou php

v PHP, ASP

4

646

14.01.2009 6:58

JanoF

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

866

25.08.2011 20:20

Hanoj

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

otvorenie súboru CUE a BIN

v Video programy

2

35511

25.09.2006 10:47

palinodsl

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

498

29.03.2009 12:30

shiro

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

1238

13.04.2011 22:46

blabla630

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

Zapis zo txt suboru do excelu..

v Delphi, Visual Basic

0

604

19.07.2011 19:14

kotlas6667

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

zapis do txt suboru pomocou javascriptu

v JavaScript, VBScript, Ajax

11

793

22.01.2015 23:15

chrono

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

Sťahovanie web stránky do txt súboru

v Ostatné

7

752

14.11.2017 7:37

BX

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

Otvorenie suboru z Al Zip-u

v Video programy

2

1841

10.10.2008 22:18

vazovski

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

PHP skript, vyber udajov z TXT suboru

v PHP, ASP

6

1042

10.12.2009 19:39

stenley



© 2005 - 2024 PCforum, edited by JanoF