From f0dd880057d4fcb7014ad59bead116bf1b95b7d0 Mon Sep 17 00:00:00 2001
From: Hugo BENTATA <hugo.bentata@imt-atlantique.net>
Date: Tue, 1 Apr 2025 08:29:14 +0200
Subject: [PATCH] Add TTN webhook for data retrieval and forwarding to Sensor
 Community

---
 .DS_Store             | Bin 0 -> 6148 bytes
 GW-V2/ttn_webhook.php |  50 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 50 insertions(+)
 create mode 100644 .DS_Store
 create mode 100644 GW-V2/ttn_webhook.php

diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..8c9fcfe9f81e081ae39aed8de2fe28c88fb4a357
GIT binary patch
literal 6148
zcmZQzU|@7AO)+F(5MW?n;9!8zEL;p&0Z1N%F(jFwA|OddkQtsi`N>H+`AJX%q0*z&
zXb6mkz#t6)P~K%>&|^qv$Ydx%%fF5c3=Dez!2s-fRt86gQic+SB8F5nmFv+|3NSb`
zBr+5*lrW?+lrj`C=rSaNb>=hVG2}DkqU&drMbpp8;LZ@vpv#cVP|8ruPy*6}Y9nJe
znhsW|jxYuzG?hPbt4t~{E`XL-yOIiWGK)(L46ZRUF|)9;v2(C<aC5{4XXKX$mn4>y
z7CR*tMT2-D`T03XFm_^6SY~Q@ynu*veqKppW?pI$NJ(&JN@`MKQA~JdUP^wsQ+{b)
zN-<b3RDy$(gEL-0s=C_H%uq)`*U-SCR!5=Q(8$bKN5R6#xVDy)LsVJcIw(FnCpRy@
z2ORbcjEoSPffq`{s9pvJ1|;8?1sCPz<maV>%6J9_22O?`23H101{Vfj23H0>hFpde
z)bL>fsYH%tn7O0$a1Q}!isIlN?j9ZW-)IPoh5*SS04g68p!J9Ylx~2~ASnh$1_p2!
zfRTZL1!g$79{^DU(h5=o(h8zMS{WEYEU-LSD+41`D<ilY!oa`??vj9LuyzJU2C#Mp
zMh38Ucs0lf(ayjKwV4srkO7$s>d}B`h;{}>h<2FsM(NQI7!3hv2rxrv0Z{$#%D{lD
z{|`|$N{)uWXb23;5MX3+33hP;Rhl@w2dZm9^=SfB9#s2-s$)h_Jq^(ZQUaD`f($51
gfH@F3kXBH&53Y(C86Y+JXhQ%NLZkF(2+%(S0L_4v-T(jq

literal 0
HcmV?d00001

diff --git a/GW-V2/ttn_webhook.php b/GW-V2/ttn_webhook.php
new file mode 100644
index 0000000..8fe6363
--- /dev/null
+++ b/GW-V2/ttn_webhook.php
@@ -0,0 +1,50 @@
+<?php
+// Récupération des données envoyées par TTN
+$json = file_get_contents('php://input');
+$data = json_decode($json);
+
+// Affichage des données reçues pour debug
+echo "Données reçues :\n";
+print_r($data);
+echo "\n";
+
+// Vérification de la structure des données reçues
+if (!isset($data) || !isset($data->analog_in_1) || !isset($data->analog_in_2)) {
+    echo "Erreur : Données invalides. Vérifiez que les champs analog_in_1 et analog_in_2 sont présents.";
+    return;
+}
+
+// Création des données à envoyer vers Sensor Community
+$post = new stdClass();
+$post->sensordatavalues = [
+    (object)[
+        "value_type" => "P1",
+        "value" => $data->analog_in_1
+    ],
+    (object)[
+        "value_type" => "P2",
+        "value" => $data->analog_in_2
+    ]
+];
+
+// Initialisation de la requête cURL
+$ch = curl_init("http://api.sensor.community/v1/push-sensor-data/");
+curl_setopt($ch, CURLOPT_POST, 1);
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+    "X-Sensor: esp32-900881266", // Valeur fixe
+    "X-PIN: 1",
+    "Content-Type: application/json",
+    "User-Agent: ttn-forwarder/1.0"
+));
+curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post));
+
+// Exécution de la requête et gestion des erreurs
+$output = curl_exec($ch);
+if ($output === false) {
+    echo "Erreur cURL : " . curl_error($ch);
+} else {
+    echo "Réponse de Sensor Community : " . $output;
+}
+curl_close($ch);
+?>
-- 
GitLab