Enfin un plongeon dans le vif du sujet !
Il est temps de câbler et des profiter des modules achetés (cf article premiers pas en KNX).
Voici ma platine de test :
Bordélique sans rail DIN !
J’utilise du câble RJ45 rigide pour mon bus KNX.
EIBD/EIBNETMUX me servira à communiquer avec mon tableau électrique par l’intermédiaire de mon routeur Siemens IP/KNX .
L’ensemble de mon installation est fait sous Debian Wheezy.
Pourquoi deux paquets pour le même résultat ? Quelles différences ?
Lorsque eibd a été développé, il n’était pas très stable, c’est à ce moment là, qu’une version parallèle a été développée : eibnetmux.
Eibnetmux n’est pas une surcouche d’eibd, ce sont deux paquets distinct, c’est l’un ou l’autre.
Il y’a différence sur la gestion du tunneling & routing, ces notions ont quasi disparu dans eibnetmux.
Les 2 paquets proposent une utilisation php.
Eibd nécessite d’être exécute avec un utilisateur non root.
Voici un –help des deux outils.
eibd | eibnetmux |
Usage: eibd [OPTION…] URL eibd — a commonication stack for EIB (C) 2005-2011 Martin Koegler <mkoegler@auto.tuwien.ac.at> supported URLs are: ft12:/dev/ttySx ipt:router-ip[:dest-port[:src-port[:nat-ip[:data-port]]]]] iptn:router-ip[:dest-port[:src-port]] usb:[bus[:device[:config[:interface]]]]ft12 connects over a serial line without any driver with the FT1.2 Protocol to a BCU 2ipt connects with the EIBnet/IP Tunneling protocol over an EIBnet/IP gateway. The gateway must be so configured, that it routes the necessary addressesiptn connects with the EIBnet/IP Tunneling protocol over an EIBnet/IP gateway using the NAT mode usb connects over a KNX USB interface -c, –GroupCache enable caching of group communication network Mandatory or optional arguments to long options are also mandatory or optional |
Usage: eibnetmux [options] hostname[:port] where: hostname[:port] defines remote eibnet/ip tunneling server with default port of 3671options:-s –eib_server[=ip:port] activate eibnet/ip server default: no, port=3671 -t –tcp_server[=ip:port] activate tcp server default: no, port=4390 -u –unix_server[=path] activate unix socket server default: no, path=/tmp/eibnetmux -e –eibd_server[=ip:port] activate eibd server default: no, port=$$$ -l –log_level=level set log level default: 0 (0=none, 1=info, 2=verbose, 4=warning, 8=error, 16=critical) (32=fatal 64=user 128=debug 256=trace client 512=trace server) (1024=trace socketserver 2048=trace EIBD 4096=memory) -L –log_dest=udp:host:port send log to udp receiver host @ port -L –log_dest=file:filename write log to file -L –log_dest=syslog:facility send log to syslog using facility -r –ring_level=level set levels logged to ring buffer default: 128 -R –ring_size=kilobytes set size of debug ring buffer default: 32 -d –daemon run as daemon default: no -i –user=username run process as user default: – -g –group=groupname and group default: – -p –pidfile=file file to write pid to default: – -S –security=file file with security restrictions default: – -A –address=ip-address fixed IP address to use default: – -T –testmode run in testmode default: no |
Mon choix s’est porté sur eibnetmux par sa simplicité, son fonctionnement sans problèmes, sa maintenance.
J’ai par ailleurs rencontré des problèmes pour faire fonctionner eibd avec ETS. Problème de tuneling/routing ? probablement, mais le problème ne s’est pas posé avec eibnetmux.
Toujours sur Debian Wheezy (kernel 3.2.0).
Que ça soit eibd ou eibnetmux, il est nécessaire d’installer pthsem, il s’agit d’une libraire multithread dont je n’ai pas trop compris l’utilité, mais nécessaire, donc …
Et on attaque, la compilation de pthsem.
Voila pour le strict nécessaire.
Puis on s’attaque à bcusdk qui contient EIBD :
Le fait de forcer LD_LIBRARY_PATH dans /usr/local/lib induit que certaines librairies d’eibd se trouvent à tort dans ce répertoire.
Ce qui permet à groupswrite de trouver ses librairies.
groupswrite est l’outil permettant d’envoyer des données sur le bus KNX.
D’après mon serveur DHCP, je vois que le routeur IP/KNX a pris l’ip 192.168.0.8.
Connecté ! Youpi !
Le soucis avec le routeur Siemens N146 5WG1 146-1AB01 tout comme le N148/21, c’est qu’il n’est capable de communiquer qu’avec un seul partenaire.
Je ne peux pas programmer, tester et utiliser en même temps, car ce module est neuneu semblable à une utilisation en unicast.
La solution consiste à utiliser eibnetmux qui va router l’ensemble des connexions vers le routeur Siemens.
Coté programmation, l’utilisation eibnetmux implique l’utilisation d’ETS v3.
A terme, mon routeur Siemens IP/KNX sera invisible.
Ce schéma est clair, c’est LA solution à adopter.
Coup de chance, la version 2.0.0 de eibnetmux est sortie depuis moins de 24 heures à la rédaction de ce billet.
Il faut répondre aux dépendances de eibnetmux, toujours sous Debian Wheezy :
Et voila !
Je compile avec la prise en charge php, très important, j’y reviendrai plus tard.
Mon routeur IP/KNX limité à une connexion est devenu ouvert à toutes les connexions.
Pour le tester on lance eibnetmux :
Puis dans un autre shell :
Ou bien une connexion ETS, smartphone, etc … autant qu’on veut !
Je rappele juste que l’utilisation eibnetmux implique l’utilisation d’ETS3.
J’ai crée un petit script d’init pour lancer eibnetmux au démarrage.
L’adresse IP 192.168.0.8 est à adapter bien sur.
#! /bin/sh ### BEGIN INIT INFO # Provides: eibd # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start eibd service at the end of boot # Description: This services is for communications with knx/eib. ### END INIT INFO # by Lionel @ domolio.fr PATH=/sbin:/usr/sbin:/bin:/usr/bin NAME=eibnetmux DAEMON=/usr/local/bin/eibnetmux DAEMON_ARGS="-s -t -u -e -d --pidfile=/var/run/eibnetmux.pid 192.168.0.8" PIDFILE=/var/run/eibnetmux.pid # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions if [ ! -x $DAEMON ]; then echo "eibnetmux appears to be uninstalled." fi # # Function that starts the daemon/service # do_start() { echo -n "Starting eibdnetmux" /usr/local/bin/eibnetmux $DAEMON_ARGS echo " done" } do_stop() { echo "Stoping eibdnetmux" PID=`cat $PIDFILE` kill $PID &> /dev/null echo "done" } # # Function that stops the daemon/service # case "$1" in start) do_start ;; stop) do_stop ;; restart) do_stop sleep 1 do_start ;; status) pid=$(pidofproc -p $PIDFILE $DAEMON) ret=$? pid=${pid% } # pidofproc() supplies a trailing space, strip it if [ $ret -eq 0 ]; then echo "eibdnetmux is running (PID: $pid)" exit 0 elif [ $ret -eq 1 ] || [ $ret -eq 2 ]; then echo "eibdnetmux is dead, although $PIDFILE exists." exit 1 elif [ $ret -eq 3 ]; then echo "eibdnetmux is not running." exit 3 fi echo "sais pas" ;; *) echo "usage: $0 {start|stop|restart|status}" exit 1 esac
A ce stade nous avons une plateforme optimale pour la programmation et des tests avancés.
Bonjour,
Tout d’abord, bravo pour le partage !
Je viens de finir ma Maison à Ossature Bois équipée d’un système KNX et j’aimerais installer et configurer eibd et eidbnetmux, tout c’est bien dérouler, jusqu’à :
su eibd
Mot de passe :
su : Échec d'authentification
Pouvez-vous m’indiquer quel mot de passe introduire ?
Merci par avance,
Alain
Si la commande « su eibd » est exécutée en tant que « root » comme dans l’exemple, aucun mot de passe ne devrait être demandé.
Si un autre utilisateur exécute « su eibd », un mot de passe sera demande, mais le login par mot de passe étant désactivé, cela ne sera pas possible.
on peut alors utiliser la commande « sudo », c’est alors le mot de passe « root » qui est demandé:
sudo -u eibd eibd –trace=1 -u ipt:192.168.0.8:3671
Bonjour Laurent,
Merci pour ces informations, je débute sous linux et ce n’est pas toujours évident.
En tout cas, cela fait 2 semaines que j’utilise Ubuntu et j’en suis ravi !
Je vais donc faire de nouveaux essais en espérant y arriver.
Bonne journée,
Alain
Pingback: Une interface web pour contrôler le bus KNX sur Raspberry Pi | Domolio, la domotique et pas que…
Juste énorme !
Une question à trois sous (je suis un peu novice dans linux/raspberry… mais je me soigne…).
est-ce que eibnetmux peut dialoguer avec le protocole FT1.2, ou doit-on forcément passer par une interface N148 ?
Question subsidiaire: je ne vois aucune commande/option specifique pour passer par une interface usb (hager TH102 par exemple…). Dois-je considérer qu’elle n’est pas supportée ? (seule possibilité: EIBD)
Merci !
Pierre
Salut,
J’ai toujours utilisé eibnetmux jusqu’à présent, quels sont les avantages de eibd en comparaison ?
Merci !
Salut,
je peux utiliser une USB Interface plutôt une IP Interface?
Les commands sont les mêmes?
Merci!
Franchement je te tire chapeau c pas n’importe quelle personne qui ose donner ttes ces infos. mercii bcp
Salut
TRES Bon article qui m’as vraiment servi en pratique mais j’ai une question
est-il possible de commander plusieurs routeur avec une seule RB-Pi? et si oui comment faire
Merci
Salut tt le monde,
je suis debutante dans le domaine de la domotique et j’ai besoin d’utiliser eibd pour mes projets d’etudes. Merci de m’orienter vers des tutoriels qui me permettrons de m’initier.
Hello, first of all, thanks for sharing!
I set eibd on ubuntu and I am able to send message to my home KNX.
However I am not capable to understand message from vbusmonitor.
In particular I have a few temperature probes sending periodically room
temperature and I want to read temperature to control air conditioning.
other point is about blinds, can I send command to set blind to say 50% ?
thanks for any help.
Fabio
Bonjour à tous,
Je me tourne vers vous pour avoir de l’aide sur la compilation de EibNetMux…
Jusqu’à présent, j’utilisais Eibd, qui marche très très bien… le souci, c’est que j’ai besoin d’accéder à mon routeur KNX depuis plusieurs clients différents… donc je pense avoir besoin d’installer EibNetMux.
Ma configuration :
– Freebox, qui joue le rôle de routeur et qui fourni des adresses IP pour tous les équipements réseaux de mon LAN… La distribution des adresses est en DHCP, mais dans les faits, les équipements identifiés ont toujours la même adresse IP (détection via MacAddress)
– Raspberry :
– Linux raspbmc 3.12.31 #2 PREEMPT Wed Oct 29 09:24:56 UTC 2014 armv6l GNU/Linux
– Mon trio eibd/linknx/knxweb2 tourne parfaitement depuis longtemps
j’ai scrupuleusement suivi les indications définie sur https://www.domolio.fr/installation-de-eibd-et-de-eibnetmux-sur-wheezy/
Dans /usr/src/eibbetmux-2.0.1, en exécutant la commande : « sudo ./configure –enable-php –with-phpdoc »,
j’obtiens le message suivant, que je n’arrive pas à comprendre :
configure: – WARNING: IP source address detection based on DNS information
configure: – The EIBnet/IP protocol requires inclusion of the server’s IP address in packets.
configure: – YOU must make sure that a DNS lookup of your host’s name
configure: – returns your network interface’s IP address (and NOT 127.0.0.1)
en exécutant ensuite la commande « sudo make », j’obtiens très rapidement les erreurs suivantes :
make[2]: Entering directory `/usr/src/eibnetmux-2.0.1/eibnetmux’
gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Werror -Wstrict-prototypes -O0 -g -g -O2 -MT network.o -MD -MP -MF .deps/network.Tpo -c -o network.o network.c
network.c: In function ‘init_network’:
network.c:77:9: error: implicit declaration of function ‘ipaddr’ [-Werror=implicit-function-declaration]
network.c: At top level:
network.c:86:25: error: field ‘n’ has incomplete type
network.c:87:25: error: field ‘r’ has incomplete type
cc1: all warnings being treated as errors
make[2]: *** [network.o] Error 1
make[2]: Leaving directory `/usr/src/eibnetmux-2.0.1/eibnetmux’
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/eibnetmux-2.0.1′
make: *** [all] Error 2
J’ai bien entendu fait des recherches sur Internet, mais je ne trouve pas de réponses… A croire que je suis le seul à avoir eu ce problème… 🙂
Je suis allé voir dans le fichier, network.c.
Pour la première erreur, j’ai l’impression qu’il n’arrive pas à récupérer mon adresse réelle (donc non 127.0.0.1)
Pour la seconde et la troisième erreur, j’ai l’impression qu’il ne connait pas les structures « nlmsghdr » et « rtmsg »… j’ai bien essayé de mettre ce que j’ai trouvé par ci, par là sur internet, mais sans succès…
voici mon /etc/hosts :
::1 raspbmc localhost6.localdomain6 localhost6
192.168.0.14 raspbmc
192.168.0.14 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
voilà voilà…
avez-vous des idées ?
merci d’avance pour votre aide
Bonjour, félicitation pour ce tuto, il est juste magnifique et je dois reproduire la même chose mais sur eibd pour mon projet. pourriez vous (si possible) m’envoyer la marche à suivre pour EIBD car de mon coté je rame.
de plus j aimerais communiquer avec le protocole FT1.2, et je ne trouve aucune solutions sur internet pour le faire par eibnetmux, ce protocole y est il supporté ? et sinon par eibd?
Merci,
En démarrant eibnetmux, j’ai l’erreur suivante:
Unable to setup logging – aborting: /usr/local/lib/zlogger/plugins/1.5.0/app_pth_file.so: cannot open shared object file: No such file or directory
En effet, ce fichier n’est pas là. Avez-vous une idée ?
J’ai recompilé c’est ok 😉
Bonjour,
Je teste actuellement sur Jessie (installation devrait être pareil sur wheezy).
Pour la partie pthsem/bcusdk, il existe un paquet deb :
cat > /etc/apt/sources.list.d/knx.list < # chmox +x /etc/init.d/eibnetmux)
Il reste à modifier le script de lancement pour systemd
De plus, je vois sur la page https://www.domolio.fr/communication-entre-le-bus-knx-et-un-serveur-linux/ que la version de ETS est la 4, est-ce que eibnetmux (2.0.1) est compatible avec ETS4 ?
Voila ma petite pierre à ce super travail.
Re bonjour,
J’ai l’impression que mon message n’est pas bien passé !
Pour la partie pthsem/bcusdk, il existe un paquet deb :
Ajouter les lignes suivantes dans /etc/apt/sources.list.d/knx.list
deb http://www.auto.tuwien.ac.at/~mkoegler/debian eib main
deb-src http://www.auto.tuwien.ac.at/~mkoegler/debian eib main
puis :
apt-get update
apt-get install bcusdk
Le paquet libpolarssl0 (sur wheezy aussi) n’existe plus (erreur à la compile de eibnetmux) :
cd /tmp
wget http://ftp.fr.debian.org/debian/pool/main/p/polarssl/libpolarssl0_1.2.9-1~deb7u6_amd64.deb
dpkg -i libpolarssl0_1.2.9-1~deb7u6_amd64.deb
(coquille avant la conclusion chmox au lieu de chmod -> # chmox +x /etc/init.d/eibnetmux)
Hello,
I’m trying to install eibnetmux on my raspbian jessie, but do not succeed.
I’ve tried above procedure, installing it as user pi or as root, under the pi-homefolder and under /usr/src. restarted from scratch many times, but always get stuck at the compiling of eibnetmux. (although it might well be possible this fails because of dependencies not being OK, i.e. libpolarssl is another version under jessie)
Although i’m certainly not a noob (managed to get eibnetmux & openremote running on qnap years ago), i do not know where to start anymore.
Has someone managed to get eibnetmux running on raspbian jessie, and could you maybe share your findings/steps ?
I can also start from scratch once again, and post results here, but i think the installation should be fairly straightforward with the correct steps to take.
many thanks !