From 9b38346c118d583f49ddb7309cf3375fb39272b9 Mon Sep 17 00:00:00 2001 From: CARNEIRO--GILLET Alexandre <alexandre.carneiro-gillet@imt-atlantique.net> Date: Tue, 20 May 2025 09:19:48 +0200 Subject: [PATCH] =?UTF-8?q?ajout=20code=20puml=20pour=20sch=C3=A9ma=20+=20?= =?UTF-8?q?modifs=20mineures=20main=20gw=20custom=20+=20ajouts=20biblio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Autre/Pronto3_v2.bib | 362 ++++++++++++++++++++++++++++++++ GW-custom/LoRa_homemade/main.py | 11 +- GW-custom/schema.png | Bin 0 -> 9269 bytes GW-custom/schema.puml | 35 +++ 4 files changed, 404 insertions(+), 4 deletions(-) create mode 100644 Autre/Pronto3_v2.bib create mode 100644 GW-custom/schema.png create mode 100644 GW-custom/schema.puml diff --git a/Autre/Pronto3_v2.bib b/Autre/Pronto3_v2.bib new file mode 100644 index 0000000..d0cac0b --- /dev/null +++ b/Autre/Pronto3_v2.bib @@ -0,0 +1,362 @@ + +@online{noauthor_monter_nodate, + title = {Monter son capteur Sensor Community - {WikiRennes}}, + url = {https://www.wiki-rennes.fr/Monter_son_capteur_Sensor_Community}, + urldate = {2025-03-09}, + file = {Monter son capteur Sensor Community - WikiRennes:C\:\\Users\\Acarn\\Zotero\\storage\\F357MSQR\\Monter_son_capteur_Sensor_Community.html:text/html}, +} + +@online{noauthor_projets_nodate, + title = {Projets de capteurs}, + url = {https://docs.google.com/document/d/1eSX8Qj0tCwyIWlLmYeAOnDefFQXOgTDh5hKrkRq0wnA/edit?usp=drive_web&ouid=101875162182806736197&usp=embed_facebook}, + abstract = {Projets de Capteurs Capteur de température/Humidite : https://www.instructables.com/Temperature-Humidity-Sensor-With-{DHT}11-Sensor-and-/ De fumée : https://www.instructables.com/{ESP}32-Smoke-Detector-Project-With-{MQ}-2-Sensor/ Qualité de l’air : https://www.instructables.com/Air-Quality-{ESP}32-Bui...}, + titleaddon = {Google Docs}, + urldate = {2025-03-09}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\GPLX2S4A\\edit.html:text/html}, +} + +@online{noauthor_capteurs_nodate, + title = {Capteurs Sensor Community - {WikiRennes}}, + url = {https://www.wiki-rennes.fr/Capteurs_Sensor_Community}, + urldate = {2025-03-09}, +} + +@online{noauthor_ttn_nodate, + title = {{TTN} Coverage}, + url = {https://ttnmapper.org/heatmap/}, + urldate = {2025-03-09}, + file = {TTN Coverage:C\:\\Users\\Acarn\\Zotero\\storage\\D2U547N7\\heatmap.html:text/html}, +} + +@online{noauthor_integration_2022, + title = {Intégration {TTN}}, + url = {https://forum.sensor.community/t/integration-ttn/1248}, + abstract = {I am trying to send data from {LoRaWAN} {TTN} to madavi and {SC}. I can do it in Helium. Can Someone send me an example with Screenshots in {TTN}. I don t understand how you do normal {POST} with the webhooks. Or must I Redirect?}, + titleaddon = {Forum Sensor.Community}, + urldate = {2025-03-09}, + date = {2022-02-14}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\6HJAUMLD\\1248.html:text/html}, +} + +@online{noauthor_visual_nodate, + title = {Visual Paradigm Online}, + url = {https://online.visual-paradigm.com/drive/#proj=0&dashboard}, + urldate = {2025-03-09}, + file = {Visual Paradigm Online:C\:\\Users\\Acarn\\Zotero\\storage\\2GKWHWC8\\drive.html:text/html}, +} + +@video{sylvain_montagny_tout_2022, + title = {Tout ce que vous devez savoir sur le {LoRaWAN} en 40 mins}, + url = {https://www.youtube.com/watch?v=j0ONEdkOm28}, + author = {{Sylvain Montagny}}, + urldate = {2025-03-09}, + date = {2022}, +} + +@software{montagny_sylvainmontagnylorae5_2025, + title = {{SylvainMontagny}/{LoRaE}5}, + url = {https://github.com/SylvainMontagny/LoRaE5}, + author = {Montagny, Sylvain}, + urldate = {2025-03-09}, + date = {2025-02-19}, + note = {original-date: 2023-03-22T21:16:48Z}, +} + +@online{noauthor_lora-e5_nodate, + title = {{LoRa}-E5 {\textbar} Téléfab}, + url = {https://telefab.fr/2023/12/06/lora-e5/}, + urldate = {2025-03-09}, + langid = {french}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\847YRPH6\\lora-e5.html:text/html}, +} + +@online{noauthor_communication_nodate, + title = {Communication peer to peer {LoRa}-E5 {\textbar} Arduino Leonardo {\textbar} Téléfab}, + url = {https://telefab.fr/2024/09/26/communication-peer-to-peer-lora-e5-arduino-leonardo/}, + urldate = {2025-03-09}, + langid = {french}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\EX6LREWY\\communication-peer-to-peer-lora-e5-arduino-leonardo.html:text/html}, +} + +@online{noauthor_aller_nodate, + title = {Aller plus loin avec la {LoPy}4 {\textbar} Téléfab}, + url = {https://telefab.fr/2021/10/04/aller-plus-loin-avec-la-lopy4/}, + urldate = {2025-03-09}, + langid = {french}, +} + +@online{noauthor_mini-projet_nodate, + title = {Mini-projet capteur météo et {LoRaWAN} avec la Lopy4 {\textbar} Téléfab}, + url = {https://telefab.fr/2021/10/18/mini-projet-capteur-meteo-et-lorawan-avec-la-lopy4/}, + urldate = {2025-03-09}, + langid = {french}, +} + +@online{noauthor_demarrer_nodate, + title = {Démarrer avec Lopy4 Pycom {\textbar} Téléfab}, + url = {https://telefab.fr/2021/09/27/demarrer-avec-lopy4-pycom/}, + urldate = {2025-03-09}, + langid = {french}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\LMLI75HY\\demarrer-avec-lopy4-pycom.html:text/html}, +} + +@online{noauthor_dht22_nodate, + title = {{DHT}22 {ESP}32 in Arduino Code: Measuring humidity \& temperature}, + url = {https://www.upesy.com/blogs/tutorials/esp32-dht22-am2302-humidity-temperature-sensor-with-arduino-code}, + shorttitle = {{DHT}22 {ESP}32 in Arduino Code}, + abstract = {Mesurez la température et l'humidité de l'air ambiant grâce au capteur {DHT}22, un capteur pratique pour les projets {DIY} avec l’{ESP}32. Découvrez ses caractéristiques et comment l’utiliser avec du code Arduino dans cet article.}, + titleaddon = {{uPesy}}, + urldate = {2025-03-09}, + langid = {english}, + keywords = {esp32}, +} + +@online{noauthor_prise_nodate, + title = {Prise du {NodeMCU} V3 avec Platform {IO} {\textbar} Téléfab}, + url = {https://telefab.fr/2025/03/03/prise-du-nodemcu-v3-avec-platform-io/}, + urldate = {2025-03-09}, + langid = {french}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\SLGD9YUL\\prise-du-nodemcu-v3-avec-platform-io.html:text/html}, +} + +@video{rui_santos_install_2018, + title = {Install the {ESP}32 Board in Arduino {IDE} in less than 1 minute (Windows, Mac {OS} X, and Linux)}, + url = {https://www.youtube.com/watch?v=mBaS3YnqDaU}, + author = {{Rui Santos}}, + urldate = {2025-03-09}, + date = {2018}, + keywords = {esp32}, +} + +@online{noauthor_index_nodate, + title = {Index of /airrohr}, + url = {https://firmware.sensor.community/airrohr/}, + urldate = {2025-03-09}, + file = {Index of /airrohr:C\:\\Users\\Acarn\\Zotero\\storage\\LU97CPSR\\airrohr.html:text/html}, +} + +@online{noauthor_en_nodate, + title = {{EN} Installing firmware}, + url = {https://github.com/opendata-stuttgart/meta/wiki/EN-Installing-firmware}, + abstract = {Opendata Stuttgart organisiert und reguliert. Contribute to opendata-stuttgart/meta development by creating an account on {GitHub}.}, + titleaddon = {{GitHub}}, + urldate = {2025-03-09}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\AUL5KDRM\\EN-Installing-firmware.html:text/html}, +} + +@online{noauthor_prise_nodate-1, + title = {Prise en main {NodeMCU} {ESP}32 {\textbar} Téléfab}, + url = {https://telefab.fr/2023/09/29/prise-en-main-nodemcu-esp32/}, + urldate = {2025-03-09}, + langid = {french}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\V86TYW96\\prise-en-main-nodemcu-esp32.html:text/html}, +} + +@online{noauthor_lora-e5_nodate-1, + title = {{LoRa}-E5 {\textless}{\textgreater} The Things Network {\textless}{\textgreater} {MQTT}}, + url = {https://www.hackster.io/sufiankaki/lora-e5-the-things-network-mqtt-655086}, + abstract = {Monitor and Control your {LoRa}-E5 powered {IoT} devices using any Arduino / {ESP} board using the Things Network! By Sufian Kaki Aslam.}, + titleaddon = {Hackster.io}, + urldate = {2025-03-11}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\H9PRZAYA\\lora-e5-the-things-network-mqtt-655086.html:text/html}, +} + +@online{noauthor_lora_2020, + title = {Lora and the Things Network}, + url = {https://forum.sensor.community/t/lora-and-the-things-network/134/7}, + abstract = {In {HTCC}-{AB}01 we use step-up boost converter.}, + titleaddon = {Forum Sensor.Community}, + urldate = {2025-03-09}, + date = {2020-12-28}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\X7K823KQ\\134.html:text/html}, +} + +@online{noauthor_lorawandustsensor_nodate, + title = {{LoraWanDustSensor} - {RevSpace}}, + url = {https://revspace.nl/LoraWanDustSensor}, + urldate = {2025-03-09}, + file = {LoraWanDustSensor - RevSpace:C\:\\Users\\Acarn\\Zotero\\storage\\XFMR5WDI\\LoraWanDustSensor.html:text/html}, +} + +@software{riva_lemarivaupylorawan_2025, + title = {lemariva/{uPyLoRaWAN}}, + rights = {Apache-2.0}, + url = {https://github.com/lemariva/uPyLoRaWAN}, + abstract = {{ESP}32 using {MicroPython} meets {LoRa} and {LoRaWAN}.}, + author = {Riva, Mauro}, + urldate = {2025-03-31}, + date = {2025-03-16}, + note = {original-date: 2018-09-27T16:47:37Z}, + keywords = {esp32, lora, lorawan, lorawan-application}, +} + +@software{lh70_lh70pylora_2025, + title = {lh70/{PyLoRa}}, + rights = {Apache-2.0}, + url = {https://github.com/lh70/PyLoRa}, + abstract = {A Minimal {LoRa} Library for the {ESP}32}, + author = {lh70}, + urldate = {2025-04-01}, + date = {2025-04-01}, + note = {original-date: 2023-10-10T15:27:31Z}, +} + +@online{aslam_lora-e5_2022, + title = {{LoRa}-E5 communication without {LoRaWAN}}, + url = {https://www.hackster.io/sufiankaki/lora-e5-communication-without-lorawan-9fbddc}, + abstract = {If you quickly want to exchange messages between 2 or more {LoRa}-E5 modules, this project will act as a guide to you! By Sufian Kaki Aslam.}, + titleaddon = {Hackster.io}, + author = {Aslam, Sufian Kaki}, + urldate = {2025-05-06}, + date = {2022-01-04}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\XGGXSC62\\lora-e5-communication-without-lorawan-9fbddc.html:text/html}, +} + +@online{noauthor_en_nodate-1, + title = {{EN} {APIs}}, + url = {https://github.com/opendata-stuttgart/meta/wiki/EN-APIs}, + abstract = {Opendata Stuttgart organisiert und reguliert. Contribute to opendata-stuttgart/meta development by creating an account on {GitHub}.}, + titleaddon = {{GitHub}}, + urldate = {2025-05-06}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\KNIS3I36\\EN-APIs.html:text/html}, +} + +@online{noauthor_unofficial_nodate, + title = {Unofficial sensor.community {API} documentation}, + url = {https://api-sensor-community.bessarabov.com/}, + urldate = {2025-05-06}, + file = {Swagger UI:C\:\\Users\\Acarn\\Zotero\\storage\\MISXUTYK\\api-sensor-community.bessarabov.com.html:text/html}, +} + +@online{semtech_sx1276_nodate, + title = {{SX}1276}, + url = {https://www.semtech.com/products/wireless-rf/lora-connect/sx1276}, + abstract = {The {SX}1276 {LoRa} Connect transceiver features the {LoRa} long range modem that provides ultra-long range spread spectrum communication and high interference immunity.}, + author = {{Semtech}}, + urldate = {2025-03-04}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\ZLLNJWNF\\sx1276.html:text/html}, +} + +@online{gotronic_capteur_nodate, + title = {Capteur de T° et d'humidité {SHT}30 {SEN}0330 - Gotronic}, + url = {https://www.gotronic.fr/art-capteur-de-t-et-d-humidite-sht30-sen0330-32253.htm}, + abstract = {Module \économique de {DFRobot} bas\é sur un capteur Sensirion {SHT}30 autorisant la mesure de la temp\érature ambiante et de l\&\#39;humidit\é relative. Ce capteur communique via le bus I2C avec une carte compatible Arduino\®, micro:bit ou Raspberry Pi. - Gotronic}, + type = {Site de vente}, + author = {{Gotronic}}, + urldate = {2025-03-04}, + langid = {french}, +} + +@article{yong_digital_2016, + title = {Digital universal particle concentration sensor}, + author = {Yong, Zhou and Haoxin, Zheng}, + date = {2016}, + langid = {english}, + file = {PDF:C\:\\Users\\Acarn\\Zotero\\storage\\DP7H79VT\\Yong et Haoxin - 2016 - Digital universal particle concentration sensor.pdf:application/pdf}, +} + +@online{noauthor_esp32_nodate, + title = {{ESP}32 Alimenté par Batterie {\textbar} Protocole Réseau {RadioShuttle}}, + url = {https://www.radioshuttle.de/fr/medias-fr/informations-techniques/esp32-alimente-par-batterie/}, + urldate = {2025-03-04}, + langid = {french}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\CBAWDSFD\\esp32-alimente-par-batterie.html:text/html}, +} + +@online{les_fabriques_du_ponant_categorietutos_nodate, + title = {Catégorie:Les tutos Penn Avel — Les Fabriques du Ponant}, + url = {https://wiki.lesfabriquesduponant.net/index.php?title=Cat%C3%A9gorie:Les_tutos_Penn_Avel}, + abstract = {Que ce soit pour terminer la configuration de votre détecteur chez vous ou bien en maîtriser de A à Z tous les aspects, les "Tutos Penn Avel" sont la ressource qu'il vous faut ! + +Vous êtes sur un wiki, aussi n'hésitez pas à modifier les tutos pour faire des retours d'expérience, expliquer vos difficultés et comment vous avez résolus vos problèmes ! + +Pour échanger vous avez également la liste de discussion : pennavel@ptitdeb.infini.fr}, + titleaddon = {Les tutos Penn Avel}, + type = {Wiki}, + author = {{Les Fabriques du Ponant}}, + urldate = {2025-03-04}, + langid = {french}, + file = {Catégorie\:Les tutos Penn Avel — Les Fabriques du Ponant:C\:\\Users\\Acarn\\Zotero\\storage\\BSLUAJMR\\index.html:text/html}, +} + +@online{bertrik_lorawandustsensor_2023, + title = {{LoraWanDustSensor} — {RevSpace}}, + url = {https://revspace.nl/LoraWanDustSensor}, + abstract = {This is a companion project of Sensor-data-bridge. + +The concept consists of: + +a sensor that measures airborne particulate matter and sends the measurement data using {LoRaWAN} to {TheThingsNetwork} ({TTN}) +a forwarder application that collects the data from {TTN} and forwards it to sensor.community (formerly luftdaten), opensensemap, mycayenne dashboard, etc.}, + titleaddon = {{LoraWanDustSensor}}, + type = {Wiki}, + author = {{bertrik}}, + urldate = {2025-03-04}, + date = {2023-04-08}, + langid = {english}, + file = {LoraWanDustSensor — RevSpace:C\:\\Users\\Acarn\\Zotero\\storage\\VCN2HLFI\\LoraWanDustSensor.html:text/html}, +} + +@online{sensor_community_sensorcommunity_nodate, + title = {Sensor.Community 🌐 Build your own sensor and join the worldwide civic tech network}, + url = {https://sensor.community/en/sensors/airrohr/}, + abstract = {Build your {DIY} sensor and become part of the worldwide, opendata \& civictech network. +With {airRohr} you can measure air pollution yourself.}, + type = {Tutoriel}, + author = {{Sensor Community}}, + urldate = {2025-03-04}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\2UMH7MCZ\\airrohr.html:text/html}, +} + +@online{the_things_network_things_nodate, + title = {The Things Network}, + url = {https://www.thethingsnetwork.org/}, + abstract = {We are building a global open free crowdsourced long range low battery {IoT} data network.}, + titleaddon = {The Things Network}, + author = {{The Things Network}}, + urldate = {2025-03-04}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\UGVU3VNW\\www.thethingsnetwork.org.html:text/html}, +} + +@online{carneiro-gillet_pronto_2025, + title = {Pronto 3 / Capteur autonome Penn Avel · {GitLab}}, + url = {https://gitlab-df.imt-atlantique.fr/pronto-3/capteur-autonome-penn-avel}, + abstract = {Instance de {GitLab} dédiée à l'enseignement}, + titleaddon = {{GitLab}}, + author = {Carneiro-Gillet, Alexandre and Cluzel, Julien and Slaoui, Idriss and Bentata, Hugo and Bouchana, Ahmed Yassine}, + urldate = {2025-05-13}, + date = {2025-05-13}, + langid = {english}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\P2LSGXAF\\capteur-autonome-penn-avel.html:text/html}, +} + +@online{noauthor_nombre_nodate, + title = {Le nombre de décès prématurés dus à la pollution atmosphérique continue de diminuer dans l’{UE}, mais des efforts supplémentaires sont nécessaires pour parvenir à un environnement exempt de substances toxiques}, + url = {https://www.eea.europa.eu/fr/highlights/le-nombre-de-deces-prematures}, + abstract = {La qualité de l’air en Europe ne cesse de s’améliorer et le nombre de personnes qui meurent prématurément ou souffrent de maladies dues à la pollution atmosphérique est en baisse. Toutefois, selon l’analyse de l’Agence européenne pour l’environnement ({AEE}), publiée aujourd’hui, la pollution atmosphérique reste le principal risque sanitaire environnemental en Europe, et des mesures plus ambitieuses sont nécessaires pour respecter les lignes directrices sanitaires de l’Organisation mondiale de la santé ({OMS}).}, + titleaddon = {European Environment Agency}, + type = {Actualités}, + urldate = {2025-05-15}, + langid = {french}, + file = {Snapshot:C\:\\Users\\Acarn\\Zotero\\storage\\MY3MNV4M\\le-nombre-de-deces-prematures.html:text/html}, +} + +@software{noauthor_dfrobotdfrobot_sht3x_2025, + title = {{DFRobot}/{DFRobot}\_SHT3x}, + rights = {{MIT}}, + url = {https://github.com/DFRobot/DFRobot_SHT3x}, + publisher = {{DFRobot}}, + urldate = {2025-05-15}, + date = {2025-01-17}, + note = {original-date: 2019-12-26T05:37:05Z}, +} diff --git a/GW-custom/LoRa_homemade/main.py b/GW-custom/LoRa_homemade/main.py index 9fe0782..4b1307f 100644 --- a/GW-custom/LoRa_homemade/main.py +++ b/GW-custom/LoRa_homemade/main.py @@ -43,10 +43,12 @@ def send_at_command(command): print(response) def blink_led(times, interval): - for _ in range(times): - led.value(1) # Allumer la LED + current_led_value = led.value() # Sauvegarder l'état actuel de la LED + other_led_value = 1 - current_led_value # Inverser l'état de la LED + for i in range(times): + led.value(other_led_value) # Inverser l'état de la LED time.sleep(interval) # Attendre un certain temps - led.value(0) # Eteindre la LED + led.value(current_led_value) # Rétablir l'état de la LED time.sleep(interval) # Attendre un certain temps def configure_lora(): @@ -115,6 +117,7 @@ def send_to_sensor_community(data): print(f"PM2.5: {pm25} µg/m³, PM10: {pm10} µg/m³, Temp: {temperature} °C, Humidity: {humidity} %") send_to_sensor_community_sds011(pm25, pm10) # Envoi des données SDS011 send_to_sensor_community_sht30(temperature, humidity) # Envoi des données SHT30 + print("\n") def try_receive(): if uart.any(): # Si des données sont disponibles sur le port série @@ -135,7 +138,7 @@ uart = UART(2, baudrate=9600, tx=17, rx=16) # Initialisation de la LED intégrée (souvent sur GPIO 2) led = Pin(2, Pin.OUT) # GPIO 2 pour la LED bleue intégrée # Initialisation du module LoRa -blink_led(3, 0.5) # Clignoter la LED 3 fois au démarrage +blink_led(3, 0.25) # Clignoter la LED 3 fois au démarrage print("\n\nInitialisation du module LoRa-E5...\n") configure_lora() # Configurer le module LoRa avec les paramètres souhaités send_at_command("+TEST=RXLRPKT") # Commencer la réception des paquets LoRa diff --git a/GW-custom/schema.png b/GW-custom/schema.png new file mode 100644 index 0000000000000000000000000000000000000000..5cba4509a3f647b8f7e9d7bbf09a8a649b9dfcca GIT binary patch literal 9269 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 L>gTe~DWM4fjUKqC literal 0 HcmV?d00001 diff --git a/GW-custom/schema.puml b/GW-custom/schema.puml new file mode 100644 index 0000000..259c2b5 --- /dev/null +++ b/GW-custom/schema.puml @@ -0,0 +1,35 @@ +@startmindmap + +<style> +mindmapDiagram { + node { + BackgroundColor #00B8DE + Shadowing 0.1 + } + rootNode { + BackgroundColor #99cc99 + LineThickness 2.0 + RoundCorner 2 + Shadowing 3 + } +} +</style> + ++ Gateway Custom +++_ HTTP via Wifi ++++ Sensor Community +--_ LoRaMAC +--- Capteur Autonome + + + + + + + + + + + + +@endmindmap \ No newline at end of file -- GitLab