Blog de dada

DevOps, bidouilleur et routard plein de logiciels libres

RaspberryPi

J'ai fait de la vidéoprotection

Rédigé par dada / 29 avril 2020 / 1 commentaire


Nan, je déconne ! J'ai fait de la vidéosurveillance. Il faut savoir appeler un chat un chat et je vous redirige vers cet article histoire de bien rigoler. Bref.

La genèse

Après avoir découvert la présence d'excréments sur la terrasse du jardin familial, nous avons déclaré que c'était de la merde de loir. Ni une, ni deux, on installe une cage pour capturer l'animal et le renvoyer chez le voisin plus loin. Il s'est avéré que nous nous sommes plantés et que c'était les rejets d'un hérisson !

Du coup, pour m'amuser, et ayant déjà une partie de la configuration disponible, j'ai décidé de mettre en place un système pour voir la créature se balader.

Le matériel

En photo, ça ne donne pas grand chose mais c'est rigolo :

  • Un Raspberry Pi B de 2011
  • Une webcam USB
  • Une batterie externe de 6 000 mAh
  • Un projecteur avec détecteur de mouvement

Configuration du Raspberry Pi

Raspbian

Pour commencer, installez l’indétrônable Raspbian dans la carte SD de votre Raspberry. Pensez à prendre une carte avec un peu d'espace disque. Ceci dit, ce n'est pas la peine d'en prendre une de 32 ou 64Go si, comme moi, vous utilisez le RPi 1 : cette vieille bête ne permet pas de jouer avec des grosses définitions. Oubliez le 1080p ou le 720p, ça sera bien moins.

Note : J'ai récemment appris que Ubuntu avait enfin une version dédiée au nano-ordinateur. C'est cool mais elle n'est compatible qu'avec les RPi modèles 2 à 4 : mon vieux jouet de 2011 n'est pas supporté.

Motion

Comme plus ou moins tout le monde, c'est Motion que j'utilise. Cet outil permet de détecter des mouvements en analysant, en gros, les changements de couleur des pixels. C'est très simple et très efficace.

Pour l'installer :
apt install motion
Niveau configuration, voici ce que j'ai modifié dans /etc/motion/motion.conf
daemon on
framerate 24
threshold 500
pre_capture 2
post_capture 2
Le fichier est assez long et indigeste. Je n'ai absolument pas tout lu. Si vous voulez en faire le tour, préparez un peu de café.

En faisant mes tests, je me suis rendu compte que si je voulais avoir le meilleur équilibre entre la puissance du RPi et la qualité/fluidité de la vidéo, je devais garder la résolution par défaut (320x240) et passer le framerate à 24. Augmenter l'une ou l'autre de ces variables sur un modèle B non overclockable, c'est mettre la machine à genou très vite.

Niveau détection du mouvement, le hérisson étant une petite créature, j'ai pas mal augmenté la sensibilité de Motion en la passant de 1500 à 500.

Si vous êtes des pros en matière de vidéo, je suis preneur d'info (simples) autour des réglages.

Au passage, je remercie ma nièce et son doudou pour le test grandeur nature de déclenchement de l'enregistrement :


Voyez qu'on ne fait pas de miracle avec ce genre de matos et que ça donne une ambiance flippante à une scène qui ne montre qu'une peluche de chat au bout d'un bambou.

Maintenant que le RPi fonctionne, que Motion tourne quand on le lui demande et que la batterie est chargée, y'a plus qu'à se préparer à allumer le dispositif à la tombée de la nuit. Si j'en crois mes logs, j'ai tout branché à 19h56. D'après ce site, j'ai maximum 7h devant moi.

Et le projecteur ?

L'animal que je cible dort le jour et se déplace de nuit. Ma webcam est toute naze. Du coup, il me faut un truc qui éclaire la zone filmée en cas de passage de la bête. Un petit projecteur avec détecteur de mouvement fait le boulot.  

Un projecteur qui fonctionne sur batterie et une batterie pour le RPi : oui, pas moyen de tirer un câble électrique jusqu'à la zone cible.

Le résultat

On s'en doute, toute cette opération repose sur une chance folle. Et je crois avoir eu de la chance :


C'est mignon, non ? Moi, je suis très fier !

Si on s'amuse à récapituler la chance qu'il a fallu pour avoir 20 secondes d'images floues :
  • La lumière s'est allumée quand le hérisson est passé
  • Motion a bien sauvegardé le passage de la bête
  • La batterie a tenu jusqu'au passage de la cible
  • La webcam posée en équilibre n'est pas tombée
  • Tout ce bordel était au bon endroit
  • Quand la batterie a lâché, l'arrêt brutal du RPi n'a pas corrompu les vidéos
  • Branché peu avant 20h, tout s'est arrêté vers 1h20. Loin des 7h théoriques
Bref. Courage à toutes celles et ceux qui n'ont pas la chance de profiter d'un peu de verdure.

Des bisous

Se faire un réveil 4.0 avec un Raspberry Pi

Rédigé par dada / 15 janvier 2020 / 10 commentaires


Je me suis toujours méfié des objets connectés. Ce n'est un secret pour personne : une grande partie des babioles vendues sous la bannière IoT ou objet connecté sont des machins non sécurisés, non maintenus, non écologiques et d'un intérêt plus que discutable.


Ceci dit, avec l'aide de la WebThings Gateway de Mozilla, il est possible de commencer à jouer avec son matériel existant pour le rendre connecté. Ce truc permet de garder le contrôle des-dits machins connectés puisque le cerveau de ces choses sera dans votre salon et pas sur des serveurs obscurs à l'autre bout du monde.

Un exemple que je vous propose : mettre de côté votre ancien réveil, qui marche très bien, pour le remplacer par un Raspberry Pi.

Les ingrédients

Pour ce faire, il vous faudra :
  • un Raspberry Pi (du Zero au RP4)
  • des enceintes classiques
  • un câble jack
  • l'URL de streaming de FranceInfo

Le Raspberry Pi

Vous allez commencer par utiliser WebThings Gateway comme système d'exploitation de votre Raspberry Pi. C'est une Rasbpian, basée sur Debian donc, modifiée par Mozilla, rien de plus.
Je ne vais pas m'éterniser sur la procédure d'installation : c'est très simple.
Il suffit d'aller télécharger l'image disponible ici, de flasher la carte SD avec et de placer cette-dite carte dans l'ordinateur.

Une fois que la bête a démarré, un nouveau réseau Wifi va apparaître. Connectez vous y depuis votre PC et suivez la procédure de configuration :
  • connectez-la au réseau wifi de votre box
  • créez un compte utilisateur
  • choisissez l'URL qui va bien
L'attribution de l'URL peut prendre du temps, ne paniquez pas, ne touchez à rien : Mozilla vous enverra un lien par mail quand tout sera effectif.

Installer l'extension Radio

Par défaut, WTG ne fait pas grand chose. Tout comme pour Firefox, Mozilla s'appuie sur les gens pour fournir des extensions en pagaille. Et ça marche plutôt pas mal si j'en crois le dépôt officiel.

Je vous laisse cliquer dans les menus pour installer Radio : Settings > Add-ons > le + en bas à droite -> Internet radio. 

L'add-on vient avec quelques webradios inconnues au bataillon. Pas grave, on va installer celle qui nous intéresse : la radio d'État.


Pour récupérer l'adresse de streaming, je suis passé par ce lien qui m'a permis de trouver ça :
  • http://direct.franceinfo.fr/live/franceinfo-midfi.mp3
Il est possible que le flux change ou qu'il ne soit pas vraiment fonctionnel alors prenez le temps de le vérifier. L'autre jour, par exemple, j'avais bien un flux lu mais il ne contenait pas le moindre son : méfiez-vous.

Maintenant, vous devriez avoir WTG correctement configuré dans votre Raspberry Pi. Il ne reste plus qu'à créer la règle qui va permettre d'allumer tout ça aux heures voulues.

Mettre en place le réveil 4.0

WTG fonctionne, en gros, avec deux principes : les choses (things) et les règles (rules).

Les règles permettent de faire faire des choses à vos choses. Vous suivez ?


Dans le cadre du réveil, on va s'amuser à dire à WTG d'activer la chose radio, avec le volume qui va bien, à l'heure qui va bien. Le panneau de création d'une règle est coupé en deux :
  • À gauche, la ou les conditions d'entrée
  • À droite, la ou les conditions de sortie


On va remarquer la complexité relative de la règle puisqu'il faut :
- Deux choses Clock qui déclenchent deux événements à 7h du matin
- Une chose Radio qui allume la radio
- Une chose Radio qui fixe le volume

En une seule phrase, la logique ressemble à ça : À 7h du matin, tu allumes la radio et à 7h du matin, tu montes le volume à 75.
La partie volume de ma règle n'est pas obligatoire. Elle est présente dans mon exemple parce que le volume de base, 50, est trop faible à mon goût.

Aller un peu plus loin

Dans mon cas personnel, j'ai décidé d'ajouter une règle qui arrête la radio à 8h. Pourquoi ? Parce que je dois impérativement décoller à 8h sans quoi je rate mon train.


Si vous avez capté la logique, j'ai utilisé une chose Clock qui se déclenche à 8h et une chose Radio qui arrête la boucle d'informations du matin.

Et voilà !

Conclusion

Vous n'avez plus qu'à laisser votre imagination tourner. Avec WTG, vous pouvez avoir des objets connectés qui se contrôlent depuis un ordinateur dans votre salon que vous pouvez arrêter quand vous le voulez et qui est entièrement open-source.

C'est sans intérêt, donc indispensable ! Bonne année !

Bloquer les pubs : j'ai installé Pi-Hole derrière une Freebox

Rédigé par dada / 05 juin 2018 / 31 commentaires




Étant coincé pendant encore quelques temps dans la maison familiale, j'ai du trouver des occupations. Première idée : installer un Pi-Hole.

L'idée derrière tout ça ? Trouver une utilité à l'une de mes 3 Raspberry Pi.
L'utilité derrière tout ça ? Mettre en place un système simple permettant aux membres de ma famille, qui passent souvent par cette baraque, de ne plus être emmerdés par les pubs et autres.

Je suis le "toi qui t'y connais en informatique" local. Ça m'ouvre des droits et des devoirs. Avec des géniteurs frôlant les 70 ans, je me dois de prendre en main certaines choses. J'ai déjà réussi à passer un ordinateur portable sous Debian pour l'une mais l'autre doit continuer à se servir d'un Windows. Ils sont bien au courant des histoires de pubs, de flicages et de contenus sponsorisés, mais bon, autant prendre le temps de mettre en place une petite bête qui va s'occuper de tout ça pour eux. Et je ne parle pas d'une branche qui ne jure que par Apple et dont certaines notions citées juste avant n'allument aucune lanterne.

Installer Pi-Hole

Si vous passez par Raspbian, prenez le temps de flasher sa carte SD avec la version Stretch de l'OS sans quoi vous ne pourrez pas vous servir de l'outil. Une sombre configuration de dnsmask plante la chose si vous n'êtes pas à jour.
Pensez aussi à faire un "apt update" avant de lancer l'installeur : j'avais des soucis avec les dépôts et Pi-Hole, sans rien m'expliquer, refusait de s'installer.

Pas de blabla autour de l'installation. Si vous avez une Raspberry et que vous passez par ce blog, vous devriez réussir à faire un curl et appuyer 6 fois sur la touche entrée.

Ajouter la blacklist manquante

J'ai ajouté une blacklist orientée francophones en plus de celles activées par défaut : Liste_fr + Easylist

Ça ne fait pas de mal.

Configuration de la Freebox

Pour que la Freebox utilise Pi-Hole, il faut aller faire un tour dans l'interface de gestion de la bestiole de Free. La capture d'écran qui va bien :



Voyez l'adresse sur serveur DNS 1 : il s'agit de l'IP de la Rasbperry.

Éviter les emmerdes

Alors, quand on commence à faire ce genre de bêtise, il faut garder à l'esprit qu'une coupure de courant, ça arrive. Que ce passera-t-il si la Raspberry ne redémarre pas ? Plus "d'internet" pour les utilisateurs, le téléphone qui sonne, les "tu es responsable !".

- Configurer la réservation de l'adresse IP de la Raspberry pour ne pas perdre le Pi-Hole

Pour que l'IP de la Rasbperry ne change pas, vous devez impérativement la réserver. Ça se fait dans l'interface de la Freebox, dans la gestion de baux statiques.

- Activer la connexion SSH vers la Raspberry en cas de besoin

Cette configuration ne se fait pas depuis l'interface de la Freebox mais depuis le site Free.fr. Dans la rubrique de configuration du routeur, redirigez l'accès SSH depuis l'extérieur vers l'IP de la Rasbperry Pi et le port SSH que vous utilisez (22 par défaut).

- Préparer un mail avec des captures d'écran en cas de crash du Pi-Hole alors que vous faites le tour de la Jamaïque

Pour ce dernier point, je vous laisse aller à vote imagination pour trouver la solution la plus simple pour expliquer à des proches en colères comment corriger la situation en votre absence. C'est sportif, j'en suis conscient.

Notes étonnantes

  • L'utilisation d'une Raspberry Pi de vieille génération ne ralentie pas la navigation des 10 appareils branchés sur le réseau.
  • Si vous êtes utilisateurs de uBlock, sachez que ce dernier bloque directement depuis le navigateur les requêtes qui devraient être élimées par le Pi-Hole (cf ici).

Et voilà, fin du billet. Vous pouvez vous lancer dans l'aventure si ça vous chante et que vous êtes prêt à prendre des responsabilités dans le digital familiale. Moi, je vais jouer avec Funkwhale maintenant.

Des bisous

Partage de fichiers dans un réseau Windows

Rédigé par dada / 02 septembre 2016 / 11 commentaires


Réussir à partager des fichiers dans un environnement Windows semble simple, on installe Samba et c'est plié. J'ai pourtant rencontré trop de problèmes avec cette solution, j'ai lâché l'affaire et je me suis creusé le crâne. Ma situation est la suivante :
  • Un serveur destiné à partager des fichiers chez un hébergeur sous Debian
  • Un réseau familial sous Windows
  • Un besoin basique de sécurité
  • Un besoin de fiabilité
  • Une solution éprouvée
Je gère le serveur sous Debian sans problème. Je m'y connecte déjà en SSH et une paire de clés privée/publique avec un point de montage dans mon Nautilus. Y'a rien à ajouter, ça comble les besoins de sécurité.

Le réseau familial, j'ai absolument pas envie de me prendre la tête avec samba et sa configuration affreusement chiante. J'ai choisi un truc de feignant : Apache. Comme ça, pas de prise de tête, tout se fait via le navigateur. Pourquoi Apache ? Parce que je vais ajouter une pièce dans tout ce merdier : une Raspberry Pi première génération.
L’idée qui m'a traversé l'esprit est la suivante : faire un montage SSHFS sur une Raspberry Pi qui sera la seule à pouvoir se connecter au serveur et qui offrira son contenu aux membres du réseau via une IP privée. L’accès aux données distantes se fait via SSH et Apache s'occupe du reste dans l'unique boucle locale. Note importante : seul celui que a un accès au serveur peut partager des données. Tout se fait en sens unique.

Avec un schéma, ça donne ça :



Le dessin est mauvais, mais l’idée est là : un accès en sens unique pour les PC sous Windows via Firefox. Pour que tout ça tourne bien, il ne faut pas grand chose :
  • Une Raspberry Pi avec Raspbian, un utilisateur avec SSH et une IP fixe
  • Un serveur Apache tournant avec les droits group/user dudit utilisateur pour justement éviter les problèmes de droits (envvars).
  • Un point de montage SSHFS automatique dans le fstab si redémarrage intempestif il y a, et ça arrive toujours. Toujours
  • Un Vhost qui pointe vers ce point de montage
  • Un peu de temps
On se trouve donc avec une installation pas si simple que ça, quoique, mais qui aura le mérite de faire ce que je lui demande dans des conditions honorables. Après, en tant que DevOps (*rire*), je jongle avec ce que je sais faire de mieux : des serveurs, du SSH, de l'Apache et Debian.

Si vous avez des idées plus simples et aussi stables, je suis preneur. Je ne promets pas de les appliquer tout de suite, mais ça sera stocké quelque part.

Ah, et pour finir, je vais essayer de trouver un moyen de rendre l'affichage des fichiers partagés un peu moins laid  parce que le listing du contenant d'un répertoire est vraiment limite sous Apache.
Je me suis bien amusé à faire ça. J’espère que ça va vraiment tenir. Au final, je m’inquiète plus pour ma Raspberry Pi qui traîne en équilibre sur une Freebox que du bon fonctionnement de l'installation ;-)