Mes notes sur l’installation de FHEM à partir de zéro sur mon ibox sous Debian (cubieboard2)
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