Rád bych doplnil implementaci teploměru, o kterém si přečtěte povedený návod na stránce astromik.org pod položkou „15) Teploměr DS18B20“.
Pozor: GPIO4 je nyní špatně, teploměr funguje na GPIO18, alespoň u mě, pro ověření použijte dmesg | grep w1
Vytvořil jsem dva skripty, jeden pro záznam teploty a jeden pro vizualizaci dat. První je klasický bash skript čtoucí v cyklu data z teploměru, dokud se kontrolní součet neshoduje. Občas se totiž vyskytují v měření velké chyby, které se takto minimalizují. Skript zapisuje do souboru temps.log datum do prvního sloupce, čas do druhého sloupce a teplotu do třetího. Při zpracování je třeba teplotu vydělit tisícem. Skript lze volat cronem, já zvolil desetiminutový interval, vše je na libovůli. Nezapomeňte však použít ID vašeho teploměru, řetězec znaků mezi devices/ a /w1_slave je pro každé zařízení jedinečný.
#!/bin/bash if [ -e /sys/bus/w1/devices/28-000001b44be4/w1_slave ]; then txt=`cat /sys/bus/w1/devices/28-000001b44be4/w1_slave` while [ "$(echo $txt | grep 'NO')" != "" ]; do txt=`cat /sys/bus/w1/devices/28-000001b44be4/w1_slave` done temp=`echo $txt | grep t= | cut -d '=' -f3` echo `date +%F%t%T%t`$temp >> ~pi/temps.log fi
Druhý je skript pro gnuplot, který musíte předem nainstalovat. Části jsem sehnal na různých místech v nápovědách a jiných článcích, protože je to poprvé, kdy s gnuplot pracuji přímo:
#!/usr/bin/gnuplot set terminal png size 1280,960 set output 'temperature.png' set title "Inside temperature" set xlabel "Time" set ylabel "Temperature [C]" set style line 11 lt 1 lw 0.5 lc rgb "#AAAAAA" set style line 12 lt 0 lw 0.1 lc rgb "#DDDDDD" set mxtics 2 set mytics 4 set grid xtics ytics, ls 11 set grid mxtics mytics, ls 12 set xdata time set xtics rotate by -12 set timefmt "%Y-%m-%d %H:%M:%S" set format x "%d.%m. %H h" plot "temps.log" using 1:($3)/1000 title "Temperature" with lines
Mám tak hotovou první část své budoucí meteostanice.