[Domotique] Le 433 MHz sur votre Raspberry Pi

Tags: Raspberry Pi Domotique Tuto Home Assistant


Bonjour à tous,

Aujourd'hui, nous allons voir comment émettre et recevoir à la fréquence 433 MHz sur votre Raspberry Pi.

À quoi correspond cette fréquence ?

D'après Wikipédia, la bande des 433 - 434 MHz désigne une bande de fréquence permettant différents types d'applications comme des télécommandes, télécontrôles, télémesures … Sans entrer dans les détails, dans notre cas, cette plage de fréquences est très utilisée dans le monde de la domotique. De nombreux appareils appliqués à la domotique utilisent cette plage: prises électriques, ampoules connectées, détecteurs de mouvement mais également certaines portes de garages.

Matériel nécessaire

Le matériel nécessaire est relativement peu couteux, tout dépend surtout du besoin que vous avez en réception.

  • Un Raspberry Pi
  • Un émetteur 433 MHz de type FS1000A
  • Un récepteur 433 MHz de type RXB6 (ou CDR03A mais de moins bonne qualité)
  • Une prise électrique 433 MHz (ou une ampoule ou tout autre appareil fonctionnant sous cette fréquence)
Un Raspberry Pi
Un Raspberry Pi
Un émetteur FS1000A
Un émetteur FS1000A
Un récepteur RXB6
Un récepteur RXB6

Plus de détails sur le Raspberry Pi

N'importe lequel fera l'affaire. Ce qui nous intéresse sont ses ports GPIO (General Purpose Input-Output ou Entrée/Sortie à usage général pour les non anglophones). Ce sont donc des entrées/sorties très utilisées dans le monde des microcontrôleurs qui permettent à un circuit électronique de communiquer avec des composants externes (ici nos émetteur et récepteur).

L'avantage du Raspberry Pi ici est son accessibilité et son faible coût.

Plus de détails sur les prises électriques

Quand on cherche des prises électriques, on ne sait pas lesquelles choisir. Et bien je ne saurais pas vous conseiller, je sais juste que j'ai des prises de la marque Tibelec qui fonctionnent à 99% du temps avec quelques caprices. Je vous souhaite donc une bonne chance lors de votre choix de prises !

Mise en place du système

On va commencer par faire les branchements nécessaires puis les premiers tests avec des utilitaires clés en main.

Branchements

Quels que soient les émetteurs et récepteurs que vous avez choisi, vous devriez retrouver des broches pour la terre, pour l'alimentation (souvent appelées Vcc pour Alimentation Tension Continue en français), une broche pour la data et une dernière facultative pour l'antenne du récepteur.

Globalement, votre schéma devra ressembler à ça:

Schéma du montage
Schéma du montage

Côté récepteur, les couleurs sont les suivantes:

  • Noir pour la terre (port 06 - GND)
  • Rouge pour l'alimentation (port 17 - 3.3V PWR)
  • Vert pour la data (port 13 - GPIO27)
  • Bleu pour l'antenne

Côté émetteur, les couleurs sont moins conventionnelles mais permettent plus de lisibilité sur le schéma:

  • Jaune pour la terre (port 09 - GND)
  • Marron pour l'alimentation (port 02 - 5V PWR)
  • Orange pour la data (port 11 - GPIO17)

Voici un schéma de correspondance des ports GPIO des Raspberry Pi 40 broches.

Schéma des ports GPIO du Raspberry Py
Schéma des ports GPIO du Raspberry Py

Software

Installation

2 options s'offrent à nous, avec des outils différents. La première repose sur la librairie WiringPi et l'API rc-switch tandis que la deuxième utilise un paquet Python rpi_rf qui package déjà tout.

Option 1

Tout d'abord, nous devons installer la librairie WiringPi:

Ensuite, nous allons avoir besoin d'utilitaires disponibles dans un dépôt Git:

  • git clone https://github.com/ninjablocks/433Utils (mirroir ici)
  • Le dépôt a des dépendances, initialisons les git submodule init suivi de git submodule update (mirroir ici)
  • cd 433Utils/RPi_utils
  • Et on compile: make

Cette librairie utilise par défaut les ports que nous avons utilisés lors des branchements précédents, à savoir:

  • Pour la partie émetteur: WiringPi 0 sur le GPIO 17 (port 11)
  • Pour la partie récepteur: WiringPi 2 sur le GPIO 27 (port 13)
Tests

Nous allons ici avoir besoin de 2 consoles en tant que root:

La première va lire ce que reçoit notre récepteur:

cd 433Utils/RPi_utils
./RFSniffer

La seconde pour envoyer un message:

cd 433Utils/RPi_utils
./codesend 12345678

Lors de l'envoi du message, celui-ci devrait apparaitre dans la console de lecture. Si comme moi vous avez des prises électriques avec leur télécommande, essayez d'appuyer sur un bouton de celle-ci, vous devriez voir le message s'afficher.

Option 2

Je vois renvoie directement à la partie Home Assistant, si vous ne désirez pas utiliser d'environnement virtuel ou si vous n'utilisez pas Home Assistant, vous pouvez commencer au troisième point.

Tests

Pour les tests, je vous renvoie aux tests de l'option 1 mais en utilisant les commandes rpi-rf_send et rpi-rf_receive.

Cas d'utilisation

Prises électriques

La majorité des prises fonctionnent de la même façon, vous avec 4 canaux sur lesquels vous pouvez envoyer 4 messages différents. Vous pouvez donc avoir (pour une même marque, à voir si d'autres marques ne se chevauchent pas), 4 x 4 = 16 réseaux différents.

Je vous invite donc à ouvrir un tableur et à le remplir en jouant avec le binaire RFSniffer ou la commande rpi-rf_receive et votre télécommande.

Une fois cela fait, on peut passer à l'étape suivante, c'est-à-dire l'intégrer dans un logiciel de domotique (dans mon cas, ce fut Gladys au démarrage mais Home Assistant à l'heure actuelle).

Home Assistant

On va prendre un cas concret que j'ai chez moi. J'ai un disque dur derrière une prise 433 MHz que je veux contrôler à l'aide de Home Assistant. Ses codes sont les suivants:

  • 5526613 pour l'allumer
  • 5526612 pour l'éteindre

Dans Home Assistant, le composant permettant d'utiliser le 433 MHz se nomme RF Switch.

Le paquet python rpi-rf est nécessaire pour que cela fonctionne. Dans mon cas, il était déjà installé mais sinon, voici les commandes à exécuter pour le faire (à adapter selon votre installation):

  • sudo -u homeassistant -H -s pour se mettre sur l'utilisateur homeassistant
  • source /srv/homeassistant/bin/activate pour sourcer l'environnement python
  • pip list pour regarder si rpi-rf figure dans la liste
  • pip install rpi-rf pour l'installer si celui-ci n'y est pas
  • Vous avez accès aux commandes rpi-rf_send (à utiliser avec un paramètre correspondant au message à envoyer) et rpi-rf_receive pour recevoir.

Comme le montre la documentation, celui-ci s'ajoute dans le fichier configuration.yaml de cette façon:

switch:
  - platform: rpi_rf
    gpio: 17
    switches:
      Disque dur:
        code_on: 5526613
        code_off: 5526612

Autres

Ici, on ne se sert que de la partie émission, on peut également utiliser des détecteurs de présence et imaginer des scénarios tels qu'allumer la lumière du couloir pendant 15 secondes après 23h si on détecte une personne dans le salon.

Conclusion

Voilà la fin de cet article. Comme toujours, il y a plusieurs façons d'arriver à nos fins. Ce que j'ai écrit ici a fonctionné pour moi, ce n'est pas dit que ce soit toujours le cas au fil du temps. Pour cela, si une étape est obsolète, n'hésitez pas à en faire part dans les commentaires pour en faire profiter la communauté.

Commentaires




Ailleurs sur le Web


(2) laydgeur sur Twitter : "Au milieu de cette image, la centrale nucléaire de #Fessenheim. Tout autour, 850 éoliennes. Ça fait beaucoup ? Et pourtant, c’est juste le quart de ce qu’il faudrait pour produire autant d’électricité que la centrale. Explications en #thread ⬇️⬇️ https://t.co/Fu8povk6cg" / Twitter

A ressortir aux "écolos" qui n'ont pas encore compris que le nucléaire est l'une des solutions les plus propres.

via Shaarli le 09 décembre 2019

BMFTV sur Twitter : "Marine Lepen : « Pourquoi ne pas renommer le Black Friday en White Friday ? Nous sommes en France, pas en Afrique. » https://t.co/7CMj6jGgLj" / Twitter

Les commentaires sont tops: Pourquoi ne pas renommer patinoire en patiblanche? Pourquoi ne pas renommer Marine Lepen en Marine Lestylo ? On est pas en Angleterre ici En revanche, "broyer du noir", on garde. On parle de BMF hein, pas BFM ! ^^ — Permalin…

via Shaarli le 01 décembre 2019

Black Fuckday | Grise Bouille

Autant des gens vont beaucoup trop loin, autant les réductions peuvent être intéressantes. Pour des revenus modestes, bien que moralement contestable, le Black Friday permets d'acheter ce qui ne serait pas possible en temps normal.

via Shaarli le 30 novembre 2019

Généré avec openring