Page 1 of 1
Получить статус устройства HTTP HAAPI (GET)
Posted: 29 Sep 2016 14:56
by picachu
Коллеги, а подскажите как получить статус бинарного устройства посредством GET запроса.
Посредством API все понятно
Code: Select all
:8083/JS/Run/zway.devices[2].instances[0].commandClasses[37].data.level.value
, тут данные возвращаются, но здесь нужна авторизация.
Включить-выключить проблем нет, команды
Code: Select all
:8083/ZAutomation/api/v1/devices/ZWayVDev_zway_2-0-37/command/on
отрабатываются. А вот получить статус не могу, хотя данные вроде есть.
- 13.png (10.55 KiB) Viewed 8111 times
Команды
Code: Select all
:8083/ZAutomation/api/v1/devices/ZWayVDev_zway_2-0-37/data/metrics/level
и разные производные дают ошибку. Пробовал и
Code: Select all
/data/metrics/level
/data/metrics.level
/data.metrics.level
возвращает ошибку.
Сайт
http://docs.zwayhomeautomation.apiary.io/# говорит, что
switchBinary on, off or update.
То есть статус не получить?
Re: Получить статус устройства HTTP HAAPI (GET)
Posted: 01 Oct 2016 22:34
by PoltoS
Нет прямого пути в API для получения только статуса. Точнее можно через JS: /JS/Run/controller.devices.get("ZWayVDev_zway_2-0-37").get("metrics:level")
Re: Получить статус устройства HTTP HAAPI (GET)
Posted: 05 Oct 2016 14:15
by picachu
PoltoS wrote:Нет прямого пути в API для получения только статуса. Точнее можно через JS: /JS/Run/controller.devices.get("ZWayVDev_zway_2-0-37").get("metrics:level")
PoltoS Можете, пожалуйста, привести пример как запросить статус при помощи JS. Вернее как авторизоваться при помощи JS и сразу запросить статус?
Это возможно сделать одной строкой аналогично cURL?
Code: Select all
if (msg.text=='Квк') then
os.execute('curl 172.16.10.110:8083/ZAutomation/api/v1/devices/ZWayVDev_zway_2-0-37/command/o$
end
Re: Получить статус устройства HTTP HAAPI (GET)
Posted: 05 Oct 2016 14:32
by PoltoS
ну, двумя.
Посмотрите сюда:
http://razberry.z-wave.me/index.php?id=13
How to execute API commands via HTTP API?
Re: Получить статус устройства HTTP HAAPI (GET)
Posted: 05 Oct 2016 17:23
by picachu
Так я сейчас так и авторизуюсь.
Раз в сутки запускается скрипт на обновление куков
Code: Select all
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"form": true, "login": "lua", "password": "LuaPass", "keepme": false, "default_ui": 1}' 172.16.10.100:8083/ZAutomation/api/v1/login -c cookie
А включение / выключение устройства происходит
Code: Select all
curl 172.16.10.100:8083/ZAutomation/api/v1/devices/ZWayVDev_zway_6-0-37/command/on -b cookie
Но это посредством cURL.
Но конструкция
Code: Select all
172.16.10.110:8083/JS/Run/controller.devices.get'("ZWayVDev_zway_2-0-37").get("metrics:level")' -b cookie
не работает. Я это имел ввиду. Как запросить статус при помощи JS одной строкой с авторизацией.
Возвращает
Not logged in
Re: Получить статус устройства HTTP HAAPI (GET)
Posted: 08 Oct 2016 10:22
by PoltoS
Странно. Тогда вместо куки хэдер попробуйте
Re: Получить статус устройства HTTP HAAPI (GET)
Posted: 10 Oct 2016 15:56
by picachu
PoltoS wrote:Странно. Тогда вместо куки хэдер попробуйте
Извиняюсь, оказывается всё работает, накосячил со скобками.
При помощи вот такого скрипта, можно проверить статус бинарного устройства и в зависимости от его статуса, перевести в противоположное положение. Может кому из таких же новичков как я пригодиться.
Code: Select all
#!/bin/bash
Udev=$1 # Считаем ID элемента
if [[ -z "$Udev" ]] # ID элемента пустое.
then
echo "Пустая строка ID элемента."
exit 1 # Выйдем с ошибкой
fi
# Получим статус устройства
Sdev="$(curl 172.16.10.110:8083/JS/Run/controller.devices.get'("'$Udev'").get("metrics:level")' -b cooki)"
# Переключим устройство
if [ "$Sdev" == '"off"' ]
then
curl 172.16.10.110:8083/JS/Run/controller.devices.get'("'$Udev'")'.performCommand'("on")' -b cooki
else
curl 172.16.10.110:8083/JS/Run/controller.devices.get'("'$Udev'")'.performCommand'("off")' -b cooki
fi
exit 0 #
При запуске передаем ID элемента. ./script.sh ZWayVDev_zway_2-0-37