Aller au contenu

[Domotique] Le 433 MHz sur votre Raspberry Pi


Ldfa

Messages recommandés

Table des matières

Bonjour à tous,

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

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.

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 !

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

Branchements

Quels que soit 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 - Ground)
  • Rouge pour l’alimentation (port 04 - Power 5V)
  • 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 - Ground)
  • Marron pour l’alimentation (port 02 - Power 5V)
  • 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:

  • git clone git://git.drogon.net/wiringPi (miroir ici)
  • cd wiringPi
  • Et on compile et installe la librairie en root: ./build

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é lors des branchements précédents, à savoir:

  • Pour la partie émetteur: WiringPi 0 sur le GPIO 17 (pin 11)
  • Pour la partie récepteur: WiringPi 2 sur le GPIO 27 (pin 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.

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.

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é.

Afficher l’article complet

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.