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