Files
MSE-PI-E2EEDA-Plein-de-eeee…/report/meetings/260416-midterm/slides.typ

241 lines
6.2 KiB
Typst

#import "/metadata.typ": *
#import "/tail/bibliography.typ": *
#import "/tail/glossary.typ": *
#import "/resources/slides.typ": *
#show:make-glossary
#register-glossary(entry-list)
#let HANDOUT = false
#let NOTES = false
#show: metropolis-theme.with(
aspect-ratio: "16-9",
config-info(
title: title_style(doc.title),
subtitle: [
// #doc.subtitle \
Team Plein de eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
\
Midterm presentation
],
author: enumerating-authors(items: doc.author, multiline: false ),
date: date.mid-term-presentation,
institution: school.name,
),
footer: self => [#self.info.institution],
..get-config(),
config-common(
handout: HANDOUT,
show-notes-on-second-screen: if NOTES {right} else {none}
)
)
#set text(region: "gb")
#show: myglobals
#title-slide()
// 20 min presentation
// 20 min Q&A
= Intro
== Architecture
#figure(
image("../../resources/img/PI-top-level.drawio.png"),
caption: [Top level architecture],
alt: "Thingy52 --BLE secure advertising--> Raspberry Pi --MQTT--> RabittMQ --GO--> InfluxDB | Influx + MeteoSwiss --> LSTM --> Teams notification | InfluxDB --> MatLab --> InfluxDB"
) <fig:top-level-architecture>
---
#figure(
image("../../resources/img/bdd_complete.svg"),
caption: [Top-level architecture, including interfaces between units]
) <fig:top_level_archi_interface>
== Objectives
#import "../../main/specifications/05-objectives.typ": *
#objectives-mo
#objectives-oo
= Work done
== Nodes
#figure(
image("../../resources/img/nodes_class_diagram.svg"),
caption: [Nodes class diagram]
) <fig:nodes_class_diagram>
---
#figure(
image("../../resources/img/nodes_sequence_diagram.svg"),
caption: [Nodes sequence diagram]
) <fig:nodes_sequence_diagram>
== Gateway
- Listening on BLE
- Sending on MQTT
== DB Influx
- Server setup (LXC, Docker, ssh certificates, Traefik, DNS challenge) #emoji.checkmark #pause
- Influx DB 3 #emoji.checkmark #pause
- RabbitMQ #emoji.checkmark #pause
- Gateway MQTT -> DB #emoji.circle.orange #pause
- DB -> REST #emoji.crossmark
== User Interface
- CI/CD
#pause
- Interactive 2D Map
#pause
- Air quality history
== Data usage
=== Open data analysis
Open data analysis (no mechanical ventilation, no window opening):
- Study of the variation in @co2 levels over time in several classrooms in Munich. #cite(<twardella_effect_2012-1>)
- Study of the variation in @co2 level over time for offices and secondary school. #cite(<INRS_Study>)
- Online air quality calculator for classrooms "Simaria" developt by @ofsp:short.
---
=== Time evolution of @co2:short level
#figure(
image("../../resources/img/Time_evolution_CO2_Twardella.png", height: 85%),
caption: [Time evolution of @co2:short level for #cite(<twardella_effect_2012-1>)]
)
---
#grid(
columns: (1fr, 1fr),
[
#figure(
image("../../resources/img/Time_evolution_CO2_INRS_office.png"),
caption: [Time evolution of @co2:short level in an office for #cite(<INRS_Study>)]
)
], [
#figure(
image("../../resources/img/Time_evolution_CO2_INRS_secondaryschool.png"),
caption: [Time evolution of @co2:short level in a secondary school for #cite(<INRS_Study>)]
)
]
)
#grid(
columns: (1fr, 1fr),
[
#figure(
image("../../resources/img/Time_evolution_CO2_INRS_meetingroom.png"),
caption: [Time evolution of @co2:short level in a meeting room for #cite(<INRS_Study>)]
)
],
[
#figure(
image("../../resources/img/Time_evolution_CO2_Simaria.png"),
caption: [Time evolution of @co2:short for Simaria calculator for a same volume and variation of students number]
)
]
)
---
=== Time evolution of @co2:short level - Case study classroom A4 Provence
#grid(
columns: (1fr, 1fr),
[
#figure(
image("../../resources/img/Excerpt case study Provence Simaria.png"),
caption: [Simaria interface: input]
)
],
[
#figure(
image("../../resources/img/Excerpt cas study Provence Simaria _results.png"),
caption: [Simaria interface: results]
)
]
)
- Threshold 1400 ppm reached after 22 min and 2000 ppm after 38 min.
---
=== Calculation of the time taken to reach the threshold of 1400 ppm for each data set
#figure(
image("../../resources/img/Time_reaching_threshold.png"),
caption: [Time reaching threshold of 1400 ppm in function of air volume per person]
)
#grid(
columns: (1fr, 1fr),
[
#figure(
image("../../resources/img/User action.png"),
caption: [User action]
)
],
[
#figure(
image("../../resources/img/User action result.png"),
caption: [Result user action]
)
]
)
== Forecasting
bus factor
#{
set text(size: 2em)
linebreak()
emoji.face.cry
linebreak()
emoji.bus
}
= Demo
= Conclusion
== Objectives adjusted
- Kept:
MO1: The environmental data for the observed rooms are stored in a database with an associated timestamp\
MO2: The stored environmental data can be displayed in a 2D map. The display allows to show both stored and live data.\
MO4: The changes in temperature when airing the room, with regards to outside temperature, are analysed and used for the window opening time recommendations.\
---
- Changed:
MO3: #strike[Using the stored environmental data, alongside external meteorological data, the system send a notification when the windows should be opened or closed.]\
The system sends a notification when the measured CO2 level overreaches the 1400ppm threshold
== Next steps
- Nodes: Implementation and integration with the Gateway
#pause
- Gateway: Integration of nodes. Nice-to-have : encrypted communication with nodes.
#pause
- DB: Communication with MQTT and retrieval API
#pause
- User Interface: API integration and live CO2 level alarm
#pause
- Data usage: Improvement of python program
#pause
- Forecasting: Nice-to-have, shall effort be available
#pause
- All: Documentation and reviews
//-------------------------------------
// Bibliography
//
#pagebreak()
#make_bibliography(bib:bib, title:i18n("bib-title", lang: option.lang))
//-------------------------------------
// Glossary
//
#{
// set text(size: 0.5em)
make_glossary(gloss:gloss, title:i18n("gloss-title"))
}