Hardware:

RasberryPi 2

AM2302 humidity/temperature sensor

Some wires from old PCs to connect sensor with RaspberryPi

Software:

Raspbian OS

Nginx

Munin

WiringPi

Lol_dht22

1. Solder wires to the sensor like on the picture above, and connect them to the correct pins:

Pin 1 on the AM2302 to pin 1 (+3.3V) on the GPIO connector (labeled P1 on the raspi)

Pin 2 on the AM2302 to pin 7 (GPIO 4) on the GPIO connector

Pin 4 on the AM2302 to pin 9 (Ground) on the GPIO connector

For detailed instructions, check this blog up to step 4: https://hackaday.io/project/3766/instructions

All shell commands will be run as root, so I will not use sudo.

2. Install Nginx (web server)

apt-get update apt-get install nginx php5-fpm

3. Install Munin

Muning is a monitoring tool for sysadmins. It creates graphs to monitor various parameters. We will configure munin to display AM2302 sensor in graphs.

apt-get install munin munin-node munin-plugins-extra

Edit munin configuration file:

pico /etc/munin/munin.conf

[server.name] address 127.0.0.1 use_node_name yes

4. Configure Nginx virtual host. Dynazoom will work with this config.

pico /etc/nginx/sites-enabled/default or pico /etc/nginx/sites-enabled/your.domain.com

server { listen 443 ssl; ssl_certificate /etc/nginx/ssl/your.domain.com.crt; ssl_certificate_key /etc/nginx/ssl/your.domain.com.key; server_name your.domain.com; root "/var/cache/munin/www/"; auth_basic "Private access"; auth_basic_user_file /etc/munin/munin_htpasswd; location ^~ /munin-cgi/munin-cgi-graph/ { fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*); fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass unix:/var/run/munin/spawn-fcgi-munin-graph.sock; include fastcgi_params; } location /static/ { alias /etc/munin/static/; } }

5. Generate SSL cert

mkdir /etc/nginx/ssl openssl req -subj '/CN=your.domain.com' -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/your.domain.com.key -out /etc/nginx/ssl/your.domain.com.crt

6. Generate website password

apt-get install apache2-utils htpasswd -c /etc/munin/munin_htpasswd admin

You will be promted to enter a new password.

7. Add common modules to munin

cd /usr/share/munin/plugins wget -O pisense_ https://raw.github.com/perception101/pisense/master/pisense_ chmod a+x pisense_ ln -s /usr/share/munin/plugins/pisense_ /etc/munin/plugins/pisense_temp ln -s /usr/share/munin/plugins/pisense_ /etc/munin/plugins/pisense_clock pico /etc/munin/plugin-conf.d/munin-node

[pisense_*] user root

8. Configure AM2302 prerequisites

apt-get install git-core cd /opt/ git clone git://git.drogon.net/wiringPi cd wiringPi ./build

cd /opt/ git clone https://github.com/technion/lol_dht22 cd lol_dht22 ./configure make

9. Create plugins for munin

pico /etc/munin/plugins/DHT22-humidity

#!/bin/sh case $1 in config) cat <<'EOM' graph_title Relative humidity graph_vlabel Percent graph_category AM2302 humidity.label RH humidity.draw AREASTACK humidity.colour 3E9BFB EOM exit 0;; esac printf "humidity.value " /opt/lol_dht22/loldht 7 | grep -i "humidity" | cut -d ' ' -f3

chmod +x /etc/munin/plugins/DHT22-humidity

pico /etc/munin/plugins/DHT22-temperature

#!/bin/sh case $1 in config) cat <<'EOM' graph_title Temperature graph_vlabel Celsius graph_category AM2302 temperature.label Celsius temperature.label Temperature temperature.draw AREASTACK temperature.colour 00FF00 EOM exit 0;; esac printf "temperature.value " /opt/lol_dht22/loldht 7 | grep -i "temperature" | cut -d ' ' -f7

chmod +x /etc/munin/plugins/DHT22-temperature

pico /etc/munin/plugin-conf.d/munin-node

Add this to the end of the file:

[DHT22-*] user root

10. Enable Dynazoom for graphs

apt-get install spawn-fcgi libcgi-fast-perl

pico /etc/init.d/munin-fastcgi

#! /bin/sh ### BEGIN INIT INFO # Provides: spawn-fcgi-munin-graph # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: starts FastCGI for Munin-Graph ### END INIT INFO # -------------------------------------------------------------- # Munin-CGI-Graph Spawn-FCGI Startscript by Julien Schmidt # eMail: munin-trac at julienschmidt.com # www: http://www.julienschmidt.com # -------------------------------------------------------------- # Install: # 1. Copy this file to /etc/init.d # 2. Edit the variables below # 3. run "update-rc.d spawn-fcgi-munin-graph defaults" # -------------------------------------------------------------- # Special thanks for their help to: # Frantisek Princ # Jérôme Warnier # -------------------------------------------------------------- # Last Update: 14. February 2013 # # Please change the following variables: PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NAME=spawn-fcgi-munin-graph PID_FILE=/var/run/munin/$NAME.pid SOCK_FILE=/var/run/munin/$NAME.sock SOCK_USER=www-data FCGI_USER=www-data FCGI_GROUP=www-data FCGI_WORKERS=2 DAEMON=/usr/bin/spawn-fcgi DAEMON_OPTS="-s $SOCK_FILE -F $FCGI_WORKERS -U $SOCK_USER -u $FCGI_USER -g $FCGI_GROUP -P $PID_FILE -- /usr/lib/munin/cgi/munin-cgi-graph" # -------------------------------------------------------------- # No edits necessary beyond this line # -------------------------------------------------------------- if [ ! -x $DAEMON ]; then echo "File not found or is not executable: $DAEMON!" exit 0 fi status() { if [ ! -r $PID_FILE ]; then return 1 fi for FCGI_PID in `cat $PID_FILE`; do if [ -z "${FCGI_PID}" ]; then return 1 fi FCGI_RUNNING=`ps -p ${FCGI_PID} | grep ${FCGI_PID}` if [ -z "${FCGI_RUNNING}" ]; then return 1 fi done; return 0 } start() { if status; then echo "FCGI is already running!" exit 1 else $DAEMON $DAEMON_OPTS fi } stop () { if ! status; then echo "No PID-file at $PID_FILE found or PID not valid. Maybe not running" exit 1 fi # Kill processes for PID_RUNNING in `cat $PID_FILE`; do kill -9 $PID_RUNNING done # Remove PID-file rm -f $PID_FILE # Remove Sock-File rm -f $SOCK_FILE } case "$1" in start) echo "Starting $NAME: " start echo "... DONE" ;; stop) echo "Stopping $NAME: " stop echo "... DONE" ;; force-reload|restart) echo "Stopping $NAME: " stop echo "Starting $NAME: " start echo "... DONE" ;; status) if status; then echo "FCGI is RUNNING" else echo "FCGI is NOT RUNNING" fi ;; *) echo "Usage: $0 {start|stop|force-reload|restart|status}" exit 1 ;; esac exit 0

chmod 755 /etc/init.d/munin-fastcgi

update-rc.d munin-fastcgi defaults

/etc/init.d/munin-fastcgi start

11. Restart daemons and visit your munin site

munin-node-configure /etc/init.d/nginx restart /etc/init.d/munin-node restart

Go to https://your.domain.com/munin/

Check how to add dewpoint graph on my next post.

References: