Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2020 10:19:49

ivin
Зарегистрирован: 2020-01-23
Сообщения: 20
Репутация: +  1  -
Профиль   Отправить e-mail  

вопрос по использованию IFTTТ

переписал пост

Отредактировано ivin (Янв. 28, 2020 15:02:07)

Офлайн

#2 Янв. 28, 2020 15:00:41

ivin
Зарегистрирован: 2020-01-23
Сообщения: 20
Репутация: +  1  -
Профиль   Отправить e-mail  

вопрос по использованию IFTTТ

“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")

впрочем с помощью внешнего костыля Adafruit
https://github.com/adafruit/Adafruit_IO_Python/blob/master/examples/mqtt/mqtt_client_class.py
я пока проблему закрыл, все работает.
но если есть возможность получить сообщение непосредственно в код, было бы лучше

зы. не сразу понял как сюда вставить код..

Отредактировано ivin (Янв. 28, 2020 15:12:01)

Офлайн

#3 Янв. 29, 2020 03:36:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

вопрос по использованию IFTTТ

ivin
“Status 200” я так понимаю, что это подтверждение прохождения команды, а не статус устройства.
Да, слово “статус” ещё не говорит о том, что это именно тот статус, который нужен. Программные системы сложнее балалайки намного. И статусов этих может быть штук десять, и все они нужны.

ivin
а статус устройства не знаю как
Тебе нужно устройство настроить на ответы. Потом нужно изобразить из себя сервис IFTTT и поопрашивать устройство, чтобы убедиться, что оно всё правильно отвечает. Когда оно всё правильно отвечает, нужно подключить к нему сервис IFTTT. Так ты будешь знать, что общение у них идёт правильно и без ошибок. И потом уже ты можешь обращаться к сервису IFTTT на концевую точку с запросами, в телах которых будут команды для устройства. Если же это невозможно - сделать так, чтобы сервис IFTTT брал твои команды из тела запроса, - то надо сделать тогда несколько разных концевых точек - построить интерфейс из концевых точек - и тогда каждая концевая точка станет отдельной командой для устройства с возможностью параметризации этой команды. Поэтому я и говорю, что, возможно, тебе понадобится делать сторонний менеджер, если вдруг в итоге окажется, что в сервисе IFTTT есть такие ограничения. Потому что на стороне ты можешь любой функционал сделать и любые команды из любых мест читать, а в сервисе IFTTT ты ограничен только возможностями этого сервиса.



Офлайн

#4 Фев. 24, 2020 20:16:46

justicek
Зарегистрирован: 2020-02-19
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по использованию IFTTТ

Ты должен настроить сначала IFTTT, чтобы там была команда status. Потом в IFTTT посылаешь запрос из своего скрипта, обращаясь к этой команде status, и она тебе отвечает ответ в виде JSON-данных.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version