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.