Create SD Image 0.7.3
This page describes how the bootable Raspian-HiveTool image was created. This is for information only. The easiest and best way to install Hivetool is to download the latest image.
Contents
- 1 Bug Fixes
- 2 Feature Request
- 3 How the image was created
- 3.1 Get latest Jessie image
- 3.2 Set up Wi-Fi
- 3.3 Remove packages we don't need
- 3.4 Update, upgrade
- 3.5 Install packages we need
- 3.6 Install HiveTool software
- 3.7 Patch perl module GD::Graph
- 3.8 Web Server
- 3.9 Create SQLite database
- 3.10 phpLiteAdmin
- 3.11 Install TEMPerHUM software
- 3.12 Install Broadcom 2835 Library
- 3.13 Install i2c support
- 3.14 Install wiringPi library
- 3.15 DHT22 Temperature/Humidity Sensor
- 3.16 HX711 weight ADC
- 3.17 TLS2591 Lux Sensor
- 3.18 Add crontab entries
- 3.19 Video
- 3.20 Access Point
- 3.21 gEDA Schematic/PCB layout software
- 3.22 xrdp
- 3.23 open62541
- 3.24 Install touchscreen pop up keyboard support
- 3.25 Install Hivecontrol
- 3.26 Install Desktop Background and Icons
- 4 Write Image
Bug Fixes
- replace hx711 and dth22 code with fixed versions.
- add export LC_NUMERIC="en_US.UTF-8" to hive.sh
- don't remove python tools when removing bloatware. Keep: wolfram-engine - a scientific platform, Idle and Idle3 - python language editors
Feature Request
0.73
- add Ryans Hive Controller code
- add xrdp, open62541 packages
- add Data Acquisition Daemon (DAD) code
Dad supports battery voltage monitoring and the rain gauge.
0.72
- Done Test most recent raspbian distro Jessie (4.1 Kernel)
- Done Removal of bloatware from Raspbian (games, educational, etc.)
- Done Hivetool Support Pi & Pi2 (auto detect preferred)
- Automatic removal of erroneous data from sensors
- Done Basic navigation from webserver index.html, especially config.pl and Hivestats with download.
- Menu driven selection & configuration of sensors (gpio 2,3 for DHT22s preassigned by menu default)
- Menu driven setup of essential parameters with choices that don't crash app when saving, grey out unused.
- Done Sensor calibration provisions (gain, offset)
- Display instantaneous sensor readings from config screen with read button
- Preload & configure Apache Webserver and database, Hivetool, sensor drivers for proven sensors.
- Update local & online hivestats graphs to display lux trend pen, (use latest hivestats with enhanced autoscaling for local)
- Network / wifi support out of the box seems to work well now, handle configuration on router side with DHCP reservation as may be needed.
- Add configuration menu item for naming pi, same as hivestats name?
- Minimize need to enter Raspiconfig, can timezone and time all be handled in hivetool config?
- Done Enable i2c & serial.
How the image was created
Get latest Jessie image
Download, verify the SHA-1 checksum, unzip, burn image.
Verify the checksum:
sha1sum 2016-02-09-raspbian-jessie.zip da329713833e0785ffd94796304b7348803381db
Unzip the image and copy it to the SD card
unzip 2015-02-09-raspbian-jessie.zip dd bs=4M if=2016-02-09-raspbian-jessie.img of=/dev/mmcblk0
Boot Jessie boots directly into the window system. There is now a GUI to Menu -> Preferences->Raspberry Pi Configuration DO NOT EXPAND file system!
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 network={ ssid="dlink" key_mgmt=NONE auth_alg=OPEN }
2. Wi-Fi auto reconnect to AP
Go to /etc/ifplugd/action.d/ and copy the ifupdown file to ifupdown.org
cp /etc/ifplugd/action.d/ifupdown /etc/ifplugd/action.d/ifupdown.org
Then copy the ifupdown.sh script provided with wpa supplicant to /etc/ifplugd/action.d/
cp /etc/wpa_supplicant/ifupdown.sh /etc/ifplugd/action.d/ifupdown
http://raspberrypi.stackexchange.com/questions/4120/how-to-automatically-reconnect-wifi
Remove packages we don't need
This will make room for software without expanding the image.
sudo apt-get remove --purge penguinspuzzle scratch dillo squeak-vm squeak-plugins-scratch sonic-pi netsurf-gtk netsurf-common sudo apt-get autoremove sudo apt-get clean rm -rf /home/pi/python_games sudo rm -rf /opt/minecraft-pi
https://project.altservice.com/issues/418 NO! Don't do this if you want to use the video camera: sudo rm -rf /opt/vc
Update, upgrade
Update the GPU firmware
sudo apt-get install rpi-update sudo rpi-update
Update the package list and then upgrade the Debian packages (CPU) (includes firmware)
sudo apt-get -y update sudo apt-get upgrade
Install packages we need
sudo apt-get -y install gawk bc apache2 libusb-dev libgd-graph-perl libexpat1-dev sqlite3 sudo apt-get install dh-autoreconf libudev-dev libusb-1
Install HiveTool software
Create symbolic links to the hivetool log files:
sudo ln -s /home/hivetool/hivetool_raw.db /var/www/html sudo ln -s /home/hivetool/hive.conf /var/www/html sudo ln -s /home/hivetool/hivetool.log /var/www/html
Patch perl module GD::Graph
The Perl Module, GD::Graph needs a patch to correctly draw a graph with two y axes. Note that the target directory changes with each new perl version. This time it is 5.20.2. Copy the patched file to it's proper location:
sudo cp /home/downloads/axestype.pm /usr/local/share/perl/5.20.2/GD/Graph/
Web Server
Configure apache
- Link the cgi.load and include.load module to mods-enabled
- ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled
- ln -s /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled
- 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/apache2.conf
- In stanza <Directory /var/www/>
- change
- Options Indexes FollowSymLinks
- to
- Options Indexes FollowSymLinks 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
- Set up apache to listen on port 8080 if using port forwarding:
- sudo vi /etc/apache2/ports.conf
- add Listen 8080
- Restart Apache
sudo apachectl restart or sudo/etc/rc4.d/S02apache2 restart
Set sudo user privileges for Apache
This is necessary to allow config.pl 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/temperhum.sh, /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 config.pl 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/html so hive_stats.pl and hive_graphX.pl can access the database:
sudo ln -s /home/hivetool/hivetool_raw.db /var/www/html/
phpLiteAdmin
Install SQLite database administration tools.
sudo apt-get install php5 php5-sqlite cd /var/www/html sudo mkdir admin cd admin sudo wget https://bitbucket.org/phpliteadmin/public/downloads/phpliteAdmin_v1-9-5.zip sudo unzip phpliteAdmin_v1-9-5.zip
http://www.raspitux.de/en/using-phpliteadmin-with-raspberry-pi/#respond
sudo cp phpliteadmin.config.sample.php phpliteadmin.config.php vi phpliteadmin.config.php
change
$directory = '.';
to
$directory = '..';
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://github.com/signal11/hidapi cd hidapi sudo ./bootstrap sudo ./configure sudo make sudo make install
cd ..
#sudo git clone git://github.com/edorfaus/TEMPered #cd TEMPered
#sudo git clone https://github.com/rcrum003/TEMPered-v6-2015 #cd TEMPered-v6-2015
git clone git://github.com/mushisushi/TEMPered/
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/ld.so.conf
sudo vi /etc/ld.so.conf
So it looks like this:
include /etc/ld.so.conf.d/*.conf /usr/local/lib/arm-linux-gnueabihf/
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 http://www.airspayce.com/mikem/bcm2835/bcm2835-1.42.tar.gz tar xvf bcm2835-1.42.tar.gz cd bcm2835-1.42 ./configure make sudo make check sudo make install
http://www.airspayce.com/mikem/bcm2835/
Install i2c support
- Install i2c tools
- apt-get install i2c-tools
- run raspi-config and turn on i2c
Install wiringPi library
- get wiringPi code from github and compile it
- cd /home/downloads
- git clone git://git.drogon.net/wiringPi
- cd wiringPi
- ./build
- Test
- gpio -v
- gpio readall
http://wiringpi.com/download-and-install/
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".
- Install wiringPi libraries
- Get the DHT22 software
- cd /home/downloads
- sudo git clone https://github.com/Seeed-Studio/Grove-RaspberryPi.git
- cd Grove-RaspberryPi/Grove\ -\ Temperature\ and\ Humidity\ Sensor\ Pro
- make
- sudo cp Seeed_DHT22 /usr/local/bin
HX711 weight ADC
hx711wp
Note: The original hx711 code has been modified to use the wiringPi library and a bug fixed.
- Download the software from gitHub
- cd /home/downloads
- sudo git clone https://github.com/ggurov/hx711
- replace hx711.c with hx711wp.c and add locking.h
- compile
- gcc -o hx711wp hx711wp.c -lwiringPi
- Copy hx711 command to /usr/local/bin:
- sudo cp hx711wp /usr/local/bin/hx711
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/hive.sh # # 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/server_status.sh > /var/www/server_status.txt
Video
Install VLC media software. Note that for the camera to work, it must be enabled by running raspi-config.
apt-get install vlc
To automatically start the video streaming using Real Time Streaming Protocol to port 8554, add to /etc/rc.local
# start video stream su pi /home/hivetool/stream_video.sh
/home/hivetool/stream_video.sh should be:
raspivid -n -o - -t 0 -w 800 -h 400 -fps 24 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264
This method uses raspivid to streams video from the PiCam to vlc where is can be accessed with videoLAN, a free and open souce media player for Apple, Linux, Microsoft platforms at port 8554 using RTSP://hive.ip:8554
Access Point
apt-get install hostapd isc-dhcp-server
https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software
gEDA Schematic/PCB layout software
sudo apt-get update sudo apt-get install geda sudo apt-get install pcb sudo apt-get install gerbv sudo apt-get install zip
xrdp
sudo apt-get install xrdp
open62541
sudo git clone git://github.com/open62541/open62541 # ### sudo apt-get install git build-essential gcc pkg-config cmake python python-lxml sudo apt-get install cmake cmake-data python-lxml # enable additional features sudo apt-get install libexpat1-dev # for XML-encodingi ### already done sudo apt-get install liburcu-dev # for multithreading sudo apt-get install check # for unit tests sudo apt-get install graphviz doxygen # for documentation generation sudo cd open62541 sudo mkdir build sudo cd build sudo cmake .. sudo make # select additional features sudo ccmake .. # enter g to build and exit sudo make
Install touchscreen pop up keyboard support
sudo apt-get install matchbox
Install Hivecontrol
- Download
- Unzip in /home/hivetool2.
- Copy /home/hivetool2/www/public_html/ files to /var/www/html/hivecontrol
- Set up virtual host on port 81
- Add path to phpSQLiteadmin to database file.
hive-data.db -> /home/HiveControl-master/data/hive-data.db
This may not be right, should link to /home/hivetool2?
Install Desktop Background and Icons
Write Image
Copy the image to another computer:
1. Remove the SD card from the Pi and on another computer, copy the image to a file:
dd bs=4M if=/dev/sdb of=/home/downloads/hivetool073.img
2. Shrink the image:
http://sirlagz.net/2013/03/10/script-automatic-rpi-image-downsizer/
3. Compress the image using zip:
zip 2016-02-09-raspbian-hivetool.zip hivetool073.img