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.

Le bon, la brute et le truand

D’abord le bon. Un seagate dockstar, avec une debian wheeze.
Le bon parce que c’est le premier que j’ai mis en oeuvre. Il fonctionne correctement, et y met toute sa bonne volonté. Il me fait tourner le démon ssh, répond tout le temps. Il a aussi un serveur apache, et un webmin pour orchestrer tout ça. En hardware, surtout, il a un tellstick, qui permet de commander quelques prises, dont une chacon et quelques casto d’entrée de gamme.

La brute. Le gros NAS synology. On le laisse faire son travail parce que c’est supposé la grosse bête. Bon, en pratique, même si c’est lui qui est en première ligne et qui héberge ce site, il met quand même un peu de temps à répondre. Encore que le délai que vous avez vient surtout de mon upload minable.
Lui, il fait un gros boulot de NAS. DLNA, Samba, réplication bbtsync, serveur apache et mysql. J’en suis assez content, encore que je pensais qu’avec ses belles specs, il me répondrait plus vite que ça. J’ai peut être encore quelques réglages à affiner.

Le truand. Je l’ai acheté avant le synology, et il m’a vexé. Une cubieboard 1, propulsée par un A10, sur laquelle j’ai installé une debian.
Il avait vocation à remplacer le dockstar. Mais voilà, après quelques semaines de service, il a crashé. je lui soupçonne un problème de carte ethernet. En tout cas la debian ne boitait plus. Son android flashé dans sa nand de secours le boitait encore, mais ne permettait pas d’accéder au réseau. Quelques mois plus tard, me voici de retour pour le tester avec une nouvelle install.
La cubian fonctionne correctement. Par contre, toujours pas de réponse du module ethernet.
Qu’à cela ne tienne, je décidai de réutiliser un montage i2c prévu pour un arduino duemillanove, qui me pilotait des relais de puissance. Mais voilà, non seulement la carte réseau ne fonctionne pas, mais en plus, la distrib ne contient pas tous les drivers. En particulier ni les drivers i2c, pour mon pcf8574x, ni les drivers de mon mutule WUSB211 wifi. Fin de la manche. Prochaine étape, me préparer moi-même ma distrib, avec mon noyau, mon set de modules (y compris ces deux drivers), et un lien qui fonctionne pour adresser les apt-gets qui vont bien vers debian.

Une longue histoire en perspective. Je raconterai mes aventures sur ce blog.