Aide-mémoire installation FHEM sur ibox (cubieboard2)

Mes notes sur l’installation de FHEM à partir de zéro sur mon ibox sous Debian (cubieboard2)

Cubie

Cubie

Prérequis

environnement de développement (gcc, make, etc.)

# apt-get install build-essential

librairies perl

J’ai décidé d’utiliser apt-get plutôt que CPAN, autant que possible 1

# apt-get install libencode-locale-perl libfile-listing-perl  libhtml-parser-perl  libhtml-tagset-perl  libhtml-tree-perl libhttp-cookies-perl  libhttp-date-perl  libhttp-message-perl  libhttp-negotiate-perl  liblwp-mediatypes-perl  liblwp-protocol-https-perl  libnet-http-perl  liburi-perl  libwww-robotrules-perl

Pas besoin d’installer libwww-perl qui s’est installé automatiquement
# apt-get install libdevice-serialport-perl

Installation et mise à jour

# wget http://fhem.de/fhem-5.5.deb
# dpkg -i fhem-5.5.de

Dans l’interface graphique ( http://cubie:8084 ) taper :
notice view update-20130127-001
notice confirm update-20130127-001
update
shutdown restart

Paramétrage

Logs

La distrib. Linux que j’utilise met en mémoire /var/log et le flushe sur la SD une fois par jour, pour économiser la carte SD. Je vais utiliser ce même principe pour les logs FHEM en les mettant toutes dans /var/log/fhem :
# mkdir /var/log/fhem
# chown fhem /var/log/fhem
# chmod 740 /var/log/fhem

Remplacer toutes les occurences de ./log/ par /var/log/fhem/ dans le fichier de config de FHEM (/opt/fhem/fhem.cfg) : ainsi les logs seront dans /var/log/fhem et pas dans /opt/fhem

Démarrage automatique au boot

Pour que FHEM se lance correctement lors de la séquence de boot, il faut modifier /etc/init.d/fhem . Comme les logs utilisent le ramdisk, il faut rajouter la dépendance au service ramlog de manière à ce que FHEM ne se lance qu’une fois que celui-ci est disponible.

# Required-Start:       $local_fs $remote_fs ramlog

Puis passer la ligne de commande suivante pour mettre à jour les noms de fichiers dans /etc/rc*.d

# update-rc.d fhem defaults

On peut en profiter pour modifier un peu le fichier /etc/init.d/fhem de manière à donner un look plus sympa à sa sortie et pour ajouter les fonctions restart, reload et force-reload

#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert / Modified by oliv06 (Play With Free)

### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs ramlog
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server
### END INIT INFO

NAME=fhem
DAEMON=/opt/fhem/fhem
DESC="FHEM server daemon"
PORT="7072"

. /lib/lsb/init-functions

fhem_status () {
        cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
        if [ "$cnt" -eq "0" ] ; then
                log_progress_msg "is not running"
                return 3
        else
                log_progress_msg "is running"
                return 0
        fi
}

cd /opt/fhem

case "$1" in
'start')
        log_daemon_msg "Starting $DESC" "$NAME"
        perl fhem.pl fhem.cfg
        ret=$?
        log_end_msg $ret
        exit $ret
        ;;
'stop')
        log_daemon_msg "Stopping $DESC" "$NAME"
        fhem_status
        if [ "$?" -eq "0" ] ; then
                perl fhem.pl $PORT "shutdown" 2>/dev/null
        fi
        ret=$?
        log_end_msg $ret
        exit $ret
        ;;
'restart')
        $0 stop && $0 start
        ;;
'reload')
        log_daemon_msg "Reloading $DESC" "$NAME"
        fhem_status
        ret=$?
        if [ "$ret" -eq "0" ] ; then
                perl fhem.pl $PORT "rereadcfg"
                ret=$?
        fi
        log_end_msg $ret
        exit $ret
        ;;
'force-reload')
        log_daemon_msg "Reloading $DESC" "$NAME"
        fhem_status
        ret=$?
        if [ "$ret" -eq "0" ] ; then
                perl fhem.pl $PORT "shutdown restart"
                ret=$?
        fi
        log_end_msg $ret
        exit $ret
        ;;
'status')
        log_daemon_msg "$DESC" "$NAME"
        fhem_status
        ret=$?
        log_end_msg $ret
        exit $ret
        ;;
*)
        echo "Usage: $0 { start | stop | restart | reload | force-reload |status }" >&2
        exit 1
        ;;
esac
exit 0

Divers

# envoyer les stats d'utilisation des modules seulement lors des updates
attr global sendStatistics onUpdate

Quelques dépendances

pour le module withings

apt-get install libwww-perl
apt-get install libdigest-md5-perl
apt-get install libjson-perl

pour le module openweathermap

apt get install libxml-simple-perl

Liens

Cubie