Domotique avec raspberryPi et Domoticz

J’utilise depuis quelques mois une solution domotique qui me donne pleinement satisfaction. Cette solution relativement économique repose sur l’utilisation d’un RaspberryPi avec le logiciel Domoticz ainsi que d’un « modem » radio 433MHz RFXCom

Je ne vais pas détailler l’installation de Domoticz, tout est décrit sur leur site et l’opération reste très simple.

Mes besoins essentiels concernent les consommations de l’habitation ( eau, gaz, électricité ) et les relevés de température et humidité dans certaines pièces. De plus, je pilote quelques lumières ainsi qu’un radiateur de type sèche serviettes. Depuis quelques temps j’ai ajouté des capteurs d’ouverture sur les Vélux et les portes. Je peux ainsi savoir par une notification sur le téléphone si l’on quitte la maison avec un Vélux oublié ouvert…

La solution à base de technologie radio en 433MHz présente quelques avantages:

  • Le prix
  • Le nombre de modules disponibles sur le marché
  • La possibilité de créer facilement ses propres capteurs avec un arduino par exemple

Le gros inconvénient c’est que contrairement au Zwave, il n’y a pas de retour d’état. Pour piloter des éléments « critiques » comme le chauffage, c’est un peu gênant mais on peut y remédier d’une façon assez satisfaisante à l’aide d’un script.

Les modules que j’utilise sont disponibles facilement dans les grandes surfaces de bricolage ou sur internet.

 

Le raspberry équipé d’une carte RFM12Pi en 868MHz pour un usage futur.

RasberryPi
RaspberryPi

 

Le modem RFXCom. On pourrait en créer un avec un arduino pour beaucoup moins cher mais il faut décoder les différents protocoles ce qui m’aurait demandé trop de temps. J’ai donc préféré acheter un module « tout fait » et consacrer plus de temps sur les autres parties.

Module RFXCom
Module RFXCom

 

Des sondes de température Oregon sont disposées aux endroits stratégiques ( Salon, Salle de bain, extérieur, chambres…)

Capteur oregon de température et humidité
Capteur Oregon de température et humidité

 

Le carillon de la porte d’entrée est lui aussi compatible. Il peut donc servir d’alerte sonore si besoin, d’autant qu’il dispose de 3 mélodies utilisables avec des codes différents.

Carillion
Carillon

 

Pour les Vélux, de simples capteurs d’ouverture

Capteur d'ouverture
Capteur d’ouverture

 

Pareil pour la porte du garage

Capteur d'ouverture
Capteur d’ouverture

 

Il y a aussi un capteur de mouvement pour le déclenchement d’un éclairage et d’une notification sur smartphone

Capteur de mouvements
Capteur de mouvements

 

Les lumières sont pilotables par ces petits relais.

Module d'éclairage
Module d’éclairage

J’utilise aussi les modules d’éclairage pour piloter le sèche serviette. Attention, il faut le piloter au travers du fil pilote. Il y a une petite astuce très bien décrite sur le site d’Alexandre.

La consommation électrique est relevée par un OWL180. Une petite pince ampèremétrique branchée sur le compteur transmet la consommation en temps réel.

Consommation électrique - OWL180
Consommation électrique – OWL180

 

Un petit écran déporté affiche la consommation en temps réel

Consommation électrique - OWL180
Consommation électrique – OWL180

 

Pour le gaz, c’est un peu plus compliqué mais aussi plus amusant. Les modules du commerce sont très chers, le DIY vient à la rescousse.

Capteur DIY Gasmonitor
Capteur DIY Gasmonitor

C’est simple, un arduino relève les impulsions générées par le compteur de gaz (un aimant est placé sur la roue du compteur) et les transmet à Domoticz par radio. On peut capter les impulsions d’un compteur de gaz avec un interrupteur reed.

Par la même occasion je relève la température et l’humidité du garage avec un DHT22.

Je vais aussi ajouter la consommation d’eau un peu plus tard.

IMG_20141230_095054_

Et le circuit vraiment très simple

Sélection_023

Le schéma et le code pour programmer l’arduino sont sur Github ici. C’est une première version mais ça marche très bien.

Pour la transmission des informations, j’ai utilisé une librairie permettant de simuler un capteur de type RFXMeter et RFXSensor. Du coup domoticz détecte le capteur tout seul comme un grand. Pour les informations de température et d’humidité, j’ai plutôt utilisé le format Oregon V2 gentiment mis à disposition par Olivier ici. Le nombre d’impulsions comptées est stocké dans l’EEPROM de l’arduino toutes les heures afin de ne pas perdre les informations en cas de coupure de courant.

Un seul arduino peut donc émuler toutes les sondes possibles et imaginables. D’autant qu’il ne faut qu’un arduino et un petit transmetteur 433MHz qui coûte 2-3€ ! Pour les arduino, j’utilise des Mini Pro en 5v ou en 3.3v suivant le type d’alimentation.

 

Après les informations concernant le matériel, voilà un petit tour de ce que ça donne dans Domoticz.

 

Le dashboard
Le dashboard
Les compteurs
Les compteurs
La conso de gaz
La conso de gaz
Les rapports d'électricité avec les coûts
Les rapports d’électricité avec les coûts
La météo
La météo
Des scénarios
Des scénarios

 

Des scripts lua sont aussi possibles pour faire ce qui n’est pas possible avec l’interface web. Ici par exemple, on envoie une notification sur mobile si la porte du garage est restée ouverte. Pratique avec des enfants 😀

print(‘Porte de garage…’)

t1 = os.time()
s = otherdevices_lastupdate[‘Porte de garage’]
— returns a date time like 2013-07-11 17:23:12

year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)

commandArray = {}

t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
if (otherdevices[‘Porte de garage’] == ‘Open’ and difference > 300 and difference < 400) then
commandArray[‘SendNotification’]=’La porte de garage est ouverte depuis plus de 5 minutes!’

end

return commandArray

Il y a aussi des applications android / iphone pour piloter le tout avec son mobile.

Voilà un bref aperçu de ce que l’on peut faire. Tout ou presque est possible ! Si vous avez des questions sur cette solution, n’hésitez pas à laisser un commentaire 🙂

17 réponses sur “Domotique avec raspberryPi et Domoticz”

  1. Bonjour je serais interesser pour avoir la manip pour emuler un rfxmeter avec un arduino merci 🙂 car j’ai chercher mais rien trouver

  2. Bonjour

    Quel est la référence du détecteur d’ouverture svp ? A votre avis peut on ajouter une sirène d’alarme et si oui quel modèle me conseilleriez vous ?
    Merci d’avance !

  3. Bonjour,

    Je suis très intéressé par votre post, car j’envisage également de me lancer dans la domotique pour faire un relevé d’énergie dans un premier temps (gaz, élec, eau). Mon compteur gaz émet des impulsions, je peux donc reproduire votre installation ; quel est le capteur reed que vous avez utilisé ? à quoi sert le boitier noir au dessus du compteur ? il contient l’arduino ? comment traitez vous les infos renvoyées par le capteur Reed ? (gestion du rebond, etc.)
    Merci !

    Cordialement,

    Florent

  4. Bonjour @flo

    oui le boitier noir contient l’arduino, le capteur de t° / humidité.
    Le capteur reed est standard. Je n’ai pas de référence, je l’avais dans mon stock. Pour ce qui est du code, tout est sur le github.

    Pierre

  5. Bonjour,
    Je découvre par hasard votre site, je suis émerveillé et me sens encouragé!
    Je recherche, car je suis sourd profond, comment récupérer le signal des DAAF Chacon 34126, pour relayer l’alerte vers mon ancien système personnel d’alerte lumineux et vibrant (Arduino Nano + relais SSR-lampe + moteur à balourd de manette de jeux).
    Ces DAAF me sont imposés par mon bailleur, et l’achat d’un RFxCom conseillé par un vendeur, est bien trop lourd pour ma retraite…
    C’est justement parce que je me lance dans un système domotique RaspPi + Domoticz, que je cherche comment me faire une sorte de « RfxCom lite » uniquement pour mes DAAF et un relais HF de sonnette (en fait un détecteur d’ouverture hacké) et renvoyer signal vers un module d’éclairage comme le votre… Pour le reste, mesure & commande, je verrai plus tard, si déjà je réussi à faire fonctionner tout ça ! ;-/
    Pouvez-vous me conseiller sur le tranceiver HF 433Mhz compatible indispensable et quel µP compatible au RFxCom afin que je puisse récupérer les codes à transmettre vers le RaspPi, comme si c’était un vrai?…
    J’ai déjà l’interface Usb (au choix: modules Ftdi, PL2303 et CH340) issus du monde Arduino…
    Merci de m’avoir lu, cordiales salutations.
    JM92 (impatient de vous lire).

  6. Bonjour,

    Il faut pour cela réaliser un récepteur radio avec un arduino, créer le code correspondant et trouver un moyen de communiquer tout ça à domoticz. Le RFXCom n’étant pas un produit open hardware, c’est difficile de l’émuler sauf à étudier le format renvoyé par le module.

    Vous pouvez trouver des exemples de code pour décoder les trames comme ici par ex http://darrigan.net/blog/prises-telecommandees-radiofrequence-arduino/

    C’est quand même plus simple de se procurer un RFXCom même si c’est vrai que ce n’est pas donné…

  7. Bonjour,

    J’essaie de compiler le code sur l’Arduino afin de fabriquer la sonde.

    J’ai récupéré les librairie et le code, mais au moment de téléviser, j’ai l’erreur suivante qui s’affiche :

    Arduino : 1.6.3 (Mac OS X), Carte : « Arduino Uno »

    gasMonitor.ino:30:1: error: ‘dht’ does not name a type
    gasMonitor.ino: In function ‘void loop()’:
    gasMonitor.ino:124:18: error: expected primary-expression before ‘.’ token
    gasMonitor.ino:132:44: error: expected primary-expression before ‘.’ token
    gasMonitor.ino:133:41: error: expected primary-expression before ‘.’ token
    Erreur lors de la compilation.

    Avez-vous eu la même chose lorsque vous avez utilisé le code ?

    Merci

  8. Tout d’abord merci pour le site.
    Mais j’ai quand meme un petite question si je reproduit votre montage et que je prend votre script pour l’arduino, es ce que je peut dire a Domoticz que c’est un compteur d’eau?

    Merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.