Bonjour,
Il semble que cette fonction ne marche plus :http://127.0.0.1:8080/json.htm?type=com ... s&[u]idx=3[/u]
Le filtre sur le device (ici idx=3) ne filtre pas,
de plus si on ignore ce paramètre pour obtenir toutes les planifications, la donnée TimerCmd ne reflète pas l'état programmé dans l'interface quand le device est off.
Edit : Evidemment, la commande dont je parle et qui me pose problème est bien celle-ci :
/json.htm?type=command¶m=getschedules&idx=3
Problème avec l'API Json avec la nouvelle syntaxe getschedules
Problème avec l'API Json avec la nouvelle syntaxe getschedules
Dernière modification par Keros le 13 févr. 2024, 12:39, modifié 1 fois.
Raison : Zdition du message précédent pour rajouter l'information complémentaire.
Raison : Zdition du message précédent pour rajouter l'information complémentaire.
Re: Problème avec l'API Json avec la nouvelle syntaxe getschedules
Bonjour,petzoom a écrit : 13 févr. 2024, 08:27 la commande dont je parle et qui me pose problème est bien celle-ci :
/json.htm?type=command¶m=getschedules&idx=3
Je ne crois pas que cette commande ait un jour fonctionné avec un idx (ou de manière non documentée?). Je l'ai utilisé dans les 2 versions et c'était toujours sans. D'ailleurs, getschedules est au pluriel sans doute pas sans raison.
Pour ma part, je l'utilise pour invalider temporairement tous les plannings de chauffe quand je me chauffe au bois avec mon insert. S'il y avait eu moyen de filtrer direct sur les idx des switch attachés aux contrôles individualisés de tous mes radiateurs cela m'aurait simplifié l'affaire!
C'est pour ma part un petit script python qui gère cela avec les commandes/paramètres formatés en json. On a ici l'ancienne version (en commentaire) et la nouvelle:
Code : Tout sélectionner
# Domoticz json API url
dmtJurl = 'http://127.0.0.1:8080/json.htm?'
# Command parameters in json format (only change if API change!)
#dmtJsonGetSched = {"type":"schedules"}
dmtJsonGetSched = {"type":"command", "param":"getschedules"}
Vu mon usage, j'utilise aussi cette commande (en modifiant la partie idx avant utilisation, cette commande le supportant avec les idx timer, paramètre enabledisabletimer ici logiquement au singulier):
Code : Tout sélectionner
dmtJsonActTimer = {"type":"command", "param":"enabledisabletimer", "idx":"999"}
Code : Tout sélectionner
def dmtJsonApi(url, jsonApiCmd, logger):
"""
Send Domoticz json command
"""
try:
# Connect to Domoticz via JSON API and send data
dmtRget=requests.get(url, params=jsonApiCmd)
except requests.exceptions.RequestException as dmtErr:
logger.log(logging.ERROR, "Unable to connect with URL=%s \nGet requests error %s" % (dmtRget.url, dmtErr))
finally:
logger.log(logging.DEBUG, "Sent data: [%s]" % (dmtRget.url))
return dmtRget.json()
Code : Tout sélectionner
# Get all schedules
schedules = dmtJsonApi(dmtJurl, dmtJsonGetSched, logger)
Code : Tout sélectionner
# Modify active setting for dev name...
schedNb=len(schedules['result'])
logger.log(logging.DEBUG, "Found %d schedules, extract those for %s" % (schedNb, devName))
# Change schedule(s) for device(s) matching name (wildcard support):
for sched in schedules['result']:
if fnmatch(sched['DevName'], devName):
logger.log(logging.DEBUG, 'Found : %s , state=%s, idx=%d',
sched['DevName'],
sched['Active'],
sched['TimerID'])
curState = ('disabletimer','enabletimer')[sched['Active'] == 'true']
revState = ('enabletimer','disabletimer')[sched['Active'] == 'true']
if curState != SchedActivate:
# Update domoticz request parameters
dmtJsonActTimer['param'] = (SchedActivate, revState)[SchedActivate == 'reverse']
dmtJsonActTimer['idx'] = sched['TimerID']
# Send request...
dmtJsonApi(dmtJurl, dmtJsonActTimer, logger)
http://192.168.XXX.YYY:8080/json.htm?ty ... tschedules