Traiter les données Json des IOT facilement avec Kalipso Studio

Un IoT est un objet autonome qui peut se déplacer et qui émet quelques signaux (digital : des mesures et alertes) sur un réseau terrien basse fréquence récupérés et stockés sur des serveurs. SIGFOX est un de ces fournisseurs de réseaux, il couvre bien plus que l’Europe.

Les traitements de l’IOT et de JSON paraissent à priori compliqués : avec le générateur KALIPSO STUDIO, c’est simple ! On va vous montrer comment. En pièce jointe, une application de test va lire les données sur le réseau SIGFOX d’un de nos objets connectés

Rappels de base sur l’IOT - Internet des Objets :

Présentation de l’IOT
L’IOT est un objet qui émet un signal court sur une adresse IP, incluant des informations de capteurs. Il est possible aussi qu’il exécute des commandes reçues.
Chaque fournisseur d’IOT sa propre façon d’envoyer ses informations, mais toujours par un format nommé "JSON". Des IOT internes comme pour l’industrie sont relayés par câbles ou ondes via des concentrateurs spécifiques qui donnent un accès IP.
Des IOT a large portée géographique émettent (en grandes ondes) et les messages sont relayées par des opérateurs terrestres comme SIGFOX et LORA, ces derniers procurant les accès par HTTP aux contenus des messages de chaque objet.

Exemple de format de message JSON
Voici le résultat d’une requête HTTP (en "GET") de 3 jeux d’informations sur un objet donné qui possède les capteurs pour envoyer ces valeurs ; les informations données par cet objet sont principalement classées :
- son nom commun : Name,
- son identifiant : DeviceID,
- la dernière fois que son signal a été reçu : LastSeen,
- son niveau de batterie : Battery,
- des valeurs géographiques comme son altitude, vitesse, cap (direction), longitude, latitude (si pas à l’intérieur d’un bâtiment) ,
- des types d’événements analysés par le firmware de l’objet, ou autre capteurs, interrupteurs, détecteurs,
- des valeurs comme la température, pression atmosphérique,
- des niveaux et adresse de tour de captage de signal : rssi, Tower
- le message brut
- le N° de séquence du message pour identifier les manquants,
etc...

{"device_id":{"$oid":"582998fc6d79612934000233"},"Latitude":45.5895767211914, "Longitude":5.29650688171387,"Name":"1ere","Owner": "No owner","DeviceID":"73709","UnixStamp":"1488517759", "LastSeen":"2017-03-03T05:09:19.000Z","Battery":18.0, "Cap":0.0,"Altitude":0.0,"Speed":0.0,"Sat":0,type_event":"No motion","temp":16.5,"press":984.0,"seq_number":889, "extra":null,"rssi":-133.0,"tower":"0753","raw_message ":"000084410000764494000000", "lat_tower":45.59115612608,"lon_tower ":5.30742166001188}

C’est illisible pour un humain, mais une fois bien classé suivant les règles, ou dans un tableau, par nos systèmes mobiles, c’est clair.

Usage de KALIPSO Studio pour traiter les messages JSON : programme de démonstration

Graphique niveau d'un capteur d'un IOT
Sans refaire ici un cours sur les règles de JSON qui classe les informations en cascade, basiquement on a demandé ici :
- un objet (entre crochets "[]"),
- de 3 enregistrements : chaque enregistrement est entre accolades "{}" et est séparé par une virgule, chaque enregistrement peut contenir des objets,
- chaque enregistrement est un "tableau" de couple "tag":valeur séparés par des virgules, un tag pouvant contenir aussi un enregistrement.

Par des commandes appropriées et simples d’emploi, KALIPSO STUDIO permet d’isoler les valeurs intéressantes et de les placer en tableaux ou graphiques, en base embarquée sur le terminal mobile.

Ici nous avons fait un programme de démonstration sur Android qui fonctionne sur les messages émis d’un objet "vivant" tous les jours et qui va capter des données réelles et en montre pas à pas le traitement pour en sortir dans la première partie de ce cas la date et heure de la dernière fois que l’objet a été "vu" ou a émis et en deuxième partie un graphique de la capacité de la batterie embarquée.

L’extraction de la date se fait en 5 lignes de programme :
- Http Request (Run Locally ; 0 ; VAR(reponse_iot_messages) ; TVAR(1) ; TVAR(2) ; TVAR(3) ; VAR(add_messages_iot) ; "devices/73709/positions.json ?key=xxxx&num=1&type_event=all" ; 80 ; utf-8 ; "" ; "" ; Get ; Yes ; Yes ; "" ; "")
- JSON Get Array Item (VAR(reponse_iot_messages) ; 1 ; TVAR(jeudedonnees) ;TVAR(jsontargettype))
- JSON Get Value (TVAR(jeudedonnees) ; "LastSeen" ; Yes ; TVAR(LastSeen) ; TVAR(jsontargettype))
- Set Value (CTRL(DH_derniermessage) ; String ; ExtractString(TVAR(LastSeen), 1, "."))

Exemple : programme de démonstration : application mobile de lecture d’un objet connecté

Application de demo de traitement des messages IOT avec Kalipso Studio
Analyse JSON et graphiques issus de données IOT

Ce programme de démonstration pour Andoid effectue une lecture de données sur l’Internet d’un de nos IOT en vie, en ressors un champ (date et heure du dernier message) dans un premier cas, et ensuite analyse 10 valeurs de niveau de batterie et les affiche en graphiques.
Le principe est le même avec une routine qui tourne 10 fois avec un While (2 lignes de plus) et un affichage des données en base locale (1 ligne).

Application d’affichage de résultats d’IOT
Sources sous Kalipso d’accès à des résultats de capteurs IOT sous Sigfox

Ici une apk exécutable de test et le code source de l’appli à adapter sous Développez Android et multiplateformes sans codage avec KALIPSO STUDIO . Nous pouvons aussi vous réaliser votre application sur mesure avec des IoT : DÉVELOPPEMENT smartphone sur mesure au prix d’une location

On peut afficher de même les coordonnées géographiques et le trajet de l’objet sur une carte, en temps quasi-réel (1 messages toutes les 10 minutes)

Un conseil , une question ? Contactez nous !