Domotique Arduino Raspberry PI en 433Mhz. Comment commander son installation électrique depuis son téléphone ? ou avec la voix ?

Medium domotique

Difficulté:

Utile dans la vie de tous les jours, la domotique. Prises, Interrupteurs, volets roulants par commande WEB et ou vocale.



Il permet de commander à distance des fonctions électriques de la maison comme :
• Des prises
• Des lumières
• Des Volets roulants
Il est composé de trois parties :
• La partie commande basée sur une page web. J’ai aussi fait une commande vocale avec un Raspberry PI (https://www.blog-de-michel.fr/raspberry-pi-domotique/)
• La partie émission des commandes basée sur un Arduino, carte Ethernet et émetteur 433Mhz.
• La partie réception (prises, interrupteurs et modules réceptions volets roulants).

Matériel

Budget:

50 €

Raspberry PI
Arduino pro mini 1 ou 2 …
Carte Ethernet
Récepteur émetteur 433Mhz
Alimentation 5V
Alimentation 220V en 5V

Etape 1 : Les prises électriques

Je vais commencer par la fin, la partie réception. Pour l’instant j’ai trois sortes de récepteurs différents (prises, interrupteurs et modules réceptions volets roulants) mais je vais commencer par la commande des prises électriques. (Une petite lampe, un écran, un disque dur externe…)
Des prises achetées dans un magasin de bricolage (Monsieur Bricolage) 15€ les trois avec la télécommande. Il faut des prises « simples » pas avec un code tournant donc souvent le meilleurs marchés. J’ai d’abord trouvé le code d’émission en utilisant la librairie RcSwitch. Un Arduino avec un récepteur 433Mhz et le code d’exemple de la librairie « receivedemo_simple » permet d’obtenir le code, le nombre de bit et le protocole bien noter tout cela pour la suite. De ce côté-là pas plus à faire il suffit de brancher la prise avec un accessoire et il sera commandé par notre émetteur avec le bon code.
Lien librairie RcSwitch : https://github.com/sui77/rc-switch

Etape 2 : Les commandes en page WEB

Medium domotique

Bon on a bien avancé mais il faut encore taper une adresse dans un navigateur avec un code pas forcément facile à retenir … Mais c’est déjà sympa non !
Là il faut simplement faire quelque page web. J’ai fait le choix d’un hébergement à la maison sur un Raspberry PI. Faible consommation, facile à mettre en route, installation Apache facile et bien documenté sur le net. Et il peut tourner sans problème 24/24 et 7/7 bien sûr pas d’écran et pas de clavier juste une alim et une connexion à la box. Celui que j’utilise pour la domotique et même en direct sur la box j’utilise pas le wifi.
Donc pour faire cette page j’utilise plusieurs choses. Bien sur HTML, JavaScript avec AJAX et quelques images de boutons. J’utilise aussi une connexion avec une base de donnée pour garder en mémoire la position des boutons en ON/OFF. L’AJAX permet une mise à jour de la page pour chaque bouton permettant d’utiliser plusieurs pages de modification. Comme cela si je change un bouton sur mon téléphone le même bouton sur ma tablette va changer de position dans les 5 secondes.
Chaque boutons est un formulaire HTML (en JavaScript) et il lance une fonction emetteur() qui va envoyer sur le réseau l’adresse IP du module Ethernet avec en argument l’accessoire et le ON ou OFF. Le fopen va être envoyé x fois suivant un argument passer à la fonction, souvent 2 fois pour être sûr de la bonne réception avec une bonne moyenne. Dans mon cas avec deux envoies j’ai un taux de réussite de 99% dans mon appartement. Et bien sûr il y a une mise à jour de la donnée dans la base.
La base de données pour la position des boutons : https://github.com/Michelgard/Arduino_433Mhz/blob/master/Table%20position_prise
J’ai des boutons simple pour les interrupteurs (j’y reviens plus loin) car c’est le même codes qui fait ON et OFF mais je change quand même la valeur dans la base car j’ai aussi une application qui me retourne la position de chaque appareil sur mon téléphone.
function emetteur($led, $on_off, $nb){
global $bdd;
$url=”http://xx.xxx.xx.xx:80/?” . $led . “=” . $on_off;

for ($i=0; $iexec($sql);
}
Les interrupteurs AUTO sous certain boutons sont là pour automatiser l’allumage des lampes en cas d’absence. Dans une base de données j’ai les horaires (allumage et extinction) je lance une tache CRON à chaque heure qui vérifie s’il faut faire quelque chose et si c’est le cas envoie l’ordre au module Ethernet.
Code Auto CRON :
https://github.com/Michelgard/Arduino_433Mhz/blob/master/auto_cron.php
Le code complet de l’interface web est là :
https://github.com/Michelgard/Arduino_433Mhz

Etape 3 : Emetteur 433Mhz et carte Ethernet

Maintenant j’ai des codes il me faut un module pour les transmettre. J’ai d’adord fait des essais simples avec un Arduino et un émetteur 433Mhz et toujours avec la librairie RcSwitch et l’exemple « SendDemo » Si tout va bien vous devez pouvoir allumer et éteindre votre prise électrique à distance mais pour l’instant c’est encore moins portable que la télécommande…
Je voulais un émetteur connecté sur mon réseau pour lui envoyer des commandes à distances. J’ai fait le choix d’une carte Ethernet que j’ai connecté sur un arduino ProMini en ajoutant un émetteur 433Mhz pour envoyer les codes suivant les autres reçues. En fait c’est simple la carte Eternet aura une IP sur mon réseau il suffit d’ajouter à la suite de cette IP ce qu’on veut faire du genre LED1 = ON …
Lien librairie Ethercard : https://github.com/jcw/ethercard
Code Arduino :
https://github.com/Michelgard/Arduino_433Mhz/blob/master/ethernet_et_emmeteur.ino
Une fois le montage terminé et le code dans l’Arduino un simple navigateur nous permet de faire les essais en tapant dans la barre d’adresse l’P de la carte Ethernet et l’action à faire.
Quand on ajoute des accessoires il suffit de reprendre le code pour ajouter le ‘if’ avec le bon code de la prise, de l’interrupteur …

J'ai fait une version plus simple de l'émetteur en WIFI avec un ESP8266. Vous trouverez la nouvelle version ici : https://www.blog-de-michel.fr/domotique-en-433mhz-avec-le-wifi/

Etape 4 : Les interrupteurs et les commandes de volets roulants

Donc maintenant vous avez des prises électrique qui de commande avec un module Arduino/Ethernet et par une page WEB. J’ai aussi des interrupteurs.
Un interrupteur tactile avec une télécommande et en plus en 433MhZ. Donc rien de plus facile on recommence par trouver le code de la télécommande et on va pouvoir commander nos lumières de la même façon. Ces interrupteurs ont plusieurs avantages, ils sont jolies et tactile ça fait un très belle effet dans la maison et commandable en 433Mhz sans problème.
J’ai aussi intégré une commande pour volet roulant dans mon installation domotique. Au début j’avais pensé à acheter un module à encastré sous les boutons de commande. Mais j’avais peur que le module soit trop important pour mes boitiers (installation électrique assez ancienne) et que les codes soit tournant. Je me suis dit que maintenant j’avais la maîtrise des code avec la librairie RcSwitch et pourquoi pas faire le récepteur …
Un Arduino avec un récepteur 433Mhz et une platine avec deux relais pour simuler les boutons.
Dans mon émetteur j’invente un code au format des autres accessoires (prises et interrupteurs) et dans mon programme Arduino je vérifie si le code est reçu.
Les codes :
#define FreqMonte 4232320
#define FreqStop 4232322
#define FreqDescente 4232324

Et dans la boucle :
value = Reception();
if (value == FreqMonte){
Et la fonction réception :
long Reception(){
value = 0;
if (mySwitch.available()) {
value = mySwitch.getReceivedValue();
mySwitch.resetAvailable();
}
return value;
}
Le code complet : https://github.com/Michelgard/Arduino_433Mhz/blob/master/Commandes_Volet.ino
J’ai gardé la possibilité d’utiliser les boutons de commande classique mais maintenant ils passent par l’Arduino.

Je vous invite aussi à aller voir un complément avec une commande vocale de tout cela basé sur un Raspberry PI et un programme écrit en Python (https://www.blog-de-michel.fr/raspberry-pi-domotique/

Et bien sur pour toute précision une seule adresse raspberrypi.gard@gmail.com

Vous aimez ce tutoriel ?


Ipxav

07 juil. 2016 à 10:35

C'est quoi le type de micro que tu utilises pour la commande vocale ? C'est super comme projet ! Je suis en train de bosser sur un projet à base de nodemcu (un arduino like avec le wifi intégré pour 6$ 😉

Merci pour le tuto.

Michel Gard

07 juil. 2016 à 10:35

Comme je le dis à la fin de l'article du blog :

J’ai un micro USB sur le raspberry acheté un euro (1 €) sur Ebay donc je dois parler au micro impossible de passer une commande de mon canapé…

Je vous tiendrais au courant des améliorations mais si vous avez des questions je suis a votre écoute et si vous avez des idées pour améliorer cela je suis aussi à votre écoute.


Donc j'en suis là il faudrait que je fasse un investissement pour un micro bien plus pro et pour l'instant j'ai pas trouvé un modèle plus pro et pas trop cher en USB qui pourrait mieux fonctionner.

Mais je suis preneur d'idée.

J'attends de voir ton projet avec nodemcu que je ne connais pas.

Ipxav

07 juil. 2016 à 10:35

et un micro Bluetooth que tu aurais sur toi ? comme une oreillette pour téléphone portable ?

Michel Gard

07 juil. 2016 à 10:35

Ah c'est une idée et je vais aussi regardé les micro de conférence on utilise cela au boulot

Merci

louisnaili

07 juil. 2016 à 10:36

Salut Michel!

à une époque j'avais testé plusieurs outils de domotique sur raspberry pi et pour la commande vocale, la meilleure solution , enfin celle avec la meilleure portée ça a été un micro de kit mains libres avec un cône suivi d'un petit ampli :p

tout ça branché sur une carte son USB peu chère de Ebay .

Si ça peut te donner des idées 🙂

Michel Gard

07 juil. 2016 à 10:37

Bonjour,

Merci de prendre le temps de m'indiquer une info. Mais je comprends pas vraiment. Tu parles d'un micro casque en jack ? et quand tu parles d'un ampli c'est quoi ?

Merci

louisnaili

07 juil. 2016 à 10:37

J'avais démonté la partie micro d'un kit mains libres pour récupérer le petit micro dedans, je l'ai soudé à deux bouts de fils et j'avais trouvé un module ampli micro sur ebay sur lequel je l'avais relié, pour finir en entrée du raspberry pi en usb via une carte son usb

Michel Gard

07 juil. 2016 à 10:37

Ok merci je vois mieux ce que ça fait.

Michel Gard

31 jan. 2017 à 11:17

Bonjour,
J'ai fait une petite mise à jour du tuto.
J'ai changé l'image de mes commandes domotiques car le nombre a évolué et j'ai changé la disposition.
Et j'ai aussi fait une version de l'émetteur en WIFI basé sur un ESP8266 bien plus simple et rapide.

clickux

28 fév. 2017 à 10:08

Bonjour Michel,

j'ai une petite question concernant la partie récepteurs pour les volets roulants.
Tu dis avoir fait tes propres récepteurs à base d'Arduino et de relais. Mais comment les as tu intégrés à ton installation ? Un Arduino c'est quand même relativement encombrant et ça ne passe pas dans une boite encastrée pour interrupteur classique. Et comment as tu fais pour l'alimentation de l'Arduino ?

Tu dis aussi avoir conservé les boutons de commande classiques mais qu'ils passent par L'Arduino. Pourrais-tu détailler cette partie ?

merci d'avance

clickux

28 fév. 2017 à 10:42

j'ai trouvé ton autre post http://rasp-pi.fr.nf/domotique-en-433mhz/ qui répond à peu près a mes questions à par pour les 2 boutons; moi j'ai des interrupteurs 2 boutons: 1 haut/bas et l'autre on/off. Quels sont les actions de tes 2 boutons ?

Bravo pour tes réalisations

Michel Gard

28 fév. 2017 à 10:52

Bonjour Clickux,
Oui effectivement j'ai l’avantage d'avoir un lieu centraliser qui me permet de mettre l'Arduino, l'alim les relais dans une boite électrique indépendante des volets.
Pour les interrupteurs ils sont connectés aussi sur l'Arduino. Le programme permettant un fonctionnement par bouton et ou en 433Mhz.
Donc les volets sont commandés par les deux relais (haut et bas) que j'actionne un bouton ou par le 433Mhz
J'ai donc aussi deux boutons. Un haut et un bas et quand aucun des deux n'est actionné c'est le stop.
Mais à la maison tout le monde utilise son téléphone pour actionner son volet les boutons ne sont pas beaucoup utilisé :)


S'inscrire:


  • Vues: 5991
  • J'aime: 8