Install Hivetool on the A+ Pi
For a system overview and software flow diagrams see the Software page.
Contents
- 1 Get the latest operating system image
- 2 Copy the image to the SD card
- 3 Boot Pi, expand file system, set locale, timezone and host name
- 4 Enable Wi-Fi
- 5 Install required packages
- 6 Install Hivetool programs
- 7 Set the ethernet parameters and DNS servers
- 8 Configure SQL database
- 9 Configure apache
- 10 Install the HX711 scale software
- 11 Install the TEMPerHUM software
- 12 Edit the cron table
- 13 Set or change hostname
Get the latest operating system image
Raspbian Wheezy is currently used, although others should work.
The latest image available from http://www.raspberrypi.org/downloads is: 2014-09-09-wheezy-raspbian.zip
- Download the zipped image (approximately 900 MB)
- Calculate the SHA-1 checksum. On Linux, the command line is:
- sha1sum 2014-09-09-wheezy-raspbian.zip
- This will print out a long hex number which should match the "SHA-1 Checksum" line for the SD image you have downloaded
- Extract (unzip) the image. On Linux the command line is:
- unzip 2014-09-09-wheezy-raspbian.zip
When unzipped, 2014-09-09-wheezy-raspbian.img is about 3.3 GB.
Copy the image to the SD card
Make SD card on Unix/Linux system
Detailed instructions: http://elinux.org/RPi_Easy_SD_Card_Setup#Flashing_the_SD_Card_using_Linux_.28including_on_a_Pi.21.29
- Determine the device for the card reader (/dev/mmcblk0 on my laptop).
- Copy the image to the SD card:
- dd bs=4M if=2014-09-09-wheezy-raspbian.img of=/dev/mmcblk0
Make SD card on Windows system
raspberrypi.org recommends using: http://sourceforge.net/projects/win32diskimager/ But be careful. REMOVE any other USB memory devices from your computer. Detailed instructions: http://elinux.org/RPi_Easy_SD_Card_Setup#Flashing_the_SD_Card_using_Windows
Boot Pi, expand file system, set locale, timezone and host name
Access to the Pi's console is needed. A USB keyboard and either a HDMI or composite video monitor can be used. I prefer to use a USB to TTL Serial conversion cable that is connected to pins 4,6,8,10 on P1. The other end is plugged into a USB port on my laptop. A terminal emulator is required(on Linux I use MiniCom, on Microsoft Windows hyperterm or PuTTY can be used.) The advantage of connecting this way is the command lines can be cut from the instructions below and pasted into the terminal.
- Boot Pi and login
- Expand file system, set locale, timezone and hostname using the Raspberry Pi Software Configuration Tool (raspi-config)
- sudo raspi-config
- Reboot the Pi
1 Expand Filesystem Ensures that all of the SD card s 4 Internationalisation Options Set up language and regional sett I1 Change Locale Set up language and regional sett (See Note 1) I2 Change Timezone Set up timezone to match your loc 8 Advanced Options Configure advanced settings A2 Hostname Set the visible name for this Pi (See Note 2)
Note 1: down arrow to: [*] en_GB.UTF-8 UTF-8 Press the space bar to uncheck. Down arrow to: [ ] en_US.UTF-8 UTF-8 and press the space bar to check. Press Tab to move to [OK] and press Enter. Set the default locale for the system environment to en_US.UTF-8 UTF-8 and select OK. This will take a few minutes.
Note 2: Set the hostname to what you want to call your hive.
Note 3: When you exit the Raspberry Pi Software Configuration Tool after expanding the file system, it will ask you if you want to reboot. You will need to reboot for the expanded file system to take effect, so reboot now.
Enable Wi-Fi
Edit /etc/wpa_supplicant/wpa_supplicant.conf
network={ ssid="dlink" key_mgmt=NONE auth_alg=OPEN }
reboot
Install required packages
Note the obvious:
1. The Pi must be connected to the internet to update or add packages!
2. Always update before trying to add packages
sudo apt-get -y update
Note: Running apt-get update does not fix the shellshock bash vulnerability. Test by running: env x='() { :;}; echo vulnerable' bash -c "echo this is a test" If it prints "vulnerable", you should also run: sudo apt-get -y dist-upgrade
- Get gawk, bc for shell scripts, apache for webserver, libusb to read TEMPerHUMs, graphics library for GD::Graph, expat library for XML::Simple, SQLite for local database.
- sudo apt-get -y install gawk bc apache2 libusb-dev libgd-graph-perl libexpat1-dev sqlite3
- Now get Graphics for perl and SQLite.
- sudo cpan GD::Text GD::Graph Date::Format XML::Simple DBD::SQLite
Install Hivetool programs
- Make two directories: /home/hivetool and /home/downloads.
- sudo mkdir /home/hivetool /home/downloads
- Get the perl code, the shtml files and the patched pm and copy it to the perl module directory
- cd /home/downloads
- sudo git clone https://github.com/hivetools/perl
- sudo cp perl/axestype.pm /usr/local/share/perl/5.14.2/GD/Graph/axestype.pm
- sudo cp perl/*.pl perl/*.shtml /var/www/
- Get the hivetool bash scripts and copy them to their proper directory
- sudo git clone https://github.com/hivetools/bash
- sudo cp bash/*.sh /home/hivetool/
- get the crontab file
- sudo git clone https://github.com/hivetools/cron
Done installing hivetool files
Set the ethernet parameters and DNS servers
If you do not intend to open a hole in the firewall to allow public access to the web server, skip this step and let the Pi obtain an IP from the DHCP server in the router. Even if you configure port forwarding in the router (for WAN access to the web server, or to secure shell (SSH) in) a static IP may not be required.
To set a static IP if needed for port forwarding through the firewall.
- set static ip for port forwarding
- sudo vi /etc/network/interfaces:
- iface eth0 inet dhcp
- iface eth0 inet static
- address 192.168.254.31
- netmask 255.255.255.0
- gateway 192.168.254.254
- Set the dns Servers
- /etc/network/interfaces
- /etc/dhcp/dhclient.conf
Configure SQL database
- Running an SQL database locally on the Pi is optional. However, it is necessary to run the latest graphing software.
The code supports both MySQL and SQLite. SQLite is recommended for Pi installations.
SQLite
MySQL
This configuration was taken from ducky-pond's how to install and optimize mysql on raspberry pi
- sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
- sudo cp /usr/share/doc/mysql-server-5.5/examples/my-small.cnf /etc/mysql/my.cnf
Configure apache
- Set up apache to listen on port 8080 if using port forwarding:
- sudo vi /etc/apache2/ports.conf
- add Listen 8080
- 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
- add Includes and +ExecCGI to Options:
- sudo vi /etc/apache2/sites-enabled/000-default
- In stanza <Directory /var/www/>
- change
- Options Indexes FollowSymLinks MultiViews
- to
- Options Indexes FollowSymLinks MultiViews Includes +ExecCGI
- Add index.shtml to DirectoryIndex:
- sudo vi /etc/apache2/mods-enabled/dir.conf
- Change
- DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
- to
- DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml
- Copy the include.load module to enable it
- sudo cp /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled/
- Restart Apache
sudo apachectl restart or sudo/etc/rc4.d/S02apache2 restart
Install the HX711 scale software
- Download the software from gitHub
- cd /home/downloads
- sudo git clone https://github.com/ggurov/hx711
- Change the GPIO pins in hx711.c from 30 and 31
- cd hx711
- vi hx711.c
- Select the proper GPIO pins on lines 13 and 14:
- If using P5 on the Model A or B (NOT A+ or B+), change to 28 and 30. This way they are all on one side of P5:
- #define CLOCK_PIN 30
- #define DATA_PIN 28
- If using P1, pick two unused GPIO pins such as:
- #define CLOCK_PIN 24
- #define DATA_PIN 23
- If using P5 on the Model A or B (NOT A+ or B+), change to 28 and 30. This way they are all on one side of P5:
- Compile:
- gcc -o hx711 hx711.c gb_common.o
- Copy hx711 command to /usr/local/bin:
- sudo cp hx711 /usr/local/bin
Install the TEMPerHUM software
tempered can be installed with just the binaries (quicker) or from source (you have the source code to fix bugs)
Install binaries
- get the binaries and libraries
- cd /home/downloads
- sudo git clone https://github.com/hivetools/tempered_pi
- copy the files to their directories
- cd tempered_pi
- sudo cp hid-query tempered /usr/local/bin/
- sudo cp libtempered-util.so libtempered-util.so.0 libtempered.so libtempered.so.0 /usr/lib/arm-linux-gnueabihf/
- sudo cp libhidapi-hidraw.so.0 /usr/local/lib/
- sudo cp tempered-util.h tempered.h /usr/local/include/
- run ldconfig (or reboot) to load the new library
- sudo ldconfig
- Test by plugging in a TEMPerHUM and running:
- sudo tempered
- It should return something like:
- /dev/hidraw1 0: temperature 20.69 °C, relative humidity 46.0%, dew point 8.6 °C
Install from source
Install from source: http://hivetool.net/node/59
Edit the cron table
The scripts that read the sensors, log the data, and send it off site (if enabled) are run periodically by the scheduler, cron. Cron setup can be done from the command line with crontab. For cron setup and examples, see Sample contab entries
sudo crontab -e
Set or change hostname
If the hostname was not set above using raspi-config, set the hostname:
- Set the local host name
- sudo vi /etc/hostname
- and edit the local host name here, too:
- sudo vi /etc/hosts