université de haute alsace


A2EB - Analyse Energétique et Environnementale des Bâtiments


 

 

Analyse Energétique et Environnementale des Bâtiments

 

Le projet A2EB de l'Université de Haute Alsace a pour objectif de gérer la collecte des données de capteurs intelligents et connectés au Web.

Ce projet concerne plus particulièrement les thématiques suivantes : Smart Grids, Smart Homes, Cloud Computing, Electrical Engineering, Power Engineering, Automation, Communications, Open Source...

 

 

Données enregistrées dans la table "edata"

 

Grâce à la baisse du coût des capteurs, de plus en plus d'objets sont connectés au net. Ils envoient régulièrement des données sur leur environnement. Ces données peuvent être analysées pour créer de nouveaux services personnalisés.

 

Données sur le serveur

 

Ce serveur web+SQL est dédié à la collecte de données envoyées par des objects connectés à Internet. Ce sont des capteurs avec une interface web, on parle d'IoT (Internet of Things), qui transmettent des données à ce serveur. Une fois stockées (dans une base de données), les données sont rendues accessibles pour des tâches de visualisation, de traitement, d'analyse, etc.

 

Remarque : chaque object connecté se distingue avec un identifiant (id) et certains requièrent un mot de passe.

 

Sommaire :

 

Affichage en ligne de données

 

Vous pouvez réaliser les opérations suivantes :  


 

 

Synthèse de toutes les données déjà collectées (19 February 2026 20:08:19)

 

# id capteur nb. données inst. 1ère mesure inst. dernière mesure
1 01112023-12-21 11:16:012024-12-09 16:23:14
2 1219852022-03-23 17:24:032025-11-24 10:03:33
3 1559424112021-03-17 15:55:372026-01-08 11:30:45
4 16414862021-03-11 13:58:262025-07-11 13:58:01
5 17970252021-06-22 12:14:382026-02-19 19:47:41
6 181112025-12-08 10:54:552025-12-08 11:40:16
7 1102069612021-03-26 16:42:172026-02-19 19:53:38
8 1119857632019-06-05 10:10:002023-06-07 14:08:15
9 112102024-11-30 19:34:052024-11-30 19:34:27
10 113405432021-06-30 11:31:082026-02-19 20:02:43
11 11481202022-03-18 08:34:562023-01-24 09:03:01
12 1152664172022-11-10 10:39:202023-02-11 10:08:18
13 21672922022-11-28 14:28:502024-12-09 15:59:24
14 11780762023-01-11 09:14:312024-11-20 11:18:46
15 118322023-12-11 11:02:322023-12-11 11:06:42
16 120442024-12-09 16:59:592024-12-09 17:14:33
17 024467442022-04-12 13:29:002024-12-09 15:28:35
18 055222024-11-20 10:11:342024-12-09 15:59:23
19 070122024-12-09 17:15:212024-12-09 18:06:53
20 078822022-12-06 23:11:442023-12-21 09:18:17
21 09932024-12-02 11:18:052024-12-09 14:34:25
22 0100192022-04-17 23:54:512022-04-17 23:55:58
23 010122024-11-20 11:23:462024-11-20 11:23:47
24 0102802024-11-20 11:26:312024-12-09 16:03:18
25 0103102024-11-20 11:32:162024-11-20 11:32:26
26 0120232023-12-21 11:09:392023-12-21 11:56:29
27 020022023-12-11 11:23:482023-12-11 11:23:48
28 0206730622021-04-08 14:31:012023-04-25 00:00:05
29 023342024-11-20 10:18:212024-11-20 10:59:36
30 0234802024-11-20 11:00:032025-01-05 22:41:12
31 0300892023-12-11 11:34:582024-12-09 16:03:06
32 0400119752021-07-21 10:29:452022-02-25 11:11:36
33 04012812022-02-25 11:12:592022-05-31 11:40:42
34 04023232022-05-30 10:12:122022-05-31 11:39:55
35 042222024-12-09 16:59:392024-12-09 17:00:27
36 0477112024-12-09 16:17:262024-12-09 17:08:28
37 047812024-12-09 16:09:432024-12-09 16:09:43
38 072912024-11-20 10:33:302024-11-20 10:33:30
39 08379572024-12-09 17:14:092024-12-09 17:24:56
40 088842024-11-20 11:59:422024-11-20 12:08:53
41 010011338842022-03-04 11:13:302022-05-31 22:03:00
42 01002970472022-04-24 22:04:402022-05-30 15:34:18
43 01003192022-05-24 12:49:532022-05-24 12:50:39
44 01101198602022-05-25 13:22:232022-06-29 14:47:14
45 01102296092022-05-25 13:24:022022-05-31 11:47:04
46 01103262182022-05-25 13:27:072022-05-31 10:56:30
47 01104239692022-05-24 13:07:432022-05-30 20:31:27
48 01105315292022-05-24 13:09:402022-05-31 11:47:05
49 01106307302022-05-24 13:11:392022-05-31 11:24:41
50 01107309942022-05-24 13:13:452022-05-31 11:24:35
51 01108300602022-05-24 13:15:112022-05-31 11:24:27
52 01109301062022-05-24 13:17:412022-05-31 11:20:06
53 01110294872022-05-24 13:20:052022-05-31 11:18:52
54 01111227852022-04-22 01:20:362022-05-31 11:19:23
55 01112289252022-05-24 13:23:352022-05-31 11:19:29
56 01113258092022-05-24 13:25:432022-05-31 11:19:25
57 01114278332022-05-24 13:27:412022-05-31 11:19:05
58 01115281232022-05-24 13:29:142022-05-31 11:19:57
59 01116211362022-05-24 13:31:002022-05-30 20:31:24
60 01117291062022-05-24 13:32:592022-05-31 11:19:53
61 01118239912022-05-24 13:51:442022-05-31 11:19:53
62 01119208702022-05-24 13:36:392022-05-31 11:20:11
63 01120218642022-05-24 13:38:182022-05-31 11:21:56
64 0120152023-12-21 10:18:072023-12-21 10:18:16
65 01234152025-12-08 11:27:062025-12-08 11:41:56
66 01433152023-12-06 18:03:072023-12-06 18:06:36
67 0143452023-12-06 18:09:142023-12-06 18:09:22
68 01999472022-11-14 11:48:412023-12-21 10:19:24
69 1200432022-10-27 16:50:522022-10-27 16:51:21
70 1200532022-10-27 16:46:152022-10-27 16:50:40
71 020111842023-12-04 16:25:142025-12-10 10:44:07
72 02015172023-12-21 10:57:412023-12-21 11:03:35
73 0202222023-12-11 09:07:142023-12-11 09:07:16
74 02023322023-12-11 09:12:392023-12-21 11:57:42
75 02026122023-12-11 09:01:232023-12-11 09:06:51
76 02044302024-11-20 11:56:382024-11-20 12:06:40
77 02048202023-12-21 10:46:362023-12-21 10:50:04
78 02050402023-12-21 11:10:152024-11-20 10:45:52
79 0205532024-11-20 10:05:012024-11-20 10:05:11
80 03022102023-12-11 08:38:082023-12-11 08:38:53
81 0333312023-12-06 18:03:152023-12-06 18:03:15
82 03521362023-12-11 08:34:172023-12-11 09:11:14
83 04011112023-12-04 16:26:492023-12-04 16:27:49
84 04012462023-12-11 11:00:532023-12-21 11:41:16
85 04077112024-12-09 17:19:312024-12-09 17:19:32
86 0470012024-12-09 17:14:562024-12-09 17:14:56
87 0500032023-12-04 17:01:562023-12-21 08:20:13
88 05001102023-12-21 12:05:032023-12-21 12:05:31
89 05020202024-11-20 10:47:362024-11-20 10:47:38
90 05021502024-11-20 11:20:262024-12-09 14:48:48
91 0522272023-12-21 11:09:122023-12-21 11:13:19
92 06666442023-12-06 18:03:122023-12-06 18:20:40
93 06969142023-12-21 10:38:562023-12-21 11:30:37
94 077771192024-11-20 12:09:502025-01-05 16:59:56
95 08500452023-12-07 02:51:342023-12-21 10:08:55
96 08777502024-12-09 16:03:092024-12-09 16:54:48
97 0999982023-12-21 10:19:342023-12-21 10:38:29
98 01111192023-12-06 18:14:382023-12-21 11:25:39
99 01234532023-12-06 18:09:372023-12-06 18:11:08
100 01790012023-12-07 02:51:102023-12-07 02:51:10
101 019607172023-12-21 11:16:342023-12-21 11:52:19
102 02300012023-12-09 02:34:522023-12-09 02:34:52
103 055555122023-12-11 08:53:522023-12-11 08:55:02
104 066666452023-12-21 09:36:572023-12-21 11:29:07
105 088888152023-12-11 08:31:332023-12-21 11:00:18
106 09800092023-12-11 09:18:062023-12-11 09:18:54
107 017865412023-12-09 02:38:192023-12-09 02:38:19
108 025000012023-12-09 03:03:332023-12-09 03:03:33
109 0444555112023-12-21 09:16:162023-12-21 09:17:16
110 0777777132024-11-20 11:34:352024-11-21 09:11:20
111 0804777102024-12-09 16:01:292024-12-09 16:02:07
112 099999912023-12-11 08:24:452023-12-11 08:24:45
113 07777777722024-12-01 17:18:262024-12-01 17:19:44
114 0214748364737682023-12-21 09:05:512024-12-09 16:58:28
TOTAL 8508868

 

Remarques :

 

 

 

Affichage des vingts dernières données de l'objet connecté avec id=7777

 

num. ligne inst. serveur inst. uts serveur nc st 12345 67891011121314151617181920
206661532025-01-05 16:59:561736092796.082212101112202122
206557242024-12-09 16:00:251733756425.8751337714500310117747747
206557222024-12-09 16:00:221733756422.2194337714500310117747747
206557212024-12-09 16:00:181733756418.9691337714500310117747747
206557202024-12-09 16:00:151733756415.7573337714500310117747747
206557192024-12-09 16:00:121733756412.5194337714500310117747747
206557182024-12-09 16:00:091733756409.2876337714500310117747747
206557172024-12-09 16:00:051733756405.967337714500310117747747
206557162024-12-09 16:00:021733756402.7226337714500310117747747
206557152024-12-09 15:59:591733756399.4859337714500310117747747
206557142024-12-09 15:59:561733756396.1878337714500310117747747
206557112024-12-09 15:59:141733756354.2426337714500310117747747
206557102024-12-09 15:59:101733756350.9875337714500310117747747
206557092024-12-09 15:59:071733756347.7909337714500310117747747
206557082024-12-09 15:59:041733756344.4072337714500310117747747
206557072024-12-09 15:59:011733756341.0681337714500310117747747
206557062024-12-09 15:58:571733756337.7253337714500310117747747
206557052024-12-09 15:58:541733756334.4846337714500310117747747
206557042024-12-09 15:58:211733756301.3671337714500310117747747
206557032024-12-09 15:58:181733756298.1254337714500310117747747

 

 

Export des données (CSV, XML, texte...)

Toutes les données d'un objet connecté dans un fichier CSV

Un fichier CSV (texte séparé par des virgules ou points virgules: Comma-Separated Values) contenant toutes les données déjà transmises par un objet connecté est fabriqué au moment précis où cette page web est demandée. Un fichier par année est créé et mis en ligne :

 

edata.csv

 

 

Dernières mesures d'un objet connecté :

La dernière donnée mesurée par un object connecté peut être récupérée à tout instant :

Pour récupérer uniquement le dernier enregistrement d'un IoT dans une chaîne de caractères, on peut utiliser le script PHP eget.php en passant en paramètre l'identifiant de l'IoT.
Voici un exemple (ici l'id du IoT ou objet connecté est 7777) : eget.php?id=7777

 

Remarque : le script eget.php retourne toujours 26 valeurs séparées par des ';', il retourne une série de 26 '0'si l'id de l'IoT est manquant, et il retourne du 'vide' (NULL en SQL) si l'id de l'IoT est inexistant (dans tous les cas et même pour des id corrects des valeurs pourront être vides si l'IoT n'a pas rempli tous les champs var1 à var20).

 

Données sous forme de séries temporelles

Le script suivant avec passage de deux paramètres (id et date), retourne les instants des enregistrements d'un objet connecté pour le jour indiqué sous la forme d'une série de nombres séparés par une virgule.

Exemple : http://www.mmi.iutmulhouse.uha.fr/etseries.php?idd=11&ddate=2019-12-08

Ici, les données de l'objet connecté id=11 du 8 décembre 2019 sont retournées au format :


YYYY, MM, DD, HH, MM, SS, ms, id, 0, cc, δt1, δt2, δt3 ... 
avec le code cc=0 -> ms, cc=1 -> s, cc=-1 -> "vide"

Les 10 premiers chiffres servent d'en-tête, les autres (δt1 à δtn) représentent les écarts de temps selon le code cc.

 

Pour aller en haut

 

Aide pour envoyer des données à la base de données

La transmission des données (requête) repose sur le protocole HTTP du Web. Dans la spécification du protocole HTTP, GET permet à un IoT (= client Web = objet connecté) de demander une page Web en lui transmettant des paramètres. Les paramètres sont :

 

C'est le paramètre id qui sert à distinguer l'origine des données, i.e., qui permet de reconnaître l'IoT qui a transmis une ligne de données sur le serveur SQL (Structured Query Language).

 

Transmettre des donnée se fait en accédant à "la ligne de code" à une page web PHP qui se trouve sur le serveur en transmettant les paramètres et leurs valeurs directement dans l'URL. Autrement dit, le programme embarqué dans l'objet connecté doit construire une URL comme celle de l'exemple ci-dessous.

 

Exemple d'URL pour envoyer des données (à tester dans un navigateur avec id=2):


http://www.mmi.iutmulhouse.uha.fr/einsert.php?id=2&dt=2020-10-21%2019:28:26&nc=33&st=77&var1=14&var2=24&var3=34&var18=84&var19=94&var20=204  

 

Il faut donc fabriquer une chaîne de caractères qui servira d'URL. Pour mettre les données dans le bon format on utilise généralement une fonction sprintf(...) qui existe dans pratiquement tous les environnements (C/C++, Python, Matlab, Octave, Java...)

 

Exemple de script Matlab pour envoyer des données (donc créer l'URL) :

  
clc; clear all; close all;

monurl='http://www.mmi.iutmulhouse.uha.fr/einsert.php?id=0007&dt=2017-10-16%2019:28:26&nc=33&st=77
&var1=145003&var2=10&var3=11&var18=0.77&var19=4.7&var20=747.74';   
localfile='monfichier.txt';
urlwrite(monurl, localfile);

% ... il faut bien fabriquer la chaine de caractères contenue dans la variable monurl

 

Exemple de script Python pour envoyer des données (donc créer l'URL) :


import urllib.request

monurl='http://www.mmi.iutmulhouse.uha.fr/einsert.php?id=0007&dt=2017-10-16%2019:28:26&nc=33&st=77
&var1=145003&var2=10&var3=11&var18=0.77&var19=4.7&var20=747.74'; 
xdp = urllib.request.urlopen(monurl)
print(xdp.read())

# ... il faut bien fabriquer la chaine de caractères contenue dans la variable monurl

 

Exemple de script Octave pour envoyer des données (donc créer l'URL) :


monurl='http://www.mmi.iutmulhouse.uha.fr/einsert.php?id=0007&dt=2017-10-16%2019:28:26&nc=33&st=77 
&var1=145003&var2=10&var3=11&var18=0.77&var19=4.7&var20=747.74';
urlread(monurl);
% ... il faut bien fabriquer la chaine de caractères contenue dans la variable monurl

 

Remarques

 

Aide pour récupérer automatiquement des données CSV

Il est possible de récupérer et télécharger les données CSV à partir de divers environnement de calcul ou de programmation avec quelques lignes de code. La première ligne sert à générer le fichier CSV qui sera enregistré sur le serveur et la seconde permet de le télécharger.

Pour générer le fichier CSV, il faut transmettre au script serveur eread.php (donc fournir dans l'URL) les 3 paramètres suivants :

 

Les exemples ci-dessous sont tous faits pour récupérer toutes les données déjà transmises par l'objet connecté avec l'identifiant 2 (idd=2) durant le mois de juillet (mm=7) en 2021 (yyyy=2021).

 

Exemple d'URL pour récupérer des données (de l'objet connecté avec 2 comme identifiant) :


http://www.mmi.iutmulhouse.uha.fr/eread.php?idd=2&mm=07&yyyy=2021

 

Script Matlab :

 
clc; clear all; close all;

urlwrite('http://www.mmi.iutmulhouse.uha.fr/eread.php?idd=2&mm=07&yyyy=2021', 'localfile.csv');
urlwrite('http://www.mmi.iutmulhouse.uha.fr/edata.csv', 'localfile.csv'); 
% ...

 

Script Python 3 :


import urllib.request

xdp = urllib.request.urlopen('http://www.mmi.iutmulhouse.uha.fr/eread.php?idd=2&mm=07&yyyy=2021')
print(xdp.read())
xdp = urllib.request.urlopen('http://www.mmi.iutmulhouse.uha.fr/edata.csv')
print(xdp.read())
# ...

 

Script Octave :


alldata=urlread("http://www.mmi.iutmulhouse.uha.fr/eread.php?idd=2&mm=07&yyyy=2021");
alldata=urlread("http://www.mmi.iutmulhouse.uha.fr/edata.csv");
% ...

 

Accès via d'autres environnements

Dans d'autres environnements comme Java on utilisera les classes URL ou URLReader et la méthode openStream(...) et Mathematica dispose de URLRead(...)

 

Pour transmettre et récupérer des données CSV, côté client dans l'environnement de calcul et de programmation, il faudra toujours une fonction pour accéder au Web et fabriquer les URL (chaînes de caractères). Puis, selon les cas :

 

Structure des données CSV

Les données sont exportées de la base de données au format CSV (comma-separated values) dans l'ordre des instants du serveur. Chaque ligne correspond à un enregistrement où les données sont séparées par le caractère "; " et il y a dans l'ordre :

  1. numéro de la ligne de mesure,
  2. instant de mesure de l'objet connecté,
  3. instant de mesure du serveur,
  4. instant de mesure du serveur au format Unix Time Stamp (uts) en secondes et à 4 chiffres après la virgule
    (since midnight, Jan 1, 1970, UTC) exemple : 2026-02-19 20:08:25.7819 1771528105.7819
  5. compteur interne de l'objet connecté (nc),
  6. status de l'objet connecté (st),
  7. identifiant de l'objet connecté (id),
  8. valeurs numériques transmises par l'objet connecté (var1 à var20).

 

Pour aller en haut

 

Explications sur la base de données SQL

Côté serveur, les données sont gérées par une base de données SQL. Le code source SQL ci-dessous donne la structure complète de la table qui contient les mesures et les données des objets connectés :

-- --------------------------------------------------------
--
-- Version du serveur SQL: 5.1.73
--
-- Structure de la table mesure_e
--
CREATE TABLE IF NOT EXISTS mesure_e (
  id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  datec datetime NOT NULL,
  dates datetime NOT NULL,
  uts double DEFAULT NULL,
  nc int(11) DEFAULT NULL,
  st tinyint(1) DEFAULT NULL,
  id int(20) NOT NULL,
  val1 float NOT NULL,
  val2 float DEFAULT NULL,
  val3 float DEFAULT NULL,
  val4 float DEFAULT NULL,
  val5 float DEFAULT NULL,
  val6 float DEFAULT NULL,
  val7 float DEFAULT NULL,
  val8 float DEFAULT NULL,
  val9 float DEFAULT NULL,
  val10 float DEFAULT NULL,
  val11 float DEFAULT NULL,
  val12 float DEFAULT NULL,
  val13 float DEFAULT NULL,
  val14 float DEFAULT NULL,
  val15 float DEFAULT NULL,
  val16 float DEFAULT NULL,
  val17 float DEFAULT NULL,
  val18 float DEFAULT NULL,
  val19 float DEFAULT NULL,
  val20 float DEFAULT NULL,
  msg text,
  PRIMARY KEY (mes_id)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 

 

 

Envoi de données par un formulaire

Formulaire pour IoT id=2.

 

Pour aller en haut



 


A2EB - Analyse Energétique et Environnementale des Bâtiments

 

Informations générales

Principe et objectifs

Technologies

Galerie

Partenaires

Université de Haute Alsace
IUT de Mulhouse
Patrice Wira

Outils techniques

Monitoring temps réel

Télécherger données

Météo live