La télécommande domotique (presque) idéale ?

Actuellement, pour ma part, c’est celle-là :

Mes besoins sont :

  • beaucoup de boutons (pas 4 ou 8 !)
  • une réaction instantanée : je n’ai jamais bien compris pourquoi, mais avec ma zWave précédente (présentée ci-dessous) il y avait toujours un petit délai entre le moment ou le bouton de la télécommande est enfoncé, et le moment ou la lumière s’allume. Entre 0,5 et 2 secondes.
    Au quotidien, pour un puriste, c’est… insupportable 🙂
    (équipement : Domoticz sur une raspPI 3, Aeotec « Z-Stick », lumière en zWave)
  • pas une télécommande avec un écran tactile (vive les boutons physiques !), et qui consomme plein de piles
  • pas une télécommande avec des chiffres ou des symboles obscures (mauvais WAF)
  • si possible pas trop chère

Après avoir essayé diverses télécommandes du marché, comme la Z-Wave 8 boutons – Remotec

j’ai eu une illumination en voyant un clavier numérique bluetooth (Cimetech ‎G1MINI-BK dans mon cas, mais il en existe beaucoup d’autres), livré avec sa clef bluetooth à brancher sur le port USB de la RPi :

J’y ai juste collé quelques autocollants « faits maison » pour l’habiller :

  • impression avec une imprimante laser sur du papier autocollant (A4),
  • collage, sur cette impression, de scotch transparent pour protéger le papier,
  • découpage et collage du tout sur les boutons.

La mise en œuvre informatique demande un peu de bricolage. Il y a plusieurs solutions, j’ai opté pour l’utilisation de triggerhappy : un service (daemon) qui capture toutes les touches du/des claviers branchés sur la RPi.

Il s’installe très facilement, et est même déjà présent sur certaines distributions Linux RPi.

Il se configure avec un fichier de configuration (logique) :

sudo nano /etc/triggerhappy/triggers.d/switch.conf

Exemple de switch.conf (le début du mien) :

KEY_KP0    1    /home/pi/domoticz/scripts/sh/triggerhappyScript.sh 0
KEY_KP1    1    /home/pi/domoticz/scripts/sh/triggerhappyScript.sh 1
KEY_KP2    1    /home/pi/domoticz/scripts/sh/triggerhappyScript.sh 2
KEY_KP3    1    /home/pi/domoticz/scripts/sh/triggerhappyScript.sh 3

Et voilà le début de mon script triggerhappyScript.sh :

!/bin/bash

#
# Ce script est appelé depuis triggerhappy, lui même appelé par la "télécommande" constituée
# d'un clavier numérique bluetooth dont le récepteur est branché en USB sur la RPi.
#       Configuration : sudo nano /etc/triggerhappy/triggers.d/switch.conf

#
#       Après modification de ce fichier, lancer :
#           sudo /etc/init.d/triggerhappy reload
#           sudo killall thd
#           thd --triggers /etc/triggerhappy/triggers.d/ /dev/input/event* --daemon
#

# Bouton 0 : Tout éteindre
if [ "$1" = "0" ]
then
        /usr/bin/curl -s "http://192.168.1.23:8080/json.htm?type=command&param=switchlight&idx=9&switchcmd=Off"
        /usr/bin/curl -s "http://192.168.1.23:8080/json.htm?type=command&param=switchlight&idx=198&switchcmd=Off"
        /usr/bin/curl -s "http://192.168.1.23:8080/json.htm?type=command&param=switchlight&idx=223&switchcmd=Off"
        /usr/bin/curl -s "http://192.168.1.23:8080/json.htm?type=command&param=switchlight&idx=196&switchcmd=Off"
        /usr/bin/curl -s "http://192.168.1.23:8080/json.htm?type=command&param=switchlight&idx=195&switchcmd=Off"
fi

# Bouton 1 : Lumière Salon, bascule
if [ "$1" = "1" ]
then
        /usr/bin/curl -s "http://192.168.1.23:8080/json.htm?type=command&param=switchlight&idx=196&switchcmd=Toggle"
fi

# Bouton 2 : Meubles, bascule

...etc..

Pour finir, et pour faire « propre » : dans notre cas, l’inconvénient de triggerhappy est que les touches sont quand même envoyées sur la « console » (=le « terminal » sur lequel l’écran physique de la RPi est branché). En effet triggerhappy « n’absorbe » pas les entrées du clavier (de par sa conception)

Je trouvais moche que des chiffres ou autres s’affichent dans le terminal (même s’il n’est pas visible !), j’ai donc créé le script « readInput.sh » pour éviter cela:

#!/bin/bash

if [[ $(tty) == "/dev/tty1" ]];
then
	echo "Ce script permet 'd'absorber' les touches du clavier, qui sont captées par triggerhappy"
	echo "Pour sortir : CTRL-C"
	while true
	do
		read valeur
		echo "Sortir d'ici avec CTRL-C"
	done
fi

Et ce script est lancé depuis le .bashrc, à la fin de celui-ci :

/home/pi/readInput.sh

Enfin, si vous vous demandez à quoi correspondent les boutons de ma télécommande, il y a (entre autre) : des volets, un mode « repas », un mode « TV », halogène + ou -, couloir, extérieur, salon, tout éteindre, sapin de Noël…