QNAP [tuto] Station météo sur NAS TS-x53 avec Weewx

Tryphon

Padawan
1 Mars 2015
108
3
18
Mise à jour : installation dans QTS 4.3

J'ai migré vers la version 4.3 du firmware et comme je m'y attendais j'ai dû réinstaller ma station météo et d'autres bricoles (NAS Qnap TS-653). J'en ai profité pour télécharger la dernière version du logiciel Weewx qui intègre plus de pilotes de stations météo connectées en USB. J'utilise une station météo de marque AcuRite et ce n'est pas un hasard : elle est bon marché et suffisamment précise pour mes besoins. J'ai eu de bonnes surprises : le nouveau QTS simplifie beaucoup l'installation d'une station météo et d'un contrôleur solaire. Cela devrait encourager davantage les qnapiens intéressés. Voici donc.

1) Installer le QPKG QPython2 2.7.13.0 disponible sur ce forum (merci QoolBox).

La version de PIL n'est pas entièrement fonctionnelle car elle déclenche une erreur :

File "/share/CACHEDEV1_DATA/.qpkg/QPython2/lib/python2.7/site-packages/PIL/Image.py", line 69, in <module>
Jun 20 06:25:37 SERVER user.info weewx[5054]: **** raise ImportError("The _imaging extension was built for another "
Jun 20 06:25:37 SERVER user.info weewx[5054]: **** ImportError: The _imaging extension was built for another version of Pillow or PIL

Il suffit de désinstaller PIL et d'installer la dernière version de Pillow. Ouvrez une console SSH et allez dans /opt/QPython2/bin puis :

Code:
./pip uninstall PIL
./pip uninstall pillow
./pip install pillow

Si ce raccourci n'existe pas, créez-le :

Code:
ln -s /opt/QPython2/bin/python2.7 /usr/bin/python

2) Télécharger Weewx 3.7.1 et décompactez-le dans /share/Public par exemple.

Si ce n'est pas déjà fait, connectez votre station météo USB à votre NAS.

En console, allez dans le répertoire d'installation de weewx-3.7.1

Renseignez la variable home dans le fichier setup.cfg :

Code:
home = /share/YourNAS_Volume/.qpkg/weewx

Procédez à la compilation et à l'installation de Weewx (http://www.weewx.com/docs/setup.htm):

Code:
chmod +x setup.py
./setup.py build
./setup.py install

Vous aurez peut-être besoin de paramétrer plus finement Weewx, et c'est dans ce fichier que vous pouvez le faire :

/share/YourNAS_Volume/.qpkg/weewx/weewx.conf

Le site web de Weewx est très bien documenté : http://www.weewx.com/

et vous y trouverez tous les raffinements nécessaires.

3) Intégrez Weewx dans Apache

Créez apache-weewx.conf

Code:
vi /etc/config/apache/extra/apache-weewx.conf

et collez ce code (remplacez YourNAS_Volume par le nom de volume de votre NAS):

Code:
<IfModule alias_module>
Alias /weewx /share/YourNAS_Volume/.qpkg/weewx/public_html
<Directory /share/YourNAS_Volume/.qpkg/weewx/public_html>
  Options FollowSymlinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>
</IfModule>

Editez apache.conf :

Code:
# vi /etc/config/apache/apache.conf

Ajoutez-y :

Code:
Include /etc/config/apache/extra/apache-weewx.conf

à la fin du fichier.

J'ai créé ce petit code pour permettre l'affichage de la page html de Weewx :

Code:
vi /share/YourNAS_Volume/.qpkg/weewx/app_proxy_update.sh

(vous pouvez créer ce fichier où vous voulez)

Insérez ce qui suit :

Code:
/etc/init.d/Qthttpd.sh restart
echo ProxyPass "/weewx/" "http://127.0.0.1:80/weewx/" retry=0 >> /etc/app_proxy.conf
/etc/init.d/thttpd.sh restart

Exécutez-le :

Code:
sh /share/YourNAS_Volume/.qpkg/weewx/app_proxy_update.sh

4) Programme de démarrage de Weewx

Créez ce fichier (remplacez YourNAS_Volume par le nom de volume de votre NAS):

Code:
vi /share/YourNAS_Volume/.qpkg/weewx/startwx.sh

et placez-y ce code :

Code:
#!/bin/sh

WEEWX_BIN="/share/YourNAS_Volume/.qpkg/weewx/bin/weewxd"
WEEWX_CFG="/share/YourNAS_Volume/.qpkg/weewx/weewx.conf"
PIDWEEWX="/var/run/weewx.pid"
PIDRVBUS="/var/run/rvbus.pid"

# COUNT="$(/opt/bin/pidof weewxd | /opt/bin/wc -w)"
# PIDs="$(/opt/bin/echo -e "${COUNT}" | /opt/bin/tr -d '[[:space:]]')"


# PYTHON="/opt/QPtyhon2/bin/python2.7"
if [ ! -f /usr/bin/python ]
then
  ln -s /opt/QPython2/bin/python2.7 /usr/bin/python
fi

/sbin/syslogd -m0

case "$1" in
  "start")
      echo "Starting WeeWX."
      /sbin/log_tool -t 0 -a "Starting WeeWX..."
      taskactivity=$(ps | grep "weewxd" | grep -v "grep")
      if [ -n "$taskactivity" ]
      then
        echo "WeeWX is already running."
      else                                   
        ${WEEWX_BIN} -d ${WEEWX_CFG}
        echo $! > ${PIDWEEWX}
        echo "WeeWX Started at `/bin/date -R`"
      fi
      /sbin/log_tool -t 0 -a "WeeWx Started."
      ;;
                                                     
    "stop")
         echo "Stopping WeeWX..."
         if [ -f ${PIDWEEWX} ] ; then
           killall -9 weewxd
           rm ${PIDWEEWX}
           echo "WeeWX stopped."
           /sbin/log_tool -t 0 -a "WeeWX stopped."
         else
           echo "It does not appear WeeWX is running."
         fi
         ;;
                                                                                          
    *)
         echo "$0 [start|stop]"
         ;;
                                                                                                                  
esac

Voilà, tout y est. Pour démarrer Weewx :

Code:
sh /share/YourNAS_Volume/.qpkg/weewx/startwx.sh start

Pour voir le log :
Code:
tail -f /var/log/messages

Après le lancement de Weewx, il faut attendre au moins 5 minutes pour que les premières données entrent dans la base de données.

ENFIN, ouvrez votre navigateur sur votre ordinateur client et entrez l'adresse :

http://IP_DE_VOTRE_NAS/weewx/

Si vous êtes chanceux, vous verrez vos données météo en temps réel!

Si vous avez un nom de domaine par lequel vous accédez à votre NAS à distance :

http://yourdomain:8080/weewx/

vous permet de consulter vos données météo où que vous soyez.

Conclusion : Weewx est un logiciel léger et très modulable pour qui connaît un peu Python. En effet, j'ai connecté en USB une interface RS485 pour que le NAS communique avec le contrôleur Resol Deltasol MX de mes panneaux solaires. En bidouillant un peu, Weewx est capable de récupérer les données solaires et de les intégrer à sa page html.

Ancienne version : installation dans QTS 4.2

Je l'avais promis et le voici !

Ce tutoriel est pour le moment une ébauche fonctionnelle expliquant comment connecter une station météo via le logiciel Weewx directement sur un NAS Qnap.

Il y a de nombreuses limitations dont certaines, je n'en doute pas, seront facilement levées par vos contributions. Je dois bien l'avouer, mes connaissances informatiques, surtout intuitives, restent encore fragmentaires.

Cela dit, quel bonheur de voir apparaître la page web de Weewx affichant les données de ma station météo.

Tout d'abord, je remercie Sar6e qui le premier a présenté le même tutoriel : http://forum.qnap.com/viewtopic.php?t=95822, sans oublier Dave qui a permis la réalisation d'un pilote AcuRite sous Linux : http://www.desert-home.com et tous les autres contributeurs dans ce forum et ailleurs. L'originalité de ce tutoriel réside dans le choix de la station météo :

AcuRite modèle 01036

un matériel complet, bon marché et facile à trouver. Évidemment ce qui suit s'adapte aisément avec les autres modèles AcuRite.

Avant de commencer, notez que ce tutoriel ne se substitue pas à la documentation en ligne de Weewx : http://www.weewx.com/docs/setup.htm mais aide à installer ce qu'il manque au Qnap pour supporter Weewx et le pilote AcuRite.

J'ai installé Weewx 3.3.1 dans un NAS Qnap TS-653 sous QTS 4.2.0 et j'ai obtenu une connexion USB directe avec une station météo de marque AcuRite. C'est ce qu'il vous faut, ou l'équivalent, pour profiter pleinement de ce tutoriel.

Trêve de bavardage et commençons ...

La station AcuRite doit être en mode "USB 3" ou "USB 4" pour l'envoie des données par câble USB (suivez les indications de la documentation de l'appareil).

Connectez la station (USB) et connectez-vous au NAS en console SSH. Trouver sur quel port est connecté la station :

Code:
# lsusb

Si vous repérez l'idVendor et l'idProduct suivant : ID 24c0:0003, c'est que la station AcuRite est connectée.

Sur le NAS, les prérequis sont les suivants :
Activer MySQL
Installer phpMyAdmin (QPKG)
Installer Python (QPKG)
ou
QPython2 (QPKG disponible sur ce forum grâce à QoolBox)
Installer Optware puis l'IPKG gcc ou QnapWare puis l'OPKG gcc

Seulement pour le QPKG Python (et donc inutile pour QPython2)
Téléchargez à l'adresse https://pypi.python.org/pypi?%3Aaction=index et décompactez les modules Python suivants dans /share/Public

Code:
# cd /share/Public
# tar -xvfz module.tar.gz

ou module est dans cette liste:

configobj
cheetah
pil (Python Imaging Library (PIL))
pyephem
six
(pyserial pour une station météo connectée en mode serial, ce qui n'est pas le cas des modèles AcuRite)

Compilez et installez ces modules (supprimez le dossier build s'il y en a un dans ces module sinon les sources ne sont pas recompilés):

Code:
# cd /share/Public/module.nnn
# rm -r build
# python setup.py install

Recommencez pour chacun des modules.

Dans ce qui suit, vous devez disposer d'une distribution Debian ou Ubuntu fonctionnelle et complète sur un ordinateur (ou demandez à quelqu'un d'effectuer l'opération suivante pour vous). Dans tous les cas, téléchargez et décompactez sur votre ordinateur

pyusb-0.4.3

que vous pouvez trouver là par exemple : http://sourceforge.net/projects/pyusb/files/PyUSB%200.x/0.4.3/

Oui, je sais, c'est un vieux module pyusb mais pour le moment le pilote AcuRite ne fonctionne qu'avec cette version. Attention, pyusb doit être recompilé comme suit sur votre ordinateur en installant tout d'abord :

1) python (PyUSB is useless without it)
2) gcc (the compiler, linker, etc.)
3) python-dev (includes header files needed to compile PyUSB)
4) libusb-dev (C library upon which PyUSB is based)

Tapez:

Code:
# sudo apt-get update
# sudo apt-get install python gcc python-dev libusb-dev

Puis compilez pyusb

Code:
# cd /chemin/vers/sources/pyusb-0.4.3
# python setup.py install

Transférer le dossier pyusb-0.4.3 de votre ordinateur vers votre NAS dans /share/Public. Dans la console SSH,

Code:
# cd /share/Public/pyusb-0.4.3
# python setup.py install

Au cas où vous devriez recommencer l'installation d'un module (quelque chose s'est mal passé) ...
1) Désinstaller le module voulu
# cd /share/Public/module.nnn
# python setup.py install --record install-files.txt
# cat install-files.txt | xargs rm -rf
2) Corrigez le problème selon l'erreur indiquée (si c'est possible) et reprenez l'installation du module

Pour le module mysqldb inclus dans Python il faut ajouter un chemin dans PATH. Cela se fait dans le fichier ~/.bashrc en y ajoutant cette ligne :

export PATH=$PATH:/usr/local/mysql/bin

(je n'ai pas réussi à l'inclure plus proprement par la méthode autorun, plus propre : $PATH mise à jour ne survit pas à la fin de l'exécution de autorun.sh)

Installer weewx selon : http://www.weewx.com/docs/setup.htm,

1) Téléchargez l'archive weewx-X.Y.Z.tar.gz (X.Y.Z = 3.3.1 à ce jour) et décompactez là dans /share/Public

Code:
# cd /share/Public/weewx-X.Y.Z
# tar -xvfz weewx-X.Y.Z.tar.gz

2) Configurez l'installation

Code:
# cd weewx-X.Y.Z
# vi setup.cfg

Changez la ligne home=/home/weewx par

home=/share/CACHEDEV1_DATA/.qpkg/weewx

Attention : CACHEDEV1_DATA est le nom de volume des données de MON NAS. Verifiez le nom de volume de votre NAS et changez la ligne ci-dessus au besoin.

3) Installez Weewx

Code:
# python setup.py build
# pyhton setup.py install

Chercher sur l'internet la latitude, la longitute (google map) et l'altitude (http://www.daftlogic.com/sandbox-google-maps-find-altitude.htm) du lieu où est installée la station météo.

Continuez l'installation en suivant les instructions.

Vous devez finir les réglages à la main en éditant /share/CACHEDEV1_DATA/.qpkg/weewx/weewx.conf, et dans mon cas, j'ai adapté la section [AcuRite] :

[AcuRite]
# This section is for AcuRite weather stations.

# The station model, e.g., 'AcuRite 01025' or 'AcuRite 02032C'
model = AcuRite 01036

# The driver to use:
driver = weewx.drivers.acurite
use_constants = true
ignore_bounds = true

Pour voir Weewx fonctionner sur le serveur, il faut renseigner Apache. Créer ce fichier (adapter le nom de volume) :

Code:
# vi /etc/config/apache/extra/apache-weewx.conf

<IfModule alias_module>
Alias /weewx /share/CACHEDEV1_DATA/.qpkg/weewx/public_html
<Directory /share/CACHEDEV1_DATA/.qpkg/weewx/public_html>
Options FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</IfModule>

Sauvegardez le fichier et poursuivez :

Code:
# vi /etc/config/apache/apache.conf

Ajoutez

Include /etc/config/apache/extra/apache-weewx.conf

à la fin du fichier.

Redémarrez Apache :

Code:
# /etc/init.d/Qthttpd.sh restart

Activez le log pour weewx :

Code:
# /sbin/syslogd -m0

Démarrez Weewx en Daemon :

Code:
# /share/CACHEDEV1_DATA/.qpkg/weewx/bin/weewxd -d /share/CACHEDEV1_DATA/.qpkg/weewx/weewx.conf

Puis :

Code:
# tail -f /var/log/messages

pour voir ce qui se passe ... S'il y a des problèmes, c'est ici qu'ils apparaîtront.

Après le lancement de Weewx, il faut attendre au moins 5 minutes pour que les premières données entrent dans la base de données.

ENFIN, ouvrez votre navigateur sur votre ordinateur client et entrez l'adresse :

http://IP_DE_VOTRE_NAS/weewx

Si vous êtes chanceux, vous verrez vos données météo en temps réel!

Pour arrêter Weewx :

Code:
# /share/CACHEDEV1_DATA/.qpkg/weewx/bin/weewxd -x /share/CACHEDEV1_DATA/.qpkg/weewx/weewx.conf

Il y a de nombreux problèmes à résoudre mais le plus gros est fait. Avec votre contribution, je l'espère, ces problèmes devraient se résoudre, et je mettrais à jour le tutoriel en conséquence. Avec le temps, je corrigerai aussi les défauts cosmétiques de cette présentation.
 
Je suis heureux d'en faire profiter. Le processus Weewx est stable depuis plusieurs heures et je verrai demain ce qu'il en est. 8-)