Un bot pour Mastodon écrit en Micropython

Il existe déjà sur Mastodon, le réseau social libre et décentralisé dont j’ai déjà parlé à plusieurs reprises, toute une série de bots plus ou moins intéressants. Certains donnent l’évolution du nombre d’utilisateurs et d’instances sur le réseau, d’autres tootent automatiquement un résumé d’articles de blogs quand ils sont publiés, ou publient régulièrement des photos coquines. Bref, il y en a pour tous les goûts.

Moi, j’ai décidé d’écrire un bot… qui ne sert à rien! Non, l’intérêt de mon bot ne se situe pas dans sa fonctionnalité, mais plutôt dans sa conception : il va s’exécuter sur un processeur embarqué.

Dans le but de rendre le travail simple et rapide, j’ai choisis de le développer en Micropython. Et pour l’exécuter, mon choix s’est porté sur la carte Lopy de Pycom, basée sur un processeur ESP32, avec WiFi intégré. Continuer la lecture de « Un bot pour Mastodon écrit en Micropython »

L’instance Mastodon est ouverte!

Comme je l’avais annoncé dans un article précédent, j’ai décidé d’ouvrir les inscription sur mon instance Mastodon !

Cette instance est ouverte à tout ceux qui souhaite s’y inscrire, et plus particulièrement à ceux qui souhaite parler de leurs projets de développements logiciel, de leurs découvertes avec les RaspberryPi, de leurs idées originales à développer sur un ESP8266, de nouvelles technologies, du web, du DIY,…

Allez-y donc, inscrivez-vous, et venez me faire un petit coucou : https://mastodon.codingfield.com/@JF

Backup d’une instance Mastodon (fonctionnant sous Docker)

Dans l’article précédent, je vous ai parlé de ma découverte de Mastodon et de mon enthousiasme à propos de ce nouveau réseau social.

J’ai donc rapidement mis en place une instance Mastodon. Cette instance me permet de participer à ma façon au réseau Mastodon. Mais surtout, elle me permet de rendre concret ma vision du réseau social idéal, où tout le monde est libre de choisir où il s’héberge: chez lui ou chez quelqu’un d’autre.

Personnellement, j’ai décider d’appliquer l’adage « On est jamais bien servit que par soi-même ». Il s’agit d’une solution qui apporte beaucoup d’avantages, dont le contrôle total sur les données. Mais ce contrôle a un prix : je suis responsable de mes données.

Que se passera-t-il le jours où un problème majeur se produit sur mon serveur? En cas de petite erreur de frappe lors d’une manipulation en console root? Et bien mes données disparaîtront, purement et simplement! Je perdrai mon compte, mes toots, mes followers, je n’existerai plus sur le réseau.

Cela serait bien dommage! Il faut donc mettre au point une stratégie de backup permettant de sauvegarder régulièrement les données du serveur, et de les restaurer en cas de soucis, sur le même serveur, et même sur un autre serveur chez un autre hébergeur.

Continuer la lecture de « Backup d’une instance Mastodon (fonctionnant sous Docker) »

Une instance Mastodon pour Codingfield

Vous avez certainement entendu parler ces derniers jours de Mastodon, ce nouveau réseau social open-source et décentralisé apparu fin 2016 et dont la croissance est fulgurante depuis quelques semaines maintenant.

Je ne vais pas écrire ici un article présentant Mastodon en détails, beaucoup d’autres sites et blogs l’ont déjà décrit en long et en large, mais je vais plutôt expliquer brièvement pourquoi je suis enthousiaste vis-à-vis de ce réseau, et je vais aussi en profiter pour vous présenter l’instance que j’ai moi-même lancée il y a maintenant 2 semaines.

Continuer la lecture de « Une instance Mastodon pour Codingfield »

ESP8266, la petite star de l’IoT, de la domotique et du DIY

Depuis quelques temps, je remarque que les projets basés sur l’ESP8266 (et sur l’ESP32, maintenant) se multiplient.

Au départ, je n’y ai prêté que très peu d’attention, je pensais qu’il s’agissait d’une plateforme semblable à l’Arduino, avec un framework de très haut niveau qui mâche tout le travail. Enfin, c’étaient là des aprioris d’un développeur habitué à programmer son microcontrôleur registre par registre, et qui peut maîtriser au byte près l’utilisation de sa mémoire.

Mais à force de voir des ESP8266 par-ci, et des ESP32 par-là, j’ai fini par m’y intéresser… Et ce que j’ai découvert m’a fortement intéressé, au point de me procurer un petit kit et de commencer quelques petits développements.

Continuer la lecture de « ESP8266, la petite star de l’IoT, de la domotique et du DIY »

Une image Docker pour Web2py

J’ai récemment découvert Docker. Docker permet d’empaqueter une applications et tout son environnement dans un « conteneur » afin de pouvoir le déployer facilement sur une autre machine, serveur,…

Il est par exemple possible de créer une image Docker pour un serveur Web, une autre pour une serveur de base de données et une troisième pour une application spécifique. Ces images pourront servir à développer l’application. Une fois l’application prête à être déployée sur un serveur de test puis sur un serveur de production, il suffira de copier les conteneurs correspondant à ces applications sur le serveur de test et de production. Ainsi, lors de toutes les étapes de développement, le même environnement d’exécution est utilisé.

Il s’agit là d’un exemple assez complexe, mais moi, je commence simple : j’ai mis au point une petite image Docker permettant de créer un conteneur  exécutant Web2Py, le framework Python que j’utilise pour mes développements web. Continuer la lecture de « Une image Docker pour Web2py »

Neopixels sur SMT32F4 : pilotage avec un timer et DMA

Dans l’article précédent concernant les Neopixels, je vous ai montré ma solution « quick’n’dirty » pour piloter un anneau de 16 Neopixels. Cette implémentation utilise une boucle vide dont le nombre d’itérations permettra de générer des timings + ou – précis. Cette solution, qui a le mérite d’être simple et fonctionnelle, n’est pas du tout précise, optimisée et évolutive. En effet, même si la boucle de Delay() ne fait rien, elle occupe le processeur pour ne rien faire, justement. De plus, si la fréquence du processeur devait changer dans le future, tous les timings deviendraient invalides.

C’est pour cela que j’ai décidé de réimplémenter le contrôle de mes Neopixels en utilisant un timer du micro-contrôlleur. Ce timer va générer en hardware (sans intervention du programme, à part lors de l’initialisation) des timings très précis. De plus, l’utilisation du DMA va permettre de générer toute une trame de données vers les LEDs en consommant très peu de ressources du processeur. Continuer la lecture de « Neopixels sur SMT32F4 : pilotage avec un timer et DMA »

Découverte des Neopixels (sur STM32F4)

Récemment, j’ai découvert les Neopixels de Adafruits. Il s’agit de modules de LEDs RGB pas chers et assez simples à mettre en oeuvre. Ils existent sous plusieurs formes (LED unique, platines de 8 LEDs, anneaux, guirlandes, matrices,…), et peuvent être pilotés par une multitude de processeurs (cela va du petit microprocesseur 8 bits au BeagleBone, en passant par les Arduinos, par exemple).

Les applications pour ce genre de modules sont variées. En me promenant sur le net, j’ai trouvé des gens qui en ont fait des bijoux high-tech, une batterie lumineuse, des horloges, et diverses autres créations très amusantes.

J’ai trouvé cela tellement amusant que j’ai décidé de me procurer un de ces petits modules. J’ai opté pour l’anneau de 16 LEDs. Il est pas cher, pas trop grand, pas trop petit, ne consomme pas trop et… je le trouve assez mignon. Continuer la lecture de « Découverte des Neopixels (sur STM32F4) »

Analyse, conception et implémentation d’un système de commentaires – partie 2

Dans la première partie de l’article, j’ai détaillé l’analyse et la conception que j’ai effectuées pour créer le système de blog de ce site.

Dans cette seconde partie, je vais passer à phase d’implémentation des fonctionnalités.

NOTE : Je code actuellement beaucoup en C (systèmes embarqués) et C#.Net (programmes PC). Il se pourrait que vous remarquiez que mon code Python n’adhère pas tout à fait aux standards du langage, et qu’il pourrait même ressemble à du code C#. Nul n’est parfait ! Continuer la lecture de « Analyse, conception et implémentation d’un système de commentaires – partie 2 »

Analyse, conception et implémentation d’un système de commentaires – partie 1

L’idée de cette série d’articles m’est venue lors de la réalisation de ce site web. Je voulais intégrer un système de commentaires aux articles. Pour ce faire, j’avais plusieurs solutions : récupérer du code tout prêt et l’intégrer à mon site, utiliser un service tel que Disqus, ou développer mon propre système de commentaires. Ensuite, j’ai analysé mes besoins et mes contraintes, j’ai réfléchis à la structure des données, j’ai implémenté les fonctions,… Pour finalement arrivé au résultat final que vous pouvez voir en-dessous de tous les articles de ce blog.

Dans cette série d’article, je vais détailler le cheminement que j’ai emprunter pour passer du problème (« J’ai besoin d’un système de commentaires sur mon site ») à la solution (vous pouvez poster des commentaires en rapport à mes articles). Le but n’est pas d’écrire un tutoriel « Créer son système de commentaires simplement en 10 étapes », car ce cheminement pourrait être le même pour n’importe quel développement, qu’il soit personnel, en équipe ou en entreprise.

Voici donc les différentes étapes que j’ai suivis:

  • Partir de 0 ou utiliser l’existant?
  • L’analyse : de quoi ai-je besoin? Quelles sont les fonctions que va devoir remplir mon projet?
  • La conception
  • L’implémentation
  • ​Test
  • Déploiment​

Continuer la lecture de « Analyse, conception et implémentation d’un système de commentaires – partie 1 »