Article Image
L'objet connecté Sens'it
read

SIGFOX est un opérateur de télécommunication français exploitant un réseau M2M (Machine to Machine) à vocation mondiale et dédié à l'Internet des Objets.

Cette société a eu la courtoisie de me faire parvenir un exemplaire du Sens'it, un objet connecté intégrant plusieurs capteurs (température, mouvement, son) ainsi qu'un bouton poussoir.

Développé par AXIBLE technologies, partenaire de SIGFOX, Sens'it est utilisable sans connaissances informatiques pour, par exemple :

  • effectuer un relevé de température régulier
  • être notifié par SMS ou email à chaque détection de mouvement

Une API REST permet fort heureusement d'étendre le champ des possibles. On verra dans cet article comment l'utiliser pour obtenir en un clic les disponibilités de stations Vélib à proximité de son lieu de travail ou d'habitation :

Le service est dockerisé et déployé sur un Raspberry Pi model B.

Le réseau SIGFOX en bref

J'ai eu l'occasion d'expérimenter dans le cadre de projets IoT plusieurs technologies de connexion à un réseau sans fil dont :

  • le microcontrôleur avec capacités WiFi ESP8266 (Espressif), bon marché mais assez énergivore
  • le transceiver nRF24l01+ (Nordic), très bon marché et très économe en énergie, mais pas trivial à utiliser
  • le dongle 3G Huawei e173, relativement cher et très énergivore

Par rapport à d'autres solutions de connexion à un réseau sans fil, en particuler le réseau GSM, le réseau SIGFOX présente un certain nombre d'avantages comparatifs :

  • une couverture internationale
  • un faible coût d'utilisation (variable en fonction du volume de données échangées et du nombre de devices : de 1 €/an pour les gros projets jusqu'à 10 - 16 €/an)
  • des modules ou transceivers SIGFOX consommant très peu d'énergie et bon marché (compter 15 € le chip)
  • des communications sécurisées

Noter que le réseau impose un certain nombre de contraintes :

  • il s'agit d'un réseau bas débit (jusqu'à 12 bytes par message), ce qui n'est pas contraignant pour un réseau M2M
  • il n'est pas possible d'émettre plus de 140 messages par jour et par device

Note : pour en savoir beaucoup plus sur le sujet, on lira avec profit les articles de Paul Pinault (aka Disk91)

Un peu de hardware

Je n'ai pas résisté à la tentation d'ouvrir le boitier :

A l'intérieur du SensIt

En zoomant, on remarquera en particulier :

  • à gauche : le microcontrôlleur PIC PIC16F1718 de Microchip
  • à droite : le transceiver CC1120 de Texas Instrument opérant sur la bande de fréquence utilisée par SIGFOX (868 MHz en Europe).
    Zoom

Anthonny Quérouil a écrit un billet très complet de présentation et d'utilisation du produit ainsi que de l'API REST.

Un exemple de service avec Sens'it

A titre personnel, je trouve que le bouton poussoir est une des fonctions les plus intéressantes de cet objet.

Etant parisien et utilisateur du service Vélib, je trouve l'application officielle peu pratique pour consulter les disponibilités.
Quoi de plus simple que de cliquer sur un objet connecté et de savoir instantanément combien de vélos sont disponibles dans son quartier ?
Voici une démo de l'application en action :

Le service est développé sur une stack Python (Flask) et utilise la technique du web scraping pour extraire les disponibilités sur le site velib.paris.fr.
A cet effet, j'ai utilisé l'excellente librairie BeautifulSoup.

Les notifications sont acheminées via Pushbullet, dont l'application est disponible sur une multitude de plateformes (iOS, Android, Mac, Windows, Chrome, etc.) :

Notifications Vélib

Le code du service est disponible sur GitHub.

Déploiement du service

Le service est packagé sous la forme d'une image Docker ARM (ksahnine/rpi-sensit-velib), ce qui simplifiera grandement son déploiement.

Il existe plusieurs solutions pour déployer un hôte Docker sur Raspberry Pi (via ArchLinux par exemple).
Personnellement, j'utilise l'image de Hypriot, une distribution allégée de type Debian intégrant Docker 1.6, très rapide à mettre en oeuvre et fonctionnant sur n'importe quel modèle de Raspberry Pi.

  • commencez par flasher l'image sur une carte SD (ex. sous OS X) :
$ diskutil unmountDisk /dev/disk1
$ sudo dd if=hypriot-rpi-20150416-201537.img of=/dev/rdisk1 bs=1m
  • se connecter au Raspberry Pi via ssh (root/hypriot)
  • récupérer le fichier de configuration modèle de l'application :
$ wget https://github.com/ksahnine/sensit-sigfox/raw/master/apps/velib-callback/conf/config.yml
# Pushbullet configuration
pushbullet:
    api: KcY0dyPlqiu0Dp1mrH7RI30AP8O83ZYa

# Address
location: 29 rue d'Astorg, Paris
  • lancer l'application avec un simple docker run :
$ docker run -d -p 5000:5000 -v ~/config.yml:/app/conf/config.yml ksahnine/rpi-sensit-velib
  • se connecter à l'interface d'administration de Sens'It et configurer l'URL de callback du bouton :
    Notification Sens'it
  • double cliquer sur le Sens'it pour recevoir une notification

Remarque : Le docker pull initial est long sur un RPi model B. Néanmoins, la taille de l'image de base utilisée peut être largement optimisée.

Eléments d'architecture

Le schéma ci-dessous décrit l'ensemble de la chaîne de liaison :

Chaîne de liaison

  • le double click du Sens'it donne lieu à l'émission d'un message via le réseau SIGFOX
  • callback des serveurs d'AXIBLE vers le service hébergé sur le Raspberry Pi
  • récupération des données depuis le site velib.paris
  • envoi de la notification via Pushbullet

Quelques remarques

J'ai synthétisé quelques remarques et observations suite à mes expérimentations.

Blog Logo

Kadda SAHNINE


Publié le

Image

Inovia Blog

Excursions technologiques, par Kadda SAHNINE

Accueil