1- Utilisation de HAL:

Comme le montre la figure suivante et conformément au Web, tout est organisé en ressources structurées hiérarchiquement avec un nœud racine / et des nœuds enfants /classroom par exemple ou /classroom/plugs. A chaque nœud, peut-être associé différents connecteurs : – des capteurs, qui sont des publieurs de données. Ils les envoient sur HAL. Ces données peuvent être récupérées sur HAL via une requête httpGET ; – des contrôleurs qui permettent d’écrire ou d’envoyer des données sur HAL via une requête http GET généralement des actionneurs.

liens vers HAL : cliquer ici

Se connecter à HAL:

  1. Depuis un PC personnel : Sans Fil, choisissez le réseau “HAL Server” il n'y a pas besoin d'un mot de passe ni de Proxy: propriétés de :internet –> connexion –> paramètres réseau –> Détecter automatiquement les paramètres de connexion
  2. Depuis un pc G2ELAB : via le réseau local de G2ELAB en utilisant un script de configuration automatique propriétés de :internet –> connexion –> paramètres réseau . Adresse du script “http://intranet.g2elab.grenoble-inp.fr/bus.pac
  3. depuis un PC école ENSE3: via le réseau local ENSE3 mais ici pas besoin de Proxy

Pour obtenir une information, on encode tout dans un URL :

http://halIPaddress:port/node/node/connector?do=performative&param1=value1&param2=value2

où performative peut par exemple être :

description : obtenir des informations sur le nœud référencé ; data : obtenir les dernières données disponibles pour l’ensemble des connecteurs associés au noeud désigné ou pour un connecteur. Les données sont retournées dans un format XML history : obtenir des données historiques pour l’ensemble des connecteurs associés au noeud désigné ou pour un connecteur. Par défaut, les données des 24 dernières heures sont remontées dans un format XML. Le paramètre during peut être ajouté pour spécifier la durée d’historiqueen minutes. control : envoyer une donnée à un controllerspécifier en paramètre. Les différents performatifs seront détaillés plus loin. Voici quelques exemples d’URL d’envoi de performatifs destinés à un serveur HAL ayantpour adresse IP 195.220.18.16 :

http://195.220.18.16/system/classroom?do=description

http://195.220.18.16/system/classroom/climateSensor01?do=data

http://195.220.18.16/system/classroom/climateSensor01/temperature?do=data

http://195.220.18.16/system/classroom/plugs/plug02/switch?do=control&ask={“switch”:“on”}

http://195.220.18.16/system/classroom/climateSensor02?do=history&during=60

1.1 Performatif “description”

Fournit la description d’un noeud/connector.

Par exemple : http://195.220.18.16/system?do=description conduit à :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
  <connectors>
          <status>ok</status>
          <name>system</name>
    <url>/system</url>
    <type>node</type>
    <nodes>
	    <node>/system/classroom</node>
	    <node>/system/offices</node>
	    <node>/system/outdoor</node>
	    <node>/system/technicalArea</node>
    </nodes>
  <connectors/>
  </message>

alors que http://195.220.18.16/system/classroom?do=description conduit à :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <name>classroom</name>
    <url>/system/classroom</url>
    <type>node</type>
    <nodes>
	    <node>/system/classroom/climateSensor01</node>
	    <node>/system/classroom/climateSensor02</node>
	    <node>/system/classroom/climateSensor03</node>
	    <node>/system/classroom/climateSensor04</node>
	    <node>/system/classroom/plugs</node>
    </nodes>
    <connectors>
	    <connector>/system/classroom/presenceSensor</connector>
	    <connector>/system/classroom/co2sensor</connector>
    </connectors>
  </message>

1.2 Performatif “data” Fournit les dernières données d’un connecteur. Par exemple : http://195.220.18.16/system/classroom/climateSensor01?do=data conduit à :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <node>
	    <name>climateSensor01</name>
	    <url>/system/classroom</url>
	    <connectors>
		    <connector>
		    <name>temperature</name>
		    <data>
			    <time>1374151408</time>
			    <index>1</index>
			    <value>24</value>
		    </data>
		    </connector>
		    <connector>
			    <name>humidity</name>
			    <data>
				    <time>1374151408</time>
				    <index>1</index>
				    <value>66</value>
			   </data>
		    </connector>
	    <connectors>
    </node>
  </message>

Les 2 connecteurs (temperature et humidity) sont associées au noeud /system/classroom/climateSensor01. Le temps est le temps EPOCH, c’est à direle nombre de secondes écoulées depuis le 1er janvier 1970. L’index correspond au numéro affecté par le compteur de données reçues (1, 2, 3…). Il est possible de n’obtenir que les données des connecteurs spécifiées : http://195.220.18.16/system/classroom/climateSensor01/temperature?do=data. conduit à :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <connector>
	    <name>temperature</name>
	    <url>/system/classroom/climateSensor02/temperature</url>
	    <data>
		    <time>1374153138</time>
		    <index>11</index>
		    <value>20</value>
	    </data>
    </connector>
  </message>

1.3 Performatif history Permet de collecter toutes les données des 24 dernières heures associées aux datasources d’une node/connecteur. par exemple, http://195.220.18.16/system/classroom/climateSensor01?do=history conduit à :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <node>
	    <name>climateSensor01</name>
	    <url>/system/classroom</url>
	    <connectors>
		    <connector>
			    <name>temperature</name>
			    <data>
				    <time>1374151408</time>
				    <index>1</index>
				    <value>24</value>
			    </data>
			    .....
			    <data>
				    <time>1374151408</time>
				    <index>11</index>
				    <value>25</value>
			    </data>
		    </connector>
		    <connector>
			    <name>humidity</name>
			    <data>
				    <time>1374151408</time>
				    <index>1</index>
				    <value>66</value>
			    </data>
			    .....
			    <data>
				    <time>1374151408</time>
				    <index>11</index>
				    <value>65</value>
			    </data>
		    </connector>
	    <connectors>
    </node>
  </message>

Il est possible de préciser la taille en heures de l’historique souhaité. Pour récupérer les données collectées durant la dernière heure. Il est bien sûrpossible de n’adresser que certains connecteur : http://195.220.18.16/system/classroom/climateSensor01/temperature?do=history&during=1&.Il vient :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <connector>
	    <name>temperature</name>
	    <url>/system/classroom/climateSensor02/temperature</url>
	    <data>
		    <time>1374153138</time>
		    <index>1</index>
		    <value>21</value>
	    </data>
	    <data>
		    <time>1374153138</time>
		    <index>2</index>
		    <value>22</value>
	    </data>
	    .....
	    <data>
		    <time>1374153138</time>
		    <index>111</index>
		    <value>20</value>
	    </data>
    </connector>
  </message>

1.4 Performatif control

Permet d’envoyer une commande associée à une connecteur. Un control peut être envoyé grâce à http://195.220.18.16/system/classroom/plugs/plug01/switch?do=control&ask={“switch”:“off”}. Le retour est :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <ControlRequest>
	    <Requester>MACBOOK-A6A128</Requester>
	    <Ask>
		    <control>switch</control>
		    <value>on</value>
	    </Ask>
    </ControlRequest>
  </message>

Les commandes doivent être encodées en json : “switch” :“off”. Si la commande n’est pas autorisée, Par exemple : http://195.220.18.16/system/classroom/plugs/plug01/switch?do=control&ask={“switch”:“stop”}, le retour est :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    Control sent by MACBOOK-A6A128 has not been sent because value ’stop’ corresponding to parameter ’switch’
  </message>

2- Aide au configurateur HAL requiert Python 3. Sa configuration se fait via le fichier hal.cfg et le fichier hal_cfg_salle_predis.py au dossier src. La figuresuivante illustrel’architecture du code Python 3 (3.2) de HAL.

3- Serveur OPC Le serveur OPC est accessible à partir de HAL via un service web (figure ??). Toutes les variables d’OPC sont attachées au noeud /system/opc. Pare ample, la requête suivante permet d’avoir la température extérieure stockée dans le serveur d’OPC : http://195.220.18.16/system/opc/INPG-PLC-IOX452A_1U8Value?do=data. Il vient :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-IO X452A_1 U8 Value</name>
	    <value>9</value>
    </variable>
  </message>

Liste des variables importantes OPC

1. SALLE_INFO_DEBIT_SOUFFLAGE

Description : Débit de soufflage de la salle information.

Mode : Lecture et écriture.

URL :http://195.220.18.16/system/opc/INPG-PLC-PRJ-PRG-Salle_Info-Outputs-debit_souf_filtre?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name> INPG-PLC-PRJ-PRG-Salle_Info-Outputs-debit_souf_filtre</name>
	    <value> 325,5498</value>
    </variable>
  </message>

2. ESPACE_BUREAU_DEBIT_SOUFFLAGE

Description : Débit de soufflage de l’espace bureau.

Mode : Lecture et écritur.

URL :http://195.220.18.16/system/opc/INPG-PLC-PRJ-PRG-Espace_Bureau-Outputs-debit_souf_filtre?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-PRJ-PRG-Espace_Bureau-Outputs-debit_souf_filtre</name>
	    <value> 77,354</value>
    </variable>
  </message>"

3. SALLE_INFO_TEMP_AMONT_BAT

Description :Sert à calculer la puissance de chauffage de la salle info.

Mode : Lecture.

URL : http://195.220.18.16/system/opc/INPG-PLC-$IO%20X422A_2%20U3%20Value?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-$IO X422A_2 U3 Value</name>
	    <value> 25,96</value>
    </variable>
  </message>
  

4. SALLE_INFO_TEMP_AVAL_BAT

Description : Sert à calculer la puissance de chauffage de la salle info.

Mode : Lecture.

URL : http://195.220.18.16/system/opc/INPG-PLC-$IO%20X422A_2%20U2%20Value?do=read

résultats :

   <?xml version="1.0" encoding="UTF-8"?>
   <message>
     <status>ok</status>
     <variable>
	     <name>INPG-PLC-$IO X422A_2 U2 Value</name>
	     <value> 23,31</value>
     </variable>
   </message>

5. ESPACE_BUREAU_TEMP_AMONT_BAT

Description : Sert à calculer la puissance de chauffage de l’espace bureau.

Mode : Lecture.

URL : http://195.220.18.16/system/opc/INPG-PLC-$IO%20X422A_3%20U3%20Value?do=read

résultats :

   <?xml version="1.0" encoding="UTF-8"?>
   <message>
     <status>ok</status>
     <variable>
	     <name>INPG-PLC-$IO X422A_3 U3 Value</name>
	     <value> 25,58</value>
     </variable>
   </message>

6. ESPACE_BUREAU_TEMP_AVAL_BAT

Description : Sert à calculer la puissance de chauffage de l’espace bureau.

Mode : Lecture.

URL : http://195.220.18.16/system/opc/INPG-PLC-$IO%20X422A_3%20U2%20Value?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-$IO X422A_3 U2 Value</name>
	    <value> 23,67</value>
    </variable>
  </message>

7. BUREAU_KWH_CAL

Description : Sert à calculer la puissance de chauffage de l’espace bureau.

Mode : Lecture.

URL : http://195.220.18.16/system/opc/INPG-PLC-PRJ-PRG-Espace_Bureau-Public_Signals-CPT_KWH_Bat_init?do=read

résultats :

  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-PRJ-PRG-Espace_Bureau-Public_Signals-CPT_KWH_Bat_init</name>
	    <value>255.0</value>
    </variable>
  </message>

8. ESPACE_BUREAU_TEMP_AMBIANTE

Description : Température ambiante de l’espace bureau.

Mode : Lecture.

URL : http://195.220.18.16/system/opc/INPG-PLC-$IO%20X422A_3%20U1%20Value?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-$IO X422A_3 U1 Value</name>
	    <value> 22,32</value>
    </variable>
  </message>

9. TEMPERATURE_CIRCUL_PLATTEFORME

Description :Température ambiante du couloir.

Mode : Lecture.

URL :http://195.220.18.16/system/opc/INPG-PLC-$IO%20X452A_5%20U4%20Value?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
  <status>ok</status>
    <variable>
	    <name>INPG-PLC-$IO X452A_5 U4 Value</name>
	    <value> 22</value>
    </variable>
  </message>

11– MODBUS-T_AIR_REPRIS

Description :Température ambiante de la salle EP (salle de recherche du rez-de-chaussez).

Mode : Lecture.

URL (bureauA) : http://195.220.18.16/system/opc/INPG-PLC-$IO%20X422A_4%20U2%20Value?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-$IO X422A_4 U2 Value</name>
	    <value>22,67</value>
    </message>

URL (bureau B) :http://195.220.18.16/system/opc/INPG-PLC-$IO%20X452A_1%20U3%20Value?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-$IO X452A_1 U3 Value</name>
	    <value>22,63</value>
    </variable>
  </message>

12. TEMP_EXTERIEURE

Description :Température extérieure.

Mode : Lecture.

URL : http://195.220.18.16/system/opc/INPG-PLC-$IO%20X452A_1%20U8%20Value?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-$IO X452A_1 U8 Value</name>
	    <value> 23,39</value>
    </variable>
  </message>

13. SALLE_INFO_TEMP_AMBIANTE

Description :Température de la salle de classe.

Mode : Lecture.

URL : http://195.220.18.16/system/opc/INPG-PLC-$IO%20X422A_2%20U1%20Value?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-$IO X422A_2 U1 Value</name>
	    <value> 22,78</value>
    </variable>
  </message>

14. VENT_SHED_T1

Description :Température 1 du shed (espace vide à côté des salles infos et espace bureau).

Mode : Lecture.

URL : http://195.220.18.16/system/opc/INPG-PLC-$IO%20X422A_1%20U1%20Value?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-$IO X422A_1 U1 Value</name>
	    <value> 34,05</value>
  </message>

15. VENT_SHED_T2

Description :Température 2 du shed (espace vide à côté des salles infos et espace bureau).

Mode : Lecture.

URL : http://195.220.18.16/system/opc/INPG-PLC-$IO%20X422A_1%20U2%20Value?do=read

résultats :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <variable>
	    <name>INPG-PLC-$IO X422A_1 U2 Value</name>
	    <value> 28,44</value>
    </variable>
  </message>

4- Les lampes Philips Hue Les lampes Philips hue peuvent être contrôlées à partir de HAL. La connexion entre les lampes et le serveur HAL se fait en utilisant le protocole ZIGBEE en passant par un pont connecté en Ethernet avec le réseau HAL. Toutes les lampes Philips Hue sont attachées au noeud /system/offices/philipshue.

Par exemple, la requête suivante permet d’allumer la deuxième lampe :

http://195.220.18.16/system/offices/philipshue/hue2?do=control&ask={“on”:false}.Il vient :

  <?xml version="1.0" encoding="UTF-8"?>
  <message>
    <status>ok</status>
    <ControlRequest>
	    <Requester>MACBOOK-A6A128</Requester>
	    <Ask>
		    <control>on</control>
		    <value>false</value>
	    </Ask>
    </ControlRequest>
  </message>

Les paramètres du contrôle des lampes Philips Hue sont :

  1. “on” : true pour allumer la lampe ; false pour l’éteindre ;
  2. “sat” : intensité de la lampe ; ce paramètre varie entre 0 et 255 ;
  3. “bri” : luminosité de la lampe ; ce paramètre varie entre 0 et 255 ;
  4. “hue” : la couleur de la lampe ; ce paramètre varie entre 0 et 65535 ;

QR Code
QR Code accueil:cat0:page_1:udh (generated for current page)