Mise en œuvre de la technologie Sigfox (Internet des objets). Avril 2016 Thierry Vorms / HB9FXO vormsty@gmail.com
Le problème auquel on voudrait répondre Transmettre de l'information (mesures) sans connexion internet (wifi, GSM) Faible coût Faible infrastructure Fiabilité Browser Device
Technologie radio utilisée pour le réseau Sigfox Bande passante ultra étroite (100 hz) -> Permet de créer un réseau à grande capacité (bcp d'équipements). -> L'équipement mobile consomme très peu d'énergie. -> Très haute sensibilité du récepteur (-147 db). -> Bi directionnel dans certains cas. Bandes ISM: Industrie Scientific and Medical. -> Réservées pour des transmissions autres que communications. -> Pas de licence (sous certaines conditions)
L'offre Sigfox: la seule offre disponible aujourd'hui. Sigfox constitue un réseau de Gateway dont le but est de recevoir les messages radios émis par les mobiles et de les rendre disponibles sur Internet ou de les rediriger sur un autre serveur. La Suisse n'a pas signé d'accord avec Sigfox, mais avec Lora. Lora va exploiter les mêmes bandes radio. Beaucoup de sociétés investissent dans Lora, mais rien n'exisite encore. Internet
Offre Sigfox suite. 140 messages de 12 caractères par jour du mobile en direction des Gateways. 5 messages par jour de Sigfox (gateways) vers un mobile. 14 euros de licence par année. Confidentialité assurée des données par les fondeurs de modems. Très faible consommation d'énergie. Très grande sensibilité des récepteurs. Plusieurs fournisseurs de modems disponibles. Vente aux grands comptes uniquement mais solutions possibles.
Un cas d'école: la pesée des ruches Réalisation complète d'un prototype industriel Visualiser les résultats sous forme de graphiques Alertes par courriels et SMS Faible coûts
Le flux des données Telemsure.net
Description de la solution L'équipement mobile utilise un modem certifié Sigfox. Comme on n'est pas un grand compte, on n'a pas accès au back end Sigfox. Sigfox transmet les données au site Telemesure. Telemesure a un "back end" qui permet de paramétrer un push des données. Les données arrivent sur un serveur linux où elle sont extraites et transmises au site Thingspeak. Thingspeak est un projet open source qui héberge des données dans le but de les présenter sous forme de graphes. 8 nombres flottant par canal peuvent être traités. Les données peuvent être présentées sur un browser mais aussi sous forme d'un client lourd sur Android.
La partie mobile Le modem Sigfox ne vend pas de modem, mais pour exploiter le réseau il faut utiliser du matériel agréé. Plusieurs solutions existent: des cartes pour Arduino, Raspberry, etc. Nous avons choisi comme fournisseur Atim, basé a Grenoble. Atim a développé un modem radio dont le firmware peut satisfaire plusieurs protocoles. Atim est un "grand compte" aux yeux de Sigfox et vend du matériel et des licences Sigfox à l'unité. C'est un nouveau développement pour ATIM. Au début, rien ne fonctionnait
La partie mobile suite La plateforme de développement. Nous avons choisi un Arduino Mega, car la taille du code est trop grande pour un Arduino Uno. Quelques fonctionnalités.. Gestion du modem Horloge temps réel Suivi du fuseau horaire Enregistrement des paramètres de mesures dans la flash Gestion et transmission des erreurs Mise en sommeil du micro contrôleur entre 2 mesures. Mesure de la température extérieure. Mesure de la tension de la batterie Deux (2) entrées logiques pour des extensions futures Encapsulation des données dans un message de 12 caractères Gestion d'une balance à plusieurs capteurs Inhibit des mesures lors des interventions sur la ruche.
Test de transmission Dès que la librairie a été corrigée, il a été possible de transmettre un message "Hello world". La transmission ne semble pas avoir de problème, Sigfox et le fabriquant du modem en garantissant l'intégralité et la confidentialité. Même dans de mauvaises conditions, la transmission est correcte. Quelques tests dans le canton de Genève:
La partie Telemsure.net Visualisation des messages convertis en ASCII sur le site Telemesure.net: Telemesure.net devrait développer son "back end" et proposer des outils d'analyse (conversion ASCII hex, hex to float, etc.)
Telemesure suite, configuration du forward "POST" A chaque réception de données, le script sera appelé. L'identifiant du modem fera partie des données.
Le script PHP sur le serveur Quelques fonctionnalités Lire un fichier qui contient les identifiants de modem, adresse mail, natel pour SMS Log des données dans syslog Identification du modem Décoder les données Sigfox Analyse du status Envoi d'alarmes par mail et SMS, le cas échéant Transmettre les données sur le site Thingspeak
Script PHP suite, décodage du string Sigfox foreach ($_POST as $key => $value ){ // syslog(log_warning, "receive: $key => $value"); if ($key == 'id'){ $modemid = $value; // syslog(log_warning, "modemid: $modemid"); } else { if ($key == 'data'){ $data = $value; // syslog(log_warning, "value: $data"); } $key == 'data' } // $key!= 'Id' } // foreach $data représente le string Sigfox de 12 caractères ASCII. De ce string, on extrait les données et on les encapsules, pour les envoyer à Telemesure.net
Script php: envoi des données vers Thingspeak function sendtothingspeak($fieldsarray, $apikey, $url){ $data = array('api_key' => $apikey, 'field1' => $fieldsarray[0], 'field2' => $fieldsarray[1], 'field3' => $fieldsarray[2], 'field4' => $fieldsarray[3], 'field5' => $fieldsarray[4], 'field6' => $fieldsarray[5], 'field7' => $fieldsarray[6], 'field8' => $fieldsarray[7]); L'apiKey est une donnée qu'il faut récupérer du site Thingspeak. En l'occurrence, c'est la clef en écriture. $options = array('http' => array('header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($data), ), ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); if ($result === FALSE) { syslog(log_warning, "Thingspeak server return an error"); } } // sendtothingspeak
La configuration Thingspeak Cliquer sur "new chanel" pour créer un nouvel espace de données.
Thingspeak suite
Thingspeak: la visualisation Thingspeak offre la possibilité de pouvoir visualiser les courbes directement sur le site. Il est possible d'exporter les données sous forme de fichier Excel ou CSV, mais aussi au format JSON. Tout un API est disponible. Il y a une grande communauté d'utilisateurs. Thingspeak peut être installé sur son propre serveur.
Le résultat sur un browser Zoom Télécharger les points sous forme de fichier Excel ou télécharger une image Sélection de dates Les échelles Pour une mise à jour en continu Cliquer ici Masquer une ou plusieurs courbes Sélection d'une plage précise
Quelques photos...