Le 13 janvier 2009 Fozzgog est arrivé, non sans mal. Et quelques années plus tard il se tût… Violet ayant fait faillite, racheté, re-faillite, abandonné et la communauté à réussi à obtenir les codes sources et le domaine nabaztag.com.
Je vous passes les détails de l’histoire, c’est long et internet en est gorgé. La question est, après autant de temps, puis-je encore le faire fonctionner comme « avant » ou presque ?
La réponse est « oui » !
En cherchant je suis tombé sur le tuto de Pierre Dandumont utilisant OpenJabNab avec l’aide de la communauté. L’article est déjà vieux et n’est plus tout à fait à jour, j’ai du bricoler un peu, d’où cet article pour en faire la mise à jour.
Je vais essentiellement reprendre ses étapes et retirer/ajouter la différence. Principalement je ne suis pas sous mac et n’utiliserais pas le service Bonjour. L’OS de base n’est plus tout à fait le même non plus.
Mon idée est de pouvoir promener mon lapin chez moi et en dehors moyennant une prise de courant. Il est quand même la mascotte de la Famille du Band Bleu 🙂
Mon matos :
- Un Raspberry B (r2), alim etc.
- Carte SD 4Go
- Mon Nabaztag:tag, alim etc
- Un routeur WI-FI
- Clavier, souris, écran HDMI (ou adaptateur etc. dans mon cas)
Sur la carte SD j’ai mis une version de Raspian Jessie Lite, pour n’avoir que le nécessaire et sans interface graphique. J’ai essayé Noobs mais sur la 4Go, la mise à jour n’avait pas assez de place. Après de toute façon il ne nous faut que de la console :).
J’ai utilisé win32diskimager pour mettre l’image sur ma carte SD.
On branche et on allume. Oubliez pas que le login/pw de base sont pi/raspberry.
Config de base
Un fois connectez on va mettre les bonne conditions de départ, tapez sudo raspi-config
, vous aurez un bel écran d’interface avec un tas d’options :).
Activez SSH s’il ne l’est pas, réglez votre langue et étendez le file system à toute la carte. Dans notre cas on est déjà console, pas besoin de désactiver l’interface graphique au boot. Mais vous pouvez régler la mémoire vidéo à 16Mo.
Dans les options avancées il y a aussi hostname
, ne l’oubliez pas, donnez un nom à votre terrier :). Ça évite de toucher aux fichiers (hosts, hostname) manuellement par la suite.
Là normalement vous pouvez ping, mais non ! Dans cette version il y a une erreur connue. Vous devrez d’abord exécuter : sudo chmod u+s /bin/ping
.
Ensuite tentez un ping vers ce que vous voulez pour vérifier votre connexion réseau.
Maintenant qu’on a du réseau on met à jour.
sudo apt-get update sudo apt-get upgrade
Ensuite on fixe son IP. Dans mon projet de promener l’installation ça a d’autant plus d’importance.
sudo nano /etc/network/interfaces
Mon réseau est en 192.168.1.x, vous devrez adapter les configs selon votre cas. Vous devez modifier la ligne iface eth0 inet dhcp
en :
auto eth0 iface eth0 inet static address 192.168.1.150 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns-nameservers 192.168.1.150
On sudo reboot
, on débranche clavier souris etc, on laisse juste alim et réseau. On retourne a son bureau, on s’installe confortablement, on prend putty et on se connecte :
ssh pi@192.168.1.150
Serveur DNS
Comme le dit le tuto de Pierre, le truc chiant c’est que le lapin a besoin d’un nom de domaine pour se connecter au serveur. Donc il nous faut notre propre serveur DNS local.
sudo apt-get install bind9 sudo /etc/init.d/bind9 start
C’est parti pour plein de config. Perso j’ai eu du mal sur cette partie du fait des mises en pages des contenus. Pour infos je me suis basé sur mes configs de domaines, le tuto de Pierre et une doc.
On va créer notre nom de domaine : terrier.loc avec son sous domaine ojn.terrier.loc .
sudo nano /etc/bind/named.conf.local
Attention la deuxième partie est l’envers de notre réseau.
zone "terrier.loc" { type master; file "/etc/bind/db.terrier.loc"; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192.168.1.inv"; };
Maintenant il nous faut les 2 fichiers précisés.
sudo nano /etc/bind/db.terrier.loc
$TTL 604800 @ IN SOA ojn.terrier.loc. root.terrier.loc. ( 1 ; serial 604800 ; refresh 86400 ; retry 2419200 ; expire 604800 ) ; negative cache TTL ; @ IN NS ojn.terrier.loc. @ IN A 192.168.1.150 ; ojn IN A 192.168.1.150 ;192.168.1.150 IN A 192.168.1.150
Et l’autre.
sudo nano /etc/bind/db.192.168.1.inv
$TTL 604800 @ IN SOA ojn.terrier.loc. root.localhost. ( 2 ; serial 604800 ; refresh 86400 ; retry 2419200 ; expire 604800 ) ; negative cache TTL ; NS ojn.terrier.loc. 150 PTR ojn.terrier.loc.
Maintenant il faut dire au Rasp de l’utiliser.
sudo nano /etc/resolv.conf
# Generated by resolvconf domain home nameserver 192.168.1.1 nameserver 192.168.1.150
Particularités ici, si vous avez un soucis d’accès lors de test du domaine, commenté la 1.1. Si vous rebootez elle sera décommentée.
Enfin, on active le serveur de cache pour accéder au net. On décommente la partie forwarders et on met l’ip de la passerelle.
sudo nano /etc/bind/named.conf.options
options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. forwarders { 192.168.1.1; }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
Redémarrez et testez, ping google.com
, ping ojn.terrier.loc
. Cf. ma remarque d’avant avec les ligne nameserver
.
Vous pouvez également tester depuis votre poste en modifiant votre connexion réseau et en précisant le serveur DNS à 192.168.1.150.
Le serveur
On y est, on va mettre le serveur en place et on va utiliser un Apache, comme dit Pierre, il y aura pas des milliers de lapins.
sudo apt-get install apache2 php5 libapache2-mod-php5 sudo /bin/hostname -F /etc/hostname sudo a2enmod rewrite sudo /etc/init.d/apache2 restart
Ensuite OpenJabNab, il nous faudra Git.
sudo apt-get install git cd /var/www sudo git clone https://github.com/OpenJabNab/OpenJabNab.git
Et c’est reparti pour un peu de config.
sudo nano /etc/apache2/sites-available/000-default.conf
Là aussi j’ai du adapter la conf directement dans le default
. j’ai retiré les commentaires.
<VirtualHost *:80> DocumentRoot /var/www/OpenJabNab/http-wrapper <Directory /var/www/OpenJabNab/http-wrapper> Options -Indexes +FollowSymLinks AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
default
est déjà actif par défaut, un simple apache restart devrait suffire, sinon comme le tuto de Pierre :
sudo a2dissite default sudo a2ensite default sudo /etc/init.d/apache2 restart
Tapez l’ip de votre OJN (dans mon cas 192.168.1.150) pour y accéder. Vous devriez avoir le message « Problem with OpenJabNab ! » signe que tout va bien 🙂 Si vous avez une page d’index c’est que votre mod rewrite n’est pas activé.
Maintenant c’est compilation ! Yeah 🙂
sudo apt-get install qt4-qmake qt4-qtconfig qt4-designer qt4-dev-tools libqwt5-qt4-dev build-essential cd /var/www/OpenJabNab/server sudo qmake -r sudo make
On configure, encore et toujours 🙂
sudo cp openjabnab.ini-dist bin/openjabnab.ini sudo nano bin/openjabnab.ini
[Config] httpListener = true httpApi = true httpVioletApi = true xmppListener = true RealHttpRoot = /var/www/OpenJabNab/http-wrapper/ojn_local/ HttpRoot = ojn_local HttpPluginsFolder = plugins StandAloneAuthBypass = true AllowAnonymousRegistration=true AllowUserManageBunny=true AllowUserManageZtamp=true SessionTimeout=300 TTS=acapela MaxNumberOfBunnies=64 MaxBurstNumberOfBunnies=72 [OpenJabNabServers] PingServer=ojn.terrier.loc BroadServer=ojn.terrier.loc XmppServer=ojn.terrier.loc ListeningHttpPort=8080 ListeningXmppPort=5222 [Log] LogFile=openjabnab.log LogFileLevel=Debug LogScreenLevel=Warning DisplayCronLog=false
On change le RealHttpRoot, on met true
à StandAloneAuthBypass et les 3 suivants, on change my.domain.com en ojn.terrier.loc.
Au tour des plugins :
sudo nano bin/plugins/plugin_auth.ini
[global] authMethod=full
On donne les accès en écriture :
sudo chmod 777 /var/www/OpenJabNab/http-wrapper/ojn_admin/include
On ajoute les voix et humeurs :
cd /var/www/OpenJabNab/http-wrapper/ojn_local/plugins/ sudo wget http://down.dandu.be/nabaz-lang-mp3-fr.tar.gz sudo wget http://down.dandu.be/nabaz-ojn-mp3-fr.tar.gz sudo tar xvfz nabaz-lang-mp3-fr.tar.gz sudo tar xvfz nabaz-ojn-mp3-fr.tar.gz
Et on lance !
sudo ./bin/openjabnab
Techniquement ça devrait démarrer sans erreur. Du coup on va dans l’admin du terrier 192.168.1.150/ojn_admin.
En bas de page on peut voir les infos, ce qui montre ce qui a été chargé, preuve que ça fonctionne.
Il vous faudra créer un compte, le premier sera mit en admin automatiquement.
Le lapin
Ensuite il faut ajouter le lapin, dans account, donnez lui un nom en suivant les contraintes et entrez sa mac.
Prenez votre lapin, allumez le en appuyant sur son bouton de tête, il devient bleu. Connectez vous à son Wi-Fi et rendez-vous sur son ip 192.168.0.1.
Le lapin a du mal à se connecter en Wi-Fi (peut-être mon lapin), déjà le WPA il a du mal mais y arrive parfois (nabaztag:tag), le v1 lui ne sait faire que du WEP. Je n’ai pas envie de chipoter, j’ai un routeur, une connexion invisible, ça suffira, j’ai désactivé la sécurité. Faites en fonction de votre projet et de votre lapin !
Dans la config avancée, désactivez le DHCP, donnez lui une IP fixe (192.168.1.151) ensuite renseignez le serveur ojn.terrier.loc/vl.
On sauve, le lapin redémarre et si tout va bien ça s’allume ! Le lapin bouge les oreilles et vous sautez dans tous les sens, votre lapin se reconnecte !
Lancement automatique
J’ai essayé en vain la solution du daemon. Je n’ai peut-être pas trouvé de solution suffisamment à jour. J’ai donc utilisé la solution barbare mais fonctionnelle de Pierre :
sudo nano /etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi sudo /var/www/OpenJabNab/server/bin/openjabnab exit 0
Le lien déjà mentionné de la doc en parle.
Fin
Fozzgog est prêt à reconquérir le monde… ou pas 🙂
Dans les possibilités de suites, car OJN ne gère pas/plus les chorégraphies ça serait de développer le plugin le permettant, tout à l’air d’être à disposition pour y arriver. Il n’y a quasi pas de doc donc ça sera empirique mais pourquoi pas essayer.
En local TTS et Taïchi fonctionnent bien. L’API pour le coucher, lever, TTS aussi. C’est déjà une bonne base pour redévelopper avec. Reste à voir si il peut le faire en autonomie.
Affaire à suivre 🙂