Dans un article récent, je vous ai présenté la carte breakout SigFox de SNOC. La récupération des données transmises se faisait en callback. Ici je vais vous expliquer comment récupérer vos données avec l’API SigFox.

Afficher les données envoyées par un Raspberry Pi avec l’API SigFox
Rappel du fonctionnement en callback
Lorsqu’on utilise le callback, le Raspberry Pi envoie un message à la carte SigFox. La carte transmet les 12 octets maxi) par radio au réseau SigFox. A réception du message le serveur SigFox transfère instantanément chaque paquet de données vers un serveur désigné par l’utilisateur. Il fait un appel à une page web et en lui passant ces informations en GET ou en POST…
C’est ce qu’on appelle un « callback » car le serveur SigFox appelle « en retour » le serveur VPS qu’on lui a désigné ici. Si vous êtes intéressé(e) par cette technique, reportez vous à l’article précédent.
Principe de fonctionnement avec l’API SigFox
Ici le fonctionnement est un peu différent comme nous allons le voir :
- Le Raspberry Pi envoie les données à la carte breakout SigFox qui les transmet par radio à l’antenne SigFox la plus proche. Les différents messages sont envoyés selon la programmation de l’utilisateur (maxi 140 messages par jour soit environ un toutes les 10 minutes). Ils sont stockés sur le serveur SigFox et peuvent être consultés en ligne sur ce serveur :
- A un moment quelconque, un utilisateur souhaite afficher dans son navigateur les données envoyées par le Raspberry Pi. Il se connecte sur la page web du serveur VPS framboise314 (http://vps.goblink.fr/testapi.php). Cette page web PHP contient un appel à l’API SigFox.
- L’appel au serveur SigFox est envoyé, avec les identifiants (login/password) de l’utilisateur.
- Le Serveur Sigfox construit un bloc json (Javascript Object Notation) contenant les messages reçus par le serveur et stockés chez SigFox. Le message est renvoyé vers le VPS framboise314.
- La page web testapi.php reçoit le bloc de données au format json. Le programme PHP décode les informations contenues dans le bloc de données, et les affiche sous forme d’un tableau qui est renvoyé vers le navigateur du poste de l’utilisateur.
Maintenant que nous avons vu le principe d’utilisation de l’API SigFox, je vous propose de détailler sa mise en œuvre.
L’API SigFox
Création d’un compte d’API
Pour utiliser l’API (Application Programming Interface) SigFox, il faut disposer d’un compte. La première opération consiste donc à obtenir les identifiants pour cette API.
Sur votre page SigFox, rendez vous dans l’onglet USER. Votre utilisateur SigFox s’affiche. Cliquez à l’extrémité droite de la ligne sur le groupe (ici François MOCQ EVK).
Vous arrivez sur la page de votre groupe sur laquelle figurent des informations relatives à votre abonnement. Dans le menu apparu dans la colonne gauche de la page, cliquez sur API ACCESS.
Vous arrivez sur la page d’accès à l’API. La première fois cette page est vide. Cliquez en haut à droite sur le bouton New.
Donnez un nom à l’accès API (j’ai choisi… feamboise314
La timezone doit être correcte Déplacez dans la partie droite des fenêtres Custom roles les rôles que vous souhaitez attribuer. Puis cliquez sur le bouton Ok sous la fenêtre.
Votre accès à l’API est créé. Vos identifiants sont affichés. Sauvegardez les précieusement.
Remarquez à la fin de la première ligne un lien vers API documentation. Ça ne fait pas de mal d’aller s’y balader un peu
Maintenant que nous avons les clés pour discuter avec le serveur de SigFox, je vous propose de regarder comment on va s’adresser à lui.
Un premier test
Maintenant qu’on a les identifiants on va essayer de se connecter sur le site de SigFox à cette adresse : https://backend.sigfox.com/api/devices/VOTRE_MODULE/messages
Vous remplacerez VOTRE_MODULE par le numéro de votre propre module SigFox.
Lorsque vous arrivez sur la page une fenêtre s’ouvre et vous devez saisir les login/mot de passe à rallonge que vous avez obtenu auparavant.
En retour vous obtenez les relevés des messages de votre module SigFox.
C’est dans ce format json que vous allez recevoir les informations venant du site SigFox. Heureusement, on dispose des outils nécessaires dans PHP pour traiter ces informations
La page à afficher
Le cahier des charges
Je souhaite afficher les informations contenues dans les messages SigFox sur une page web. Celle-ci contiendra un logo de framboise314 (bin oui ) puis un tableau listera les différents messages qui étaient stockés sur le serveur SigFox.
Je précise que je ne suis pas un développeur web, et que j’ai développé la page web avec mes connaissances en PHP et CSS. On peut (certainement) faire mieux. Vous avez le point de départ, si vous voulez stocker les infos dans une base de données, tracer de jolies courbes… Libre à vous ! Pour ma part je m’arrête là
La page web PHP
Le programme utilise CURL pour accéder au serveur SigFox. Ensuite le bloc json récupéré est « détricoté » et une boucle balaye chaque message et l’affiche dans un tableau.
L’éditeur de WordPress est un garnement qui enlève subrepticement des espaces utilisés pour l’indentation ou remplace en douce des signes comme > par >
Après avoir galéré un moment pour essayer de le dompter, j’ai choisi de vous proposer le programme sous forme d’image. Il suffit de cliquer sur l’image pour télécharger le programme.


Autre conseil de Joël : Utiliser les callbacks pour récupérer les msg, et l’API en backup quand le serveur n’a pas pu tous les récupérer (en cas d’arrêt par ex.)
François, arrange un peu ta cravate…
Pour que la page reçue soit un peu plus jolie j’ai ajouté une pincée de CSS. Vous verrez le lien qui charge style.css en haut de la page PHP. Mettez ce fichier CSS dans le même dossier sur votre page PHP.
table { margin: auto; border-width:1px; border-style:solid; border-color:black; border-collapse:collapse } td { border-width:1px; border-style:solid; border-color:blue; padding: 5px; vertical-align:middle; width:20%; } th { color: grey; background-color: bisque; align: center; } tr:nth-child(odd) /*Toutes les lignes impaires : la 1e, la 3e, la 5e, etc.*/ { background-color: white; } tr:nth-child(even) /*Toutes les lignes paires : la 2e, la 4e, la 6e, etc.*/ { background-color: linen; }
Ce fichier CSS enjolivera un peu le tableau, en le centrant et en ajoutant un peu de couleur.
Envoi d’un message SigFox
Pour les tests j’ai envoyé deux messages à partir de putty sur le Raspberry Pi. On retrouve ces deux messages en haut du tableau (ci dessous).
La page web affichant les messages
Les lignes qui affichent 6 chiffres contiennent :
- La température de la carte SigFox (en dixièmes de degré) sur 3 chiffres
- La température du SoC du Raspberry Pi (en dixièmes de degré) sur 3 chiffres
Exemple : 291515 signifie 29.1 °C pour la carte SigFox et 51.5°C pour le Soc
Les lignes qui contiennent 14 chiffres contiennent :
- La température de la carte SigFox (en dixièmes de degré) sur 3 chiffres
- La température du SoC du Raspberry Pi (en dixièmes de degré) sur 3 chiffres
- La tension d’alimentation de la carte SigFox lors de l’émission (en centième de volt) sur 4 chiffres
- La tension d’alimentation de la carte SigFox lors de l’émission précédente (en centième de volt) sur 4 chiffres
Exemple : 27848332303205 signifie 27.8 °C pour la carte SigFox et 48.3°C pour le Soc. Les tensions d’alimentation sont : 3.23v et 3.205v.
Vous pouvez télécharger le programme qui envoie ces informations toutes les 15 minutes depuis le Raspberry Pi. Il est dérivé du programme de SNOC (sur github) et fourni sans garantie
Une meilleure qualité de liaison
Les plus observateurs d’entre vous auront remarqué que la qualité de liaison est moyenne, sauf sur les deux lignes en haut du tableau (les plus récentes).
Les tests de la carte étaient faits sur un bureau, l’antenne posée à plat, loin d’une fenêtre.
Pour les derniers tests j’ai tout simplement dégagé l’antenne du matériel présent sur le bureau (un sacré bazar
)
Le plus simple était de la fixer avec un morceau de ruban adhésif sur la vitre d’une fenêtre. Ceci assure un meilleur rayonnement des ondes radio et fournit une sérieuse amélioration du SNR (signal-to-noise ratio = rapport signal sur bruit).
On voit que le rapport signal sur bruit a augmenté de plus de 20 dB, ce qui représente (à la louche) une amélioration de… 100 fois !
Conclusion
Après l’utilisation du callback dans le premier article, cette suite vous permettra d’accéder à vos données d’une autre façon, en utilisant l’API SigFox.
L’utilisation qui en est faite ici est basique, avec un affichage dans un tableau. A vous de jouer pour faire de jolis graphiques, afficher des jauges etc… N’hésitez pas à mettre un lien dans les commentaires pour faire admirer vos réalisations (et peut-être donner des idées à d’autres ?).
Sources
Cet article Utiliser l’API de SigFox pour afficher ses données a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....