Automatically starting OpenHAB

In the previous post I described how to install OpenHAB on the Raspberry PI. Today I’ll show how to make openHAB start automatically when the PI boots.
First we need to add a file for the script that will be used to controlling openHAB. We’ll do that using nano text editor:

sudo /etc/init.d/openhab

This will create a new file called openhab and open the empty file in nano.

Copy and paste the following script into the file in nano:


#! /bin/sh
### BEGIN INIT INFO
# Provides: openhab
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: OpenHAB Daemon
### END INIT INFO

# Author: Thomas Brettinger
# Do NOT "set -e"
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin

DESC="Open Home Automation Bus Daemon"
NAME=openhab
DAEMON=/usr/bin/java
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
ECLIPSEHOME="/opt/openhab";
HTTPPORT=8080
HTTPSPORT=8443
TELNETPORT=5555
# be sure you are adopting the user to your local OH user
RUN_AS=<your_user_here>

# get path to equinox jar inside $eclipsehome folder
cp=$(find $ECLIPSEHOME/server -name "org.eclipse.equinox.launcher_*.jar" | sort | tail -1);

DAEMON_ARGS="-Dosgi.clean=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djetty.port=$HTTPPORT -Djetty.port.ssl=$HTTPSPORT -Djetty.home=$ECLIPSEHOME -Dlogback.configurationFile=$ECLIPSEHOME/configurations/logback.xml -Dfelix.fileinstall.dir=$ECLIPSEHOME/addons -Djava.library.path=$ECLIPSEHOME/lib -Djava.security.auth.login.config=$ECLIPSEHOME/etc/login.conf -Dorg.quartz.properties=$ECLIPSEHOME/etc/quartz.properties -Djava.awt.headless=true -jar $cp -console ${TELNETPORT}"

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present and status_of_proc is working.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --chdir $ECLIPSEHOME --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --chdir $ECLIPSEHOME --exec $DAEMON -- $DAEMON_ARGS \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
return 0
}

#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
do_stop
sleep 1
do_start
return 0
}

case "$1" in
start)
log_daemon_msg "Starting $DESC"
do_start
case "$?" in
0|1) log_end_msg 0 ;;
2) log_end_msg 1 ;;
esac
;;
stop)
log_daemon_msg "Stopping $DESC"
do_stop
case "$?" in
0|1) log_end_msg 0 ;;
2) log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
:

You should change the value of RUN_AS to the name of your user, then save the file and exit nano.
I know, it’s a lot of text in there. I have also stolen it from the OpenHAB repository on github :)

We also have to make that file executable. You’ll do that by chmod:

sudo chmod a+x /etc/init.d/openhab

Last, but not least, you have to register it to run as a daemon:

sudo rc-update add openhab defaults

Now OpenHab will start automatically when you boot up your PI.

If you need to start or stop OpenHAB manually you can do it by using the service command on the Raspberry

This will stop OpenHAB:

sudo service openhab stop

This will start OpenHAB:

sudo service openhab start

To restart OpenHAB, issue this command:

sudo service openhab restart

And to check the status of the OpenHAB daemon:

sudo service openhab status

openHAB on Raspberry PI

In my previous post about unboxing and installing Raspberry PI I mentioned that I should develop my own application for controlling miscellaneous devices at my home. Since then I have realized that I don’t really have enough time to design and implement such an application, so I have reconsidered and chosen to go with openHAB instead.

The rest of this post will describe how to setup the openHAB server on Raspberry PI with the demo application. Let’s get started.

Update Raspberry PI

First, log on to the PI. I use SSH from my laptop with the following command:

ssh pi@raspberrypi

You will be promted for the password, so fill it in and hit enter. This will give you remote access to the terminal of the Raspberry PI.

PI Prompt

Now, the first things we should do is make sure that the PI’s packages and firmware is up to date:

sudo apt-get update && sudo apt-get update
sudo rpi-update

You might be informed that a reboot is required for the updates to take affect. I you get such a notification, reboot the PI:

sudo reboot

Wait a while and then log in using SSH again.

Download packages

Next thing is to download all the packages we need. I will create a temp folder to download all the packages to:

mkdir temp

Move into that directory and start the downloads:

cd temp
wget https://bintray.com/artifact/download/openhab/bin/distribution-1.7.0-runtime.zip
wget https://bintray.com/artifact/download/openhab/bin/distribution-1.7.0-demo-configuration.zip

Since we are only installing the demo application at this point we only need the runtime and the demo-configuration zip-files.

Installation

Next we will create the installation directory. I’m using /opt as installation root:

sudo mkdir /opt/openhab

Now extract the downloaded zipfiles to the installation directory:

sudo unzip distribution-1.7.0-runtime.zip -d /opt/openhab
sudo unzip distribution-1.7.0-demo-configuration.zip -d /opt/openhab

Configuration

It’s time to configure openHAB. We won’t really do anything, but use the default configuration shipped with openHAB. To enable the default configuration we need to copy a file:

cd /opt/openhab
sudo cp configurations/openhab_default.cfg configurations/openhab.cfg

Start openHAB

Starting openHAB is as simple as executing a shellscript:

sudo ./start.sh

Access demo application

Now it is time to verify the installation. Open a browser on any device connected to the same network as the PI. Then go to:
http://raspberrypi:8080/openhab.app?sitemap=demo

Below is a couple of screenshots of the UI.

Mobile

PC

Raspberry PI

Har funderat lite på att smarta till hemmet ett tag och nu tänkte jag sätta igång. Som ett första steg var jag och köpte en Raspberry PI 2 model B med nödvändiga tillbehör idag.

image

Unboxing
Den innehåller inte särskilt mycket. Bara ett litet kretskort med ett gäng komponenter på förpackat i en antistatpåse och en liten instruktionsbok.

För att kunna köra hallonpajen köpte jag även ett micro SD-kort och en mobilladdare.

image

Tanken med mitt lilla projekt är att jag ska utveckla min egen applikation för att kunna styra allehanda ting här hemma, samtidigt som jag bloggar om det.

Håll utkik efter kommande uppdateringar!

Äntligen en Nexus One!

Så var det dags att uppgradera telefonen en aning. Från min gamla Nokia 6500 till en Google Nexus One. Ett litet steg framåt i utvecklingen 😀

Jag beställde den i söndags från www.international-orders.com och igår var den framme hemma hos mig. Snabba ryck minsann! Tyvärr var jag inte hemma vid leveransen så nu sitter jag och väntar på att den ska anlända till jobbet. Gissar att jag får anledning till att återkomma om den.

I väntan på min egen recension finns lite om telefonen här:

http://www.mobil.se/articles/Google-Nexus-One-testad-1.307646.html



Mobil sajt

Tack vare WordPress Mobile Pack ska det nu funka att läsa sajten i mobilen också. Tror väl inte att det blir överdrivet många mobila besökare direkt men tänkte att det kan vara kul att testa hur det funkar. Dessutom tror jag det är något som kan vara användbart på jobbet där några av sajterna ligger i WP men inte har någon växling för mobila enheter… än. Hur som helst verkar det vara ett väldigt smidigt plugin, nu är det bara att fixa ett bra tema också :)

Dags för lite förändringar

Nu har min sida sett likadan ut väldigt länge, närmare bestämt sen jag var i  Indien 2005, så jag tycker det är dags för lite förändringar här. Min gamla sida var hemmasnickrad i PHP men eftersom jag inte riktigt har tid att färdigställa all funktionalitet och så har jag migrerat sajten till WordPress med en helt ny design baserad på ett theme som heter Arjuna X. Det kommer underlätta vidare utveckling av sidan och min förhoppning är att jag kommer skriva lite oftare också 😉

Kommentera gärna vad ni tycker om det nya utseendet.

Den sista färden…

Eller ja, inte den sista men åtminstone den sista i Indien. För den här gången!

Min hemresa började på lördagseftermiddagen i Bangalore. Åkte ut till flygplatsen och inväntade mitt flyg till Delhi. Efter några timmars väntan (4 närmare bestämt) på flygplatsen klev jag på planet, en Airbus 320. Den flygningen tog två och en halv timme. Under inflygningen över Delhi så såg jag verkligen hur stor staden är. Det går inte att beskriva men under nästan en halvtimmes flygning så såg man bara ljus överallt. Ljus från gatlyktor, bilar, hus och alla Delhis små eldar.

På flygplatsen i Delhi fick jag ta en buss mellan inrikes och utrikesterminalen. Åkte i en halvtimme inne på flygplatsområdet för att komma fram!
Väl framme vid utrikesterminalen började nästa långa väntan. Var där vid halv elva och incheckningen var inte förrän klockan tre på natten. I incheckningshallen fanns varken något att göra eller knappt några stolar att sitta på. Informationsskyltar och liknande var av indiskt slag, dvs. nästan obefintliga och ibland sprakade det något i stort sett ohörbart ur en gammal högtalare.
Klockan tre checkade jag in och fick gå igenom immigrationskontrollen till avgångshallen för nästa väntan. Där fanns det några tax-freebutiker och ett par ställen att äta och dricka på. Däremot så var det väldigt dyrt där! Tog en öl (en liten) för 150rs vilket är mer än dubbelt så mycket som en dubbelt så stor kostade någon annanstans i Indien!

Efter ett par timmars väntan där (incheckningen är tre timmar innan avgång i Indien) så fick jag gå igenom säkerhetskontrollen till gaten bara för att vänta ytterligare nån timme där.
Slutligen då klockan sex på morgonen så fick jag kliva på planet. Då hade jag varit vaken nästan ett dygn.
Somnade till lite men vaknade då planet taxade ut till start, nästan ett dygn senare skulle det visa sig att den kvarten blev min enda sömn under hela hemresan.

Efter drygt sex timmars flygning landade jag i Kiev för att byta plan. Eller rättare sagt för att vänta i fem timmar på att hoppa på planet till Sverige. Flygplatsen i Kiev är modern men ganska liten. Den består av en ny taxfreeshop, ett café och en pub så vad gör man då när man väntar? Jo, man tar ett par öl såklart. Åtminstone när taxfreen håller ungefär samma prisnivå som i en svensk butik.
Flygningen till Sverige från Kiev tar inte mer än två och en halv timme så det var en ganska lindrig sista etapp. Under inflygningen över Stockholm så slog det mig att det är en väldigt liten stad… åtminstone så kändes det så efter att ha sett städer som är drygt femton gånger så stora.

På Arlanda tog det mig ungefär tio minuter att komma från planet till en väntande mamma i ankomsthallen. Skönt att bara ha handbagage när man reser :)
Sen åkte vi hem till henne där jag fick en välbehövlig dusch och lite svensk mat i form av julskinksmacka till förrätt och helstekt biff med potatisgratäng. Därefter bar det av till syster för att visa lite foton och snacka skit en stund innan det var dags att sova en stund. Då hade jag varit vaken i 42 timmar, minus den där kvarten jag sov i Delhi.

Sen igår då så tog jag bussen in till Stockholm för att ta tåget hem till Örebro. Då hade jag redan börjat längta tillbaka till Indien!

Vid halv fem klev jag innanför ytterdörren här hemma. Vilket välkomnande jag fick!!!

Hade tänkt mig en lugn skön kväll med nåt gott framför tv:n men vad möts jag av? Jo, det första jag ser är att bokhyllan är utdragen från väggen. Kliver in i hallen och ser att tv:n är borta! Och stereon!
Jag har haft inbrott!!!

Släpper bara alla saker där jag står och tar ett varv i lägenheten för att kolla. Är det verkligen sant? Jo, det är det.. jag bara skakar av ilska!
Köksfönstret är uppbrutet. Tv, stereo, dvd och min sparbössa i form av ett sånt där rör som en del whiskyflaskor ligger i är borta. I övrigt ser allt helt orört ut.

Jag ringer till polisen och talar om att jag haft inbrott och det kommer hit två poliser, en manlig och en kvinnlig, för att titta. Dom tittar på fönstret, konstaterar att det inte är alla som har en motorcykel i köket och frågar vad jag sett som är borta. Sen kommer den manlige polisen med kommentarer som: ”Båda fönsterhakarna borde inte gått av när dom bara brutit på ett ställe.”, ”Konstigt att dom inte tagit motorcykeln.”, ”Datorn är kvar.. det är lite konstigt.”.

Nu har jag börjat ladda upp alla bilder här men det tar en stund. Jag återkommer med en sammanfattning av Indien-resan också så småningom.

Matorgie

Om ungefar tva timmar aker jag ut till flygplatsen har i Bangalore sa man kan val saga att det ar slut pa det roliga nu. Bara ett drygt dygns flygande och vantande kvar nu i princip. Fast det kanske ar kul pa indiska flygplatser, vad vet jag…

Igar sa at jag mig igenom Cubbon Park. Det ar en jattepark mitt i stan har och som i hela Indien sa star det folk och saljer diverse atbara saker. I Cubbon Park ar det inte sa mycket mat utan mera snacks som galler sa jag bestamde mig for att ga genom hela parken och prova det jag hittade. Det blev bland annat grillade majskolvar med gron chiliolja (starkt), en massa frukter med honung och salt & peppar, rostade notter, varmt puffat ris…
Var ganska matt innan jag tagit mig igenom parken.

Sen var jag och shoppade lite smasaker igar. Kopte bland annat en CD med lite indisk popmusik. :)

Det ar inte sa hett har i Bangalore. Staden ligger nastan 1000 meter over havet sa det ar kanske 25 grader i skuggan nu, dock sa steker solen pa ganska bra. Sag pa TV att det inte skulle vara mer an 16 grader i Delhi idag heller sa det ar nog tur att jag har langbyxor med mig. Det blir en gradvis tillvanjning till den svenska vintern, fran narmare 40 grader i Kerala via 25 har, 16 i Delhi och sen kylan hemma…

Civil asia

Nu har jag kommit till Bangalore. Det kanns som ett valdigt civiliserat asien. Visst, det ar massor av trafik, skomakarna sitter pa trottoaren, fruktstanden finns dar, det tutas konstant, det finns kor osv. men allt finns dar pa ett civiliserat satt.

I forrgar lyckades jag branna axlarna och ryggen. Det var alldeles for skont i vagorna nere i Varkala sa jag glomde av tiden en aning. Att jag hade smorjt mig med spf 8 hjalpte inget vidare nar jag lag i vattnet som en strandad sal fran kalla norden. Idag svider det inte sa mycket men igar nar jag gick omkring i solgasset mitt i Kollam med ryggsacken pa mig kandes det vill jag lova.

Somnade som en stock pa taget igar och imorse nar jag vaknade var det folk i dom andra ”sangarna”. Pratade med ett par fran Mauritzius. Mannen var kock och nanting i styrelsen for ”Mauritzius chef association” och han tyckte jag skulle skicka mail till honom nar jag kom hem. ”You might end up in Mauritzius” som han sa :)

Nu har jag bokat flyget till Delhi pa lordag sa det borjar narma sig slutet pa resan tyvarr. Bast att ga ut i det indiska myllret en svang.