Bonjour à toutes et à tous,
Parfois, on se lance des défis et on fait des choses très complexes pour une utilité qui n’attire souvent que nous. C’est bien le problème de notre passion commune. Ne trouvant aucun soutien dans mon entourage proche sur ce sujet, j’ai souhaité partager mon dernier « délire » avec vous : la gestion du réveil, couplée à de l’IA.
Pourquoi ai-je pensé à utiliser de l’IA ? Tout simplement par besoin d’avoir un réveil chaque jour différent pour me réveiller. La même sonnerie, le même message chaque jour finit par ne plus me réveiller.
Le projet a d’abord commencé fin 2021, quelques semaines après m’être mis à Jeedom, avec une volonté d’utiliser le Google Home de notre chambre comme réveil. Il me paraissait également indispensable que Jeedom connaisse l’heure du réveil. Jeedom devait donc tout faire pour que je me lève…
La première étape a consisté à récupérer, grâce à plugin-jeedomconnect, l’heure du réveil sur nos téléphones (en prenant celui sonnant le plus tôt entre ma femme et moi) et en ajoutant 5 minutes. Un scénario est alors lancé à cette heure indiquant juste qu’il est l’heure de se lever.
Après quelques jours d’usage, il est apparu qu’il fallait mettre des rappels toutes les 5 minutes… mais comment contrôler que nous sommes bien levés ? C’est là que la vérification de la lumière de la chambre intervient. Si le scénario voit les lumières s’allumer, alors il s’arrête. Si après 20 minutes, rien ne se passe dans la chambre, il allume les lumières à 100 % et ouvre le volet (si le soleil est levé).
Puis, pour éviter les messages monotones auxquels mon cerveau s’habituait, j’ai fini par personnaliser le message du matin pour lui faire dire la météo, les températures dans les pièces, l’heure de lever/coucher du soleil…
Cette année, avec l’évolution des solutions IA, j’ai voulu faire en sorte que le message soit un peu différent chaque jour, en ajoutant de l’actualité et de l’analyse par l’IA de tout ce que je peux lui remonter.
Pour faire fonctionner tout cela, j’ai donc eu besoin de :
plugin-jeedomconnect (pour récupérer l’heure de l’alarme)
plugin-tahoma (pour la gestion des volets)
plugin-meteofrance (pour la météo)
plugin-philipshue (pour les lumières)
plugin-script (pour lancer un script bash)
plugin-jeerss (avec les RSS de mes sites d’actualités)
plugin-virtual (pour plusieurs choses)
plugin-ttscast (pour lire le texte sur Google Home)
Côté script, j’utilise deux scripts Bash :
Le premier, nommé api_mistra.sh, appelle simplement l’API Mistral.
Beaucoup d’éléments sont intégrés dans le script : token API Mistral, URL API Mistral, modèle, ainsi que le formatage de la requête. Le seul paramètre possible est le prompt à soumettre.
Le second script, nommé reveil_ia.sh, est plus complexe. Une variable permet d’avoir la base d’URL contenant « l’apikey » de Jeedom. Une variable contient le long prompt que je vais détailler plus bas. Un ensemble de variables va ensuite me permettre d’appeler Jeedom et de former un fichier JSON avec l’ensemble des éléments que je souhaite voir interpréter par Jeedom. (Par exemple : [« [BOOL] Faut-il sortir le tri sélectif ce soir »]=« 12345 », 12345 étant l’ID de l’élément d’un virtuel Jeedom. ou encore [« [TR] Temperature moyenne maison »]=« 45678 » ) Une fois tous les éléments appelés, le JSON est formé, et le script api_mistral.sh est appelé avec le prompt et le JSON.
L’API Mistral renvoie alors un texte, qui sera ensuite lu par le TTS sur le Google Home.
Le prompt utilisé est assez long et indique clairement à Mistral ce que je souhaite ou ne souhaite pas dans le retour qu’il me fera. Je lui indique également que je lui passe un JSON et la façon dont celui-ci est formaté. J’indique également qu’il doit interpréter les valeurs et n’en sortir que les remarquables. L’actualité ne doit pas être commentée mais peut être résumée.
Voici un exemple de ce qui est retourné par l’API Mistral (exécuté à la main pour envoyer ici) :
Bonjour XXXX et XXXX, aujourd'hui, la température extérieure est fraîche, avec 12,1 degrés. Le ciel est ensoleillé, ce qui promet une journée agréable. La pollution est modérée, sans rien de préoccupant. À l'intérieur, la maison est confortablement chauffée, avec une température moyenne de 19,2 degrés. La luminosité extérieure est élevée, à 34 454 lux, ce qui devrait vous permettre de bien profiter de la lumière naturelle. En ce qui concerne les actualités, XXXXXX (internationale, nationale et locale). N'oubliez pas de sortir le tri sélectif ce soir ! Profitez bien de votre journée ! Bonne journée à tous les deux.
Cette solution fonctionne sous Mistral, mais peut fonctionner avec n’importe quelle solution IA proposant une API. Pour l’instant, Mistral ne facture pas les utilisations raisonnable de leur API.
Je souhaitais juste partager cette expérience avec vous, j’espère qu’elle donnera des idées à certains !
Bien évidemment, tout est à améliorer, et même peut-être à simplifier.
Foire