Portál AbcLinuxu, 5. května 2025 03:09

Dotaz: Teploměr TM

4.10.2008 09:42 Lukáš MATELA | skóre: 16
Teploměr TM
Přečteno: 1584×
Odpovědět | Admin
Zdravím všechny. Provozuji teploměr od Papoucha TM-RS232 na Windows spolu s jejich jednoduchou utilitou TM, která jednou za 5 minut "pošle" tento řetězec:
teplomer.wz.cz/teplota2.php?temp= Potřeboval bych něco takového zprovoznit na Linuxu, ale nevím moc jak na to. S teploměrem se mi zatím daří komunikovat v minicomu. Našel jsem také, že na RS232 lze poslat data z BASH příkazem:
echo TEXT_K_POSLANI > /dev/ttyS1
ale nevím jak data z teploměru přijmout. Pro posílání dat na web předpokládám využití wgetu... U Papoucha je návod, jak vytvořit měřící program, ale:
1) je to v perlu a ten na daném stroji nemám (a jen tak ho tam nedostanu)
2) není řešeno poslání dat na web Pokud máte někdo zkušenost nebo nápad, děkuji předem za uvedení
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

ZmaTkar avatar 4.10.2008 10:20 ZmaTkar | skóre: 18 | blog: ZmaTkar
Rozbalit Rozbalit vše Re: Teploměr TM
Odpovědět | | Sbalit | Link | Blokovat | Admin
Odpověď by se mělo nechat přečíst pomocí cat. Jak to poslat na web už nechám na Vás :)
Punk's not dead ...
6.10.2008 20:47 Lukáš MATELA | skóre: 16
Rozbalit Rozbalit vše Re: Teploměr TM
Děkuji za tip. Odpověď pomocí cat funguje:
cat /dev/ttyS1
vypíše teplotu ve tvaru: +23.5C. Ale má to jeden háček: příkaz se po získání dat neukončí. Teploměr vloží za hodnotu znak 13 (0x0D) a příkaz cat čeká na další hodnotu. Potřebuju získat jen jednu hodnotu např. do souboru a pak s ním něco dělat: cat /dev/ttyS1 > teplota.txt Výše uvedený povel ale udělá to, že do souboru "nabouchá" za sebe několik hodnot (dle délky běhu), které jsou odděleny znakem s ASCII hodnotou 13 (0x0D). Poraďte prosím co teď... Nyní vždy příkaz cat .... musím ukončit kombinací kláves CTRL+C Děkuji předem
6.10.2008 21:52 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Teploměr TM
skus prikaz sed 's/\r.*//;q' /dev/ttyS1 namiesto cat
If you hold a Unix shell up to your ear, you can you hear the C.
7.10.2008 10:50 Lukáš MATELA | skóre: 16
Rozbalit Rozbalit vše Re: Teploměr TM
děkuji za tip, ale tohle "nic" nedělá ...
7.10.2008 07:44 ros
Rozbalit Rozbalit vše Re: Teploměr TM
head -n 1 /dev/ttyS1
7.10.2008 10:53 Lukáš MATELA | skóre: 16
Rozbalit Rozbalit vše Re: Teploměr TM
Také děkuji, ale tohle taky nepomohlo vyřešit problém. Jednou mi to "vyhodilo" výsledek, ale také to nedokončilo příkaz a "zůstalo" to viset. Jindy to nevyhodí nic...
7.10.2008 19:44 Lukáš MATELA | skóre: 16
Rozbalit Rozbalit vše Re: Teploměr TM
Tak teď to začalo fungovat. Restartoval jsem vzdáleně ten počítač a výsledek je super :-)
7.10.2008 10:31 marek
Rozbalit Rozbalit vše Re: Teploměr TM

dobry den

mame stejne teplomery a pouzivame:

read teplota < /dev/ttyS0 && echo -n $teplota | tr -d "\r"
date +" %H:%M:%S %d.%m.%Y"

marek

7.10.2008 10:56 Lukáš MATELA | skóre: 16
Rozbalit Rozbalit vše Re: Teploměr TM
A tady jsem také nepochodil

read teplota < /dev/ttyS0 && echo -n $teplota

výsledek:
[1] 27427
bash: lt: command not found

[1]+  Stopped                      read teplota
bash: /dev/ttyS1: Permission denied

a to i pod rootem
7.10.2008 11:11 marek
Rozbalit Rozbalit vše Re: Teploměr TM

dobry den.

obavam se, ze Vam dela v shellu bordel v zobrazeni ten \r (\xd) a ze jste tam cosi napsal navic.

zkuste to v novem shellu zapsat treba takto, at vyloucite vsechny pochybnosti:

read teplota < /dev/ttyS0
echo $teplota | od -c

marek

7.10.2008 19:28 Lukáš MATELA | skóre: 16
Rozbalit Rozbalit vše Re: Teploměr TM
Dobrý den, zkoušel jsem to (s ttyS1) ale bez výsledku:
0000000    \n
0000001
Pak jsem zkusil:
cat /dev/ttyS1 > teplota.txt a samozřejmě po pár sekundách CTRL+C dále jsem chtěl vypsat příkazem cat obsah souboru, ale výsledek je takovýto:
root@miniPC:/home/user# cat teplota.txt
root@miniPC:/home/user#
když ovšem teplota.txt otevřu v mcedit, jsou tam teploty oddělené právě tím problematickým znakem (^M), který asi dělá ten zmiňovaný bordel. Použil jsem tedy toto:
root@miniPC:/home/user# read teplota < teplota.txt
root@miniPC:/home/user# echo $teplota | od -c
0000000    +  0  2  3  .  5  C \r  +  0  2  3  .  5  C  \r
0000020    +  0  2  3  .  5  C \r \n
0000031
root@miniPC:/home/user#
Teď už opravdu nevím jak dál. Prosím, poraďte
7.10.2008 19:47 Lukáš MATELA | skóre: 16
Rozbalit Rozbalit vše Re: Teploměr TM
Teď (po restartu) to začalo fungovat. :-) Příkaz
cat /dev/ttyS1 > teplota.txt
mi nyní "naskládá" hodnoty hezky pod sebe a příkaz
cat teplota.txt
vypíše to co čekám... Ale moc nechápu proč se choval před restartem jinak... :-(
7.10.2008 20:05 Lukáš MATELA | skóre: 16
Rozbalit Rozbalit vše Re: Teploměr TM
Tak a teď ještě dostat tu teplotu na web:
pokud dám:
read teplota < /dev/ttyS1 && echo "http://www.domena.cz/uloz.php?temp="$teplota
hodí mi to výsledek:
http://www.domena.cz/uloz.php?temp=+23.6C
Potřebuju se nějak zbavit toho céčka a pak před to dostat wget a celé vykonat:
wget http://www.domena.cz/uloz.php?temp=+23.6
Poraďte prosím jak na to. V Bashi se moc neorientuju. Do Cronu si to už přidat zvládnu ;-) Děkuji předem
7.10.2008 23:26 Jirka | skóre: 36
Rozbalit Rozbalit vše Re: Teploměr TM
Proč místo toho echa nedáte prostě wget?

Toho "C" bych se zbavil v tom php skriptu, pokud je to možné.
8.10.2008 09:53 Lukáš MATELA | skóre: 16
Rozbalit Rozbalit vše Re: Teploměr TM
Jo děkuji. Nahrazení wget namísto echo mě mohlo také napadnout samotného :-(.

To "C" na konci se ukázalo jako bezproblémové, protože parametr je typu FLOAT (v mySQL) a tak je tento poslední znak skriptem ignorován.

Dík všem za pomoc, která dopomohla vyřešit můj problém. :-)

I když nechápu, proč před restartem PC byl ukončovací znak 0x0D a nyní už to šlape. Může to být problém ve firmwaru teploměru? Nerad bych aby se třeba situace po restartu zopakovala.

8.10.2008 12:10 marek
Rozbalit Rozbalit vše Re: Teploměr TM

dobry den

ja si myslim, ze tam ten ukoncovaci znak teplomer dava porad (alespon to ma ve specifikaci), ale ze to tomu wgetu proste nevadi.

jinak odstraneni vsech vyskytu 0x0d delame prave tim tr -d "\r"

v tom php je NUTNE parsovat promennou temp a prevadet ji na hodnotu vhodnou pro mysql - nikdy nevite co vam tam kdo posle.

marek

ps: resili jsme vpodstate to same - akorat si to predavame pomoci ssh a klicu co umi spustit prave jednu akci. bezpecnost reseni se potom pohybuje uplne nekde jinde

>

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.