Lave-vaisselle DIY

Une des caractéristiques communes des personnes qui travaillent dans le numérique est celle de la haine envers les tâches périodiques et répétitives à effectuer manuellement.

Et avec un brin de fibre hacker, la problématique de cette tâche répétitive devient un défi avec comme résultat une solution efficiente voire originale.

Contexte: je vis dans un appartement de petite taille, avec un emplacement en cuisine qui force à faire un choix: machine à laver, ou lave vaisselle. C’est ce premier équipement qui occupe la place. Donc jusqu’à récemment, j’ai été dans la contrainte de devoir laver manuellement ma vaisselle, une fois par semaine. Une tâche très répétitive et vraiment peu passionnante qui me prenait plus d’une heure, surtout à cause du couple couteau + fourchette (~4 par jour = 28 objets à frotter).

Ma quête pour un lave-vaisselle format mini a été de courte durée: vu sa taille, c’est mon combi four+micro-ondes qui aurait dû être relégué ailleurs. Vu que c’est surtout les couverts qui m’empoisonnent la vie, quid d’une nettoyeuse aux ultrasons ? Si telle machine est tout indiquée pour nettoyer lunettes, verres de montre et autres pièces de monnaie, je n’en ai pas trouvé de taille suffisante pour y mettre des couverts.

Bref, il me fallait hacker le système et créer mon propre lave vaisselle.

Lave vaisselle: the basics

Un lave vaisselle est une machine qui:

  • chauffe de l’eau (~70-90°C)
  • mélange l’eau à un détergent non moussant
  • asperge la vaisselle avec cette eau
  • se vidange et rince la vaisselle
  • tombe parfois en panne et requiert des réparations onéreuses
  • fait du bruit, de la lumière, des SMS de notification de fin de cycle et autres terreurs pour chats

Puisque j’ai de l’eau chaude (à ~60°C selon mes mesures), que je peux trouver sans difficulté du détergent dans le commerce (et il y a pléthore de recettes de produit vaisselle DIY sur le net), et que je dispose d’un lavabo pouvant faire office de compartiment lave-vaisselle, il me fallait un appareil convertissant de l’énergie électrique (prise 230V) en énergie cinétique (courant d’eau pour nettoyer la vaisselle). Créer un maelstrom.

Faut que ça bouge

Mon idée initiale était simple: les bateaux utilisent le principe d’action-réaction pour avancer, en propulsant de l’eau au moyen d’une hélice afin de bouger dans le sens inverse.

Un ventilateur ? Non, il me fallait un truc submersible, un mini-moteur hors-bord. … autant dire que ce qui s’en approchait le plus sur Amazon c’était une turbine à pile pour bateau Playmobil, à l’hélice 10 fois trop petite pour actionner un volume d’eau suffisant.

Par la magie des objets similaires de la catégorie aquariophilie, Amazon me suggérait une pompe submersible.

Ça me séduisait: je vérifiais débit d’eau, alimentation, longueur de câble, usage « prévu », résistance à l’encrassage,…  Et ça tenait la route. Ce genre de pompe est normalement utilisé pour propulser l’eau hors d’un étang pour créer une fontaine, ou remonter l’eau au sommet d’une petite cascade, drainer des conduits, ….  avec une pression jusqu’à 2 bar. J’achetais.

Test et résultat

Mode opératoire:

  1. mettre dans le lavabo les couverts sales
  2. remplir le lavabo d’eau chaude jusqu’à immerger tous les couverts
  3. placer la pompe contre une paroi, mettre en marche
  4. ajouter le détergent
  5. laisser la magie opérer durant quelques heures

Et ça fonctionne ! La vaisselle en ressort plus brillante que jamais et il me suffit de les prendre par poignées entières et les rincer à grande eau, puis laisser sécher à l’air. Plus propre qu’avec une éponge surtout dans tous les petits interstices.

Mon eau chaude étant moins chaude que dans un lave-vaisselle « mainstream », je compense par une durée de lavage plus longue et une dose un peu plus forte en détergent (conso moindre en électricité contre surdosage en détergent, je pense que ça reste écologiquement avantageux face à un lave vaisselle).

La pompe étant conçue pour résister à des débris végétaux et autres impuretés d’aquarium, elle résiste sans mal aux quelques miettes détachées (et au delà du grain de riz c’est stoppé par le filtre de l’entrée d’eau).

En orientant bien la pompe je crée un tourbillon/maelstrom qui fait passer le détergent dans les moindres recoins et amène les miettes et autres saletés dans son milieu pour qu’ils s’y posent, loin de la vaisselle.

Au fil de mes utilisations, j’ai observé que les ventouses de la pompe adhères parfois mal aux parois (moins lisses que du verre), et donc la pompe repose au fond du lavabo. Afin de palier à tout risque d’inondation, je veille à remplir suffisamment le lavabo pour que, dans l’éventualité où la pompe se détacherait et s’orienterait jet d’eau vers le haut, le flux soit amorti et ne parvienne pas hors du lavabo. En plaçant la pompe contre le fond, je lui laisse virtuellement aucune chance à ce que le flux soit vertical en cas de détachement.

Voilà, à la prochaine et restez hackers 😉

Caméra de sécurité avec smartphone

Après avoir lu l’article de Numérama à propos de AtHome, une app Android permettant de faire une caméra de sécurité avec un smartphone, j’ai fait quelques tests et… n’ai pas été très satisfait·e. J’y vois surtout l’utilité pour « garder un œil » sur Bébé pendant son dodo dans sa chambre tout en restant sur le canapé au salon. Les fonctions d’enregistrement etc sont payantes, bien sûr.

Alors j’ai cherché et testé d’autres applications, et ce qui répondait le mieux à mes attentes est IP Webcam couplé avec Filoader.

La configuration est relativement facile mais très complète, il faut nécessairement tester (notamment pour vérifier si la batterie tient la charge !). Tout dépend du smartphone, donc je ne peux que détailler ma config:

  • téléphone Samsung Galaxy S II
  • résolution 640 x 480
  • format vidéo MKV (OpenH264 + Opus)

L’application  intègre un serveur web, on peut donc consulter la caméra avec un navigateur web, ou VLC, ou plein d’autres options. C’est notamment très pratique pour tester le calibrage de la détection de mouvement ou audio. Flash, vision nocturne, focus, zoom, capture photo, … très pratique. NB: l’accès n’est pas protégé par mot de passe !

 

dfgs

Bon, étape suivante. L’application découpe les enregistrements en séquences de 60 minutes horodatées. Quel est mon besoin ? Je veux mettre en place un dispositif contre les cambriolages. Le flux est trop lourd pour un envoi via internet (j’ai pas la fibre), ça fait du ~100 ko/s montant en permanence, et surtout… une caméra d’intérieur, on veut vraiment pas que ça atterrisse sur un serveur extérieur qu’on ne contrôle pas.

J’ai un serveur NAS, mais dans l’hypothèse d’un cambriolage il se ferait embarquer aussi. Et laisser les enregistrements sur le téléphone implique devoir périodiquement le manipuler. La meilleure solution: .. la Freebox. Il y a de bonnes chances qu’un cambrioleur s’en désintéresse, et elle contient un serveur FTP, et un contrôle parental pour refuser tout accès internet au téléphone. Très bien ! Toutes les heures, le téléphone envoie les enregistrements par FTP sur la Freebox.

À raison de ~300 Mo par heure de jour, et ~50 Mo par heure de nuit, ça nous fait… environ 6 Go d’enregistrements par jour en moyenne. Avec 240 Go dispo dans la Freebox, ça nous fait facilement 1 mois d’archives.

En outre, j’intègre dans mon script de sauvegardes une petite fonction à base de curlftpfs et find pour supprimer les fichiers de plus de 6 jours. Vu que j’exécute ce script manuellement, j’ai pas à craindre de vidange automatique malheureuse d’enregistrements intéressants.

Enfin… dissimuler le téléphone. Pour ce faire, j’ai utilisé un petit carton dans lequel j’ai percé un trou pour l’objectif, et dans sa face intérieure j’ai collé une pochette bricolée dans laquelle je glisse le téléphone. J’ai aussi coupé un « canal » au cutter pour faire passer le câble du chargeur en dessous et derrière le carton, d’où il descend un meuble jusqu’à la prise électrique. Discret, anodin, efficace 🙂  Période d’observation et test, vérifier si le téléphone surchauffe pas, s’il consomme moins que la vitesse de charge de la batterie, …

Et voilà ^^

Note de fin: c’est un sentiment un peu bizarre, je me sais « observé » par une caméra même si c’est moi qui en ai le contrôle. J’ai mis cela en place dans l’hypothèse d’un cambriolage sachant que je m’en voudrais d’avoir eu la possibilité technique d’avoir la tronche de l’auteur, le cas échéant. Et pourtant. Je sais mon sentiment complètement irrationnel, sachant que tout smartphone allumé est un potentiel micro-caméra espion contenant pléthore de capteurs divers et données pouvant servir à traquer la vie privée de l’utilisateur, et un smartphone allumé, bah.. j’en ai un de toute manière.

Sauvegardes incrémentielles avec Attic Deduplicating Archiver

Attic est un programme Python développé par Jonas Borgström. Il permet de réaliser des sauvegardes incrémentielles, compressées, chiffrées et morcelées. Concrètement ça se passe ainsi:

  1. une première sauvegarde complète
  2. la seconde sauvegarde ne contient que les fichiers changés depuis la sauvegarde complète
  3. la troisième sauvegarde ne contient que les fichiers changés depuis la seconde
  4. la sauvegarde N ne contient que les fichiers changés depuis la sauvegarde N-1

Lors du processus de restauration, on peut choisir quelle sauvegarde restaurer. Un fichier a été effacé par erreur jeudi, la sauvegarde a lieu tous les vendredis, et on est samedi ? Pas de souci: on peut récupérer le fichier depuis la sauvegarde du vendredi de la semaine précédente.

Une sauvegarde, on en a quasiment jamais besoin. Mais c’est quand on en a besoin qu’on enrage de ne pas avoir fait de sauvegarde. Heureusement pour moi j’utilise différentes méthodes de sauvegarde afin de me donner une redondance double, je n’ai eu à faire appel à Attic qu’une seule fois, précisément pour une question de fichier effacé 3 semaines avant (sachant que mes sauvegardes locales sont des anti-hardware-crash hebdomadaires).

Mon cas

Dans ma stratégie actuelle, Attic a le rôle suivant:

/home → Attic → disque dur secondaire → Attic → DD sauvegarde 1 → DD sauvegarde 2
···································  → hubiC
···································· → Mega

Les dossiers utilisateur me sont en effet absolument précieux, il me les faut donc décompressés sur mes 2 disques durs externes de sauvegarde locale et chiffrés sur le DD secondaire et 2 services de stockage en cloud différents (pour pallier au risque d’arrêt du cloud).

Le détail sur les sauvegardes

Attic traite les données et les stocke dans un dépôt (repository). Ça peut être un dossier local, ou distant (avec sshfs, ou de Attic à Attic via ssh). Attic y stocke 3 fichiers importants:

  • config (qui contient les paramètres du dépôt)
  • hints.X
  • index.X
  • (et un README, osef)

X étant un chiffre que je devine être le nombre de morceaux traités. hints et index sont des blobs binaires sans doute chiffrés. Il s’agit ici des fichiers d’indexation des sauvegardes, Attic les inclut dans le dépôt ce qui est un bon procédé (contrairement à Duplicity qui les stockait dans .cache, ce qui provoque beaucoup de drames car sans ces index les sauvegardes sont difficilement exploitables)

Et puis il y a un dossier data, un/des sous-dossiers, et là dedans les morceaux des sauvegardes, avec comme nom des chiffres. Blobs binaires, de 5 Mo par défaut.

Usage de base

La documentation de Attic est très complète, sauf que.. en anglais seulement. Concrètement les commandes:

  • init: une seule fois, pour initialiser la config du dépôt (le paramètre –encryption permet de choisir le chiffrement: « none » pour aucun, « passphrase » pour une phrase de passe, « keyfile » pour un fichier-clé)
  • create: à chaque sauvegarde
  • extract: en cas de restauration
  • check: de temps en temps (l’argument –repair permet de corriger de petits soucis, voir après)
  • delete: occasionnellement, pour supprimer un point de sauvegarde (je déconseille)
  • list: si besoin, permet de lister les points de sauvegarde dispo, et leur contenu
  • prune: régulièrement, supprime les points de sauvegarde anciens
  • info: si besoin, affiche quelques stats sur le dépôt
  • mount: en cas de restauration, permet de monter un point de sauvegarde et ainsi naviguer dans l’arborescence des dossiers pour trouver des fichiers précis
  • change-passphrase: occasionnellement, si vous êtes parano

Quelques recommandations et incidents

Si vous envoyez vos sauvegardes sur un/des services externes, il est indispensable de les chiffrer. Pensez-y avant car cela est défini à l’étape d’initialisation du dépôt. Attic chiffre en AES-256 donc si vous avez une phrase de passe solide (20 caractères ou plus) ou un fichier-clé qui ne risque pas la corruption, vous êtes tranquille.

Les noms des points de sauvegarde: je vous recommande fortement d’indiquer la date.

Le dossier « data » et son contenu ne doivent pas être modifiés par d’autres programmes que Attic. Exemple: j’ai mentionné précédemment que j’utilise Mega, via le logiciel MegaSync (qui fait une synchro à double sens). Et bien puisque Attic prune (supprime) les points de sauvegarde anciens alors que MegaSync n’est pas lancé, ce dernier va au lancement suivant retélécharger les fichiers des points de sauvegardes supprimés ! Attic vous signalera une corruption du dépôt. Heureusement c’est facilement corrigé avec check –repair, Attic supprime les fichiers en trop et nettoie. Par rapport à ça, j’ai inclus dans mon script de sauvegarde un contrôle bloquant: tant que MegaSync n’est pas lancé et prêt à synchroniser les modifications qui seront apportées par Attic, Attic n’est pas exécuté.

Le chiffrement: l’utilisation d’un fichier-clé peut être dangereuse, car ce fichier doit impérativement ne jamais être altéré du moindre bit.. et si ce fichier est nommé « chiffrement-attic » ou autre truc explicite, n’importe qui ayant accès au PC devinera à quoi il sert et pourra accéder aux sauvegardes. C’est pourquoi je préfère les phrases de passe. Cependant j’automatise cela au sein du script avec la commande export ATTIC_PASSPHRASE, donc le script lui-même devient le point faible.

Mon exemple de script de sauvegarde

Il est exécuté par un script-maitre appelé par crontab, et procède tous les 6 jours.

#!/bin/bash
# restore: attic extract $REPOSITORY::(date)
# list: attic list $REPOSITORY(::date)
locker='~/Bureau/attic_cron.lock'
locker1='~/Bureau/please_start_megasync.lock'
locker2='~/Bureau/attic_working.lock'
timermaxage="518400"
sourcefolder='~/'
ATTIC_PASSPHRASE="Entrer ici une phrase de passe solide"
export ATTIC_PASSPHRASE
REPOSITORY='/tmp/home.attic'
timer="$REPOSITORY/timer"
curdate=$(date +%s)
if [ -f $timer ]; then
lastexec=$(stat -c %Y $timer)
echo "timer trouvé, lastexec: $lastexec"
else
lastexec="0"
echo "timer non trouvé"
fi
calcdiff=$(($curdate-$lastexec))
if [ -f $locker ]
then exit
else
touch "$locker"
if [ $calcdiff -gt $timermaxage ]; then
touch "$locker1"
ps ax | grep -v grep | grep megasync > /dev/null
while [ $? != 0 ]; do
sleep 1
ps ax | grep -v grep | grep megasync > /dev/null
done
rm "$locker1"
sleep 13 # on laisse un peu de temps pour connexion MegaSync
touch "$locker2"
attic create --stats $REPOSITORY::`date +%Y%m%d` $sourcefolder
attic prune -v $REPOSITORY --keep-daily=4
rm "$locker2"
touch "$timer"
fi
rm "$locker"
fi

Si vous n’utilisez pas MegaSync, vous pouvez zapper tout ce qui le concerne. Le timer et les verrous (locks) aussi si vous exécutez le script manuellement. Le timer de 518400 secondes ça correspond à 6 jours (le délai entre 2 points de sauvegarde).

Pour ce qui est d’Attic, il crée des points de sauvegarde nommés par exemple « 20150809 ». Avec la commande « attic list » il affiche pour chaque point de sauvegarde la date et l’heure précise, mais bon. Si les noms sont cohérents et prévisibles, faire des trucs comme l’extraction automatisée ça devient plus facile (ce qui se passe chez moi, la sauvegarde la plus récente (attic list $REPOSITORY | tail -n1 | head -c8) étant extraite vers mes disques durs externes  -au passage ça teste donc l’intégrité de la sauvegarde)

« attic prune » avec comme paramètre –keep-daily=4. J’ai besoin d’expliquer ? Cette commande supprime tous les points de sauvegarde précédents SAUF les 4 plus récents. Ce qui dans mon cas me donne une marge jusqu’à 4*6 = 24 jours d’historique, ça me convient.

Adaptez à votre sauce !