Autor | Zpráva | ||
---|---|---|---|
bach Profil |
#1 · Zasláno: 21. 3. 2008, 10:25:22
Jsem začátečník a nevím jak pohnout s následujícím problémem..
potřebuju na serveru spouštět tento spouštěcí soubor digitemp_DS9097 -a -c /opt/etc/digitemp.cfg -r 1000 -s /dev/usb/tts/0 výstup z něj , pokud to pustím v konzole je zde: Mar 21 10:19:19 Senzor 0 C: 6.19 Mar 21 10:19:20 Senzor 1 C: 21.52 Je to výstup ze sériové linky ze 2 čidel DS18B20 , kde za C: je konkrétní teplota ve stupních celsia. Jak by se tohle dalo pomocí php vykonat a vypsat na web stránku? Např. Čidlo č.1 - 6.19 C Čidlo č.2 - 21.52 C Děkuji za pomoc. |
||
Mike8748 Profil |
#2 · Zasláno: 21. 3. 2008, 10:30:40
pro spousteni programu mas prikazy exec(), system() a passthru()
ale pokud to je na hostingu tak to bude nejspis zakazany pokud je to tvuj vlastni server, tak by nemel byt problem dalsi moznosti je (pokuz znas protokol pouzity pro komunikaci s cidly) si celej programek digitemp prepsat do php, takze primo v php otevres seriovej port (pomoci fopen() ), a pak z nej muzes cist/zapisovat fread()/fwrite() pak by jsi to mel trochu jednodussi na zpracovani vysledku |
||
nightfish Profil |
#3 · Zasláno: 21. 3. 2008, 10:30:43 · Upravil/a: nightfish
použij funkci shell_exec()
a pak zřejmě nějaké regulární výrazy pro zpracování těch dat |
||
bach Profil |
#4 · Zasláno: 21. 3. 2008, 12:54:43 · Upravil/a: bach
Takže už jsem to zvládnul pomocí exec....
Další problém je formát... 12:34:13 Sensor 0 7.50 °C 12:34:15 Sensor 1 9.31 °C to první si dokážu přes substr odpočítat a vyhodnotit , ale to druhé ne... Problém je ten , že ta teplota může vypadat třeba -10.50 °C a už to neodpočítám. Nešlo by třeba zobrazit od prázdného znaku do prázdného znaku ? příklad do proměnné se po vykonání příkazu načte: 12:34:13 Sensor 0 7.50 °C 12:34:15 Sensor 1 9.31 °C ale můžou být i tyto varianty....: 12:34:13 Sensor 0 17.50 °C 12:34:15 Sensor 1 9.31 °C 12:34:13 Sensor 0 7.50 °C 12:34:15 Sensor 1 -19.31 °C 12:34:13 Sensor 0 -17.50 °C 12:34:15 Sensor 1 -11.31 °C Jde to nějak v php udělat abych uložil do jedné proměnné č. senzoru 0 do druhé teplotu 0 a do třetí čas 0 to to samé pro senzor 1? Nemusí to být nutně mezery umím tam dát i oddělovač viz. 12:34:13|Sensor|0|-17.50|°C|12:34:15|Sensor|1|-11.31|°C| Děkuji |
||
nightfish Profil |
#5 · Zasláno: 21. 3. 2008, 12:58:55
$data = explode(" ", $vstup);
a pak $data[0] bude čas $data[1] Sensor $data[2] Číslo senzoru $data[3] Teplota $data[4] °C 5-9 bude další řádek apod. |
||
bach Profil |
#6 · Zasláno: 21. 3. 2008, 13:49:55 · Upravil/a: bach
Super děkuji všem velmi......
Ještě maličkost , jak se dá udělat auto refresh třeba co minutu té konkrétní stránky v php? |
||
Alphard Profil |
#7 · Zasláno: 21. 3. 2008, 14:04:46 · Upravil/a: Alphard
cron
nebo jestli jde o zobrazení u klienta, tak javascript nebo meta |
||
Časová prodleva: 4 dny
|
|||
bach Profil |
#8 · Zasláno: 25. 3. 2008, 06:03:07
Meta je ok...všem děkuji za pomoc
|
||
bach Profil |
#9 · Zasláno: 25. 3. 2008, 06:08:22 · Upravil/a: bach
Chtěl bych to umět ještě natlačit do databáze SQLITE , proto se táži , jak se to dá udělat ?
Chtěl bych aby to cca co 5 minut zapsalo do databáze asi z tohoto , cron funkční mám , ale nevím co spouštět: $output = shell_exec("/opt/bin/digitemp_DS9097 -a -c /opt/etc/digitemp1.cfg -r 1000 -s /dev/usb/tts/0"); $data = explode(" ", $output); $data[0] bude čas $data[1] Sensor $data[2] Číslo senzoru $data[3] Teplota $data[4] °C Děkuji chytrým hlavám za pomoc.... |
||
Joker Profil |
#10 · Zasláno: 25. 3. 2008, 07:41:40
bach
Chtěl bych to umět ještě natlačit do databáze SQLITE , proto se táži , jak se to dá udělat? SQL příkaz INSERT INTO tabulka... přes sqlite_query() |
||
bach Profil |
#11 · Zasláno: 25. 3. 2008, 07:50:18
SQL příkaz INSERT INTO tabulka... přes sqlite_query()
no avšak nevím co pouštět v cronu...tedy spíš netuším , jestli se dá pouštět php stránka , aby se to co 5 minut plnilo.... napoví někdo? |
||
orava)) Profil * |
#12 · Zasláno: 25. 3. 2008, 14:04:32
Ako na CRONa najdes TU
budes spustat php script a tam bude sqlite_query("INSERT INTO tabulka VALUES ('$data[1]','atd')"); |
||
bach Profil |
#13 · Zasláno: 26. 3. 2008, 07:19:41
Asi jsem osel ale nevím , jak to správně vložit, začínám se to teprve učit......
mám databázi v sqlite s názvem: "teplomer.db" v ní je table : "tepl" v které jsou "datum" "cas" "teplota" "cidlo" mám naplněny proměnné: $cidlo0 $teplota0 $cas0 $datum0 a potřebuju údaja z těchto proměnných dát do databáze. Prosím o příkladek , jak otevřít v php databázi a jak konkrétní proměnné zapsat do db.... Děkuji TK |
||
nightfish Profil |
#14 · Zasláno: 26. 3. 2008, 09:09:06 · Upravil/a: nightfish
$sql = sqlite_open("teplomer.db"); if (!$sql) Die("Nepodarilo se otevrit databazi."); $res = sqlite_query($q="INSERT INTO tepl(datum, cas, teplota, cidlo) VALUES ('$datum', '$cas', '$teplota', '$cidlo')", $sql); if (!$res) Die("Chyba pri provadeni dotazu:<br>$q<br>".sqlite_error_string(sqlite_last_error($sql))); sqlite_close($sql); v případě cyklického vkládání bude vhodné neotvírat a nezavírat databázi před/po každým insertem EDIT: jo a předpokládám, že všechny sloupce v databázi jsou char nebo varchar, ne číselné (v případě, že by byly číselné, tak v části za VALUES odeber kolem příslušné proměnné apostrofy) |
||
souki Profil |
#15 · Zasláno: 26. 3. 2008, 10:02:47
nightfish
ty apostrofy by tam vadily? |
||
bach Profil |
#16 · Zasláno: 26. 3. 2008, 10:07:47 · Upravil/a: bach
PROSÍM O POMOC znalce.......
zadal jsem to takhle: <? $output = shell_exec("e:\digitemp\digitemp.exe -r500 -a -s1 -c e:\digitemp\digitemp.cfg"); $data = explode("|", $output); $cidlo0 = $data[2]; $teplota0 = $data[3]; $cas0 = $data[1]; $datum0 = $data[4]; ?> <? $sql = sqlite_open("teplomer.db"); if (!$sql) Die("Nepodarilo se otevrit databazi."); $res = sqlite_query($q="INSERT INTO tepl(datum, cas, cidlo, teplota) VALUES ('$datum0', '$cas0', '$cidlo0', '$teplota0')", $sql); if (!$res) Die("Chyba pri provadeni dotazu:<br>$q<br>".sqlite_error_string(sqlite_last_error($sql))); sqlite_close($sql); ?> hlásí mi to tohle: Warning: sqlite_query() [function.sqlite-query]: column datum is not unique in E:\web_www\tgroup\teplomer\sq2.php on line 38 Chyba pri provadeni dotazu: INSERT INTO tepl(datum, cas, cidlo, teplota) VALUES ('2008-03-26', '10:02:17', '0', '17.25') constraint failed V čem může být problém? datum mám type DATE , cas je type TIME , zbytek je type VARCHAR resp. je nutné abych to měl DATE a time , nebo to může být pro datum a čas i VARCHAR? ještě 1 dotaz pokud bych tu db nechtěl mít v témže adresáři jako php script? |
||
Časová prodleva: 16 let
|
0