Raspberry PI jako IP teploměr

Malý jednodeskový počítač vyvíjený nadací Raspberry Pi Foundantion lze skvěle využívat pro jednoduché síťové aplikace. Počítač běží na operačním systému Raspbian (Debian pro Raspberry Pi), jako webový server slouží Light HTTPd s PHP a databází MySQL. Raspbian podporuje připojení 1-Wire zařízení, ve výchozím nastavení se počítá s připojením na port GPIO4. Jako teplotní čidlo jsem použil oblíbené DS18B20. Zapojení je standardní a mimo pull-up odporu 4K7 nejsou potřeba žádné další součástky.

RPI Teploměr

Zapojení hardware máme, nyní se vrátím k softwaru. Jako operační systém je použit Raspbian, jak ho nainstalovat a zprovoznit je popsáno na stránkách nadace. Pro zobrazování naměřených hodnot je využívána skvělá aplikace TMEP od MultiTrickera. Ta potřebuje ke své činnosti webový server s podporou PHP a MySQL databázi.

TMEP graf

Instalujeme Light HTTPd, MySQL a PHP:

sudo apt-get install lighttpd
sudo apt-get install mysql-server
sudo apt-get install php5-common php5-cgi php5 php5-mysql
sudo lighty-enable-mod fastcgi-php
sudo service lighttpd force-reload

Následuje stažení a rozbalení aplikace TMEP:

cd ~
wget https://github.com/MultiTricker/TMEP/archive/v8.01.tar.gz
tar -xaf v8.01.tar.gz
cd TMEP-8.01

Vytvoření databáze tmep, uživatele a hesla:

echo "create database tmep;" > mysql-db-create.sql
echo "grant all on tmep.* to tmep@localhost identified by 'pdRHmk#8zmfo';" >> mysql-db-create.sql
mysql -u root -p < mysql-db-create.sql
rm mysql-db-create.sql

Import struktury databáze:

mysql -u root -p tmep < mysql-db-full.sql

Zkopírování aplikace do adresáře webserveru:

cd app
sudo cp -avr * /var/www

Úprava konfiguračního souboru:

sudo echo '$dbUzivatel = "tmep";' >> /var/www/config.php
sudo echo '$dbHeslo = "pdRHmk#8zmfo";' >> /var/www/config.php
sudo echo '$dbDb = "tmep";' >> /var/www/config.php
sudo echo '$vlhkomer = 0;' >> /var/www/config.php
sudo echo '$ip = "127.0.0.1";' >> /var/www/config.php 
sudo echo '$umisteni = "Test";' >> /var/www/config.php

Smazání dočasných instalačních souborů a adresářů:

cd ~
rm v8.01.tar.gz
rm -r TMEP-8.01

Nyní by již měla být webová aplikace plně funkční, ale bez naměřených hodnot. V následujících krocích vyzkoušíme komunikaci s připojeným teplotním čidlem. Nejprve nahrajeme potřebné moduly:

sudo modprobe w1-gpio
sudo modprobe w1-therm

Uložíme je do konfiguračního souboru, pro zavádění při startu systému:

sudo echo 'w1-gpio' >> /etc/modules
sudo echo 'w1-therm' >> /etc/modules

Aktualizace: V nových verzích Raspbianu je nutné přidat do souboru /boot/config.txt následující řádek:

dtoverlay=w1-gpio

Editaci souboru /boot/config.txt můžeme provést prostřednictvím editoru Nano:

sudo nano /boot/config.txt

Restartujeme systém:

sudo reboot

Vypíšeme zařízení na 1-Wire sběrnici:

ls /sys/bus/w1/devices/

Výpis může vypadat například následujícím způsobem:

1wire list

Každé 1-Wire zařízení má unikátní adresu, která se skládá z prefixu a vlastní adresy. Teplotní čidla DS18B20 mají prefix 28. Číslo 28-000005bd23d4 značí unikátní adresu připojeného teplotního čidla. Tím máme kontrolu připojeného čidla za sebou a můžeme přejít k vlastnímu skriptu, který bude ukládat hodnoty do programu TMEP.

Skript je k dispozici zde: tmep.zip

Můžeme ho stáhnout do Raspberry PI pomocí následujících příkazů:

mkdir /home/pi/tmep
cd /home/pi/tmep
wget /data/uploads/rpi-ip-temp/tmep.zip
unzip tmep.zip
rm tmep.zip
chmod +x tmep.sh

Přidáme spouštění skriptu každou minutu do plánovače úloh:

(sudo crontab -l; echo "* * * * * /home/pi/tmep/tmep.sh > /dev/null 2>&1") | sudo crontab

Po minutě by se měla v aplikaci TMEP zobrazit první odečtená hodnota teploty.