Článek a skripty průběžně vylepšuji, zatím omluvte strohost..
Na výsledek se můžete podívat tady Graf teploty (mám dynamickou IP, takže bude časem nedostupné)
Dnes se podíváme na měření teploty s pomocí čidla ds18s20 s odporem 4,7Kohm přes 1wire zběrnici s Raspberry PI. Komunikace této zběrnice probíhá pomocí modulů integrovaných do Raspbiana. Nic tedy nebrání tomu v podstatě koupit čidlo, připojit a číst údaje. Návod čase rozšířím také o měřič vlkosti a teploty DHT22. Zjistil jsem, ale že není kompatibilní s 1wire a tím pádem potřebuje jiný přístup. O tom se rozepíšu v nějaké dalším článku.
https://www.gme.cz/ds18b20 (náhrada https://www.gme.cz/ds18s20)
https://www.gme.cz/rm-4k7-0207-0-6w-1
Připoj čidla dle obrázku na https://www.domorazek.cz/data/uploads/img/rpi-ip-temp/raspi-temp_bb.png

aktivuj moduly
sudo modprobe w1-gpio
sudo modprobe w1-therm
Ověř, že je teploměr funkční
ls /sys/bus/w1/devices/
Výpis teploty provedeš
cat /sys/bus/w1/devices/"číslo čidla např. 28-000006dc0d05"/w1_slave
výstup:
43 01 4b 46 7f ff 0d 10 bd : crc=bd YES
43 01 4b 46 7f ff 0d 10 bd t=20187
teplota je tedy 20.187
Aktualizuj operační systém
sudo apt-get update
sudo apt-get upgrade
Dále instaluj následující balíčky.
sudo apt-get install apache2 curl mysql-server php libapache2-mod-php php-mysql phpmyadmin
(při instalaci mysql bude vyžadováno zvolit heslo k mysql)
Sběr teplot je postaven na bash skriptu opakovaně spouštěného Cronem.
Konfigurace Cron se nachází v /etc/crontab
Ukázka načítání teplot každých 30 minut:
*/30 * * * * root /usr/local/skripty/./vstup_teplota_venkovni.sh
*/30 * * * * root /usr/local/skripty/./vstup_teplota_vnitrni.sh
(skripty je dobré nespouštět jako root z důvodu bezpečnosti, pokud by je mohl nějaký uživatel editovat, může do nich vložit jakýkoliv příkaz a spustit je s root oprávněním)
Vyber složky pro spouštění bash skriptů (např. /usr/local/skripty/) a nakopíruj tam soubory vstup_teplota_venkovni.sh, vstup_teplota_vnitrni.sh.
Aby byly skripty spustitelné, je potřeba jim dát oprávnění.
chmod +x vstup_teplota_venkovni.sh
chmod +x vstup_teplota_vnitrni.sh
Založ novou databázi teplota s právy pro uživatele temp a heslem temp přes phpmyadmin (přístup pouze z localhost kvůli zabezpečení).
Importuj data do mysql pomocí phpmyadmin nebo příkazem.
mysql teplota < teplomer.sql (mušíš být přihášen za roota sudo -i)
Rozbal soubory z archivu web.tar do /var/www/html
sudo tar -xvf web.tar /var/www/html
Mrkni na adresu serveru /graf.php
Funkce:
Bash skripty vstup_teplota_venkovni.sh a vstup_teplota_vnitrni.sh načítají data z čidel. (nutné uvnitř upravit názvy zařízení u proměnné teplota=$(cat /sys/bus/w1/devices/28-00000637528c/w1_slave)) a odesílají naměřenou hodnotu metodou get na venkovní adresu serveru pomocí curl.
PHP skript vstup_venkovni_teplota.php načítá hodnoty GET a odesílá je do databáze. Sktipt také obsahuje bezpečnostní ochranu, aby nebylo možné vkládat data do databáze odkudkoliv.
Přihlašovací údaje jsou umístěné v connect.php.
Stránka graf.php načítá data z databáze a vkládá je do grafu. Graf je vytvořen pomocí open-source projektu chartjs.org (pro běh je nutný soubor Chart.min.js).