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
13.png (10.55 KiB) Viewed 8101 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
PoltoS wrote:ну, двумя.

Посмотрите сюда: http://razberry.z-wave.me/index.php?id=13
How to execute API commands via HTTP API?
Так я сейчас так и авторизуюсь.
Раз в сутки запускается скрипт на обновление куков

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