From 9ec55bb365e5ad2ac6718d4236ede298d8ce33df Mon Sep 17 00:00:00 2001
From: CARNEIRO--GILLET Alexandre
 <alexandre.carneiro-gillet@imt-atlantique.net>
Date: Tue, 6 May 2025 08:14:26 +0200
Subject: [PATCH] =?UTF-8?q?int=C3=A9gration=2005/05?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 GW-custom/LoRa_homemade/main.py               | 138 ++++++++++++++++--
 .../{recpt_to_senscom.py => old_main.py}      |  51 ++-----
 GW-custom/LoRa_homemade/pymakr.conf           |   3 +-
 3 files changed, 138 insertions(+), 54 deletions(-)
 rename GW-custom/LoRa_homemade/{recpt_to_senscom.py => old_main.py} (66%)

diff --git a/GW-custom/LoRa_homemade/main.py b/GW-custom/LoRa_homemade/main.py
index 018a4eb..2981f0e 100644
--- a/GW-custom/LoRa_homemade/main.py
+++ b/GW-custom/LoRa_homemade/main.py
@@ -1,11 +1,39 @@
+import json
 import time
 
+import network
+import requests
 from machine import UART, Pin
 
-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
+def wifi_connect():
+    # Configuration du réseau Wi-Fi
+    ssid = "Redmi Note 8 (2021)"
+    password = "lemotdepassecestca"
+
+    # Initialisation de l'interface Wi-Fi
+    wlan = network.WLAN(network.STA_IF)
+    wlan.active(True)
+
+    # Connexion au réseau Wi-Fi
+    if not wlan.isconnected():
+        print("Connexion au réseau...")
+        wlan.connect(ssid, password)
+
+        # Attente de la connexion
+        timeout = 10  # secondes
+        while not wlan.isconnected() and timeout > 0:
+            time.sleep(1)
+            timeout -= 1
+
+    # Vérifie si la connexion est établie
+    if wlan.isconnected():
+        print("Connecté avec succès !")
+        print("Adresse IP :", wlan.ifconfig()[0])
+    else:
+        print("Échec de la connexion.")
+        raise Exception("Impossible de se connecter au réseau Wi-Fi.")
+
 
 def send_at_command(command):
     uart.write(("AT" + command + "\r\n").encode())  # Envoie la commande AT au module LoRa
@@ -22,10 +50,11 @@ def blink_led(times, interval):
         time.sleep(interval)  # Attendre un certain temps
 
 def configure_lora(frequency, sf, bw, TXPR, RXPR, TX_power):
+    
     send_at_command("")
     send_at_command("+MODE=TEST")
     # Configurer le module LoRa avec les paramètres donnés
-    # send_at_command(f"+TEST=RFCFG,{frequency},SF{sf},{bw},{TXPR},{RXPR},{TX_power}")
+    # send_at_command(f"AT+TEST=RFCFG,{frequency},SF{sf},{bw},{TXPR},{RXPR},{TX_power}")
 
 def receive_uart():
     '''Polls the uart until all data is dequeued'''
@@ -35,6 +64,93 @@ def receive_uart():
         time.sleep(0.002)
     return rxData.decode('utf-8')
 
+def send_to_sensor_community_sds011(value1, value2):
+    # Envoi des données pour le SDS011
+    url = "https://api.sensor.community/v1/push-sensor-data/"
+    headers = {
+        "Content-Type": "application/json",
+        "X-Pin": "1",  # 1 = SDS011
+        "X-Sensor": "esp32-900881266"
+    }
+    data = {
+        "software_version": "0.1",
+        "sensordatavalues": [
+            {"value_type": "P1", "value": str(value1)},
+            {"value_type": "P2", "value": str(value2)}
+        ]
+    }
+
+    response = requests.post(url, headers=headers, json=data, timeout=10)
+
+    print(response.status_code)  # 201 = created
+    print(response.text)
+
+def send_to_sensor_community_sht30(temp, humid):
+    # Envoi des données pour le SHT30
+    url = "https://api.sensor.community/v1/push-sensor-data/"
+    headers = {
+        "Content-Type": "application/json",
+        "X-Pin": "7",  # 7 = SHT30
+        "X-Sensor": "esp32-900881266"
+    }
+    data = {
+        "software_version": "0.1",
+        "sensordatavalues": [
+            {"value_type": "temperature", "value": str(temp)},
+            {"value_type": "humidity", "value": str(humid)}
+        ]
+    }
+
+    response = requests.post(url, headers=headers, json=data, timeout=10)
+
+    print(response.status_code)  # 201 = created
+    print(response.text)
+
+
+def send_to_sensor_community(data):
+    pm25 = float(int(data[:4], 16)) / 100
+    pm10 = float(int(data[4:8], 16)) / 100
+    temperature = float(int(data[8:12], 16)) / 100
+    humidity = float(int(data[12:], 16)) / 100
+    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
+
+def try_receive():
+    if uart.any():  # Si des données sont disponibles sur le port série
+        message = receive_uart()  # Lire le message reçu
+        print(f"Message reçu : {message}")
+        data = message.split("\"")[1]
+        print(f"Data : {data}\n")
+        send_to_sensor_community(data)
+        # Clignotement de la LED une fois pour indiquer la réception
+        blink_led(1, 0.2)  # Clignoter la LED une fois
+
+
+wifi_connect()  # Connexion au Wi-Fi
+
+wlan = network.WLAN(network.STA_IF)
+print(wlan.ifconfig())
+
+
+import urequests
+
+try:
+    r = urequests.post("http://httpbin.org/post", json={"test": 123})
+    print("Réponse HTTP:", r.status_code)
+    print(r.text)
+    r.close()
+except Exception as e:
+    print("Erreur:", e)
+
+
+
+
+
+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
 print("\n\nInitialisation du module LoRa-E5...\n")
@@ -42,15 +158,11 @@ configure_lora(868000000, 12, 125, 12, 15, 14)  # Configurer le module LoRa avec
 send_at_command("+TEST=RXLRPKT")  # Commencer la réception des paquets LoRa
 
 led.value(1)  # Rallumer la LED après l'initialisation
-print("Module LoRa-E5 initialisé. En attente de messages...\n")
+print("Module LoRa-E5 initialisé. En attente de messages...")
 
 while True:
-    if uart.any():  # Si des données sont disponibles sur le port série
-        message = receive_uart()  # Lire le message reçu
-        print(f"Message reçu : {message}")
-        data = message.split("\"")[1]
-        print(f"Data : {data}\n")
+    try_receive()  # Essayer de recevoir un message
+    time.sleep(0.1)  # Attendre un peu avant de vérifier à nouveau
+
+
 
-        # Clignotement de la LED une fois pour indiquer la réception
-        blink_led(1, 0.2)  # Clignoter la LED une fois
-    time.sleep(0.01)
diff --git a/GW-custom/LoRa_homemade/recpt_to_senscom.py b/GW-custom/LoRa_homemade/old_main.py
similarity index 66%
rename from GW-custom/LoRa_homemade/recpt_to_senscom.py
rename to GW-custom/LoRa_homemade/old_main.py
index 10d8a0e..018a4eb 100644
--- a/GW-custom/LoRa_homemade/recpt_to_senscom.py
+++ b/GW-custom/LoRa_homemade/old_main.py
@@ -1,7 +1,6 @@
 import time
+
 from machine import UART, Pin
-import json
-import requests
 
 uart = UART(2, baudrate=9600, tx=17, rx=16)
 
@@ -26,7 +25,7 @@ def configure_lora(frequency, sf, bw, TXPR, RXPR, TX_power):
     send_at_command("")
     send_at_command("+MODE=TEST")
     # Configurer le module LoRa avec les paramètres donnés
-    # send_at_command(f"AT+TEST=RFCFG,{frequency},SF{sf},{bw},{TXPR},{RXPR},{TX_power}")
+    # send_at_command(f"+TEST=RFCFG,{frequency},SF{sf},{bw},{TXPR},{RXPR},{TX_power}")
 
 def receive_uart():
     '''Polls the uart until all data is dequeued'''
@@ -36,38 +35,6 @@ def receive_uart():
         time.sleep(0.002)
     return rxData.decode('utf-8')
 
-
-def send_to_sensor_community(value1, value2):
-    # Envoi des données sur sensor community
-    url = "https://api.sensor.community/v1/push-sensor-data/"
-    headers = {
-        "Content-Type": "application/json",
-        "X-Pin": "1", # 1 = SDS011
-        "X-Sensor": "esp32-900881266"
-    }
-    data = {
-        "software_version": "0.1",
-        "sensordatavalues": [
-            {"value_type": "P1", "value": str(value1)},
-            {"value_type": "P2", "value": str(value2)}
-        ]
-    }
-
-    response = requests.post(url, headers=headers, data, timeout=10)
-
-    print(response.status_code)  # 201 = created
-    print(response.text)
-
-def try_receive():
-    if uart.any():  # Si des données sont disponibles sur le port série
-        message = receive_uart()  # Lire le message reçu
-        print(f"Message reçu : {message}")
-        data = message.split("\"")[1]
-        print(f"Data : {data}\n")
-        
-        # Clignotement de la LED une fois pour indiquer la réception
-        blink_led(1, 0.2)  # Clignoter la LED une fois
-
 # Initialisation du module LoRa
 blink_led(3, 0.5)  # Clignoter la LED 3 fois au démarrage
 print("\n\nInitialisation du module LoRa-E5...\n")
@@ -75,11 +42,15 @@ configure_lora(868000000, 12, 125, 12, 15, 14)  # Configurer le module LoRa avec
 send_at_command("+TEST=RXLRPKT")  # Commencer la réception des paquets LoRa
 
 led.value(1)  # Rallumer la LED après l'initialisation
-print("Module LoRa-E5 initialisé. En attente de messages...")
+print("Module LoRa-E5 initialisé. En attente de messages...\n")
 
 while True:
-    try_receive()  # Essayer de recevoir un message
-    time.sleep(0.1)  # Attendre un peu avant de vérifier à nouveau
-
-
+    if uart.any():  # Si des données sont disponibles sur le port série
+        message = receive_uart()  # Lire le message reçu
+        print(f"Message reçu : {message}")
+        data = message.split("\"")[1]
+        print(f"Data : {data}\n")
 
+        # Clignotement de la LED une fois pour indiquer la réception
+        blink_led(1, 0.2)  # Clignoter la LED une fois
+    time.sleep(0.01)
diff --git a/GW-custom/LoRa_homemade/pymakr.conf b/GW-custom/LoRa_homemade/pymakr.conf
index 08e4710..b0479d7 100644
--- a/GW-custom/LoRa_homemade/pymakr.conf
+++ b/GW-custom/LoRa_homemade/pymakr.conf
@@ -17,7 +17,8 @@
         "venv",
         ".python-version",
         ".micropy/",
-        "micropy.json"
+        "micropy.json",
+        "old_main.py"
     ],
     "fast_upload": false
 }
\ No newline at end of file
-- 
GitLab