knx : eibd/linknx/knxweb ? Récit d'une nuit
mercredi 18 mai 2011 à 10:34
Ce billet se veut absolument hors prétention. Concrètement, j'ai bricolé toute la soirée et quand à 1h30 du matin tout marchait j'ai encore mis 2h pour essayer de comprendre :-) Je n'ai pas du tout essayé d'affiner les paramètres ou de tout comprendre. Cela fonctionnait, j'ai fait des tests, des petites vidéos, et le reste sera pour plus tard... Ceci n'est pas du tout une doc mais le récit de la nuit. Il s'agit pour moi juste d'un petit aide mémoire sur les essais de cette nuit, le tout rédigé de tête, donc probablement avec de grosses approximations.
Installation des binaires
L'installation des différents éléments s'est faite dans une Virtualbox qui tourne sous Ubuntu server 11.04. La doc d'installation est le tuto du Chiloft utilisé simplement avec les versions les plus récentes. L'installation Apache/Php/Mysql est celle par défaut d'Ubuntu.
apt-get install libesmtp6 apt-get install g++ apt-get install libmysqlclient15-dev cd /usr/local mkdir linknx cd linknx wget http://downloads.sourceforge.net/sourceforge/linknx/linknx-0.0.1.28.tar.gz wget http://downloads.sourceforge.net/project/linknx/knxweb/knxweb-0.6/knxweb-0.6.1.tar.gz wget http://downloads.sourceforge.net/project/bcusdk/pthsem/pthsem_2.0.8.tar.gz wget http://downloads.sourceforge.net/sourceforge/bcusdk/bcusdk_0.0.5.tar.gz tar zxvf knxweb-0.6.1.tar.gz tar zxvf linknx-0.0.1.28.tar.gz tar zxvf pthsem_2.0.8.tar.gz tar zxvf bcusdk_0.0.5.tar.gz chown -R root.root knxweb linknx-0.0.1.28 pthsem-2.0.8 bcusdk_0.0.5.tar.gz cd pthsem-2.0.8 ./configure make make test make install export LD_LIBRARY_PATH=/usr/local/lib ldconfig -a cd ../linknx-0.0.1.28/ ./configure --without-log4cpp --without-lua --with-mysql=/usr/bin/mysql_config make make install cd ../ cd bcusdk-0.0.5/ ./configure --enable-onlyeibd --enable-eibnetiptunnel --enable-usb --enable-eibnetipserver --enable-ft12 make make install et copie de knxweb dans /var/www/knxweb
Configuration
Interface IP/KNX
La doc du Chtiloft utilise une connexion USB mais je souhaite que ma connexion se fasse en IP avec le réseau knx via un N148/22. D'abord, s'assurer que ce boitier est correctement configuré et accessible depuis ETS. Je me suis simplifié la vie en utilisant une deuxième interface en usb pour la configuration de l'interface ip. J'ai aussi ajouté une adresse supplémentaire au boitier au niveau de la configuration de la connexion IP (cf la dernière page du pdf téléchargeable sur le site de Siemens). Je ne sais pas si c'est utile...
Ceci étant fait, je peux sous ets3 et en ip lancer busmonitor ou groupmonitor, configurer les objets et envoyer des GA pour piloter l'installation. Donc ça fonctionne.
J'arrête ets.
eibd
Je lance eibd avec la commande "eibd -t0123 -i ipt:[ip du N148/22]" A lancer en tant qu'utilisateur normal et pas root, sinon il râle (à juste titre :-)
Le -t permet d'avoir du debug, mais c'est tout ce que je sais. Pourquoi 0123, pas encore cherché.
eibd étant lancé, je vois passer du trafic en monitoring. Je fais des test avec "busmonitor" qui affiche sensiblement la même chose qu'eibd. J'essaye "groupwrite" mais a priori sans succès (l'adresse physique d'émission étant 0.0.0 je pense que ça vient de là, pas trouvé comment la changer).
J'ai un z38i qui m'envoie la température toutes les minutes (pratique pour le débug, mais trop souvent je pense pour de l'exploitation) et je vois passer cette température ! Joie ! J'en conclue qu'eibd est bien connecté, je ne cherche pas plus à communiquer avec la plateforme, c'est le boulot de linknx.
linknx
C'est lui qui va communiquer avec eibd. En suivant la doc de Chtiloft, j'ai donc la conf dans /var/www/knxweb/linknx.xml. La tronche de ce fichier ne me parle pas trop. Je le copie pour sauvegarde et commence à le modifier. La seule doc officielle trouvée est celle-ci.
J'ai commencé par faire le ménage dans le fichier via la section "services" en ne gardant que xmlserver comme dans la doc et <knxconnexion url="ip:localhost" />. Ah, oui, piège ici. linknx communique avec eibd et pas avec la passerelle. eibd tourne sur la même machine donc l'ip est bien localhost et non celle de la passerelle N148.
Je lance "linknx -c/var/www/knxweb/24rdr.xml" (j'habite au 24 rue des roses. Kitch !). Pleins de trucs défilent, je vois passer des logs sur la fenêtre eibd, en particulier plusieurs GA qui ne sont pas de chez moi mais je n'ai pas de message d'erreur et linknx semble content...
Arrêt de linknx et remodification du fichier xml. Je fais beaucoup plus de ménage et virant presque toutes les "rules" à part celle de l'heure et ne gardant que quelques "objects" que je modifie avec des GA de ma plateforme de test.
Relance de linknx. Beaucoup moins de logs sur eibd, normal...
Sur cette page, je vois que l'on peut envoyer des ordres.
Je fais un "telnet localhost 1028" (cf la conf de la section services pour le 1028) et je tape "<read><objects/></read>" puis ^D (ctrl-D, commande classique de fin de transmission mais pas forcément connue). Joie bis ! Je vois en résultat un fichier xml contenant l'état des objets définis dans la conf :-) :-)
Bon alors là, clairement ça fonctionne. Je teste alors en écriture et j'envoie sur le GA idoine une heure bidon et je vois alors bien le z38i se mettre à l'heure ! ("<write><object id="cur_time" value="10:10:10"/></write>").
Retour dans mon xml et je change la "rule" "cur_time_date" en remplaçant 3600 par 60, relance de linknx et au bout de 60 (longues !) secondes (il doit y avoir un truc pour le faire à l'init), le z38i a enfin l'heure courante...
Linknx fonctionne, passons à la dernière étape...
knxweb
L'accès web se fait correctement à http://[ip serveur]/knxweb/. Je clique sur "design" et là, le joli chateau fort... Comment commencer un design neuf ? Je ne trouve vraiment pas grand chose... On fouille par la doc pas très causante...
Sauvegarde du répertoire "design" que je vide, et recrée un design/default vide. Je colle une image de fond en jpg dedans et j'essaye de faire des trucs avec ça. Impossible d'ajouter une zone ou quelque chose. Je fini par un "chmod -R 777 knxweb" histoire d'être sûr des droits (bien sûr, cela devra être corrigé) puis par remettre le fichier xml par défaut. J'arrive à créer des zones et à sauvegarder ! Mais les icônes météo me cassent les pieds pour utiliser le menu. J'édite le fichier xml à la main et je vire tout ce qui ne sert rien en ne laissant finalement que la zone vide nouvellement créée. Je retourne dans le design et là, tranquille, je peux ajouter les GA que j'ai configuré dans le xml utilisé par linknx !
Au premier clique, la lumière s'allume. Joie ter! (déjà dit, non ? :-)
Conclusion très temporaire
Voilà, le récit d'une nuit. Tout cela est encore complètement brouillon et pas fini ni rien et je sens que je vais contribuer pour la doc, car là, franchement...
Mais tous les éléments sont en place pour le reste de l'aventure...
aucun commentaire »
Suivez le fil des commentaires en vous abonnant à ce lien