Étant Belge, je n'ai connu le minitel que par les mentions des 36truc code machinbrol dans les émissions TV de mon enfance. Du coup ça m'a toujours intrigué cet engin un peu louche qui ne pouvait rien faire par lui-même.
(Oui, il y a eu des minitels en Belgique, mais quasi uniquement pour les pros, le grand public n'a pas été informé que c'était disponible)
Ayant récupéré deux de ces vieux bignous (dont un HS à mon grand regret), la première idée qui m'est venue c'est qu'il ferait une interface “graphique” sympa pour ma domotique.
Le vieux clou fonctionnel que je possède est un minitel 2 Philips. Il est équipé d'un modem possédant un connecteur téléphonique français (le brol en forme de T là) et d'un connecteur DIN 5 broches aussi appelé port péri-informatique (ça sent bon les années 80, ce nom), qui n'est jamais qu'un port de communication série TTL.
J'ai un raspberry pi zero w qui prend la poussière dans un coin. Okay, un raspi pour gérer un minitel, c'est un peu overkill. Mais plutôt que de racheter du matos, autant utiliser celui que je possède. En plus je pourrai éventuellement tenter d'autres trucs avec.
Le raspi possédant un UART sur son pin header GPIO, ça demande bien moins d'électronique pour passer par le port péri-informatique que par un modem V23 (que ça soit un fait maison ou de seconde main).
Les tensions de fonctionnement des GPIO de raspi et du port péri-informatique ne sont pas identiques, ça serait trop simple. Globalement, l'électronique moderne tourne sur plutôt à 3.3V là ou le minitel est sur des niveaux TTL (donc plutôt dans les 5V). Donc il faudra adapter les tensions et prévoir un petit opto-coupleur ou un truc dans le genre qui servira de protection pour les GPIO du raspi.
Yapuka™ faire un prototype de câble et essayer d'afficher des trucs sur le minitel.
Du coup, en fouillant un peu le net je tombe sur un petit composant, ADuM 1201, prévu pour découpler un canal de communication bidirectionnel supportant jusqu'à plusieurs mbps (les minitels ne dépassent pas 9600bit/s, on est large ).
Quasi pas besoin de composants supplémentaires. A lui seul, il découple les deux appareils, supporte et filtre de courts pics de voltage et permet d'avoir un coté alimenté en 3.3V et l'autre en 5V, ça me simplifie grandement le travail pour interfacer les deux appareils.
Le black friday sur AliExpress ayant fait des ravages sur mon compte en banque, me voilà en possession de connecteurs DIN, d'un module ADuM1201 et d'un module abaisseur de tension, tous prêts à l'emploi.
Il faudra probablement ajouter un switch “power” entre le stepdown Vin+ et le stepdown EN. Histoire de pouvoir allumer le minitel sans alimenter le raspi.
Après avoir (très mal) soudé les pin headers, j'ai :
Les Raspberry, c'est de la merde ! L'UART par défaut exposée sur le connecteur GPIO est limitée en fonctions. Du coup au moins une fonction nécessaire au dialogue raspi - minitel est absente. (y a des histoires de bit de parité etc pour communiquer avec le minitel)
Plusieurs solutions se présentent :
Virons le bluetooth, de toutes j'ai juste besoin du wifi :
enable_uart=1
dtoverlay=disable-bt
sudo systemctl disable hciuart
Forcément, ça ne fonctionne pas parce que je suis à bout de patience. Que je ne sais pas bien ce que je fais. Et je lance les mêmes commandes en boucles dans l'espoir d'obtenir un autre résultat, ce qui n'a aucun sens.
pour tester
$ stty -F /dev/ttyUSB0 1200 istrip cs7 parenb -parodd brkint ignpar icrnl ixon ixany opost onlcr cread hupcl isig icanon echo echoe echok $ echo 'bonjour Minitel !' > /dev/ttyUSB0
inverser fils rouge et vert
pullup/down resistor ?
Fnct+Sommaire
(pour passer du mode répertoire au mode terminal)
Fnct+T A
(passage en mode périphérique)
Fnct+T E
(désactivation de l’echo du terminal)
Fnct+P 4
(connexion à 4800 bauds)
test boucle en sortie de adum 'echo' OK mais revérifier maintenant que c'est le nouvel UART
Avant tout essayer d'échanger entre le raspi et le minitel, on verra pour la suite après.
Le but final est d'arriver à exploiter le raspi en tant que “passerelle” pour accéder à du contenu. Que ce contenu soit disponible depuis des serveurs minitels externes, depuis la carte SD (ou tout autre moyen de stockage) du raspi, ou encore depuis mon serveur Home Assistant.
Il existe un tas de librairies et autres softs pour communiquer avec le minitel. Certains ne font que du contenu en local, d'autres permettent de se connecter via websocket à des serveurs minitel encore actifs proposant cette connexion.
Ce que je souhaite obtenir sur mon système serait similaire à Socketel.
Lui-même basé sur un portage en micropython de PyMinitel, Socketel tourne sur ESP32 (les “adaptateurs minitel” basé ESP32 ne sont pas chers à construire et donc probablement les plus utilisés pour “moderniser” les minitels).
Donc ça demandera du taf pour adapter un système similaire sur raspi. Mais proposer une interface native sur le minitel pour config certaines choses dans le raspi me parait totalement indispensable. J'ai envie que le couple minitel+raspi soit le plus autonome possible.
Genre un truc dans ce gout là pour le menu principal :
Comme la partie minitel/raspi sera basée sur des projets codés en python, autant continuer avec ce langage pour la partie hass/raspi. Histoire d'avoir un projet “unifié”, c'est plus simple à maintenir sur le long terme.
Je ne sais pas encore quel protocole sera utilisé pour échanger entre le raspi et le serveur hass… MQTT ? REST ? WebSocket ? Coder directement un serveur minitel en tant que module HASS ? Je ne sais pas encore ce qui sera le plus simple/pratique/cool, à voir.
Concevoir un serveur minitel websocket comme plugin pour HASS serait très cool, mais je soupçonne que ça dépasse de très loin mes compétences. Ça impliquerait de créer une interface graphique pour concevoir les écrans à afficher sur le minitel, gérer les liens avec les sources de données des entités etc.