- J’ai bien galéré pour comprendre le fonctionnement d’envoi de « data » vers un objet, du coup je partage en espérant que cela vous fera gagner du temps.
Je vous résume de manière imagée, ça fonctionne comme la poste.
- Vous commandez.
- Le facteur vous met le paquet dans la boite aux lettres.
- Pour le récupérer il faut aller voir dans la boite aux lettres.
Quand on fait un « download » depuis ttn vers un objet, le data est mis en attente sur ttn.
Pour le recevoir il faut envoyer un message et derrière on reçoit bien le « data » envoyé.
Documentation: https://www.thethingsnetwork.org/docs/applications/http/
Vidéo: https://www.youtube.com/watch?v=Uebcq7xmI1M&index=2&list=PLM8eOeiKY7JVwrBYRHxsf9p0VM_dVapXl
Choisissez bien la « Class A/B/C » de votre objet: https://fr.wikipedia.org/wiki/LoRaWAN#Le_protocole_LoRaWAN
- Exemple d’envoi depuis ttn.
Rendez-vous sur http://requestbin.net
Cliquez sur « Create a RequestBin »
Copiez le premier lien http://requestbin.net/r/******* on va en avoir besoin plus loin.
Allez dans la console de ttn: https://console.thethingsnetwork.org/applications ==> Votre Objet ==> Intégrations
Cliquez sur « add integration »
Puis ajoutez un « HTTP Integration »
Remplissez les champs demandés (notamment le champ « URL » dans le quel il faut coller l’URL récupéré sur http://requestbin.net)
Détail en vidéo par « The Things Network » https://www.youtube.com/watch?v=Uebcq7xmI1M&index=2&list=PLM8eOeiKY7JVwrBYRHxsf9p0VM_dVapXl
On va envoyer un « 00 11 22 » par ttn ==> https://console.thethingsnetwork.org/applications/
==> Votre Objet ==> devices ==>
Scrollez un peu sur la page pour aller dans « Downlink »Cliquez sur le bouton « Send »
Puis rendez-vous sur « data », la vous allez voir le message en attente.
Pour le réceptionner envoyez un message court depuis votre objet,
et en retour vous récupèrerez le « data » envoyé. 🙂
- Exemple avec « Curl »
Nous allons voir maintenant comment envoyer un message depuis l’extérieur vers un objet avec « Curl ».
Nous allons avoir besoins des références de notre objet:
Device_ID: aaa
process_id: bbb
Application ID: ccc
Access Keys: ttn-account-v2.*************************
la ligne de commande pour « Curl » est donc (remplacez par vos identifiants aaa,bbb,ccc,ttn-account):
1 2 |
curl -X POST --data '{"dev_id":"aaa", "payload_raw":"ZnJhZmE="}' \ https://integrations.thethingsnetwork.org/ttn-eu/api/v2/down/ccc/bbb?key=ttn-account-v2.************************* |
Collez dans un terminal la commande « Curl »
Rendez-vous dans https://console.thethingsnetwork.org/applications/(Application ID)/data
Votre message est bien en attente sur ttn.
Pour le réceptionner envoyez un message court depuis votre objet,
et en retour vous récupèrerez le « data » envoyé. 🙂
- Un dernier exemple, nous allons envoyer un message depuis une page internet vers un objet.
La page « .html » va envoyer le « data » vers une page « PHP » qui execuera « Curl » pour envoyer notre message qui sera mis en attente sur ttn.
- La page .html
- La page « .php »
- Code des pages html & php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<html lang="fr"> <head> <meta charset="utf-8" /> </head> <body> <h2><a href="https://www.thethingsnetwork.org/docs/applications/http/"><b>Download ttn</b></a></h2> <form target="_top" method="get" action="send-curl.php"> <label for="fname">dev_id:</label> <input type="text" id="dev_id" name="dev_id" value="002" readonly><br><br> <label for="fname">payload_raw encodé en base64() :</label> <input type="text" id="payload_raw" name="payload_raw" value="Qm9uam91ciBsZSBNb25kZSE="><br> <br> <input type="submit" value="Envoyer"> </form> <a href="https://www.base64encode.org/"><b>base64encode</b></a><br> <a href="https://www.rapidtables.com/convert/number/hex-to-ascii.html"><b>hex-to-ascii</b></a><br> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php setlocale(LC_CTYPE, 'fr_FR.UTF-8'); echo '<h2><a href="https://www.thethingsnetwork.org/docs/applications/http/"><b>Download ttn</b></a></h2><br />'; $dev_id = $_GET [ 'dev_id' ]; $payload_raw = $_GET [ 'payload_raw' ]; echo '<p><b>dev_id: </b>', $dev_id, '</p>'; echo '<p><b>payload_raw: </b>', $payload_raw, '</p>'; echo iconv('UTF-8', 'ISO-8859-15', '<p><b>payload_raw (décodé): </b>'), base64_decode($payload_raw), '</p>'; $url = "https://integrations.thethingsnetwork.org/ttn-eu/api/v2/down/***/***?key=ttn-account-v2.************************"; $data = array(); $data["dev_id"] = $dev_id; // Votre objet. $data["payload_raw"] = $payload_raw; // Data à envoyer encodé en base64. https://www.base64encode.org/ $data_json = json_encode($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); ?> |
Pour le réceptionner envoyez un message court depuis votre objet,
et en retour vous récupèrerez le « data » envoyé. 🙂
- Pages utiles:
https://www.thethingsnetwork.org/docs/applications/http/
https://www.youtube.com/watch?v=Uebcq7xmI1M&index=2&list=PLM8eOeiKY7JVwrBYRHxsf9p0VM_dVapXl - https://www.rapidtables.com/convert/number/hex-to-ascii.html
https://www.rapidtables.com/convert/number/ascii-to-hex.html
https://www.rapidtables.com/web/tools/base64-decode.html
https://www.rapidtables.com/web/tools/base64-encode.html