Potřebujete měřit teplotu a sledovat její průběh v čase ? Není nic jednoduššího než mít teplotní čidlo, nějaký ten interface kam jej zapojit a program na sběr hodnot a kreslení grafů. Proto jste-li šťastným majitelem čidla TMU od fy. Papouch, máte Linux a běží vám na něm monitorovací server Munin, čtěte dále.
Ovladače netřeba hledat, pokud máte Linuxové jádro verze 2.6 a vyšší. Systém nám jej detekuje bez potíží:
ftdi_sio 1-3:1.0: FTDI USB Serial Device converter detected ftdi_sio: Detected FT232BM usb 1-3: FTDI USB Serial Device converter now attached to ttyUSB0 usb 1-3: New USB device found, idVendor=0403, idProduct=6001 usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-3: Product: Papouch TMU Thermometer usb 1-3: Manufacturer: Papouch s.r.o. usb 1-3: SerialNumber: CENSORED
Otestovat funkčnost čidla lze přes cat /dev/ttyUSB0, který začne vypisovat podobně vypadající hlášky.
*B1E1+026.2 *B1E1+026.2 *B1E1+026.3
Posledních 6 znaků jak je vidno ukazuje teplotu ve stupních celsia. Jak tedy tyto hodnoty dostat do Munina ? Nejsem programátor, tak jsem hledal na google skript, který by dokázal přečíst hodnotu z portu a ukončit se. Myslel jsem že toho lze dosáhnout pouhým cat /dev/ttyUSB0 , ale bohužel tato cesta nefunguje. Narazil jsem na logger.pl , který splňuje všechny moje požadavky ( s pomocí tweaků v komentářích 🙂 a modifikací vstupních proměnných )
To by jsme měli výstup z loggeru na STDOUT, což nám stačí. Teď plugin do Munina. Velice jednoduchý bash skript, který mě naučil pracovat s proměnnými,a podmínkám.
#!/bin/sh if [ "$1" = "config" ]; then echo graph_title Teplotni Cidlo Papouch TMU # Nadpis Grafu echo graph_vlabel Teplota ve stupnich # Popis osy Y echo graph_category temp # Umístění v Kategoriích munina echo graph_scale no # Graf nechceme škálovat echo temp.label Cidlo # Popisek hodnoty echo temp.info Teplota Cidla # Informace v "zapati" exit 0 fi read_temp=$(/usr/share/munin/plugins/logger.pl | tail -n 1 | cut -c6-11 | tr -d "[:alpha:,\n,\r]") without_signum=$(echo $read_temp | cut -c3-6) signum=$(echo $read_temp | cut -c1-2) if [ "$signum" == "+0" ]; then echo -n "temp.value $without_signum" elif [ "$signum" == "+1" ]; then echo -n "temp.value 1$without_signum" elif [ "$signum" == "-0" ]; then echo -n "temp.value -$without_signum" fi
Soubor logger.pl je třeba umístit do složky k pluginu ( standartně /usr/share/munin/plugins/ ), případně kamkoliv jinam, ale poté je samozřejmé že bude třeba změnit cestu k souboru. Dále je třeba nastavit vlastníka souboru na roota. Pokud se vše zadaří, je možno vidět takovéto pěkné grafy.
Zde najdete všechny soubory v jednom balíčku.
tmu_munin.tar
Chcete-li ušetřit, je vhodnější si sestavit teploměr sám. Návod jak si postavit teploměr do sériového portu RS232 lze najít například na adrese http://trifid2.sweb.cz/teplomer/
Další pluginy pro Munin
Jen tak pro legraci tuhle utilitku a plugin do munina vyrobil jako tgz, rpm pro Mageiu a openSuSE 11.4:
http://sourceforge.net/projects/papouchtmu/files/papouch-tmu-0.09.tgz/download
http://sourceforge.net/projects/papouchtmu/files/papouch-tmu-0.09-1.mga1.i586.rpm/download
http://sourceforge.net/projects/papouchtmu/files/papouch-tmu-0.09-11.4_2.x86_64.rpm/download