Получить статус устройства HTTP HAAPI (GET)

Данный раздел предназначен для русскоязычных пользователей. Если вы владеете английским, рекомендуем также просмотреть общую ветку обсуждений на английском.
Post Reply
User avatar
picachu
Posts: 68
Joined: 02 Mar 2016 10:44

Получить статус устройства HTTP HAAPI (GET)

Post by picachu » 29 Sep 2016 14:56

Коллеги, а подскажите как получить статус бинарного устройства посредством 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 2898 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.
То есть статус не получить?

User avatar
PoltoS
Posts: 4224
Joined: 26 Jan 2011 19:36

Re: Получить статус устройства HTTP HAAPI (GET)

Post by PoltoS » 01 Oct 2016 22:34

Нет прямого пути в API для получения только статуса. Точнее можно через JS: /JS/Run/controller.devices.get("ZWayVDev_zway_2-0-37").get("metrics:level")

User avatar
picachu
Posts: 68
Joined: 02 Mar 2016 10:44

Re: Получить статус устройства HTTP HAAPI (GET)

Post by picachu » 05 Oct 2016 14:15

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

User avatar
PoltoS
Posts: 4224
Joined: 26 Jan 2011 19:36

Re: Получить статус устройства HTTP HAAPI (GET)

Post by PoltoS » 05 Oct 2016 14:32

ну, двумя.

Посмотрите сюда: http://razberry.z-wave.me/index.php?id=13
How to execute API commands via HTTP API?

User avatar
picachu
Posts: 68
Joined: 02 Mar 2016 10:44

Re: Получить статус устройства HTTP HAAPI (GET)

Post by picachu » 05 Oct 2016 17:23

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

User avatar
PoltoS
Posts: 4224
Joined: 26 Jan 2011 19:36

Re: Получить статус устройства HTTP HAAPI (GET)

Post by PoltoS » 08 Oct 2016 10:22

Странно. Тогда вместо куки хэдер попробуйте

User avatar
picachu
Posts: 68
Joined: 02 Mar 2016 10:44

Re: Получить статус устройства HTTP HAAPI (GET)

Post by picachu » 10 Oct 2016 15:56

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

Post Reply