-
Notifications
You must be signed in to change notification settings - Fork 0
/
domotique-en.html
458 lines (455 loc) · 26.2 KB
/
domotique-en.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
<!DOCTYPE html>
<!--[if lt IE 8 ]><html class="no-js ie ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]><html class="no-js ie ie8" lang="en"> <![endif]-->
<!--[if (gte IE 8)|!(IE)]><!-->
<html class="no-js" lang="en">
<!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Resume - Jonathan GATARD</title>
<meta name="description" content="Resume - Jonathan GATARD">
<meta name="author" content="Jonathan GATARD">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="css/default.css">
<link rel="stylesheet" href="css/common.css">
<link rel="stylesheet" href="css/projets.css">
<link rel="stylesheet" href="css/responsive.css">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<header id="home">
<div class="flag">
<a href="domotique.html">
<img class="flagimg" src="images/icons/fr.jpg">
</a>
</div>
<nav id="nav-wrap">
<a class="mobile-btn" href="#nav-wrap" title="Show navigation">Show navigation</a>
<a class="mobile-btn" href="#" title="Hide navigation">Hide navigation</a>
<ul id="nav" class="nav">
<li><a href="index-en.html#projets">Resume</a></li>
<li><a href="react-en.html#react">React</a></li>
<li class="actif"><a class="smoothscroll" href="#domotique">Home automation</a></li>
<li><a href="aeromodelisme-en.html#aeromodelisme">Aeromodelling</a></li>
<li><a href="formation-en.html#formation">Formation</a></li>
<li><a href="mecanique-en.html#mecanique">Mechanic</a></li>
<li><a href="imprimante-en.html#imprimante">3D printer</a></li>
</ul>
</nav>
<div class="row banner">
<div class="banner-text">
<h1 class="responsive-headline">Jonathan GATARD</h1>
<h3>
Aerospace and space engineer, who has expanded his skills as a digital project manager in the automotive industry and is seeking specialization in computer science to take on new professional challenges.
<br>
<a class="smoothscroll" href="#domotique">Scroll down and learn more about my projects.</a>
</h3>
<hr />
<ul class="social">
<li><a href="https://github.com/jonathan-gatard"><i class="fa fa-github"></i></a></li>
<li><a href="https://www.linkedin.com/in/jonathan-gatard/"><i class="fa fa-linkedin"></i></a></li>
</ul>
</div>
</div>
<p class="scrolldown">
<a class="smoothscroll" href="#domotique"><i class="icon-down-circle"></i></a>
</p>
<div id="go-top-fixed"><a class="smoothscroll" title="Back to Top" href="#home"><i class="icon-up-open"></i></a></div>
</header>
<!-- Header End -->
<!-- Projets Section ================================================== -->
<section id="domotique" class="projets">
<!-- domotique ----------------------------------------------- -->
<div class="row">
<div class="twelve columns main-col">
<h2>Home automation</h2>
<p class="info">Home automation of my house<span>•</span> <em class="date">2020 - present</em>
</p>
<div class="row item">
<p>
<b>Objectives</b>: Automate a home using a universal, modular, free, and open-source solution
</p>
<br>
<table>
<thead>
<tr>
<th><b>Advantages</b></th>
<th><b>Disadvantages</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<ul>
<li>Enriching knowledge project</li>
<li>Independence from proprietary systems</li>
<li>Cost-effective</li>
<li>Regular updates</li>
<li>Intuitive user interface</li>
<li>High reliability</li>
</ul>
</td>
<td>
<ul>
<li>Initial setup time required</li>
<li>Technical knowledge required</li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
<div class="row item">
<div class="titre">ZigBee Device Installations</div>
<ul>
<li>Tuya Thermostatic Valves</li>
<li>YSRSAI lights</li>
<li>Xiaomi temperature/humidity Sensors</li>
<li>Xiaomi presence Sensors</li>
<li>Xiaomi door/window Sensors</li>
</ul>
<div class="bgrid-thirds s-bgrid-thirds cf">
<div class="columns projets-item">
<div class="spacer">
<div class="item-wrap">
<img alt="" src="images/projects/domotique/xiaomi1.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>Temperature/humidity sensor</h5>
</div>
</div>
</div>
</div>
</div>
<div class="columns projets-item">
<div class="spacer">
<div class="item-wrap">
<img alt="" src="images/projects/domotique/xiaomi2.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>Door/window sensor</h5>
</div>
</div>
</div>
</div>
</div>
<div class="columns projets-item">
<div class="spacer">
<div class="item-wrap">
<img alt="" src="images/projects/domotique/tuya.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>Thermostatic valve (for water radiators)</h5>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row item">
<div class="titre">Wi-Fi Device Installations</div>
<ul>
<li>ESP8266 + 220V relay</li>
<li>ESP32 + PN532 (RFID reader)</li>
<li>Arduino Nano + IR LED (to simulate IR remote)</li>
<li>ESP32 + HTU21D (temperature/humidity Sensor) + CCS811 (CO2 Sensor)</li>
</ul>
<p>
ESPHome firmware installation on Arduino/ESP: allow to do OTA updates, simplify sensors management and facilitate communication with Home Assistant.
</p>
<div class="bgrid s-bgrid cf">
<div class="columns projets-item">
<div class="spacer">
<div class="item-wrap">
<img alt="" src="images/projects/domotique/esphome.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>ESPHome</h5>
<p>Open-source software for ESP/Arduino management</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row item">
<div class="titre">Zigbee network sniffer installation on Raspberry Pi</div>
<p>
<b>Difficulties encountered:</b>
</p>
<ul>
<li>Mapping "/dev/ttyAMA0" from Raspberry to the Zigbee2MQTT docker</li>
<li>Putting PiZigate into production mode (GPIO state modification)</li>
<li>Setting the PiZigate baud rate to 115200 (firmware modification)</li>
</ul>
<div class="bgrid-halves s-bgrid-halves cf">
<div class="columns projets-item">
<div class="spacer">
<div class="item-wrap">
<img alt="" src="images/projects/domotique/pizigate.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>Raspberry Pi 4</h5>
<p>Argon One Case<br>
Uninterrupted power supply (2 hours autonomy)<br>
120 GB M2 SSD<br>
1 GB/s Ethernet connection
</p>
</div>
</div>
</div>
</div>
</div>
<div class="columns projets-item">
<div class="spacer">
<div class=" item-wrap">
<img alt="" src="images/projects/domotique/pizigate2.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>PiZigate</h5>
<p>ZigBee network sniffer module</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row item">
<div class="titre">
Conversion of raw data to MQTT with Zigbee2MQTT
</div>
<p>
List of compatible devices:
</p>
<a href="https://www.zigbee2mqtt.io/supported-devices/" title="Zigbee2MQTT" target="_blank">https://www.zigbee2mqtt.io/supported-devices/</a>
<div class="bgrid s-bgrid-halves cf">
<div class="columns projets-item">
<div class="spacer">
<div class=" item-wrap">
<img alt="" src="images/projects/domotique/zigbee2mqtt.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>ZigBee Network</h5>
<p>ZigBee mesh network schema:
<br>
Star: server (Raspberry Pi)
<br>
Blue nodes: network repeater devices
<br>
Green nodes : basic devices
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row item">
<div class="title">Integration with Home Assistant</div>
<div class="bgrid s-bgrid cf">
<div class="columns projets-item">
<div class="spacer">
<div class="item-wrap">
<img alt="" src="images/projects/domotique/ha.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>Home Assistant dashboard</h5>
<p>Overview of the "Lights" section of the Home Assistant dashboard</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row item">
<div class="title">Storing data in InfluxDB + Grafana Dashboard</div>
<div class="bgrid s-bgrid cf">
<div class="columns projets-item">
<div class="spacer">
<div class="item-wrap">
<img alt="" src="images/projects/domotique/grafana.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>Grafana dashboard</h5>
<p>Overview of energy consumption of some devices</p>
</div>
</div>
</div>
</div>
</div>
</div>
<p>
Example of a publicly accessible dashboard displaying temperature and home consumption:
<br>
<a href="http://grafana.neptune79.duckdns.org/d/1DjY9Y5Vk/temperature" title="Grafana - Température" target="_blank"> http://grafana.neptune79.duckdns.org/d/1DjY9Y5Vk/temperature</a>
<br>
<a href="http://grafana.neptune79.duckdns.org/d/BvgPZmGVz/consommation" title="Grafana - Consommation" target="_blank">http://grafana.neptune79.duckdns.org/d/BvgPZmGVz/consommation</a>
</p>
</div>
<div class="row item">
<div class="title">Using Node-Red to automate tasks</div>
<div class="bgrid s-bgrid cf">
<div class="columns projets-item">
<div class="spacer">
<div class="item-wrap">
<img alt="" src="images/projects/domotique/nodered.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>"Heating" Node-Red Flow</h5>
</div>
</div>
</div>
<p>The "Heating" flow above allows:</p>
<ul>
<li>To turn on the toilet heating during the week between 6:30 am and 10:00 pm, and on weekends between 8:00 am and 11:00 pm</li>
<li>To check that the window is not open when the heating is on</li>
<li>To apply temperature and heating curves based on variables defined in Home Assistant</li>
</ul>
<div class="item-wrap">
<img alt="" src="images/projects/domotique/nodered2.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>"Presence" Node-Red Flow</h5>
</div>
</div>
</div>
<p>The "Presence" flow above allows:</p>
<ul>
<li>Check if someone is present and turn on the lights if necessary</li>
<li>Check if the room's light intensity is lower than the setpoint (adjustable in Home Assistant)</li>
<li>Manage light intensity and color temperature based on the time of day (adjustable in Home Assistant)</li>
<li>Possibility to lock the light (from Home Assistant) so it doesn't turn off anymore (ambient light)</li>
</ul>
</div>
</div>
</div>
</div>
<div class="row item">
<div class="titre">Docker Management with Portainer</div>
<p>
Each software is in a Docker container on the server: Portainer is used as a management tool to have an overview of the Dockers without having to use an SSH connection.
</p>
<div class="bgrid s-bgrid cf">
<div class="columns projets-item">
<div class="spacer">
<div class="item-wrap">
<img alt="" src="images/projects/domotique/portainer.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>Portainer</h5>
<p>Container, image, volume management</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row item">
<div class="titre">Samba Access via VPN</div>
<p>
SAMBA server to facilitate file access (limited to the local network)<br>
VPN server (to access the local network + encrypt data)
</p>
<div class="bgrid s-bgrid cf">
<div class="columns projets-item">
<div class="spacer">
<div class=" item-wrap">
<img alt="" src="images/projects/domotique/samba.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>Samba + VPN</h5>
<p>VPN server logs and access to server files (via SAMBA)
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row item">
<div class="titre">Server Protection with Fail2Ban</div>
<p>
Due to the opening of port 22 on the router for SSH, it is necessary to protect it.
A module named "Fail2Ban" allows banning IP addresses that try to connect incorrectly excessively.
</p>
<div class="bgrid s-bgrid cf">
<div class="columns projets-item">
<div class="spacer">
<div class=" item-wrap">
<img alt="" src="images/projects/domotique/fail2ban.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>Fail2Ban logs</h5>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row item">
<div class="titre">Customization with NGINX and DuckDNS</div>
<p>
Use of a free domain name "neptune79.duckdns.org" and NGINX as a reverse proxy to only open the router's port 80 and customize the URLs.
</p>
<div class="bgrid s-bgrid cf">
<div class="columns projets-item">
<div class="spacer">
<div class=" item-wrap">
<img alt="" src="images/projects/domotique/nginx.jpg">
<div class="overlay">
<div class="projets-item-meta">
<h5>NGINX Configuration</h5>
<p>Redirection of:<br><br>
grafana.neptune79.duckdns.org:80<br>to<br>127.0.0.1:3000<br>
<br>
homeassistant.neptune79.duckdns.org:80<br>to<br>127.0.0.1:8123
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- End domotique -->
</section>
<!-- Resume Section End-->
<!-- footer
================================================== -->
<footer>
<div class="row">
<div class="twelve columns">
<ul class="social-links">
<li><a href="https://github.com/jonathan-gatard"><i class="fa fa-github"></i></a></li>
<li><a href="https://www.linkedin.com/in/jonathan-gatard/"><i class="fa fa-linkedin"></i></a></li>
<li><a href="https://twitter.com/gtd_jonathan"><i class="fa fa-twitter"></i></a></li>
</ul>
<ul class="copyright">
<li>© Copyright 2023</li>
<li>Jonathan GATARD</li>
</ul>
</div>
<div id="go-top"><a class="smoothscroll" title="Back to Top" href="#home"><i class="icon-up-open"></i></a>
</div>
</div>
</footer>
<!-- Footer End-->
<!-- Java Script
================================================== -->
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.flexslider.js"></script>
<script type="text/javascript" src="js/init.js"></script>
<script type="text/javascript" src="js/mdb.min.js"></script>
<script type="text/javascript" src="js/waypoints.js"></script>
</body>
</html>