Les systèmes Smart Home ont connu une popularité croissante ces dernières années. Mais tous les systèmes ont leurs défauts : absence d’interface, extensibilité limitée ou manque de flexibilité. Nous vous montrerons dans cet article comment prendre les choses en main et construire votre propre dispositif Smart Home, à adapter et agrandir selon vos envies, à l’aide du Raspberry Pi.
Le projet
Convient à : utilisateur débutant avec connaissances de bases, utilisateur avancé
Durée : environ 1 à 2 heures
Budget : environ 80€
Matériel : 1 x kit Raspberry Pi 3, carte relai pour Raspberry Pi, câble réseau en option
En supplément : n’importe quel système Smart Home
Autre équipement : écran, clavier PC, connexion internet
Les avantages par rapport aux systèmes Smart Home traditionnels
Dans ce guide, nous vous présentons le logiciel libre openHABian, un dérivé de Debian, qui transforme votre Raspberry Pi en serveur Smart Home. Mais tout d’abord, voyons quel est l’intérêt d’un tel projet si vous êtes déjà en possession d’une enceinte intelligente Amazon Echo ou Google Home.
Grâce à openHABian, vous pouvez d’une part intégrer tous vos systèmes Smart Home existants (liste des systèmes pris en charge) et vous n’avez donc besoin que d’une centrale de commande. D’autre part, vous pouvez définir des interfaces pour les appareils qui n’ont pas d’interface intelligente par défaut.

Installer OpenHABian sur le Raspberry Pi
Etape 1 : Préparer la carte MicroSD
Tout d’abord, configurez votre Raspberry Pi en tant que serveur openHABian. Pour ce faire, téléchargez l’image système à partir du site web openHAB, décompressez-la et placez-la sur une carte microSD à l’aide d’un logiciel adapté, tel que Etcher.
Etape 2 : Etablir une connexion internet
Une connexion internet étant nécessaire lors de l’installation, entrez le SSID et le mot de passe de votre réseau Wi-Fi dans openhabian.conf ou connectez votre Raspberry Pi à votre routeur via le câble réseau. Nous recommandons la deuxième option, car il y a souvent des problèmes lors de l’installation via Wi-Fi.
wifi_ssid="My Wi-Fi SSID" wifi_psk="password123"
Etape 3 : Installation
Insérez maintenant la carte MicroSD dans le Raspberry Pi et connectez-le à l’alimentation électrique. L’installation démarre automatiquement et dure environ 25 minutes, en fonction de la version de votre Raspberry Pi et de votre connexion internet.
Si l’installation a réussi, on vous demandera votre nom d’utilisateur et votre mot de passe (openhabian/openhabian). Ensuite, un script openHABian s’affiche en code ASCII.
Etape 4 : Définir l’adresse IP
Déterminez l’adresse IP du Raspberry Pi en tapant Hostname -I dans la console. Saisissez ensuite celle-ci dans votre navigateur afin de visualiser le panneau de contrôle de votre serveur openHAB (vous pouvez sélectionner “Default” ici).
Nous vous recommandons ensuite d’attribuer une adresse IP statique au Raspberry Pi. Vous pouvez réaliser cette action dans les paramètres de votre routeur. De plus, une connexion samba ainsi qu’un accès externe au Raspberry PI via SSH sont très utiles pour la configuration. Les deux services sont préconfigurés et accessibles à l’adresse IP avec le nom d’utilisateur et le mot de passe par défaut.

Votre première application Smart Home
Procédons maintenant à quelque chose qui n’est pas faisable avec un système Smart Home traditionnel, à savoir commuter un relais grâce auquel vous pourrez contrôler des appareils domestiques dépourvus d’interface intelligente, tels que votre porte de garage, vos éclairages extérieurs et intérieurs, vos systèmes de climatisation, les serrures de vos portes électriques, vos volets roulants et bien d’autres encore.
Etape 1 : Mise en place du matériel
Connectez la carte relais au Raspberry Pi comme illustré et connectez le circuit à contrôler (35V maximum !) au relais 1.


Etape 2 : Insérez votre code
Copiez ensuite les scripts suivants dans les dossiers correspondants au sein du répertoire « conf » de votre Raspberry Pi (script Python après les scripts). Pour cela, connectez-vous au Raspberry Pi via samba.
exec.things:
Thing exec:command:remote-send [ command="sudo python3 /etc/openhab2/scripts/relaySwitch.py %2$s", interval=0, autorun=true] ]
Relay_Switch.items:
Switch Relay_Switch_1 <poweroutlet> Switch Remote_Send { channel="exec:command:remote-send:run" } String Remote_Send_Args { channel="exec:command:remote-send:input" } String Remote_Send_Out { channel="exec:command:remote-send:output" }
Relay_Switch_1.rules:
rule "Relay Switch 1" when Item Relay_Switch_1 received command then while(Remote_Send.state == ON){ Thread::sleep(500) } if(receivedCommand == ON){ Remote_Send_Args.sendCommand("1 ON") }else{ Remote_Send_Args.sendCommand("1 OFF") } while(Remote_Send.state != OFF){ Thread::sleep(500) } logInfo("Relay_Switch_1", "Result:" + Remote_Send_Out.state ) end
relaySwitch.py:
#!/usr/bin/python3 import argparse import smbus class Relays(): def __init__(self): self.dev_addr = 0x20 self.dev_reg_mode1 = 0x06 self.dev_reg_data = 0xff self.bus = smbus.SMBus(1) self.block = self.bus.read_byte_data(self.dev_addr, self.dev_reg_mode1) def set_on(self, relays): print("Setting {} on...".format(relays)) self.block &= ~(0x1 << relays) self.bus.write_byte_data(self.dev_addr, self.dev_reg_mode1, self.block) def set_off(self, relays): print("Setting {} off...".format(relays)) self.block |= (0x1 << relays) self.bus.write_byte_data(self.dev_addr, self.dev_reg_mode1, self.block) def read_bytes(self,relays): self.dev_reg_data |= (0x1 << relays) block = self.bus.read_byte_data(self.dev_addr, self.dev_reg_mode1) if __name__ == "__main__": def state2bool(state): if state.lower() == "on": return True elif state.lower() == "off": return False else: raise argparse.ArgumentTypeError("State can either be on or off") parser = argparse.ArgumentParser( description="Change the state of a relays" ) parser.add_argument("relay_id", type=int) parser.add_argument("state", type=str) args = parser.parse_args() relays = Relays() if state2bool(args.state): relays.set_on(args.relay_id-1) else: relays.set_off(args.relay_id-1)
Etape 3 : Activation de l’interrupteur du relais
Vous devez ensuite créer le bouton avec lequel commuter le relais dans l’interface utilisateur et installer différents bindings. Pour ce faire, saisissez l’adresse IP de votre Raspberry Pi dans le champ d’adresse de votre navigateur et poursuivez la navigation comme suit : PAPIER UI->Addons->Bidings.
Localisez « GPIO Binding » et cliquez sur « Install ». Faites de même avec « EXEC Binding » et « REGEX transformation ».
Revenez ensuite en arrière et sélectionnez « HABPANEL ». Créez ici un nouvel interrupteur et sélectionnez l’élément de relais à commander sous HABItem “Switch_Relay_1”.

Enregistrez et cliquez sur « Run ». Si vous appuyez maintenant sur l’interrupteur, vous entendrez le bruit du relais qui clignote, la LED correspondante s’allumera et votre circuit connecté sera activé.


Étape 4: Recherche des erreurs
Si rien ne se passe, vérifiez que le protocole i2c est correctement configuré (suivre ces étapes) ou que vous avez attribué les bons droits (veuillez suivre ces étapes). Pour vous aider au débogage, le visionneur de journaux openHAB, qui se trouve sous le port 9001, peut s’avérer utile.
Accès en dehors de votre propre réseau
Tout naturellement, vous souhaitez continuer à avoir le contrôle de vos appareils en dehors de chez vous. Pour ce faire, openHABian propose un service cloud. Commencez par ajouter le Cloud Connector openHAB dans HABPANEL sous MISC. Après ça, enregistrez-vous et procédez à l’enregistrement de votre serveur openHAB sur myopenhab.org. Découvrez l’UUID et ses secrets en entrant ce qui suit dans la console de votre Raspberry Pi :
UUID: cat /var/lib/openhab2/uuid Secret: cat /var/lib/openhab2/openhabcloud/secret
Une fois connecté, vous pourrez voir le lien vers votre panneau de contrôle affiché directement sur la page d’accueil. Vous pouvez désormais faire figurer ce lien en raccourci sur l’écran de démarrage de votre smartphone, tout comme une application. De cette manière, vous gardez le contrôle total sur les fonctions de votre maison.

