Système de captation de mouvement avec Windows 10 et Azure

Cet article fait partie d'une série concernant Windows 10, le Raspberry Pi 2 et l'IoT en général.

Nous avons maintenant un capteur de mouvement qui fonctionne, le top serait de pouvoir exploiter les données qu'il produit.

Pour ça nous allons le relier à un Mobile Service dans Microsoft Azure et nous y enverrons les informations de début et de fin de détection d'un mouvement.
Avec ça, il sera possible de relier par exemple une application mobile qui nous prévient si du mouvement est détecté quand nous ne sommes pas à la maison, ou encore faire un système de calcul du nombre de visites qu'on reçoit dans notre magasin (obtenir le nombre de visiteurs, les heures d'affluences, etc.).

Voici les autres articles de la série :

Pré-requis

Logiciels et matériel

Balancer nos données dans Azure

Le montage

Rien à faire ici, le montage précédent est directement utilisable.

Azure Mobile Service

Pour créer un Mobile Service dans Azure

Il faut d'abord créer un nouveau Mobile Service :

Création d'un Mobile Service Azure

On peut laisser la configuration de base dans notre cas, ça suffira, j'ai juste choisi une région pas trop loin afin d'avoir des temps de latence plus courts :

Création d'un Mobile Service Azure

Maintenant la configuration de la nouvelle base de donnée :

Création de la base de données SQL sur Azure

Vous aurez besoin de ces clés et aussi de l'url du service pour pouvoir vous y connecter :

Les clés d'accès à notre Mobile Service

Enfin, nous allons créer une table (que j'ai nommé SensorsValues, si vous l'appelez autrement, vous devrez aussi changer le nom de la classe que nous verrons par après dans le code) :

Créer une nouvelle table dans notre Mobile Service

Ainsi que les colonnes de cette table : une colonne sensors avec un type String:

Créer une nouvelle colonne dans notre table

et une seconde colonne value avec un type number :

Créer une nouvelle colonne dans notre table

Voilà pour la partie Azure, maintenant passons au code.

Le code

Nous allons garder tout le code écrit précédemment et nous allons ajouter les identifiants de connexion au Mobile Service dans Azure, une petite classe SensorsValues, et de quoi envoyer ces données dans le cloud.

S'identifier

Pour cela il faut aller dans le fichier App.xaml.cs et ajouter ce petit bout de code (sans oublier de remplacer ces données par les vôtres) :

public static MobileServiceClient MobileService = new MobileServiceClient(
    "https://win10-iot-rapsberrypi2.azure-mobile.net/",
    "kKObx***************************QLq24"
);

Une petite classe pour contenir nos données

Rien de bien compliqué ici, elle aura les mêmes données que la table créée dans le Mobile Service :

class SensorsValues
{
    public string id { get; set; }
    public string sensor { get; set; }
    public int value { get; set; }
}

Envoyer tout ça dans le Mobile Service Azure

Et maintenant, il ne reste qu'à envoyer quelques données dans Azure, pour cela nous allons modifier quelque peu notre fonction PirPin_ValueChanged :

private async void PirPin_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs args)
{
    int pirPinStatus = pirPeripheral.GetStatus();
    SensorsValues sensorValue = new SensorsValues() { sensor = "pir "+pirPeripheral.GetPinId(), value = pirPinStatus };

    if (pirPinStatus == 0)
    {
        redLed.ChangeStatus(true);
        greenLed.ChangeStatus(false);
    }
    else
    {
        redLed.ChangeStatus(false);
        greenLed.ChangeStatus(true);
    }

    await App.MobileService.GetTable<SensorsValues>().InsertAsync(sensorValue);
}

Vous devriez maintenant avoir une application qui envoie toutes les données vers l'extérieur :-)

Pour vérifier que tout est bien envoyé, vous pouvez toujours consulter les données reçues directement dans l'interface d'Azure :
Données reçues visibles dans Azure

C'était plutôt simple, non ?

Et après ?

Après, vous pouvez créer une petite page Web qui va aller lister les différents événement et faire des statistiques, ou encore une application sur votre téléphone qui vous préviendra quand quelque chose est détecté.
Voici un exemple de page web qui liste les évents :
Page web de listing des événements

Pour la suite, je vous laisse continuer seul, en espérant que cette petite série d'articles tout simples vous ait donné envie d'essayer un peu l'IoT.

N'hésitez pas à me faire vos retours/suggestions dans les commentaires, c'est là pour ça !