Voici un nouvel article concernant l’utilisation de scripts Powershell destinés à Domoticz.
Je souhaite vous présenter ici la récupération de données issues de l’API Domoticz au format JSON.
Vous savez que en interrogeant Domoticz pour un matériel donné (par son idx) , renvoie une série de valeurs spécifiques à ce matériel.
Exemple : »http://192.168.1.81:8080/json.htm?type=devices&rid=126″ me renvoie les caractéristiques du matériel 126 au format JSON tel que ci dessous.
On voit Sunrise, Sunset, puis dans le bloc commençant par result BatteryLevel, Data, idx….
{ "ActTime" : 1453670702, "ServerTime" : "2016-01-24 22:25:02", "Sunrise" : "08:29", "Sunset" : "17:56", "result" : [ { "AddjMulti" : 1.0, "AddjMulti2" : 1.0, "AddjValue" : 0.0, "AddjValue2" : 0.0, "BatteryLevel" : 255, "CustomImage" : 0, "Data" : "8.63%", "Description" : "", "Favorite" : 1, "HardwareID" : 12, "HardwareName" : "Motherboard", "HardwareType" : "Motherboard sensors", "HardwareTypeVal" : 23, "HaveTimeout" : false, "ID" : "0000044C", "Image" : "Computer", "LastUpdate" : "2016-01-24 22:24:32", "Name" : "Memory Usage", "Notifications" : "false", "PlanID" : "0", "PlanIDs" : [ 0 ], "Protected" : false, "ShowNotifications" : true, "SignalLevel" : "-", "SubType" : "Percentage", "Timers" : "false", "Type" : "General", "TypeImg" : "hardware", "Unit" : 1, "Used" : 1, "XOffset" : "0", "YOffset" : "0", "idx" : "126" } ], "status" : "OK", "title" : "Devices" }
Ce que nous allons voir ici est la récupération via powershell de ces valeurs dans des variables.
Je veux donc récupérer Sunrise, BatteryLevel , Data et idx dans 4 variables.
Le script powershell
# indiquer ici l'url à interroger $url="http://192.168.1.81:8080/json.htm?type=devices&rid=126" $json=Invoke-WebRequest $url #------------- # affiche les val json brutes #decommentez la ligne ci-dessous pour voir les données recues de Domoticz #Write-Host $json #------------- #------------- # Mettre les donnés dans $info_json, l'objet $json est converti $infos_json = ConvertFrom-Json -InputObject $json #recuperation depuis $infos_json avec les libelles du JSON Domoticz $Val_Sunrise=$infos_json.Sunrise $Val_idx=$infos_json.result.idx $Val_Batterie= $infos_json.result.BatteryLevel $Val_Data= $infos_json.result.Data Write-host $Val_Sunrise,$Val_idx,$Val_Batterie,$Val_Data
Une fois récupéré notre objet JSON dans $infos_json on va juste chercher la valeur souhaitée par appel de $infos_json.libelle_de_la _clé_JSON
Attention il faut absolument respecter la casse et l’orthographe des libelles renvoyés par Domoticz.
$infos_json.Sunrise $infos_json.result.idx $infos_json.result.BatteryLevel $infos_json.result.Data
Remarquez que on va chercher idx, Data et BatteryLevel dans result.xxxx contrairement au champ Sunrise car ces 3 champs sont dans le pavé nommé result dans le JSON renvoyé par Domoticz.