Compare commits

..

1 Commits

Author SHA1 Message Date
VC
07e350bf67 test: ci pipeline
All checks were successful
release / build (push) Successful in 31s
2025-02-28 18:45:26 +01:00
9 changed files with 14 additions and 139 deletions

View File

@@ -18,9 +18,7 @@ jobs:
BUILD_ONLY: true BUILD_ONLY: true
- name: Create archive - name: Create archive
run: tar -czf public.tar.gz public/ run: tar -czf public.tar.gz public/
- name: Create release - name: Do release
uses: https://gitea.com/actions/gitea-release-action@v1 uses: ncipollo/release-action@v1
with: with:
files: |- artifacts: public.tar.gz
public.tar.gz
api_key: '${{secrets.RELEASE_TOKEN}}'

View File

@@ -173,7 +173,7 @@ Conclusion de la conclusion: ça peut être interéssant de désactiver compl
Pour cela, on pourra ajouter les lignes suivantes dans le `/etc/rc.local`: Pour cela, on pourra ajouter les lignes suivantes dans le `/etc/rc.local`:
```bash ```shell
sysctl net.ipv4.conf.all.forwarding=0 sysctl net.ipv4.conf.all.forwarding=0
sysctl net.ipv6.conf.all.forwarding=0 sysctl net.ipv6.conf.all.forwarding=0
``` ```

View File

@@ -44,7 +44,7 @@ En toute logique, cest un cas assez standard et plutôt simple à mettre en
Donc côté «client», on peut donc commencer par un `main.cf` de ce type: Donc côté «client», on peut donc commencer par un `main.cf` de ce type:
```conf ```postfix
# des trucs génériques dont on se fout un peu # des trucs génériques dont on se fout un peu
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no biff = no
@@ -77,7 +77,7 @@ smtpd_relay_restrictions = permit_mynetworks,defer_unauth_destination,reject
Et donc effectivement, toute la magie tient dans les variables `smtp_sasl_*` et notamment le fichier `/etc/postfix/sasl_passwd`, qui contient lutilisateur/mot de passe pour le serveur SMTP: Et donc effectivement, toute la magie tient dans les variables `smtp_sasl_*` et notamment le fichier `/etc/postfix/sasl_passwd`, qui contient lutilisateur/mot de passe pour le serveur SMTP:
```conf ```postfix
[smtp.buttse.cx]:587 utilisateur:mot_de_passe [smtp.buttse.cx]:587 utilisateur:mot_de_passe
``` ```
@@ -95,7 +95,7 @@ Du coup, il va falloir ruser pour convaincre *Postfix* de faire comme dhabitu
Sous Debian/Ubuntu, tu peux donc installer le paquet `stunnel4` et faire une petite configuration de ce type, dans `/etc/stunnel/smtp-wrapper.conf`: Sous Debian/Ubuntu, tu peux donc installer le paquet `stunnel4` et faire une petite configuration de ce type, dans `/etc/stunnel/smtp-wrapper.conf`:
```conf ```stunnel
[smtp-tls-wrapper] [smtp-tls-wrapper]
accept = 10465 accept = 10465
client = yes client = yes
@@ -104,13 +104,13 @@ connect = smtp.tem.buttse.cx:465
Et du coup, lorsque lon démarre le service `stunnel4`, on voit effectivement quil écoute sur le port 10465. Il suffit alors de reconfigurer notre petit *Postfix* comme suit pour sadapter: Et du coup, lorsque lon démarre le service `stunnel4`, on voit effectivement quil écoute sur le port 10465. Il suffit alors de reconfigurer notre petit *Postfix* comme suit pour sadapter:
```conf ```postfix
relayhost = [localhost]:10465 relayhost = [localhost]:10465
``` ```
Et évidemment, changer également le login/pass/host dans `/etc/postfix/sasl_passwd`: Et évidemment, changer également le login/pass/host dans `/etc/postfix/sasl_passwd`:
```conf ```sasl_passwd
[localhost]:10465 login:pass [localhost]:10465 login:pass
``` ```
@@ -122,13 +122,13 @@ Quand il sagit de *cron*, le service a tendance à envoyer les messages à l
Pour cela, on peut forcer *Postfix* à faire une réécriture de tous les messages de destination pour les envoyer ailleurs. Ce nest pas bien compliqué, il suffit dajouter la ligne suivante dans le `main.cf`: Pour cela, on peut forcer *Postfix* à faire une réécriture de tous les messages de destination pour les envoyer ailleurs. Ce nest pas bien compliqué, il suffit dajouter la ligne suivante dans le `main.cf`:
```conf ```postfix
recipient_canonical_maps = regexp:/etc/postfix/recipient_canonical recipient_canonical_maps = regexp:/etc/postfix/recipient_canonical
``` ```
Et le fichier `/etc/postfix/recipient_canonical` se présentera comme suit: Et le fichier `/etc/postfix/recipient_canonical` se présentera comme suit:
```conf ```postfix
/.+/ admin@buttse.cx /.+/ admin@buttse.cx
``` ```
@@ -146,7 +146,7 @@ Heureusement, encore une fois *Postfix* à la rescousse! On peut aussi forcer
Pour cela, il va falloir ajouter quelques lignes dans notre `main.cf`: Pour cela, il va falloir ajouter quelques lignes dans notre `main.cf`:
```conf ```postfix
sender_canonical_classes = envelope_sender, header_sender sender_canonical_classes = envelope_sender, header_sender
sender_canonical_maps = regexp:/etc/postfix/sender_canonical_maps sender_canonical_maps = regexp:/etc/postfix/sender_canonical_maps
smtp_header_checks = regexp:/etc/postfix/header_check smtp_header_checks = regexp:/etc/postfix/header_check
@@ -154,7 +154,7 @@ smtp_header_checks = regexp:/etc/postfix/header_check
Et on produit donc les deux *maps* permettant de changer les deux entêtes à la fois dans `/etc/postfix/sender_canonical_maps` et `/etc/postfix/header_check` (cest exactement le même fichier): Et on produit donc les deux *maps* permettant de changer les deux entêtes à la fois dans `/etc/postfix/sender_canonical_maps` et `/etc/postfix/header_check` (cest exactement le même fichier):
```conf ```postfix
/.+/ youplaboom@mondomainesour.ce /.+/ youplaboom@mondomainesour.ce
``` ```

View File

@@ -5,7 +5,7 @@ date = 2023-12-08
tags = [ "truenas", "minio", "s3", "sysadmin", "système" ] tags = [ "truenas", "minio", "s3", "sysadmin", "système" ]
+++ +++
> La mauvaise doc, tu la lis… tu comprends rien! La bonne doc, tu la lis… bon tu comprends rien non plus, mais cest une bonne doc! > La mauvaise doc, tu la lis… tu comprends rien! La bonne doc, tu la lis… bon tu comprends rien non plus, mas cest une bonne doc!
<!-- more --> <!-- more -->

View File

@@ -1,123 +0,0 @@
+++
title = "Home Assistant: Projet Consonance"
date = 2025-07-18
[taxonomies]
tags = [ "système", "home assistant", "infrarouge", "logitech harmony", "consonance" ]
+++
> « Hail to the King, baby! »
*Duke Nukem ou quelque chose, je sais pas, jai pas joué au jeu*
<!-- more -->
# Le roi est mort, vive… ah attendez…
Pour ceux qui ne seraient pas au courant, [Logitech](https://www.logitech.com/fr-fr) a annoncé, il y a déjà quelques années, que les télécommandes de la série [Harmony](https://www.myharmony.com/fr-fr/) sarrêtait.
Non seulement, Logitech ne va plus les vendre, mais en plus, **les serveurs seront éteints courant de lannée 2025**. Or, nous sommes courant de lannée 2025 et certains serveurs sont effectivement déjà éteints, notamment celui de [lapplication historique de Logitech](https://members.harmonyremote.com/EasyZapper/) sur lequel sappuyait notamment le projet [Concordance](https://github.com/jaymzh/concordance) qui permettait aux utilisateurs de Linux de mettre à jour leur télécommande.
Lapplication Windows, écrite avec [Microsoft Silverlight](https://fr.wikipedia.org/wiki/Silverlight), non, non, ce nest pas une blague, continue de fonctionner mais avec un nombre de télécommandes bien plus limitées et pour un temps probablement lui aussi très limité.
Larrêt de serveurs ne transforme pas instantannément toutes les télécommandes Harmony en presse-papier. Elles ont été conçues au début des annnées 2000, période à laquelle il nétait pas forcément possible que tout appareil puisse être connecté.
Autrement dit, si tu as une télécommande Harmony, la bonne nouvelle cest quelle fonctionne toujours. La mauvaise, cest que si tu dois y effectuer le moindre changement, ajouter un appareil ou modifier une commande, et bien tu las dans los.
# Les alternatives
Larrêt ayant été annoncé en 2021, tu pourrais penser que des concurrents reprennent le flambeau. Et bien malheureusement, ça ne se passe pas tout-à-fait comme ça… Je te propose de jeter un petit coup dœil à ce qui pourrait remplacer une télécommande Harmony en 2025.
## HDMI CEC
Le concurrent n°1, cest évidemment… la norme HDMI elle-même! Nous sommes en 2025 et la plupart des gens ont des appareils connectés de manière numérique et utilisant une norme permettant le transfert de limage, du son **et des commandes**.
Ça sappelle le [HDMI CEC](https://fr.wikipedia.org/wiki/Consumer_Electronics_Control) et, tant quon ne lui en demande pas trop, ça «marche». Alors soyons très clair, si tas effectivement une télévision, une barre de son, une Nintendo Switch et un boîtier TV quelconque, ça marche.
Par contre, dès que tu commences à intégrer des appareils nayant pas de CEC, ou simplement que ton installation est plus compliquée que cela et bien ça merde dans les grandes largeurs. Le CEC a été conçu pour des cas simples avec des appareils à fonctions bien définies et uniques. Dès que lon rajoute ne serait-ce quun Switch HDMI, ça commence généralement à partir en couille.
Sans compter le fait quil est toujours compliqué de déterminer qui allume qui, qui éteint qui, etc…
Bref, je pense que cest **la raison** qui fait que Logitech a abandonné les télécommandes Harmony: avec le CEC, pour 90% des usages, cest largement suffisant, sa télécommande ne se justifiait plus que pour un marché de niche, voire dultra-niche. Mais il nempêche que pour les gens qui ont besoin de contrôler plus de choses, le CEC est plus un cauchemar quautre chose.
## SofaBaton
Présenté par certains comme **LA** solution à la défection de Logitech, [Sofabaton](https://www.sofabaton.com/), malgré son nom ridicule, est effectivement un sérieux concurrent. Une télécommande qui a lair bien foutue, une liste de compatibilité longue comme… enfin une très longue liste, et un appareil qui lui-même semble plutôt costaud et sympathique à utiliser.
Sofabaton présente aussi lavantage de proposer un hub, façon [Harmony Hub](https://support.myharmony.com/fr-fr/hub) sur certains modèles. Le hub, cest un truc à la con, mais quand on commande des appareils infrarouge, il faut obligatoirement avoir une ligne de vue vers les appareils en question. En fonction de comment est organisé ton salon et tes appareils, ça peut éventuellement être compliqué davoir systématiquement **tout** en ligne de mire pour lancer une commande. Donc on retiendra que le Hub, cest plutôt une bonne idée dans labsolu, surtout quil dispose de sorties infrarouge supplémentaires au cas où.
Par contre, toutes les Sofabaton ne naissent pas égales. Les modèles [U2](https://www.sofabaton.com/products/u2/) ne fonctionnent pas ainsi selon le principe dActivités qui a rendu les Logitech Harmony célèbres: tu appuies sur le bouton DVD, ça allume télé, les enceintes, lampli, le lecteur DVD lui-même et ça met toutes les bonnes entrées sur tout ce petit monde. Sans cela, et bien on a juste regroupé toutes les télécommandes en une, mais on na pas vraiment simplifié la façon de fonctionner de lensemble. Fort heureusement, les X1 et [X1S](https://www.sofabaton.com/products/x1s/) corrige le tir en prévoyant un fonctionnement par activité.
Autre problème: le prix. Quelques fois disponibles pour un peu moins de 200€, bah ça fait quand même 200€. Alors certes, les télécommandes Harmony ont toujours été assez chères aussi. En prenant compte de linflation, je pense quune Harmony One devait facilement coûter 300€. Mais la proposition de valeur nest plus tout-à-fait la même aujourdhui.
Mais en fait, le vrai gros point noir cest la configuration. Elle se fait toujours avec une appli, sur mobile cette fois, et cette appli, elle pourrait bien sarrêter dans quelques années, voire quelques mois. Et jai déjà donné, donc non merci…
## Unfolded Circle Remote Two/3
[Unfolded Circle](https://www.unfoldedcircle.com/), en dehors davoir un nom à coucher dehors, ça a lair dêtre des gens bien. Et leur produit, cest effectivement un avion de chasse: configuration locale à 100%, plusieurs milliers dappareils supportés, Bluetooth, gyroscope, *air-mouse*, chargement par induction, etc…
Cest un truc de gros furieux avec en plus un dock, des relais infrarouges, etc… Et en plus, une API ouverte et plein dautres trucs. On peut a priori y faire tout et surtout nimporte quoi avec à peu près nimporte quel appareil.
Le problème… cest le prix. À 399€, la télécommande seule, 499€ avec le dock, cest quand même putain de pas donné! La Rolls Royce des télécommandes, à nen pas douter, mais clairement une solution bien au-delà de mes moyens pour un truc de ce type.
# Bricole picole a.k.a. Projet Consonance
![img](/2025/07/harmony_unfolded.jpg)
Lautre alternative. Et bien, cest Home Assistant.
En fait, Home Assistant a déjà presque tout ce quil faut pour remplacer une télécommande Harmony: des scripts, des entités virtuelles et des intégrations de folie. On peut déjà y coller une TV connectée si on le souhaite, un Kodi, un Nvidia Shield, etc…
Donc en théorie, on peut déjà contrôler pas mal de trucs si on fait exception de tout ce qui est infrarouge.
## Blaste cet infrarouge!
Mais il se trouve quon peut aussi y coller un *IR Blaster*. Cest un petit appareil dont la seule utilité est de balancer des éléments infrarouge quon lui aura précédemment appris. Il en existe de nombreux: connecté à une application ou pas, en Zigbee, en Z-Wave, sur pile, sur batterie, etc… Cest presque sûr quon peut trouver de quoi faire son bonheur. Personnellement, jai opté pour le [Broadlink RM4 Pro](https://ebroadlink.com/products/universal-remote-rm4-pro).
Il vient avec une application qui permet de faire le premier paramétrage et après… on peut len détacher complètement et sen servir directement dans Home Assitant. Il est en Wi-Fi et prend deux commandes très simple: `learn_command` pour apprendre une commande existante et `send_command` pour envoyer une commande existante.
Alors effectivement, quand on le déconnecte de son appli, il faut se taper lapprentissage de toutes les commandes via les télécommandes dorigine ou via la Logitech Harmony encore opérationnelle. Mais lintérêt derrière, cest que cest un simple fichier JSON avec des informations assez simple: quel appareil, quelle commande, quel signal.
Donc changer dappareil pour envoyer des commandes, rien de plus simple en réalité.
Une fois le RM4 Pro intégré dans Home Assistant, via lintégration Broadlink, lapprentissage se fait en passant par le menu `Outils de développement`, dans `Actions`.
Voici un exemple:
![img](/2025/07/dev_learn_command_ha.png)
Cest un peu pénible à faire, mais jen ai eu pour à peu près une heure pour rentrer 5 télécommandes. Le plus relou restant les commandes qui nexistent pas sur la télécommande dorigine. Par exemple, ma télévision LG OLED peut aller directement sur la bonne entrée (`HDMI1`, `HDMI2`, etc…) mais ce nest pas une touche en accès direct. Il a donc fallu que je repasse par ma Logitech Harmony pour apprendre tout ça au Broadlink.
## Scripts
Maintenant quon a appris toutes les commandes, il reste à voir commander les ordonnancer proprement pour chaque activité. Et là, un second problème pointe son nez: quand on fait de linfrarouge, on ne peut pas vraiment savoir si lappareil a reçu la commande correctement ou non: on blaste les commandes suffisamment fort en espérant que ça passe.
![img](/2025/07/blasting.jpg)
Et le second souci à coupler à ce premier: la plupart des appareils infrarouge ont un seul et unique bouton pour allumer et éteindre. Cest un `power_toggle`. Il est assez rare davoir une commande dallumage et une commande dextinction. Cela veut dire que lon doit mémoriser quelque part létat de lappareil histoire de ne pas tout éteindre/tout allumer aléatoirement tout le temps.
Pour ce faire, jai créé des entités virtuelles représentant les différents appareils que je souhaite contrôler. Ce sont des simples interrupteurs (*on/off*) mais on pourrait imaginer de stocker plus dinformations que cela (par exemple la dernière entrée dun appareil).
Donc dans `Paramètres` > `Appareils et services` > `Entrées`, jai créé les 6 appareil contrôlés en infrarouge. Pour des raisons pratiques, je vais considérer que Kodi est contrôlé via son API (ce sera bien plus simple). Je leur ai tous donné une zolie icône et mis dans une catégorie `Consonance`, puisque ce sera le nom de ce projet. Concrètement, ça donne ça:
![img](/2025/07/home_assistant_config_helpers.png)
Partant de là, cest relativement simple: un script pour chaque activité et un script dextinction. Pour linstant, je ne souhaite pas compliquer les choses en permettant de passer dune activité à une autre, comme mon Harmony savait le faire. Cela pourra venir plus tard, ce nest pas particulièrement complexe à faire, ça demande juste un peu plus de temps pour pas grand-chose.
Dans le script dactivité:
* on envoie la commande `power_toggle` tous les appareils qui vont bien (TV, enceintes, etc…)
* on allume toutes les entrées logiques correspondantes pour garder la mémoire de ce qui est allumé
* on attend (5 secondes en général)
* on envoie toutes les commandes dentrée qui vont bien sur les appareils allumés
Et boum! On a une activité qui roule. Plus lactivité implique dappareils, plus les temps dattente vont varier, mais ce nest pas beaucoup plus lourd que ça à gérer.
Pour lextinction générale pareil, assez simple, pour chaque entrée logique:
* on vérifie si elle est allumé
* on envoie la commande `power_toggle`
* on éteint lentrée logique
Avec le langage de script dHome Assistant, il est difficile de faire des boucles, mais on peut faire des groupes ou traiter tous les appareils indépendamment. On pourrait donc très bien imaginer mettre les appareils dans un groupe ou une catégorie en fonction de lactivité et simplement sappuyer là-dessus pour gérer la partie interrupteur virtuelle.
# Conclusage
Là, on a plutôt fait la partie arrière-boutique. La prochaine fois, on verra comment interagir avec Home Assistant pour tout contrôler. En attendant, je te laisse avec [le repo qui va bien](https://giteu.be/home_assitant/consonance) si tu veux repomper le truc ou tinspirer.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB