Create SD Image Version 0.71

From HiveTool
Jump to: navigation, search

The 0.7.1-rc2 image is available for download from Google Drive. See 1. Download the Image below for the link. Section 4. Create New Image details the steps used to create the image. To request new features, add them to the Create SD Image Version 0.8 page.

Download the Image

The Wheezy-Hivetool-2015-05-05 image (1 Gig) is available on Google Drive:

Feature Request

  1. Most recent raspbian distro
  2. Removal of bloatware from Raspbian (games, educational, etc.)
  3. Hivetool Support Pi & Pi2 (auto detect preferred)
  4. Automatic removal of erroneous data from sensors
  5. Basic navigation from webserver index.html, especially and Hivestats with download.
  6. Menu driven selection & configuration of sensors (gpio 2,3 for DHT22s preassigned by menu default)
  7. Menu driven setup of essential parameters with choices that don't crash app when saving, grey out unused.
  8. Sensor calibration provisions (gain, offset)
  9. Display instantaneous sensor readings from config screen with read button
  10. Preload & configure Apache Webserver and database, Hivetool, sensor drivers for proven sensors.
  11. Update local & online hivestats graphs to display lux trend pen, (use latest hivestats with enhanced autoscaling for local)
  12. Network / wifi support out of the box seems to work well now, handle configuration on router side with DHCP reservation as may be needed.
  13. Add configuration menu item for naming pi, same as hivestats name?
  14. Minimize need to enter Raspiconfig, can timezone and time all be handled in hivetool config?
  15. Enable i2c & serial.

Bug Fixes

  1. Add timeout to crontab so can't hang.
  2. Fix HX711 code addressing and timing to work on Pi2.
  3. Fix tempered code to work with new TEMPerHUMs.
  4. Improve Wi-Fi auto reconnect.

Create New Image

Get latest Wheezy image

  1. Download, unzip, burn image.
  2. Boot
  3. DO NOT EXPAND file syatem!

Set up Wi-Fi

1. Add your network information to /etc/wpa_supplicant/wpa_supplicant.conf. For an unencrypted open network with an ESSID of dlink:

vi /etc/wpa_supplicant/wpa_supplicant.conf

2. Wi-Fi auto reconnect to AP

Go to /etc/ifplugd/action.d/ and copy the ifupdown file to

cp /etc/ifplugd/action.d/ifupdown /etc/ifplugd/action.d/

Then copy the script provided with wpa supplicant to /etc/ifplugd/action.d/

cp /etc/wpa_supplicant/  /etc/ifplugd/action.d/ifupdown

Remove packages we don't need

This will make room for software without expanding the image.

sudo apt-get remove --purge wolfram-engine penguinspuzzle scratch dillo squeak-vm squeak-plugins-scratch sonic-pi idle idle3 netsurf-gtk netsurf-common
sudo apt-get autoremove
sudo apt-get clean
rm -rf /home/pi/python_games
sudo rm -rf /opt/minecraft-pi NO! Don't do this if you want to use the video camera: sudo rm -rf /opt/vc

Install packages we need

sudo apt-get -y update
sudo apt-get -y install gawk bc apache2 libusb-dev libgd-graph-perl libexpat1-dev sqlite3
sudo cpan GD::Text GD::Graph Date::Format XML::Simple DBI DBD::SQLite

Patch perl module GD::Graph

The Perl Module, GD::Graph needs a patch to correctly draw a graph with two y axes.


Web Server

Configure apache

  1. Add .pl to AddHandler cgi-script
    sudo vi /etc/apache2/mods-enabled/mime.conf
    uncomment #AddHandler cgi-script .cgi (around line 219) and add .pl so it looks like:
    AddHandler cgi-script .cgi .pl
  2. add Includes and +ExecCGI to Options:
    sudo vi /etc/apache2/sites-enabled/000-default
    In stanza <Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    Options Indexes FollowSymLinks MultiViews Includes +ExecCGI
  3. Add index.shtml to DirectoryIndex:
    sudo vi /etc/apache2/mods-enabled/dir.conf
    DirectoryIndex index.html index.cgi index.php index.xhtml index.htm
    DirectoryIndex index.html index.cgi index.php index.xhtml index.htm index.shtml
  4. Copy the include.load module to enable it
    sudo cp /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled/
  5. Set up apache to listen on port 8080 if using port forwarding:
    sudo vi /etc/apache2/ports.conf
    add Listen 8080
  6. Restart Apache
sudo apachectl restart   or      sudo/etc/rc4.d/S02apache2 restart

Set sudo user privileges for Apache

This is necessary to allow to read the sensors. Run visudo to edit the sudo config file:

sudo visudo

and insert this line in the "User privilege specification" section:

www-data ALL=NOPASSWD: /usr/local/bin/2591, /usr/bin/nice, /home/hivetool/, /usr/local/bin/hx711, /usr/local/bin/Seeed_DHT22

Create SQLite database

cd /home/hivetool
sqlite3 hivetool_raw.db
sqlite> .read create_hivetool_sqlite.sql
sqlite> .quit

Make it writable or will fail to save to the database.

sudo chmod a+w /home/hivetool/hivetool_raw.db
sudo chmod a+w /home/hivetool

Create a symbolic link to /home/hivetool/hivetool_raw.db from /var/www so and can access the database:

sudo ln -s /home/hivetool/hivetool_raw.db /var/www


Install SQLite database administration tools.

apt-get install php5 php5-sqlite
cd /var/www
mkdir admin
cd admin

Install TEMPerHUM software

sudo apt-get update
sudo apt-get install dh-autoreconf libudev-dev libusb-1.0-0-dev cmake-curses-gui
cd /home/downloads
sudo git clone git://
cd hidapi
sudo ./bootstrap
sudo ./configure
sudo make
sudo make install
cd ..
#sudo git clone git://
#cd TEMPered
sudo git clone
cd TEMPered-v6-2015
sudo ccmake .

Then the sub commands: "c" to configure then "g" to save and go

sudo make
sudo make install

Add /usr/local/lib/arm-linux-gnueabihf/ to /etc/

sudo vi /etc/

So it looks like this:

include /etc/*.conf

Run ldconfig to pick up the new libraries

sudo ldconfig

Install Broadcom 2835 Library

Download and install the bcm2835 library:

cd /home/downloads
curl -o bcm2835-1.42.tar.gz
tar xvf bcm2835-1.42.tar.gz
cd bcm2835-1.42
sudo make check
sudo make install

Install i2c support

  1. Install i2c tools
    apt-get install i2c-tools
  2. add i2c-dev to /etc/modules
  3. run raspi-config and turn on i2c

Install wiringPi library

  1. get wiringPi code from github and compile it
    cd /home/downloads
    git clone git://
    cd wiringPi
  2. Test
    gpio -v
    gpio readall

DHT22 Temperature/Humidity Sensor

Groove Seeed - DHT22 with modified code. Note that the code has been modified to return the temperature and humidity in floating point instead of having to divide it by 10, and a few other "improvements".

  1. Install wiringPi libraries
  2. Get the DHT22 software
    cd /home/downloads
    sudo git clone
    cd Grove-RaspberryPi/Grove\ -\ Temperature\ and\ Humidity\ Sensor\ Pro
    sudo cp Seeed_DHT22 /usr/local/bin

HX711 weight ADC


Note: The original hx711 code has been modified to use the wiringPi library and a bug fixed.

  1. Download the software from gitHub
    cd /home/downloads
    sudo git clone
  2. replace hx711.c with hx711wp.c and add locking.h
  3. compile
    gcc -o hx711wp hx711wp.c -lwiringPi
  4. Copy hx711 command to /usr/local/bin:
    sudo cp hx711 /usr/local/bin

TLS2591 Lux Sensor

2591 Adafruit with modified code.

-rw-r--r-- 1 root root 10439 Aug  3 01:36 2591a.cpp
-rw-r--r-- 1 root root  3303 Aug  3 01:36 2591a.h
-rw-r--r-- 1 root root  1509 Aug  3 01:36 2591_pi_2.cpp
gcc 2591_pi_2.cpp 2591a.cpp -lwiringPi -o 2591 
cp 2591 /usr/local/bin

Add crontab entries

Edit crontab:

sudo crontab -e

Add to crontab:

# Check hive instruments every 5 minutes. Kill process after 3 1/2 minutes.
0,5,10,15,20,25,30,35,40,45,50,55 * * * * timeout -s KILL 3.5m /home/hivetool/
# Check the server status. Kill process after 1 minute.
0,5,10,15,20,25,30,35,40,45,50,55 * * * * timeout -s KILL 1m /home/hivetool/ > /var/www/server_status.txt


Install VLC media software. Note that for the camera to work, it must be enabled by running raspi-config.

apt-get install vlc

Start the video streaming using Real Time Streaming Protocol to port 8554:

raspivid -o - -t 0 -w 800 -h 400 -fps 24 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264 &

Access Point

apt-get install hostapd isc-dhcp-server

Write Image

Copy the image to another computer:

dd bs=4M count=1000 of=2015-05-05-raspbian-hivetool.img if=/dev/mmcblk0

Compress the image using zip:

zip 2015-05-05-raspbian-hivetool.img