Модуль работы с Z-Wave устройствами

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение Bagir » Вт сен 30, 2014 5:30 pm

Как итог:
Если других вариантов нет, то можно сделать так:
В настройке Z устройств, где линкуем свойства, нового класса scene controller добавляем к уже имещемуся
http://localhost:8083/ZWaveAPI/Run/devi ... cene.value
еще свойство
http://localhost:8083/ZWaveAPI/Run/devi ... updateTime
А по отлову echo serialize($v); возможно по слову "currentScene" заводим в МД некое событие.
А у же сами потом в своем коде, при наступлении этого события, проверяем все свои объекты пультов и выключателей, и сравниваем updateTime. Где нашли разницу, значит то и было нажато. А что нажато (какая кнопка и как именно) смотрим по value.
Остается придумать, как завести в МД событие появления "currentScene"
Конечно решение не очень, но работать будет.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение Bagir » Вт сен 30, 2014 8:53 pm

Временное решение:
В файле zwave.class.php в function pollUpdates() после строчки echo "Unknown device (".$m[0].")\n"; вставляем строку

Код: Выделить всё

if ( strpos(serialize($v), 'currentScene') && $instance_id == 0 ) { runScript('switchRemoteAction'); } 
Идея в вызове скрипта switchRemoteAction если в данных неизвестного устройства есть слово "currentScene", и экземпляр.0 (чтобы избежать части повторных запусков). На счет первой части условия, наверное можно написать как то более интересно. Я догадался пока что так: сериализируем переменную $v и ищем в ней вхождение строки "currentScene". Если оно есть, то условие выполняется. Наверное проще обратиться сразу к нужному элементу, но, если честно, я пока толком даже не полян, что такое $v.
В скрипте switchRemoteAction перебираем все наши пульты и выключатели, и смотрим их свойства времени изменения и код действия с кнопками. Сверяем с объектами МД и если тут что то новое, присваиваем значения и запускаем нужный нам метод.

Код: Выделить всё

 $cmdUrl = 'http://localhost:8083/ZWaveAPI/Run/devices[28].instances[0].commandClasses[43].data.currentScene.updateTime';
 $ans = getURL($cmdUrl, 0);
 
 $cmdUrl = 'http://localhost:8083/ZWaveAPI/Run/devices[28].instances[0].commandClasses[43].data.currentScene.value';
 $ans =  getURL($cmdUrl, 0); 
Полный код скрипта я выложу тут чуть позже.
Возможно не стоит больше ломать копья. А можно просто подождать выхода новой версии ПО z-wave. Если там будет возможность задавать свои GET запросы по разного рода событиям, то изменения в МД будут очень простые. Так что я сегодня прикручиваю пульт и выключатель в тестовом режиме. Посмотрим как он себя покажет. Планов на них много.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль работы с Z-Wave устройствами

Сообщение sergejey » Ср окт 01, 2014 2:11 pm

Я обновил модуль, так что теперь после сканирования сети в списке устройств появляется с десяток экземпляров контроллера сети (не знаю зачем их столько, но добавляются все, что есть). Каждый из этих экземпляров содержит свойство CurrentScene, которое (по идее) должно обновляться при нажатии кнопки на пульте, так что к нему можно привязаться без изменения кода самого модуля. Так же я добавил к каждому устройству свойство updateTime -- это время (в формате Unix timestamp), когда устройство обновлялось в последний раз.
За это сообщение автора sergejey поблагодарил:
Bagir (Ср окт 01, 2014 2:19 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение Bagir » Ср окт 01, 2014 2:28 pm

Скоро вернусь домой, и сразу посмотрю! Про количество экземпляров я тоже ничего сказать не могу. Есть наблюдение, что при нажатии на кнопку пульта или выключателя, сразу проскакивает запись с экземпляром контроллера 0, а потом с цифрой соответствующей номеру кнопки. Так что у меня были только 0, 1-4. Но есть же еще пульты, у которых куча кнопок. Может такое обилие экземпляров для них.
И еще как вариант, может быть связано с действием над кнопкой. Хотя за это отвечает свойство value. Нажатие, двойное нажатие, долгое нажатие + отпускание после него. * все это на 4 кнопки = будет тоже много. Но это врятли. Разберемся, а если нет, спрошу в сапорте, обычно отвечают на все вопросы.
updateTime это отлично! в кнопках пульта без него вообще не отловить повторное нажатие той же кнопки. Да может пригодится и в других датчиках.
Вечерком отпишусь!
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение Bagir » Ср окт 01, 2014 11:24 pm

updateTime не хочет обновляться вообще ни у кого. Так и висит одинаковое число, даже после сканирования сети.
CurrentScene обновляется при нажатии кнопки, но так же обновляется и при любом другом событии в Z сети. Так что в таком варианте оно бесполезно.
А вообще я вижу тупик. Конечно если починить у всех updateTime, и заставить CurrentScene контроллера обновляться только при нажатии кнопок пультов и выключателей, то было бы можно по CurrentScene видеть, что за действие было с кнопкой, а по updateTime находить какой это был выключатель. Но тут тоже есть грабли, я не думаю, что даже после починка updateTime не будет обновляться у объектов выключателей. Они ведут себя не так как другие датчики. Так что есть опасения, что их updateTime все равно не будет обновляться при нажатии кнопок. И еще грабли. Например updateTime обновится при обновлении свойства заряда батареи. А мы по обновлению CurrentScene, светим значение updateTime, и посчитаем это за нажатие кнопки.
Ну и еще до кучи. updateTime у каждого свойства свой. Датчик может отправить например свойство движения, но это не означает, что он отправил при этом температуру и батарейку. Я в начале это не продумал. Так что в таком виде updateTime тоже бесполезен. Он должен быть напротив каждой строки, или не быть вообще.
Итог:
1. updateTime в основном нужен у объектов пультов и выключателей. Но он должен сам обновляться, при нажатии кнопки, а с этим могут быть проблемы.
2. CurrentScene у контроллера должен реагировать только на нажатия кнопок пультов и выключателей.
Надо решить, стоит ли продолжать бороться за "scene controller" или оставить заплаточный вариант с отловом слова 'currentScene'.
Если обновление ПО Z-Wave все же будет, а они так то обещали, и также обещали что там будут GET запросы, вот только я не представляю, где именно и на какие события сети, то возможно стоит подождать и посмотреть, чего они там натворят.
Если продолжаем борьбу, то я в игре. Если откладываем до обновления Z ПО, то предлагаю пока исключить из сканирования сети стик и класс scene controller.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль работы с Z-Wave устройствами

Сообщение sergejey » Чт окт 02, 2014 11:13 am

Bagir писал(а):1. updateTime в основном нужен у объектов пультов и выключателей. Но он должен сам обновляться, при нажатии кнопки, а с этим могут быть проблемы.
2. CurrentScene у контроллера должен реагировать только на нажатия кнопок пультов и выключателей.
Надо решить, стоит ли продолжать бороться за "scene controller" или оставить заплаточный вариант с отловом слова 'currentScene'.
Если обновление ПО Z-Wave все же будет, а они так то обещали, и также обещали что там будут GET запросы, вот только я не представляю, где именно и на какие события сети, то возможно стоит подождать и посмотреть, чего они там натворят.
Если продолжаем борьбу, то я в игре. Если откладываем до обновления Z ПО, то предлагаю пока исключить из сканирования сети стик и класс scene controller.
Насчёт updateTime буду смотреть ещё, но для пультов он не будет скорее всего обновляться, раз событие не приходит о нажатии. А currentScene у контроллера не меняется разве? Ведь можно к нему привязаться, нет?

Что касается того, что updateTime разный у разных событий одного устройства, то сейчас сделано так, что должно записываться последнее среди всех для данного устройства.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение Bagir » Чт окт 02, 2014 6:38 pm

sergejey писал(а):А currentScene у контроллера не меняется разве? Ведь можно к нему привязаться, нет?
Да, меняется сразу при нажатии кнопки на пульте или выключателе. Но так же и меняется просто так при неизвестных мне событиях. За 5 минут это свойство может обновиться раз 10-15 просто так. Конечно как бы нет в этом беды. Мы все равно будем проверять updateTime. Просо будет лишний исполняемый код. Но зато не придется изменять zwave.class.php Возможно мы найдем этому объяснение и получится исправить. Но на данный момент безотказно работает только это условие:
В файле zwave.class.php после строчки

Код: Выделить всё

       $rec=SQLSelectOne("SELECT ID from zwave_devices WHERE NODE_ID='".$device_id."' AND INSTANCE_ID='".$instance_id."'");
 

Код: Выделить всё

       if ($device_id == 2 && $instance_id == 0 ) {
        if ( strpos(serialize($v), 'currentScene') ) { runScript('switchRemoteAction'); } 
       } 
где 2 это id моего стика. switchRemoteAction мой скрипт по проверке последнего времени обновления в updateTime.
sergejey писал(а):Что касается того, что updateTime разный у разных событий одного устройства, то сейчас сделано так, что должно записываться последнее среди всех для данного устройства.
Тут если получится сделать обновление у пультов, что наврятли в виду Z особенностей, то нас будут ждать грабли. Допустим нажали кнопку, и updateTime обновился. Мы смотрим на время и по нему понимает какой именно выключатель был нажат. А если выключатель прислал данные о батарейке? Скорее всего updateTime тоже обновится, но он один для всех, и для кнопок (или статусов) и для батарейки. Мы начнем проверять все наши выключатели, и ошибочно поймет, что нажата кнопка.
Мое мнение, что updateTime мог бы быть полезен только если он будет у всех свойств. Но в основном я думал о нем для пультов, т.к. это единственный способ понять, на каком пульте была нажата кнопка.
Приведу пример своего скрипта switchRemoteAction. Может немного прояснит ситуацию.

Код: Выделить всё

$zsrv = 'http://localhost:8083';
$zapi = '/ZWaveAPI/Run/devices[].instances[0].commandClasses[43].data.currentScene';

 $ot = 'zKeychain_1'; // Имя объекта пульта
 $dv = '28'; // id устройства
 $cmdUrl = $zsrv.substr_replace($zapi , $dv, 22, 0).'.updateTime';
 $ans = getURL($cmdUrl, 0);
 if (is_numeric($ans)) { 
   if (gg($ot.'.zUpdateTime') < $ans) {
     sg($ot.'.zUpdateTime', $ans);
     $cmdUrl = $zsrv.substr_replace($zapi , $dv, 22, 0).'.value';
     $ans =  getURL($cmdUrl, 0);
     sg($ot.'.value', $ans);
     cm($ot.'.IncomingData');
   }
 }  

 $ot = 'zKeychain_2'; // Имя объекта выключателя
 $dv = '29'; // id устройства
 $cmdUrl = $zsrv.substr_replace($zapi , $dv, 22, 0).'.updateTime';
 $ans = getURL($cmdUrl, 0);
 if (is_numeric($ans)) { 
   if (gg($ot.'.zUpdateTime') < $ans) {
     sg($ot.'.zUpdateTime', $ans);
     $cmdUrl = $zsrv.substr_replace($zapi , $dv, 22, 0).'.value';
     $ans =  getURL($cmdUrl, 0);
     sg($ot.'.value', $ans);
     cm($ot.'.IncomingData');
   }
 }
 
Скрипт работает с объектами, и сверяет полученные updateTime из Z сети со свойствами объекта. Можно было сделать перебор с цикле, но я заленился )) Да и у меня всего их только 2. Пульт и выключатель.
Итог:
1. Чтобы не изменять код zwave.class.php нам нужно чтобы свойство currentScene объекта контроллера Z сети реагировало только на нажатия кнопок пультов или выключателей. Возможно оставить и так, но это приведет к исполнению лишнего кода проверок и обращений к Z сети за свойством updateTime всех выключателей.
2. Я пока что не вижу как и где можно применить общее свойство updateTime. Но если это не нагружает код, то пускай конечно будет. Сегодня нет планов на него, но это не значит, что они не появятся завтра. Но все же, имея updateTime для каждого свойства, можно было бы точно видеть, какие данные прислало Z железо. Я уже писал, что стоит датчику прислать чего угодно, в МД обновляются все его слинкованные свойства объектов. Возможно тут был бы полезен updateTime, по которому можно будет понять какое свойство действительно обновилось.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение Bagir » Пт янв 16, 2015 2:33 am

Обновился до z-way-server-Windows-x86-v2.0.0-rc8.msi
Интерфейс стал интересней. Очень надеюсь, что теперь например розетки и реле перестанут слать данные о скорости ветра и тому подобное... Заглянул в Z модуль МД. Там этого мусора просто вагон! Завтра буду удалять хлам. Хорошо бы, если больше ошибочные пакеты не будут обрабатываться. Увидим.
А пока что вроде API живы. Еще не знаю где и что отвалится завтра, но сейчас вижу, что с датчиков движения не приходит статус о движении. Данные об освещенности точно идут, а движение нет. В Raw Data я свойство движения вижу.
"level": {
"invalidateTime": 1421363055,
"updateTime": 1421363463,
"type": "bool",
"value": true
Но вот со старой версии Raw Data у меня нет и сравнить не с чем. Прикрепляю только новый.
commandClasses 48
Raw DataПоказать
{
"commandClasses": {
"32": {
"name": "Basic",
"data": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
},
"level": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 255
}
},
"id": 32
},
"48": {
"name": "SensorBinary",
"data": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
},
"typemask": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 2
},
"1": {
"invalidateTime": 1421363055,
"updateTime": 1421363463,
"type": "empty",
"value": null,
"sensorTypeString": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "string",
"value": "Generalpurpose"
},
"level": {
"invalidateTime": 1421363055,
"updateTime": 1421363463,
"type": "bool",
"value": false
}
}
},
"id": 48
},
"49": {
"name": "SensorMultilevel",
"data": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 5
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363057,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
},
"typemask": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "binary",
"value": [
5
]
},
"1": {
"invalidateTime": 1421363056,
"updateTime": 1421363088,
"type": "empty",
"value": null,
"sensorTypeString": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "string",
"value": "Temperature"
},
"val": {
"invalidateTime": 1421363056,
"updateTime": 1421363088,
"type": "float",
"value": 19.3
},
"deviceScale": {
"invalidateTime": 1421363056,
"updateTime": 1421363088,
"type": "int",
"value": 0
},
"scale": {
"invalidateTime": 1421363056,
"updateTime": 1421363088,
"type": "int",
"value": 0
},
"scaleString": {
"invalidateTime": 1421363056,
"updateTime": 1421363088,
"type": "string",
"value": "\u00b0C"
}
},
"3": {
"invalidateTime": 1421363056,
"updateTime": 1421363439,
"type": "empty",
"value": null,
"sensorTypeString": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "string",
"value": "Luminiscence"
},
"val": {
"invalidateTime": 1421363056,
"updateTime": 1421363439,
"type": "float",
"value": 20
},
"deviceScale": {
"invalidateTime": 1421363056,
"updateTime": 1421363439,
"type": "int",
"value": 1
},
"scale": {
"invalidateTime": 1421363056,
"updateTime": 1421363439,
"type": "int",
"value": 1
},
"scaleString": {
"invalidateTime": 1421363056,
"updateTime": 1421363439,
"type": "string",
"value": "Lux"
}
}
},
"id": 49
},
"86": {
"name": "CRC16",
"data": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
}
},
"id": 86
},
"112": {
"name": "Configuration",
"data": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
},
"1": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 10
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"2": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 15
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"3": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"4": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"6": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 30
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
}
},
"8": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 0
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"9": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 200
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
}
},
"12": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 0
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"14": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 255
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"16": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 0
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"20": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 15
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"22": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 30
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
}
},
"24": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 0
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"26": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 0
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"40": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 10
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
}
},
"42": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 0
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
}
},
"60": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 0
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"62": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 0
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
}
},
"64": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 0
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
}
},
"66": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 0
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
}
},
"80": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 10
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"81": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 50
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"82": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 100
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
}
},
"83": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1000
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2
}
},
"86": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 18
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"87": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 28
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
},
"89": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"val": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
},
"size": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1
}
}
},
"id": 112
},
"114": {
"name": "ManufacturerSpecific",
"data": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
},
"vendorId": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 271
},
"vendor": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "string",
"value": "FibarGroup"
},
"productId": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 16385
},
"productType": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 2048
}
},
"id": 114
},
"128": {
"name": "Battery",
"data": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
},
"lastChange": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1421363056
},
"history": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "empty",
"value": null,
"100": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 1421363056
}
},
"last": {
"invalidateTime": 1421363055,
"updateTime": 1421363056,
"type": "int",
"value": 100
}
},
"id": 128
},
"132": {
"name": "Wakeup",
"data": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
},
"interval": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "int",
"value": 300
},
"nodeId": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "int",
"value": 2
},
"min": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "empty",
"value": null
},
"max": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "empty",
"value": null
},
"default": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "empty",
"value": null
},
"step": {
"invalidateTime": 1421363056,
"updateTime": 1421363055,
"type": "empty",
"value": null
},
"lastWakeup": {
"invalidateTime": 1421363056,
"updateTime": 1421363388,
"type": "int",
"value": 1421363388
},
"lastSleep": {
"invalidateTime": 1421363056,
"updateTime": 1421363388,
"type": "int",
"value": 1421363388
}
},
"id": 132
},
"133": {
"name": "Association",
"data": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 2
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363057,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
},
"groups": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "int",
"value": 3
},
"specificGroup": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null
},
"1": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "empty",
"value": null,
"max": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "int",
"value": 5
},
"nodes": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "binary",
"value": [
2
]
}
},
"2": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "empty",
"value": null,
"max": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "int",
"value": 5
},
"nodes": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "binary",
"value": [
2
]
}
},
"3": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "empty",
"value": null,
"max": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "int",
"value": 1
},
"nodes": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "binary",
"value": [
2
]
}
}
},
"id": 133
},
"134": {
"name": "Version",
"data": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 2
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 8
},
"ZWLib": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 3
},
"ZWProtocolMajor": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 3
},
"ZWProtocolMinor": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 67
},
"SDK": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "string",
"value": "4.55.00"
},
"applicationMajor": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 2
},
"applicationMinor": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 6
},
"hardwareVersion": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"firmwareCount": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"firmware1": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"major": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 2
},
"minor": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 6
}
}
},
"id": 134
},
"142": {
"name": "MultiChannelAssociation",
"data": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 2
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363057,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
},
"groups": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "int",
"value": 2
},
"1": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "empty",
"value": null,
"max": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "int",
"value": 5
},
"nodes": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "binary",
"value": [
2
]
},
"nodesInstances": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "binary",
"value": [
2,
1
]
}
},
"2": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "empty",
"value": null,
"max": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "int",
"value": 5
},
"nodes": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "binary",
"value": [
2
]
},
"nodesInstances": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "binary",
"value": [
2,
2
]
}
}
},
"id": 142
},
"143": {
"name": "MultiCmd",
"data": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
}
},
"id": 143
},
"156": {
"name": "AlarmSensor",
"data": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "int",
"value": 1
},
"security": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363054,
"updateTime": 1421363057,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421363054,
"updateTime": 1421363056,
"type": "int",
"value": 9
},
"alarmMap": {
"invalidateTime": 1421363054,
"updateTime": 1421363057,
"type": "int",
"value": 1
},
"alarms": {
"invalidateTime": 1421363054,
"updateTime": 1421363055,
"type": "empty",
"value": null
},
"0": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "empty",
"value": null,
"srcId": {
"invalidateTime": 1421363056,
"updateTime": 1421363435,
"type": "int",
"value": 39
},
"sensorState": {
"invalidateTime": 1421363056,
"updateTime": 1421363435,
"type": "int",
"value": 255
},
"sensorTime": {
"invalidateTime": 1421363056,
"updateTime": 1421363435,
"type": "int",
"value": 0
},
"typeString": {
"invalidateTime": 1421363056,
"updateTime": 1421363057,
"type": "string",
"value": "GeneralPurposealarm"
}
}
},
"id": 156
},
"96": {
"name": "MultiChannel",
"data": {
"invalidateTime": 1421363131,
"updateTime": 1421363132,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421363131,
"updateTime": 1421363132,
"type": "bool",
"value": false
},
"version": {
"invalidateTime": 1421363131,
"updateTime": 1421363282,
"type": "int",
"value": 3
},
"security": {
"invalidateTime": 1421363131,
"updateTime": 1421363132,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421363131,
"updateTime": 1421363132,
"type": "bool",
"value": false
},
"interviewCounter": {
"invalidateTime": 1421363131,
"updateTime": 1421363132,
"type": "int",
"value": 10
},
"endPoints": {
"invalidateTime": 1421363131,
"updateTime": 1421363132,
"type": "int",
"value": 0
},
"dynamic": {
"invalidateTime": 1421363131,
"updateTime": 1421363132,
"type": "empty",
"value": null
},
"identical": {
"invalidateTime": 1421363131,
"updateTime": 1421363132,
"type": "empty",
"value": null
}
},
"id": 96
}
},
"data": {
"invalidateTime": 1421360011,
"updateTime": 1421360012,
"type": "empty",
"value": null,
"dynamic": {
"invalidateTime": 1421360011,
"updateTime": 1421360012,
"type": "bool",
"value": false
},
"genericType": {
"invalidateTime": 1421360011,
"updateTime": 1421360013,
"type": "int",
"value": 32
},
"specificType": {
"invalidateTime": 1421360011,
"updateTime": 1421360013,
"type": "int",
"value": 1
}
},
"id": 0
}
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль работы с Z-Wave устройствами

Сообщение sergejey » Пт янв 16, 2015 11:04 am

А где можно скачать новую версию?
по value буду смотреть, возможно неправильно система распознаёт value: true

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение Bagir » Пт янв 16, 2015 11:13 am

Вот тут все. В самом низу для винды. http://razberry.z-wave.me/ZWay4Win.msi/
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить