[Domotique] Le 433 MHz sur votre Raspberry Pi

Publié le 29 mai 2019

Raspberry Pi Domotique Tutoriel Home Assistant

 Attention, cet article date de plus d'un an. Les informations qu'il contient sont peut-être obsolètes. 

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 émetteur FS1000A 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 Pi
Schéma des ports GPIO du Raspberry Pi

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


Home Screen Advantage - Infrequently Noted

A slide from Apple's presentation in Apple v. Epic, attempting to make the claim Epic could have just made a PWA if they didn't like the App Store terms because circa '20 Safari was so capable. LOL. Je n'aurai pas assez de popcorn pour le DM…

via Shaarli le 28 février 2024

800 employés de la poste britannique condamnés à tort à cause d’un logiciel défectueux - Next

En droit anglais et gallois, les ordinateurs sont considérés comme « fiables », sauf preuve du contraire, souligne The Guardian, ce qui « renverse la charge de la preuve normalement appliquée dans les affaires pénales ». Euh, ok !

via Shaarli le 15 janvier 2024

Mise en place et étude d'un Honey Pot SSH (Cowrie) | | Sécurité Informatique | IT-Connect (it-connect.fr) – wallabag

Article intéressant. C'est clairement dans la même démarche que mon article sur les phishing.

via Shaarli le 09 janvier 2024

Généré avec openring


Recettes de gourmands


Meringues

Pratique pour utiliser des blancs d'œufs, car les ingrédients sont au tant pour tant.

via cooking.pofilo.fr le 21 mars 2024

Risotto classique

Vraiment très simple mais le résultat est succulent.

via cooking.pofilo.fr le 28 février 2024

Pain italien

via cooking.pofilo.fr le 17 février 2024

Généré avec openring