J'esseye de recuperer une valeur presente dans domoticz en utilisant un script python, mais cela ne fonctionne pas.
Code : Tout sélectionner
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json
import requests
from requests.auth import HTTPBasicAuth
############# Parametres #################################
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres de Domoticz
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
domoticz_ip='192.168.1.103'
domoticz_port='8080'
user=''
password=''
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres du periphérique
# l'idx Domoticz
# la chaine recherchée (sensible à la casse)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
domoticz_idx='14'
terme_recherche='Data'
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Exemple
#http://192.168.1.82:8080/json.htm?type=devices&rid=44
# renvoie
#{ "5MinuteHistoryDays" : 1, "ActTime" : 1429029448, "AllowWidgetOrdering" : true, "DashboardType" : 0, "Latitude" : "44.495849", "Longitude" : "-0.146575", "MobileType" : 0, "TempScale" : 1.0, "TempSign" : "C", "WindScale" : 1.0, "WindSign" : "m/s", "dontcachehtml" : true, "result" : [ { "BatteryLevel" : 255, "Counter" : "4.826", "CounterToday" : "0", "CustomImage" : 0, "Data" : "0, 4.826", "Favorite" : 0, "HardwareID" : 7, "HardwareName" : "Dummy", "HaveTimeout" : true, "ID" : "1407B", "LastUpdate" : "2015-03-13 15:20:08", "Name" : "Geranium_Lumiere_valeur", "Notifications" : "false", "PlanID" : "0", "Protected" : false, "ShowNotifications" : true, "SignalLevel" : 12, "SubType" : "RFXMeter counter", "SwitchTypeVal" : 3, "Timers" : "false", "Type" : "RFXMeter", "TypeImg" : "counter", "Unit" : 1, "Used" : 1, "XOffset" : "0", "YOffset" : "0", "idx" : "44" } ], "status" : "OK", "title" : "Devices" }
#je vois BatteryLevel : 255
# je veux recuperer la valeur de BatteryLevel
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# la valeur est renvoyée dans la variable nommée val
############### fin des parametres #############################
domoticzurl = 'http://192.168.1.103:8080/json.htm?type=devices&rid='+str(domoticz_idx)
r=requests.get(domoticzurl,auth=HTTPBasicAuth(user,password))
status=r.status_code
print (status)
if status == 200:
# l'API renvoie 200 si tout est OK
domoticzjson=r.json()
for i, v in enumerate(domoticzjson["result"]):
val= domoticzjson["result"][i][terme_recherche]
print (terme_recherche,'= ',val)
Domoticzjason=r.json()
typeError: 'dict' object is not callable
Merci de votre aide
Steph