Migration

Ça y est. Avec le serveur mysql, ça commence à faire trop opur le dockstar. Les temps de réponses sont trop long pour que l’interface soit agréable. J’ai donc décidé de le migrer vers un raspberry pi 2.

Pour la migration, facile ! J’ai pris une raspbian. Ensuite, j’ai cherché à récupérer la liste des paquets que j’avais installé.  Pas si évident. J’ai du tricoter un peu:

On extrait la liste des

sudo apt-get dotty > paquets.txt
grep -- "->" installed.dot | grep -v springgreen | cut -d \" -f 2 | sort -u > installed
grep -- "->" installed.dot | grep -v springgreen | cut -d \" -f 4 | sort -u > dep
grep -vf dep installed > min_list

Et voilà, dans min_list, la liste des paquets installés.

J’ai tout de même fait la même chose sur mon autre install avant de commencer afin de retirer la liste des paquets en commun, celle de la distrib.

Je finissais alors avec une liste d’une cinquantaine de paquets, qui correspondaient à ceux que j’avais installés à la main.

Naturellement, j’ai réinstallé que ceux qui me semblaient nécessaires, à savoir apache2, mariadb, telldus-core, vim.

et hop, ça fonctionnait.

Prochaine étape: le SSL !

Du MySQL !

Allez, c’est parti.

Grosse mise à jour aujourd’hui, puisque je rebase mon front-end web sur une base de données.

Alors, au niveau de la sécurité, j’ai un compte qui n’a accès qu’en lecture et à l’update des status, histoire que même en cas d’attaque réussie d’injection SQL, rien ne puisse être fait.

J’ai découvert comment faire des vues, histoire de simplifier les requêtes dans mon code PHP, ainsi que des triggers, afin de garder la DB dans un état cohérent.

Au niveau des mises à jour, bien entendu, l’accès à la DB, avec l’accès à la liste des commandes au lieu d’invoquer directement tdtool, et seul diego.php, le script d’exécution, invoque finalement l’outil. J’ai en outre créé des interrupteurs abstraits. Les prochains en prévision sont :

  • Une commande simple (bouton -> exec)
  • Une commande avec un paramètre, qui sera sous forme de liste, ou de curseur.

Au niveau des fonctionnalités du front end, je ne suis pas satisfait car j’ai souvent Lumière en premier mot, je voudrais rassembler ça en une icône. ensuite, j’aimerais à terme pouvoir faire des regroupements. Je n’ai pas défini précisément, mais  ce sera probablement avec une table d’index, qui pointera sur les contrôles.

En fonction du temps

Premier jet du calcul contextuel de météo.

En gros, j’utilise  yahoo weather pour me dire le temps qu’il fait.
En fonction de ça, je vérifie s’il pleut, et donc si je dois arroser.

L’utilisation se fera avec un « && » dans un shell script. Genre : weather.py && switch_on arrosage

Je prévois une application similaire pour l’allumage de l’aurore, dans la chambre. Uniquement si le soleil ne s’est pas déjà levé.

Un peu d’AJAX

Ça y est, j’ai mon GitHub Domotux. Bon, pour l’instant, il est un peu léger.  Le but est de partager ce qui est stable.

J’avais de gros soucis de réactivité sur le chargement de la page. Soucis venant en partie du chargement de ce qui doit être chargé, de la lenteur de mon upload, sans doute un peu du python, qui constituait la base de mon premier script.

Du coup, j’ai migré en PHP/Javascript, avec le backend qui utilise toujours tellstick. Ça marche de façon tout à fait satisfaisante.

La seule limitation, pour l’instant, c’est que  j’ai codé en dur la dépendance sur tdtool. J’aimerais m’en abstraire. Reste à choisir la couche d’abstraction.

En plus de ça, j’ai mis en place la sécurité SSL. Du coup, à présent, seuls les browsers où j’ai installé ma clé pourront accéder à mes commandes domotiques. C’est une grosse avancée en terme de sécurité, même si au final, je n’ouvre pas mon réseau directement sur Internet.

Un dongle wifi ? Premier Hack (facile) de driver !

Un peu au hasard, j’ai acheté une clé usb wifi.

La clé est une WNA1000M-100FRS. J’ai pas mal galéré à la configurer. J’y ai passé toute la soirée.

Alors, ce que j’ai trouvé:

http://ubuntuforums.org/showthread.php?t=1806839

Dans lequel il dit que le driver associé est rtl8192cu

Par contre, le driver ne reconnaissant pas ma carte, je lui ai ajouté l’info.
{USB_DEVICE(0x0846, 0x9041)},//NetGear WNA1000M

S’en suit la phase de make, make install, et de copie de fichiers sur ma carte.

Ensuite, comme j’avais un peu cassé mes paquest de firmware, je les ai ré-installés

apt-get remove firmware-realtek
apt-get install firmware-realtek

Puis, j’ai remis ma config telle que je l’avais configurée, à la main (ça aurait marché avec wicd, sinon)

En pratique, c’est ma config dans /etc/networks qui semble faire son boulot. à confirmer au prochain reboot. Là je suis trop fatigué pour refaire des essais.

Carte fille fonctionelle

Hier soir, petite session. Juste pour tester la chaine sysfs –> relai.
Ça fonctionne comme je le voulais. Petit temps perdu à débugguer la connectique car j’ avais oublié que le +5V est toujours actif sur le fil rouge et que les 3 autres fils servent à contrôler les relais, actif à l’état bas, du coup.

Un rapide passage sur la page de mon projet chauffage originel m’a permis de me remémorer le truc.

Du coup, ça fonctionne. Prochaines étapes:

  • Avoir un script au démarage qui me configure le truc et ouvre les devices sur sysfs, de manière facile à identifier.
  • Commencer à songer aux ordres en réception. J’irais bien essayer les commandes par IR.

Compilation de mon noyau linux-sunxi pour cubieboard 1

Bonjour,

Aujourd’hui, je vais compiler un noyau linux. J’espère.

Pourquoi le recompiler alors qu’il y en a à télécharger déjà tout prêts ?
Parce que mon module ethernet boude, sans doute un problème de quartz.

Comment faire ?

git clone https://github.com/mmplayer/linux-sunxi.git
cd linux-sunxi
sudo apt-get install gcc-arm-linux-gnueabihf
sudo apt-get install u-boot-tools
sudo apt-get install libncurses5-dev
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun4i_defconfig
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

Sauvegarder la conf en tant que .config.
Dans mon cas, je l'ai aussi sauvegardée en gab.config pour la rouvrir plus tard.

make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output modules_install
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output firmware_install

Et ensuite, il faut copier tout ça sur la carte mémoire.