Avatar
pyrin
Člen
Avatar
pyrin:

Dobré odpoledne všem, nějak tu tápu v tom, jak předat data z C kódu k zobrazení na webu. První variantu jsem udělal tak, že přistupuji z C kódu do MySQL a tam si vložím nebo přečtu co potřebuji. Na straně web serveru se provede požadovaný výběr a zobrazení klientovi. Teď ale hledám cestu bez použití MySQL databáze. Napadlo mně v C generovat JSON nebo XML soubory a z těchto hodnot by si web server tahal hodnoty a třeba i zpět něco posílal aplikaci psané v C. Máte prosím někdo jiný nápad nebo vůbec s tím XML nebo JSON dělá se to takto, je to vhodné ? Děkuji, pěkný den, Jirka

 
Odpovědět 21. ledna 13:07
Avatar
Jenkings
Redaktor
Avatar
Odpovídá na pyrin
Jenkings:

No, rovnou ti řeknu, že přistupovat z klienta přímo do MySQL databáze je obrovské bezpečnostní riziko. Minimálně bys to mohl aspoň posílat jako nějaký specifický dotaz na PHP,které by ti následně vrátilo v nějakém formátu data o která jsi žádal. Hodně taky záleží na typu dat, která chceš posílat.

Nahoru Odpovědět 21. ledna 13:37
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
pyrin
Člen
Avatar
Odpovídá na Jenkings
pyrin:

Asi to vyznělo špatně, takže to popíšu více. Původně jsem měl jednodeskový stroj s harddiskem, takže tento stroj sériovou linkou vyčítá data z teploměru a rovnou je cpe do MySQL, která běží na tomtéž stroji i s web serverem. Takže klient z venku se podívá na stránku a vidí tam teplotu. Tak a teď to chci předělat do hardwéru typu nějaký WiFi router, kde běží třeba nějaký OpenWRT linux a není tam harddisk, ale jen CF nebo SD karta, která je v normálním provozu jen ReadOnly. Mohu do ní nahrát nějakou jednoduchou webovou stránečku, která by mi zobrazovala online teplotu. A tak jsem chtěl céčkem vykomunikovat teplotu po sériové lince, uložit do XML nebo JSON do souboru v TMP složce a jakmile by někdo otevřel webovou stránku, tak by se ten XML nebo JSON načetl a zobrazila by se hodnota na stránce. Takže principielně mi jde o tuto druhou variantu a ne o MySQL. Jirka

 
Nahoru Odpovědět 21. ledna 13:48
Avatar
Luboš Běhounek (Satik):

Můžeš přímo v tom C spustit webserver, který jen pošle klientovi výsledné HTML, do kterého ty hodnoty vlepí.

Nahoru Odpovědět 21. ledna 14:52
:)
Avatar
pyrin
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
pyrin:

Ano to by šlo. A jak to udělám obráceně ? Tedy zobrazím stránku a v ní tlačítko ON/OFF a chci dostat informaci o tlačítku do té mé sériové linky.

 
Nahoru Odpovědět 21. ledna 15:11
Avatar
Odpovídá na pyrin
Luboš Běhounek (Satik):

To tlačítko bude normálně odkaz zpátky na to zařízení a informace (třeba o tom vypnutí) si pošleš v get parametrech, které pak přečteš. Nebo můžeš i třeba jen rozparsovat text požadavku za adresou - např. ta url může být

192.168.0.5/off

a ty z toho přečteš jen ten text za lomítkem a podle toho zareaguješ

Editováno 21. ledna 17:13
Nahoru Odpovědět 21. ledna 17:13
:)
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na pyrin
Martin Dráb:

Mně přijde nejlepší řešit to tak, že údaje z teploměru se budou zapisovat do nějakého souboru v TMP namapovaném do RAM (aby mohla být SD karta readonly). Webserver poběží nezávisle na tomto zapisování dat (samozřejmě, před zápisem můžeš zkontrolovat, zda webserver běží, a podle toho se rozhodnout).

Když přijde klient, webová stránka, kterážto je v části v PHP, načte a naparsuje soubor z daty a zobrazí to, co si uživatel asi přeje.

Co se týče vypínání a zapínání teploměru, nedala by se tahle informace řešit komunikací PHP přes sockety s aplikací, která komunikuje s teploměrem?

Nahoru Odpovědět 21. ledna 19:29
2 + 2 = 5 for extremely large values of 2
Avatar
pyrin
Člen
Avatar
Odpovídá na Martin Dráb
pyrin:

Jo, tak nějak jsem tu první část myslel, zapisovat periodicky do souboru nebo spíš jej periodicky přepisovat. A ta druhá část směrem dolů mně taky napadla, jen pořád nevím, zda je to nejlepší řešení.
A tak problém rozšířím ještě o další vymoženosti. K tomu jednodeskáči bych připojil nějaký jednočip, který jednak bude něco měřit a potom třeba i regulovat. Takže tam budu mít třeba 4 parametry. 1. požadovanou hodnotu teploty, 2. diferenci teploty, 3. a 4. začátek a konec časového úseku. A teď tedy bych měl představu, že budu mít webovou stránku, kde bych měl 4 pole. Jakmile stránku budu chtít zobrazit, tak bych měl načíst z toho jednočipa aktuální hodnoty parametrů. Potom by se daly hodnoty ve stránce změnit a následně je zapsat do jednočipu. V tom jednodeskáči by se měly zkontrolovat rozsahy zadávaných hodnot a teprve potom buď říci, že jsou špatně a nebo je fyzicky zapsat. No a otázkou je, zda toto dělat přes sockety z PHP nebo nějak jinak a jak ? Byla by ještě nějaká rada prosím ? Jirka.

 
Nahoru Odpovědět 21. ledna 19:39
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na pyrin
Martin Dráb:

To asi záleží, zda-li bude k tomu stroji připojen jednak jednočip, druhak te nteploměr, nebo jen jednočip, který bude, vyjma možnosti změnit tebou popsané parametry, zprostředkovávat měření z těploměru (periodicky je posílat třeba po sériové lince). Pokud by to byla ta druhá možnost, můžeš buď použít sockety v PHP, nebo by z PHP šlo přímo zapisovat a číst ze sériové linky.

Tam pak záleží, zda ta webová stránka bude jediná entita, která bude s tím jednočipem komunikovat, protože po sériové lince nemohou komunikovat dvě entity současně (je to exkluzivní zařízení). Tím, že bys na té sériové lince měl nějakou aplikaci, která by ji zpřístupňovala přes sockety (třeba pro to PHP) bys právě zajistil možnost pracovat s teploměrem z více entit +- současně. Pokud sdílení nepotřebuješ, stačí přímá komunikace po sériové lince.

To ověřování správnosti parametrů zase můžeš dělat na několika místech: v jednočipu, na webové stránce... Důležité je, aby jej uživatel nemohl obejít.

Nahoru Odpovědět 21. ledna 20:45
2 + 2 = 5 for extremely large values of 2
Avatar
pyrin
Člen
Avatar
Odpovídá na Martin Dráb
pyrin:

Cílem je mít jednočip, který se bude starat o měření teploty a regulaci podle požadovaných parametrů. Toto by mělo být autonomní. Sériovou linkou to chci připojit k WRAPu nebo ALIXu. To vyčítání a i možnost nastavování sériovou linkou mi funguje. Mám vlastně komunikační proces, který přes FIFO roury komunikuje s jiným procesem, který se stará o to, že si žádá o teploty a parametry. Dnes mi to ukládá do MySQL a i ty parametry proháním přes MySQL. Co se parametrů týká, tak v MySQL mám sloupec se statusem, kde sudé hodnoty se mi starají o zápis parametrů a liché o čtení parametrů. Když je tam 0, tak nic nedělám, jakmile bych tam dal 1, tak to znamená, že chci vyčíst parametr, sestavím tedy žádost o komunikaci a zvýším status na 3. Pokud mi nepřijdou data - je porucha, tak to zvýším na 7, pokud mi to odkomunikuje a data strčím do MySQL, tak status nahodím na 5. Z Webíku bych potom podle statusů mohl signalizovat nebo zobrazovat stav a hodnotu. Jenže webík nějak neumím udělat a navíc se chci zbavit té MySQL, protože ve WRAPu nebo ALIXu mám jen CF kartu s OpenWRT linuxem a není tedy vhodné do ní zapisovat. Tak jsem si myslel, že bych si udělal v TMP soubor s hodnotami měřenými a i parametry a tyto soubory by sloužily pro výměnu dat mezi webem a komunikační aplikací. A jak je dnes moderní responzivní web, tak by bylo pěkné to tak mít. Takže 1 stránka, na ní nahoře 1 teplota a pod ní 4 nastavovací políčka s nějakými tlačítky něco jako načíst a uložit (parametry). Ověřování rozsahů parametrů bych viděl na ten komunikační proces ve WRAPu (ALIXu). Taky mně napadlo, že by se o ověřování mohl starat nějaký JAVASCRIPT, který by v podstatě běžel u uživatele - nedovolil by mu tam nastavit blbosti. Jirka

 
Nahoru Odpovědět 22. ledna 8:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.