Site icon Blog ARC Optimizer

Utilisez Power BI pour afficher vos appareils Smartthings


Intro

Il s'agit davantage d'une preuve de concept pour montrer que vous pouvez lire des sources de données personnalisées et peu utilisées dans Power BI. Au fur et à mesure que vous parcourez cette petite vitrine / tutoriel, je vous encourage à réfléchir au type de données qui profiterait si vous pouviez les consulter dans un tableau de bord cohérent.

Cas d'utilisation

J'ai de nombreux appareils IoT dans mon à la maison et utilisent principalement Smartthings pour les gérer. Smartthings ne fournit pas d'interface Web conviviale et s'appuie à la place sur leur application téléphonique. Ce n'est pas un gros problème, mais nous utiliserons cette excuse pour extraire les données dans Power BI.

L'API Smartthings

Smartthings fournit une API REST. Nous allons l'utiliser pour extraire les données dans Power BI. Pour accéder à l'API, vous devrez créer un jeton. Pour ce faire, allez ici: https://account.smartthings.com/tokens

Cliquez sur Generate Token et sélectionnez l'accès aux périphériques de lecture. Notez votre token car vous ne pourrez pas le récupérer plus tard.

Le type d'autorisation est Bearer, nous y reviendrons plus tard. Voici les deux points de terminaison que nous utiliserons:

  • https://api.smartthings.com/v1/devices
  • https://api.smartthings.com/v1/devices/ {deviceId} / status [19659011] Pour en savoir plus, cliquez ici: https://smartthings.developer.samsung.com/docs/api-ref/st-api.html

    Ensembles de données Power BI

    Nous serons concevoir cela de telle manière que nous utiliserons deux ensembles de données. Un pour chaque endpoint.

    Dataset # 1: Device List

    Le premier jeu de données apportera une liste d'appareils dans notre compte smartthings. Ouvrez une nouvelle fenêtre PowerBI et sélectionnez Get Data -> Web .

    Ensuite, sélectionnez Advanced

    Saisissez les informations suivantes:
    URL parts: https: // api.smartthings.com/v1/devices[19659018[19659018Cliquezavecleboutondroitetsélectionnez Dans le tableau.

    Cliquez ensuite sur Liste

    Faites un clic droit sur l'en-tête et sélectionnez Vers le tableau puis cliquez sur Ok

    Développer les colonnes en cliquant sur l'icône dans l'en-tête et en cliquant sur OK

    Vous avez maintenant une liste de tous vos appareils. Cliquez sur Fermer et appliquer

    Itération sur les périphériques

    L'étape précédente jette les bases de la suivante, qui consiste à obtenir le statut de tous les périphériques par programme.

    Créer une nouvelle requête vide à partir de Obtenir des données -> Requête vide

    Dans cette requête, nous écrirons une fonction qui prend l'identifiant de l'appareil comme paramètre. Allez dans l'éditeur avancé et insérez le code suivant (attention à votre jeton d'autorisation).

     (device as text) =>
    laisser
    Source = Json.Document (Web.Contents ("https://api.smartthings.com/v1/devices/" & amp; périphérique & amp; "/ status", [Headers=[Authorization="Bearer ad6fcfdd-a47b-d3ab-9b7e-asdsdsd01b137"]])),
    # "Converted to Table" = Record.ToTable (Source)
    dans
    # "Converti en tableau"
    

    Cliquez sur Done

    Dataset # 2: Device Status

    Créez un nouveau jeu de données dans l'éditeur avancé de façon à ce qu'il fasse référence au premier jeu de données, puis choisissez le deviceId à partir de celui-ci et appelle par la suite la fonction que nous venons de créer.

     let
    Source = appareils,
    newTable = Table.SelectColumns (Source, {"Column1.deviceId"}),
    # "Invoked Custom Function" = Table.AddColumn (newTable, "Device", chaque Query1 (& # 91; Column1.deviceId])),
    # "Expanded Device" = Table.ExpandTableColumn (# "Invoked Custom Function", "Device", {"Name", "Value"}, {"Device.Name", "Device.Value"}),
        # "Expanded Device.Value" = Table.ExpandRecordColumn (# "Expanded Device", "Device.Value", {"main"}, {"Device.Value.main"}),
        # "Expanded Device.Value.main" = Table.ExpandRecordColumn (# "Expanded Device.Value", "Device.Value.main", {"actuator", "sensor", "switch", "configuration", "healthCheck" , "switchLevel", "refresh", "polling"}, {"Device.Value.main.actuator", "Device.Value.main.sensor", "Device.Value.main.switch", "Device.Value. main.configuration "," Device.Value.main.healthCheck "," Device.Value.main.switchLevel "," Device.Value.main.refresh "," Device.Value.main.polling "}),
        # "Expanded Device.Value.main.switch" = Table.ExpandRecordColumn (# "Expanded Device.Value.main", "Device.Value.main.switch", {"switch"}, {"Device.Value.main. switch.switch "}),
        # "Expanded Device.Value.main.switchLevel" = Table.ExpandRecordColumn (# "Expanded Device.Value.main.switch", "Device.Value.main.switchLevel", {"level"}, {"Device.Value. main.switchLevel.level "}),
        # "Expanded Device.Value.main.switchLevel.level" = Table.ExpandRecordColumn (# "Expanded Device.Value.main.switchLevel", "Device.Value.main.switchLevel.level", {"value", "unit" , "timestamp"}, {"Device.Value.main.switchLevel.level.value", "Device.Value.main.switchLevel.level.unit", "Device.Value.main.switchLevel.level.timestamp"}) ,
        # "Expanded Device.Value.main.switch.switch" = Table.ExpandRecordColumn (# "Expanded Device.Value.main.switchLevel.level", "Device.Value.main.switch.switch", {"value", " horodatage "}, {" Device.Value.main.switch.switch.value "," Device.Value.main.switch.switch.timestamp "}),
        # "Renamed Columns" = Table.RenameColumns (# "Expanded Device.Value.main.switch.switch", {{"Device.Value.main.switch.switch.value", "Status"}, {"Device.Value .main.switchLevel.level.timestamp "," Dernière vérification "}})
    dans
        # "Colonnes renommées"
    

    Vous recevrez un message concernant le pare-feu. Vous pouvez désactiver cette option en accédant à Options -> Confidentialité -> Ignorer les paramètres de niveau de confidentialité.

    Cliquez sur Fermer et appliquer

    Vous pouvez désormais utiliser les ensembles de données pour créer votre propre tableau de bord Smartthings. Je l'ai personnellement utilisé pour vérifier l'état et les niveaux de gradation de tous mes smartlights.

    Conclusion

    C'était un projet amusant qui utilise Power BI pour s'intégrer dans une API de repos. Avez-vous d'autres utilisations ou idées? Que diriez-vous de créer une application d'alimentation pour modifier l'état et contrôler les appareils? Vous avez des questions ou des commentaires? Veuillez nous contacter. J'aimerais entendre vos idées.

    À propos de l'auteur

    Roberto est un ingénieur (M.S.) passionné par l'automatisation, les solutions basées sur les données et la technologie en général. Il parle presque toujours de quelque chose de nouveau dans le monde de la technologie et aime en apprendre davantage. Il a également fait des choses assez intéressantes à la fois personnelles et professionnelles.
    Actuellement, il développe des solutions pour toutes sortes de clients chez Perficient, Inc.Sa compétence la plus forte est l'analyse et l'intelligence d'affaires (MicroStrategy, Tableau, PowerBI), mais a de l'expérience dans la conception d'une multitude de solutions et d'intégrations allant du front-end au client. au back-end, transactionnel et côté serveur.
    Avant Perficient, il a travaillé chez MicroStrategy, Inc. où il a aidé à améliorer le produit en guidant son équipe à travers les tests de performance et de fiabilité ainsi qu'en traitant les problèmes croissants des clients. Avant cela, il a travaillé comme ingénieur de projet et développeur Web.

    Plus de cet auteur






Source link
Quitter la version mobile