Home Automation Via PLC

Résumé

Ce projet avait pour objectif d'apporter différentes solutions du domaine de la domotique à la maquette “Positive House”. Ainsi, différents capteurs de température, un capteur de contact, des multi-capteurs associés à un automate permettent d'agir sur le chauffage, la ventilation et la lumière de la maison. Différentes technologies ont été utilisées (1-Wire bus, EnOcean, Z-Wave).

Contexte

Ce projet s'inscrit dans la poursuite du projet d'ingénierie Positive House. Celui-ci est une maquette de maison à énergie positive, utilisée à titre démonstratif au sein du laboratoire. La maquette a été équipée d'un automate pour pouvoir piloter différents appareils (chauffage, ventilation, lampes) depuis un ordinateur ou une tablette. L'intérêt est de pouvoir agir sur différentes variables comme la température, l'humidité, le taux de CO2 et la lumière pour améliorer le confort au sein de la maison.

Ce projet a été réalisé dans le cadre du module ICT for SmartGrid and SmartBuilding de la filière SEM à l'Ense3 par deux étudiants en 3e année, Caroline Schmutz et Tanguy Paget et a été encadré par Samer Alabrach.

Contact : samer.alabrach@ense3.grenoble-inp.fr

Objectifs

Ce projet a différents objectifs :

  • l'utilisation d'un automate
  • la configuration des entrées et sorties
  • l'installation de différents types de capteurs (filaires et sans-fil)
  • l'apprentissage du langage LUA
  • la programmation de différents scripts
  • le développement d'une interface graphique

Outils

Nous avions différents outils pour mener ce projet :

  • Maquette Positive House
  • un automate LogicMachine Re:Actor V3 de embedded systems
  • un relais
  • un capteur filaire (protocole 1-Wire)
  • des capteurs sans fil (protocole EnOcean)
  • un capteur de contact
  • un compteur d'énergie Schneider Electric
  • des multi-capteurs MultiSensor Gen5 d'Aetoc (protocole Zwave)
  • des lampes Hue de Philips

Maquette Positive House

Réseau de ventilation

La ventilation au sein d’une habitation est primordiale : elle a pour but d’évacuer l’humidité, le CO2 produit au sein de l’habitat et d’apporter de l’oxygène. Néanmoins, elle est aussi l’une des principales sources de déperdition de chaleur à cause de l’entrée d’air froid venu de l’extérieur. Une ventilation double-flux a été le système le plus adéquat permettant en même temps d’assurer un bon renouvellement de l’air et de récupérer au sein d’un échangeur thermique une partie de la chaleur perdue dans le flux d’air sortant de l’habitat.

La norme pour un bon renouvellement de l’air d’un habitat est de remplacer l’équivalent du volume de la maison par heure. A l’échelle de notre maquette, cela revient à un débit d’air d’environ 500 L/h. Pour cela il avait été choisi d’utiliser du matériel habituellement utilisé en aquariophilie. Notre système est donc constitué de 2 pompes de 500 L/h pour extraire et introduire l’air dans notre maquette.

Echangeur de chaleur
Réseau de ventilation

Réseau de chaleur

L’une des principales causes de consommation énergétique d’une habitation concerne le chauffage. Pour obtenir la meilleure efficacité, le réseau de chaleur mis en place est constitué d’un ensemble « panneau solaire thermique et chauffage au sol ».

Panneau solaire thermique

Un panneau solaire thermique est un dispositif permettant de faire chauffer de l’eau ou un autre fluide en captant les rayons du soleil. L’eau chauffée de cette manière permet généralement de chauffer ensuite l’eau d’un ballon. Un panneau solaire thermique permet donc d’assurer le chauffage en eau d’une maison. La maquette est équipée d'un tel système pour un chauffage au sol.

Automate

L'automate LogicMachine Re:actor V3

L'automate utilisé est LogicMachine Re:actor V3 de embedded systems.

Celui-ci comporte :

  • 24 ports d'entrées/sorties analogiques ou numériques
  • 1 port USB
  • 1 port Ethernet
  • 1 port 1-Wire
  • des interfaces avec les protocoles KNX, EnOcean, DALI, 1-Wire
  • une interface de programmation en langage LUA
  • une interface de visualisation






Voici le câblage électrique de notre système :

Schema de Caplage
Tableau Rai-Din

Connexion à l'automate

On peut accéder à l'automate depuis un navigateur (Chrome, Firefox, Safari) avec l'adresse IP de l'automate. Par défaut, l'adresse IP fixe est : 192.168.0.10 mais peut être modifiée. Avec le routeur utilisé dans le projet, l'adresse IP est : 198.168.0.246

Voici l'écran d'accueil :

Ecran d'accueil



On retrouve différentes fonctions dans cet écran principal. La première icône “Logic Machine” renvoie à la configuration de l'automate :

Configuration de l'automate et fonctions principales


Dans cette plateforme, nous avons différents onglets :

  • Reactor” : visualisation des différents branchements à l'automate
  • Scripting” : création des scripts
  • Objects” : visualisation et modification des différents objets
  • Objects logs” : pour les objets dont le “log” a été activé, on a un historique qui s'affiche dans cet onglet
  • Trend logs” : pour créer des courbes de tendance
  • Vis. structure” : organisation de la structure de l'interface graphique
  • Visualization” : modification de l'interface graphique
  • Vis. graphics” : répertoire d'icônes et d'images
  • Enocean” : interface pour le protocole EnOcean
  • Alerts” : programmation de messages d'alertes


Les scripts sont codés avec le langage LUA.

Régulation de la température

Nous avons créé un programme permettant de réguler automatiquement la température de la Positive House. Ainsi, selon la température de la pièce, la température extérieure et la température de l'eau du système de chauffe, le chauffage ou la ventilation peuvent se mettre en route automatiquement pour assurer le confort de l'habitant. Pour cela, nous avons testé deux types de capteurs : un capteur filaire et un sans-fil.

Capteur filaire - protocole 1-Wire

Capteur 1-Wire

Pour ce capteur, on utilise le bus 1-Wire. Celui-ci permet de connecter des composants, comme le capteur de température, avec deux fils seulement : un pour les données et un pour la masse. Il est utilisé en domotique comme dans notre projet mais aussi pour des instruments de mesure météorologiques ou dans les circuits de gestion de l'énergie (batteries, onduleurs).

Ce type de capteur a une sortie numérique.

Il a l'avantage d'un coût faible.

Capteur sans fil - protocole EnOcean

Capteur EnOcean


Ce type de capteur a deux caractéristiques : il est sans-fil et ne nécessite pas de piles. En effet, il est alimenté grâce à un panneau solaire et communique par technologie radio.

Le capteur mesure la température régulièrement et si celle-ci a varié de plus de 0.5°C, la nouvelle température est transmise à l'automate.

Ce type de capteurs présente certains avantages : l'économie de la pose de câbles, la flexibilité élevée et la réduction des coûts liés à l'installation.

Script pour la régulation de la température

if (grp.getvalue('1/1/14')<20 and grp.getvalue('1/1/2')>20) then
  grp.write('1/1/12',true)
  grp.write('1/1/16',false)
elseif (grp.getvalue('1/1/14')<20 and grp.getvalue('1/1/2')<20) then
  grp.write('1/1/12',false)
  grp.write('1/1/16',false)
   
elseif (grp.getvalue('1/1/14')>20 and grp.getvalue('1/1/14')<22) then
  grp.write('1/1/12',false) 
  grp.write('1/1/16',false)

elseif (grp.getvalue('1/1/14')>22 and grp.getvalue('1/1/1')<22) then
  grp.write('1/1/16',true)
   grp.write('1/1/12',false) 

elseif (grp.getvalue('1/1/14')>22 and grp.getvalue('1/1/1')>22) then
  grp.write('1/1/16',false)
   grp.write('1/1/12',false) 
end

temperature = grp.getvalue('1/1/14')

if temperature > 24 then
  -- resulting message: 'Temperature levels are too high: 24'
  alert('La Temperature est trop élevée: %.1f', temperature)
end

Limit switch pour la détection d'ouverture de porte

Limit Switch

Nous avons relié à l'automate un capteur de contact comme ci-contre. Il peut être utilisé pour détecter l'ouverture et la fermeture de la porte d'entrée de la Positive House. On peut alors y associer différentes actions, comme allumer la lumière.

Ce capteur dispose de 3 pattes :

  • la première est reliée à l'automate
  • la seconde est reliée à 0V et correspond à l'état normalement fermé “NC”
  • la troisième est reliée à 24V et correspond à l'état normalement ouvert “NO”

Il fonctionne ainsi comme un micro commutateur.

Compteur d'énergie

Nous avons utilisé le compteur d'énergie iEM2000T de Schneider Electric :

Compteur d'énergie

Cet appareil assure le comptage de l'énergie active en kWh, en envoyant une impulsion tous les 10 Wh.

Deux diodes permettent de renseigner sur l'état de l'appareil :

  • les deux sont éteintes : l'appareil est éteint
  • celle du haut est allumée, l'autre s'éteint au bout d'une seconde : l'appareil est allumé mais ne compte pas
  • celle du haut est allumée, celle du bas clignote : l'appareil est allumé et compte
  • celle du haut est éteinte, celle du bas est allumée : il y a une erreur de câblage

Courbe de tendance (Trend Log)

Nous avons utilisé l'outil “Trend Log” de l'interface de l'automate pour visualiser graphiquement la consommation énergétique de la PositiveHouse.

Trend log



Cet outil permet une visualisation dynamique de la consommation : on peut sélectionner le mois, le jour et l'année et l'afficher sur différentes périodes (par jour, par mois ou par an).

Lampes Hue

Lampe Hue


Nous avons décidé d'installer des lampes connectées : le modèle Hue de Philips. Celles-ci permettent de choisir la couleur, le ton et le contraste pour créer l'atmosphère idéale pour chaque pièce.

Ces lampes sont connectées à un “bridge” via le protocole ZigBee. Ce bridge est connecté au réseau Ethernet et peut donc communiquer avec l'automate.

Protocole Z-Wave

Clé Z-Wave

Z-Wave est un protocole radio conçu pour la domotique. Une passerelle (gateway) permet d'ouvrir l'accès au réseau Z-Wave au réseau local. Nous avons donc branché une clé Z-Wave au port USB de l'automate. Celle-ci permet de communiquer avec les multi-capteurs et avec les lampes. L'interface de l'automate permet d'accéder à la configuration des appareils communiquant par Z-Wave :

Configuration Z-Wave

Par exemple, voici la configuration d'un des multi-capteurs :

Configuration d'un multi-capteur

On retrouve les 4 capteurs (mouvement, température, luminosité, humidité) et les objets associés. Dans l'onglet “Advanced”, on peut configurer plus précisément l'ensemble des capteurs.

Multi-capteurs

MultiSensor Gen5

Nous avons connecté des multi-capteurs (modèle MultiSensor Gen5 d'Aetoc) pour pouvoir détecter la présence d'une personne dans une pièce par détection de mouvement. Ce capteur mesure également la température, l'humidité et la luminosité.

Ces capteurs sont alimentés par 4 piles AAA mais peuvent être aussi alimentés par câble USB.

Il faut les configurer sur l'interface de l'automate. On associe chaque grandeur mesurée à un objet pour pouvoir les exploiter dans des scripts. En effet, une fois la présence détectée, nous avons programmé l'allumage automatique de la lampe.

Script pour contrôler les lampes

require('socket.http') 
    body_off = '{"on":false}' 
    response = {} 
presence_childroom = grp.getvalue('1/1/24')
couleur = grp.getvalue('1/1/31')
--luminance = math.ceil((1000-grp.getvalue('1/1/27'))/4)
luminance = (grp.getvalue('1/1/34'))*2.5  x=0
--body_on = '{"on":true,"ct":250,"xy":'..couleur..'}'
-- mydata will be set nil when data was not found
mydata2 = storage.get('mydata2')
luminanceenfant = storage.get('luminanceenfant')
-- Turn Philips hue lamp child bedroom if conf change
if ( couleur ~= mydata2 or luminance ~= luminanceenfant  )
      then
  body_on = '{"on":true,"sat":255,"bri":'..luminance..',"hue":'..couleur..'}' 
    socket.http.request({url = "http://192.168.0.146/api/HF91dyFHr2J8PVWgXh1nVLjGq3i2JrKM8Egas8pK/lights/4/state", 
       method = 'PUT', 
         sink = ltn12.sink.table(response), 
      headers = {['content-length'] = #body_on, 
       	 ['content-type'] = 'application/json',}, 
          source = ltn12.source.string(body_on),}) 
    log(response) 
  storage.set('mydata2',couleur)
  storage.set('luminanceenfant',luminance)
  x = 1
end
-- Turn Philips hue lamp child bedroom
if (presence_childroom == true  )
      then
  body_on = '{"on":true,"sat":255,"bri":'..luminance..',"hue":'..couleur..'}' 
    socket.http.request({ 
          url = "http://192.168.0.146/api/HF91dyFHr2J8PVWgXh1nVLjGq3i2JrKM8Egas8pK/lights/4/state", 
       method = 'PUT', 
         sink = ltn12.sink.table(response), 
      headers = {['content-length'] = #body_on, 
       	 ['content-type'] = 'application/json',}, 
          source = ltn12.source.string(body_on), 
            }) 
    log(response) 
end
if (presence_childroom == false or y == 1  )
      then
     -- wait for 5 seconds
os.sleep(30)
  if (presence_childroom == false )
    then

    socket.http.request({ 
          url = "http://192.168.0.146/api/HF91dyFHr2J8PVWgXh1nVLjGq3i2JrKM8Egas8pK/lights/4/state", 
       method = 'PUT', 
         sink = ltn12.sink.table(response), 
      headers = { 
            ['content-length'] = #body_off, 
       	 ['content-type'] = 'application/json', 
                }, 
          source = ltn12.source.string(body_off), 
            }) 
    log(response)
  else
  socket.http.request({ 
          url = "http://192.168.0.146/api/HF91dyFHr2J8PVWgXh1nVLjGq3i2JrKM8Egas8pK/lights/4/state", 
       method = 'PUT', 
         sink = ltn12.sink.table(response), 
      headers = { 
            ['content-length'] = #body_on, 
       	 ['content-type'] = 'application/json', 
                }, 
          source = ltn12.source.string(body_on), 
            }) 
    log(response) 
	end
  x=0
end

Interface graphique et pilotage manuel

Nous avons utilisé l'outil proposé avec l'automate pour créer l'interface graphique. Nous avons repris celle réalisée par les étudiants du projet d'ingénierie de l'an passé et avons ajouté nos fonctionnalités.

Ainsi, nous avons par exemple un écran pour piloter la lumière de la chambre des parents et un similaire pour la chambre enfant :

Interface pour contrôler la lampe Hue de la chambre des parents
Interface pour contrôler la lampe Hue de la chambre enfant





























L'utilisateur peut alors choisir la couleur qu'il souhaite pour la lampe mais aussi l'intensité de celle-ci.


QR Code
QR Code accueil:espaces:etudiants:etudiants:formation_initiale:module_ict_for_smart_grid:home_automation_via_plc (generated for current page)