Official web site of the RaspberryPi project http://www.raspberrypi.org/
Download Raspian image and write it to SD card according to instructions. Minimum SD card size is 2 GB, but the bigger the better. At first boot lets you configure the system and expand the file system to accommodate the whole disk.
At command prompt, one can start the configurator by:
sudo raspi-config
These instructions are created according to raspbian-wheezy-2013-07-26.
Installation instructions: http://blog.rueedlinger.ch/2013/03/raspberry-pi-and-nodejs-basic-setup/. Notice, the instruction is referring to version 0.10.2. Check for the latest one. I did installed 0.10.22.
Notice also this: When you want to use ‘npm’ or ‘node’ as root with sudo you have to add the ‘-i’ option, so that the root user’s environment is acquired. For example when you want to install the package ‘forever’ globally with ‘npm’.
sudo -i npm install forever -g
Dependencies
sudo apt-get install build-essential autoreconf
Node.js module
npm install modbus
MongoDB
At the moment, MongoDB is not available as an rpm package for Raspbian. Here are instructions how to build it locally. In my system, the build process took more than 12 hours altogether. It may be convenient to run the shell in screen. Notice that 8GB or bigger memory card is needed.
sudo apt-get install git-core build-essential scons libpcre++-dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-dev git clone git://github.com/RickP/mongopi.git cd mongopi scons --release sudo scons install sudo scons -c
The last command is the clean up build and free some 0,5 GB of flash disk. Then create data directory /data/db
and start mongo:
mongod
Cube
Cube is a Node.JS program. In Debian, Node.JS binary is named as nodejs
, whereas many scripts expect node
. A symbolic solves this problem.
sudo apt-get install nodejs sudo ln -s /usr/bin/nodejs /usr/bin/node
git clone https://github.com/square/cube.git cd cube sudo apt-get install npm npm install
Install following packages: owfs owhttpd owserver
sudo apt-get install owfs owfs-fuse owhttpd owserver
Edit /etc/owfs.conf
! server: server = localhost:4304 server: usb = all mountpoint = /mnt/1wire allow_other http: port = 2121 ftp: port = 2120
In order to have 1-wire sensors available in file system, create mount point directory /mnt/1wire
and add following row at the end of d_start
section in /etc/init.d/owserver
to have the file system mounted at boot.
/usr/bin/owfs -C -uall -m /mnt/1wire --allow_other
Install package: rrdtool
.
A simple command line script example owread.sh
how to read 1-wire readings to RRD database
#!/bin/bash
#
# Store 1-wire temperature sensor readings into RRD database.
# This script is expected to be executed by crond once a minute.
#
# Jaakko Ala-Paavola
# 2013-01-13
SENSOR[0]=10.351B2A020800
SENSOR[1]=10.84082A020800
OWPATH=/mnt/1wire
RRD=temperature.rrd
TMP=/run
BACKUP=/opt/HA
# If volatile RRD Database does not exists, then use backup copy
# If backup copy does not exists, then create a new database
if [ ! -f $TMP/$RRD ]
then
if [ -f $BACKUP/$RRD ]
then
cp $BACKUP/$RRD $TMP/$RRD
else
/usr/bin/rrdtool create $TMP/$RRD –step 60 \
DS:temp1:GAUGE:300:-50:120 \
DS:temp2:GAUGE:300:-50:120 \
RRA:AVERAGE:0.5:1:1440 \
RRA:AVERAGE:0.5:10:1008 \
RRA:AVERAGE:0.5:60:720 \
RRA:MIN:0.5:1440:365 \
RRA:MAX:0.5:1440:365 \
RRA:AVERAGE:0.5:1440:365
fi
/bin/chmod a+rw $TMP/$RRD
fi
# Collect 1wire data and update RRD database
# If sensor does not exists, replace the value with U
as Unknown.
for sensor in ${SENSOR[@]};
do
DATA+=“:”
if [ -f $OWPATH/$sensor/temperature ]
then
DATA+=`cat $OWPATH/$sensor/temperature | sed -e 's/^[ \t]*'`
else
DATA+=“U”
fi
done
/usr/bin/rrdtool update $TMP/$RRD N$DATA
exit 0
Make the crond
to run the above script owread.sh
once a minute and make backup copy of the database once an hour. Edit crond configuration with command sudo crontab -e
0 * * * * cp /run/temperature.rrd /opt/HA/temperature.rrd
* * * * * /opt/HA/owread.sh</del>