• Klagarge released this 2026-06-04 19:45:20 +00:00 | 14 commits to main since this release

    This is our project submission containing all of our work during this PI E2EEDA
    Reports and self-assessment are all attached to this release as the node built binary.
    Several Docker files are also available:

    Other parts, as the Gateway and the models are directly available on the source code

    A changelog of the main parts is available below:

    Nodes (@adrien-balleyguier)

    [nodes-v1.1.0]

    🚀 Features

    • (nodes) Adding management of read error on each values, hence
    • (nodes) Add the battery level in the ble frame
    • (nodes) Adding battery percent as new key/value in the BLE frame
    • (nodes) Using an explicit thread, as it may cause the huge battery usage
    • (nodes) Setting the fastest BLE advertising frequency to 1 minute instead of 2

    🐛 Bug Fixes

    • (nodes) Changing incorrect comment
    • (nodes) Using MAC address as BT_ADDR
    • (nodes) Reduce battery consumption

    📚 Documentation

    • (nodes) Adding comments in the nodes code

    [nodes-v1.0.0]

    🚀 Features

    • (nodes) WIP supervisor first implementation
    • (nodes) Adding thermometer and hygrometer
    • (nodes) WIP adding first implementation for BLE advertising.
    • (nodes) Adding co2_level retrieval
    • (nodes) Adding window status reading
    • (nodes) Adding nodes firmware v1.0

    🐛 Bug Fixes

    • (nodes) Adjusting broadcasted data to fit definition
    • (nodes) Fixing switch device tree and wrong ordering of ble values
    • (nodes) Properly fetching data from temp/hygro sensor
    • (nodes) Co2 level fetched as desibed in the documentation
    • (nodes) Changing window status sensor to have unequipped nodes return 'window is closed' status

    ⚙️ Miscellaneous Tasks

    • Init

    Gateway (@DjeAvd)

    [gateway-v1.0.0]

    🚀 Features

    • Add BLE-to-MQTT gateway implementation
    • (gateway) Add configuration file
    • (gateway) Implement BLE-to-MQTT gateway
    • (gateway) Add MQTTS support with TLS and authentication
    • (gateway) Add battery level support (key 0x05)
    • (gateway) Add deduplication and continuous BLE scan

    🐛 Bug Fixes

    • (gateway) Fix architecture diagram code block in README
    • (gateway) Fix architecture diagram code block in README
    • (gateway) Fix payload decoding endianness and skip preamble Switch temperature and CO2 decoding from little-endian to big-endian to match the Zephyr firmware implementation. Skip the 2-byte company id preamble (0xffff) at the start of the manufacturer data payload.
    • (gateway) Replace UUID filter with manufacturer data preamble filter
    • (gateway) Replace UUID filter with manufacturer data preamble filter
    • (gateway) Fix BLE filtering and MQTT connection validation
    • (gateway) Use exact payload size filter and improve robustness
    • (gateway) Revert CO2 range check and add MQTT auto-reconnect

    🚜 Refactor

    • (gateway) Switch from GATT connection to passive BLE advertising

    📚 Documentation

    • Add gateway README
    • Add overnight test results and measurements graph
    • Add overnight test results section to README
    • (gateway) Add README with architecture and MQTT interface
    • (gateway) Document MQTT_PASSWORD environment variable in README
    • (gateway) Add deployment checklist, systemd service and update README
    • (gateway) Update README with battery field, security fixes and warnings

    ⚙️ Miscellaneous Tasks

    • Init
    • (gateway) Add Python dependencies file
    • (gateway) Exclude config.json from repo, add example config
    • (gateway) Use placeholder values in config.example.json
    • (gateway) Update config.example.json with TLS and auth fields

    DB (@Klagarge)

    [db-gateway-v1.0.0]

    🚀 Features

    • (db) Add influx in db stack
    • (db) Add traefik config example with actual server
    • (db) Add rabittmq as mqtt stack
    • (db) Add influx gateway from previous project
    • (db) Add mqtt gateway from previous project
    • (db) Merge datapoint and message
    • (db) Add SubscribeTyped function and refactor DataPoint structure
    • (db) Add initial main implementation
    • (db) Add rest gateway
    • (db) Add GET current value endpoint
    • (db) Add GET history endpoint
    • (db) Add mapping
    • (db) Add swagger doc
    • (db) Add parameter for time window in history endpoint
    • (db) Add basic auth
    • (db) Add deploiement stack
    • (db) Add node tag for influx
    • (db) Remove CO2PPM data over 1'000'000'000
    • (db) Add battery field
    • (db) Add battery REST endpoint
    • (db) Get mapping dynamically from file
    • (db) Add endpoint to export influx data to csv
    • (server) Add traefik entry for ui dashboard
    • (db) Add co2 watchdog on each room
    • (db) Add co2-status endpoint in REST API

    🐛 Bug Fixes

    • (db) Add missing entrypoint for influx explorer
    • (db) Add missing hostname for influx access in traefik
    • (db) Wrong mqtt port
    • (db) Typo in certResolver
    • (db) Fail if now defaut user / password for mqtt
    • (db) Allow gRPC proxy in traefik
    • (db) Proper api url instead of using swagger doc url
    • (db) CORS request
    • (db) Url for api start with https
    • (db) Get rooms from mapping file
    • (db) Set time interval for influx limitations
    • (db) Set higher file limit for influx limitations
    • (db) Remove authorization for battery status endpoint
    • (db) Window -> window_open
    • (db) Push data with partial mapping
    • (db) Filter random value
    • (db) Mqtt hostname to keep internal config identique in case of rebuild
    • (db) Add the room in the returned json
    • (db) Return time in RFC3339 to avoid breakchange
    • (db) Return window tag in room status
    • (db) Return only high co2 room for co2-status endpoint
    • (db) Return error directly

    🚜 Refactor

    • (db) Move package
    • (db) Unify env getters
    • (db) Split campus and room mapping error detection
    • (db) Map room and node on REST API
    • (db) Add flag to run without MQTT part
    • (db) Adapt SQL query for 5 min average
    • (db) Round averages in SQL queries
    • (db) Using moving average for room history
    • (db) Change order for history
    • (db) Add constante for max QOS
    • (db) Add constante for defaultTimeout

    📚 Documentation

    • (db) Add deployement documentation
    • (db) Fix typo in doc

    ⚙️ Miscellaneous Tasks

    • Init
    • (db) Typo and respect go guidelines
    • (db) Get InfluxDB token by secrets
    • (db) Update critical dependancy
    • (db) Add pre-commit for swagger documentation
    • (db) Add local gitignore
    • (db) Set 30min before offline for battery endpoint

    UI (@khalil-bot)

    [unreleased]

    🚀 Features

    • (ui) Initialize Angular 18 dashboard project
    • (ui) Create organized folder structure for application
    • (ui) Configure routing with lazy-loaded components
    • (ci) Add Docker build, push and SSH deploy pipeline
    • (ui) Implement interactive room map with REST services and unit tests
    • (ui) Interactive room map, detail panel redesign and polling
    • (ui) Dynamic room polling, secure credentials and CO2 levels

    🐛 Bug Fixes

    • (ui) Add environment.prod.ts for production builds
    • (ui) Address code review feedback
    • (ui) Remove hardcoded credentials and make CO2 spec config-driven

    🚜 Refactor

    • (ui) Simplify room names and remove dead code

    🎨 Styling

    • (ui) Apply Prettier formatting
    • (ui) Apply Prettier formatting

    ⚙️ Miscellaneous Tasks

    • Init
    • (ui) Setup GitHub Actions CI/CD pipeline
    • (ui) Remove commented-out gitignore line for environment.prod.ts
    • (ui) Add plan.svg floor plan asset
    • Remove useless gitkeep file

    Notification (@khalil-bot)

    [unreleased]

    🚀 Features

    • (notification) Spring Boot Teams notification service (#19)
    • (notification) Add mock mode for local testing without backend (#19 #21)
    • (notification-service) Replace Teams with Telegram notifications
    • (notification-service) Add Dockerfile, actuator health and alert deduplication
    • (notification-service) Adapt to Go backend /api/v1/rooms/high-co2 endpoint

    🐛 Bug Fixes

    • (notification) Remove non-existent starter-scheduling dep, target Java 17

    🧪 Testing

    • (notification-service) Add unit tests and clean up Co2Level

    ⚙️ Miscellaneous Tasks

    • (notification-service) Add CI/CD pipeline with Docker, SSH deploy and API credentials
    • (notification-service) Add SAST, dependency scan and DAST security gates
    Downloads