Форум сайта python.su
переписал пост
Отредактировано ivin (Янв. 28, 2020 15:02:07)
Офлайн
“Status 200” я так понимаю, что это подтверждение прохождения команды, а не статус устройства.
код 200 я получаю, а статус устройства не знаю как…
вся функция выглядит так:
def ifttt_cmd(event): try: res = requests.get('https://maker.ifttt.com/trigger/' + event + '/with/key/' + ifttt_key, params={"value1":"none","value2":"none","value3":"none"}) print (res.status_code) # код 200-команда прошла except requests.exceptions.ConnectionError: print("Command_home > Error: Could not connect to IFTTT") except requests.exceptions.HTTPError: print("Command_home > Error: Received invalid response") except requests.exceptions.Timeout: print("Command_home > Error: Request timed out") except requests.exceptions.TooManyRedirects: print("Command_home > Error: Too many redirects") except requests.exceptions.RequestException as reqe: print("Command_home > Error: {e}".format(e=reqe)) if res.status_code != requests.codes.ok: try: j = res.json() except ValueError: print('Command_home > Error: Could not parse server response. Event not sent') for err in j['errors']: print('Command_home > Error: {}'.format(err['message'])) else: print("Command_home > команда успешно отправлена на IFTTT")
Отредактировано ivin (Янв. 28, 2020 15:12:01)
Офлайн
ivinДа, слово “статус” ещё не говорит о том, что это именно тот статус, который нужен. Программные системы сложнее балалайки намного. И статусов этих может быть штук десять, и все они нужны.
“Status 200” я так понимаю, что это подтверждение прохождения команды, а не статус устройства.
ivinТебе нужно устройство настроить на ответы. Потом нужно изобразить из себя сервис IFTTT и поопрашивать устройство, чтобы убедиться, что оно всё правильно отвечает. Когда оно всё правильно отвечает, нужно подключить к нему сервис IFTTT. Так ты будешь знать, что общение у них идёт правильно и без ошибок. И потом уже ты можешь обращаться к сервису IFTTT на концевую точку с запросами, в телах которых будут команды для устройства. Если же это невозможно - сделать так, чтобы сервис IFTTT брал твои команды из тела запроса, - то надо сделать тогда несколько разных концевых точек - построить интерфейс из концевых точек - и тогда каждая концевая точка станет отдельной командой для устройства с возможностью параметризации этой команды. Поэтому я и говорю, что, возможно, тебе понадобится делать сторонний менеджер, если вдруг в итоге окажется, что в сервисе IFTTT есть такие ограничения. Потому что на стороне ты можешь любой функционал сделать и любые команды из любых мест читать, а в сервисе IFTTT ты ограничен только возможностями этого сервиса.
а статус устройства не знаю как
Офлайн
Ты должен настроить сначала IFTTT, чтобы там была команда status. Потом в IFTTT посылаешь запрос из своего скрипта, обращаясь к этой команде status, и она тебе отвечает ответ в виде JSON-данных.
Офлайн