Модуль работы с Z-Wave устройствами
Модератор: immortal
- Bagir
- Сообщения: 1613
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 374 раза
Re: Модуль работы с Z-Wave устройствами
Ivan а вот в версии 2.0.0 были замечены битые пакеты? Например у меня датчик температуры запросто мог прислать давление. А розетки вообще сума сходили. Слали все что только можно придумать. Скорость ветра, освещенность, и просто всякий хлам. Подозреваю, что это из-за их возможности ретранслятора. А Z стик все это добро ел. Естественно весь этот хлам попадал в МД. И со временем, в настройке Z модуля, его скопилась целая помойка. Удалять было бесполезно, к.т. при обновлении сети, все это падало обратно в МД.
А как на счет 2.0.0, есть на что надеяться?
А как на счет 2.0.0, есть на что надеяться?
- Bagir
- Сообщения: 1613
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 374 раза
Re: Модуль работы с Z-Wave устройствами
Ну дела!
Данные с датчиков температуры/влажности тоже не идут. Возможно конечно, что это следствие граблей с интервью, и сегодня вечером я их расшатаю.
Но вот еще косяк. Смотрите в истории сообщений куча записей Пульт 11. Это Z брелок, на который я уже давно хотел повесить управление подъемными воротами, да все руки не доходили до электрощита. Вот бы сейчас у меня ворота на распашку были... 11 - первая кнопка 11 - нажатие.
Теперь однозначно буду делать только с имобилайзером. Если метка не в зоне, пульт работать не должен.
Данные с датчиков температуры/влажности тоже не идут. Возможно конечно, что это следствие граблей с интервью, и сегодня вечером я их расшатаю.
Но вот еще косяк. Смотрите в истории сообщений куча записей Пульт 11. Это Z брелок, на который я уже давно хотел повесить управление подъемными воротами, да все руки не доходили до электрощита. Вот бы сейчас у меня ворота на распашку были... 11 - первая кнопка 11 - нажатие.
Теперь однозначно буду делать только с имобилайзером. Если метка не в зоне, пульт работать не должен.
- Вложения
-
- Безымянный.jpg (125.63 КБ) 15176 просмотров
- Bagir
- Сообщения: 1613
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 374 раза
Re: Модуль работы с Z-Wave устройствами
Итог обновления на 2.0.0
Не все гладко, не все так просто как должно быть, но однозначно надо. "Левых" данных пока не обнаружено. Розетки не передают скорость ветра, а датчик движения не шлет данные о влажности. И это очень радует. Возможно действительно кого то осенила мысль повесить проверку контрольной суммы на пакеты или что то вроде того.
Искаженных данных пока что тоже не обнаружено. Показатель заряда батареек не превышает 100%, температура в комнатах не прыгает временами до сотен градусов, да и освещение больше не зашкаливает за сварочную дугу.
Думаю, что у обеих этих проблем был одинаковый корень. И если он полностью исправлен, то никакие трудности обновления уже не пугают.
Мне удалось поднять все свои железки за исключением класса 48, о котором писал ранее. А этот класс у меня в датчиках движения на событии движения, и у бинарного сенсора на событии замыкания контактов.
"Сырые" данные с датчика обновляются и их можно легко прочитать
"level": {
"invalidateTime": 1421428814,
"updateTime": 1421428967,
"type": "bool",
"value": false
}
У меня два варианта: либо скобки у значения, либо то, что его засунули в "1": { } К сожалению сравнить мне уже не с чем. Проверьте кто может до обновления!
Конечно перспектива остаться без включения света при движении не радует, но обновиться все равно стоит. А пока sergejey с этим не разобрался, можно написать небольшую заплатку и при изменении того же UpdateTime проверять свойство "value" самому и обновлять статус объекта. Что я сейчас и сделаю.
Удачных вам танцев с бубном друзья
Не все гладко, не все так просто как должно быть, но однозначно надо. "Левых" данных пока не обнаружено. Розетки не передают скорость ветра, а датчик движения не шлет данные о влажности. И это очень радует. Возможно действительно кого то осенила мысль повесить проверку контрольной суммы на пакеты или что то вроде того.
Искаженных данных пока что тоже не обнаружено. Показатель заряда батареек не превышает 100%, температура в комнатах не прыгает временами до сотен градусов, да и освещение больше не зашкаливает за сварочную дугу.
Думаю, что у обеих этих проблем был одинаковый корень. И если он полностью исправлен, то никакие трудности обновления уже не пугают.
Мне удалось поднять все свои железки за исключением класса 48, о котором писал ранее. А этот класс у меня в датчиках движения на событии движения, и у бинарного сенсора на событии замыкания контактов.
"Сырые" данные с датчика обновляются и их можно легко прочитать
"level": {
"invalidateTime": 1421428814,
"updateTime": 1421428967,
"type": "bool",
"value": false
}
У меня два варианта: либо скобки у значения, либо то, что его засунули в "1": { } К сожалению сравнить мне уже не с чем. Проверьте кто может до обновления!
Конечно перспектива остаться без включения света при движении не радует, но обновиться все равно стоит. А пока sergejey с этим не разобрался, можно написать небольшую заплатку и при изменении того же UpdateTime проверять свойство "value" самому и обновлять статус объекта. Что я сейчас и сделаю.
Удачных вам танцев с бубном друзья
commandClasses 48 бинарного датчика (его еще называют термостат)Показать
{
"commandClasses": {
"48": {
"name": "SensorBinary",
"data": {
"invalidateTime": 1421428809,
"updateTime": 1421428810,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421428809,
"updateTime": 1421428810,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421428810,
"updateTime": 1421428811,
"type": "int",
"value": 2
},
"security": {
"invalidateTime": 1421428809,
"updateTime": 1421428810,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421428809,
"updateTime": 1421428815,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421428809,
"updateTime": 1421428813,
"type": "int",
"value": 9
},
"typemask": {
"invalidateTime": 1421428809,
"updateTime": 1421428813,
"type": "int",
"value": 2
},
"1": {
"invalidateTime": 1421428814,
"updateTime": 1421428967,
"type": "empty",
"value": null,
"sensorTypeString": {
"invalidateTime": 1421428814,
"updateTime": 1421428815,
"type": "string",
"value": "Generalpurpose"
},
"level": {
"invalidateTime": 1421428814,
"updateTime": 1421428967,
"type": "bool",
"value": false
}
}
},
"id": 48
},
"commandClasses": {
"48": {
"name": "SensorBinary",
"data": {
"invalidateTime": 1421428809,
"updateTime": 1421428810,
"type": "empty",
"value": null,
"supported": {
"invalidateTime": 1421428809,
"updateTime": 1421428810,
"type": "bool",
"value": true
},
"version": {
"invalidateTime": 1421428810,
"updateTime": 1421428811,
"type": "int",
"value": 2
},
"security": {
"invalidateTime": 1421428809,
"updateTime": 1421428810,
"type": "bool",
"value": false
},
"interviewDone": {
"invalidateTime": 1421428809,
"updateTime": 1421428815,
"type": "bool",
"value": true
},
"interviewCounter": {
"invalidateTime": 1421428809,
"updateTime": 1421428813,
"type": "int",
"value": 9
},
"typemask": {
"invalidateTime": 1421428809,
"updateTime": 1421428813,
"type": "int",
"value": 2
},
"1": {
"invalidateTime": 1421428814,
"updateTime": 1421428967,
"type": "empty",
"value": null,
"sensorTypeString": {
"invalidateTime": 1421428814,
"updateTime": 1421428815,
"type": "string",
"value": "Generalpurpose"
},
"level": {
"invalidateTime": 1421428814,
"updateTime": 1421428967,
"type": "bool",
"value": false
}
}
},
"id": 48
},
- Bagir
- Сообщения: 1613
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 374 раза
Re: Модуль работы с Z-Wave устройствами
А вот и заплатка:
devices[39] - id железяки
level - свойство которое надо менять
Обязательно отвяжите это свойство в Z модуле, а то зациклит
В Z модуле при изменении свойства Level у меня запускается метод IncomingData. У вас может быть например statuschanged, или что там у кого, не суть. Главное, отключить установку (линк) свойства, которое мы будем сами ставить заплаткой, иначе зациклит! Отключить надо только свойство, а запуск метода, в начал которого будет добавлен этот код, обязательно оставить.
devices[39] - id железяки
level - свойство которое надо менять
Обязательно отвяжите это свойство в Z модуле, а то зациклит
Код: Выделить всё
//Заплатка для обновления свойства класса 48
$cmdUrl = "http://localhost:8083/ZWaveAPI/Run/devices[39].instances[0].commandClasses[48].data[1].level.value";
$ans = getURL($cmdUrl, 0);
switch ($ans) {
case 'true':
$this->setProperty('level' , 1);
break;
case 'false':
$this->setProperty('level' , 0);
break;
default:
say("непонятно");
}
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Модуль работы с Z-Wave устройствами
Bagir, отличные новости, что работать стало лучше! Запишусь в фан-клуб ZWave, если всё действительно так По поводу этого свойства, на следующей неделе разберусь -- есть у меня объект, где всё на ZWave.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- Bagir
- Сообщения: 1613
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 374 раза
Re: Модуль работы с Z-Wave устройствами
Даже как то страшно звучит! Как общее впечатление?sergejey писал(а):есть у меня объект, где всё на ZWave.
Железки конечно очень полезные, и где нет возможности протянуть провода они сильно выручают, но очень уж беспокоят потери пакетов. Если раньше пакеты доходили битыми, то сейчас вероятнее всего они будут просто игнорироваться контроллером. Думаю, что точно такая же история и с вариантом, когда датчик напрямую передает команды исполнительным устройствам в его ассоциациях. С сервером опять же все как то проще. Тут мы хоть что то может обработать и на все повлиять. А отдельная Z паутина, ну не знаю. Страшно )) Разве как резервный вариант работы без сервера. Но такая возможность увы не настраивается.
Я бы совершенно спокойно отнесся к варианту сети на Мегах без сервера, ввиду надежности, на порядок превышающей Z. Но сравнивать радио датчики с проводными конечно глупо.
Сейчас у меня в сети 20 устройств. Вчера, когда обновлял Z ПО, а точнее разбирался с последствиями, целый вечер бегал по дому, собирал эти железяки, таскал к серверу и будил их Могу только представить чего бы стоил вариант будь их не 20 а 200 к примеру Очень надеюсь, что в следующих Z обновлениях больше таких номеров вытворять не придется.
По поводу класса 48. Заплатка нормально работает. Свет включается так же быстро как и раньше. Так что кто еще в раздумьях - смело обновляйтесь.
-
- Сообщения: 110
- Зарегистрирован: Вт апр 29, 2014 9:16 pm
- Благодарил (а): 7 раз
- Поблагодарили: 13 раз
Re: Модуль работы с Z-Wave устройствами
Bagir, мучаюсь с глазом. Сделал по твоей рекомендации. Цикл zwave падает при изменении значения Level. Потом поднимается и опять падает. С периодичностью 10 секунд. Похоже на зацикливание.Не могу найти причину. Свойство от Z-wave отвязано.Bagir писал(а):А вот и заплатка:
devices[39] - id железяки
level - свойство которое надо менять
Обязательно отвяжите это свойство в Z модуле, а то зациклитВ Z модуле при изменении свойства Level у меня запускается метод IncomingData. У вас может быть например statuschanged, или что там у кого, не суть. Главное, отключить установку (линк) свойства, которое мы будем сами ставить заплаткой, иначе зациклит! Отключить надо только свойство, а запуск метода, в начал которого будет добавлен этот код, обязательно оставить.Код: Выделить всё
//Заплатка для обновления свойства класса 48 $cmdUrl = "http://localhost:8083/ZWaveAPI/Run/devices[39].instances[0].commandClasses[48].data[1].level.value"; $ans = getURL($cmdUrl, 0); switch ($ans) { case 'true': $this->setProperty('level' , 1); break; case 'false': $this->setProperty('level' , 0); break; default: say("непонятно"); }
Похоже нельзя обращаться к Глазу в момент изменения Level.?
Может зависит от версии . Я обновился до 2.0.1-rc15
- Bagir
- Сообщения: 1613
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 374 раза
Re: Модуль работы с Z-Wave устройствами
Таких бед у меня не наблюдается. И если не брать во внимание полное отсутствие надежности работы сети z-wave, сам модуль работы с Z сетью в МД работает отлично. Но к сожалению, очень часто падает сам стик.
-
- Сообщения: 110
- Зарегистрирован: Вт апр 29, 2014 9:16 pm
- Благодарил (а): 7 раз
- Поблагодарили: 13 раз
Re: Модуль работы с Z-Wave устройствами
У меня RaZberry на Raspberry, MJ на Cubietruck. Cеть z-wave и MJ работают надёжно.Bagir писал(а):Таких бед у меня не наблюдается. И если не брать во внимание полное отсутствие надежности работы сети z-wave, сам модуль работы с Z сетью в МД работает отлично. Но к сожалению, очень часто падает сам стик.
Но вот столкнулся с такой проблемой.
Имеется объект и свойство связанные с z-wave. (датчик движения)
Имеется метод вызываемый при изменении свойства.
При чтении свойства объекта (вызывается метод) именно в момент изменения падает цикл z-wave.
Пробовал отвязывать свойство.
Датчик движения ассоциирован в сети z-wave с выключателем.
Пробовал отвязаться от датчика движения и привязаться к выключателю.
При чтении свойства выключателя в момент изменения падает цикл z-wave.
Подскажите как обойти это, а именно прочитать значение либо объекта MJ, либо самого z-wave без
падения цикла z-wave.
-
- Сообщения: 15
- Зарегистрирован: Вс ноя 29, 2015 11:13 pm
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Модуль работы с Z-Wave устройствами
Эх... жаль, что произошла авария и часть сообщений форума потерялась, писал-писал, теперь переписывать, ну что-ж, всякое бывает.
Очень печально, что у такого активного пользователя, как Bagir, оказалась такая ненадежная точка интеграции с Z-wave сетью в виде стика. Много времени вложено в развитие интеграции MD + Z-Wave и в конце звучит разочарование.
У меня вся текущая автоматизация построена на Z-wave, где контроллером является VeraLite и никаких проблем с потерями пакетов, сбоями и т.п. не наблюдается, за 2,5 года Vera ни разу не зависла.
Причин с потерей пакетов может быть несколько и я хочу высказать свои предположения.
Возможно, действительно есть какие-то проблемы со стиком.
А возможно, проблемы с маршрутизацией пакетов в Z-wave сети.
В каком-то из сообщений упоминалось, что после полного обнуления, все устройства для включения в сеть подносились к контроллеру, включались в сеть и уносились обратно на их постоянное место. При этом в памяти устройства в таблице маршрутизации появлялся прямой маршрут до контроллера, т.к. устройство считало, что контроллер в прямой видимости (при включении в сеть, так и было, верно?). И дальше, вероятно, устройство старательно отсылало пакеты напрямую в контроллер и видимо в большинстве случаев это проходило успешно, но иногда пакеты видимо терялись. Косвенным подтверждением этому может служить ответ на вопрос, проблемы с потерями были со всеми устройствами или с теми, которые наиболее далеко находились от стика?
Например в Vera, после добавления нового устройства в Z-wave сеть и установки устройства на его постоянное место рекомендуется нажать кнопку Repair Network, что запускает процесс обновления таблиц маршрутизации на всех устройствах сети и прописывание наиболее оптимальных маршрутов, чтобы посылать пакеты не напрямую к контроллеру, а по цепочке через ближайшие устройства.
Возможно причина и не в этом, но как идею проверить можно.
Так же можно в переменных каждого устройства обновить информацию о ближайших устройствах, в переменной Neighbors и потом вручную прописать маршрутизацию используя переменную ManualRoute.
Очень печально, что у такого активного пользователя, как Bagir, оказалась такая ненадежная точка интеграции с Z-wave сетью в виде стика. Много времени вложено в развитие интеграции MD + Z-Wave и в конце звучит разочарование.
У меня вся текущая автоматизация построена на Z-wave, где контроллером является VeraLite и никаких проблем с потерями пакетов, сбоями и т.п. не наблюдается, за 2,5 года Vera ни разу не зависла.
Причин с потерей пакетов может быть несколько и я хочу высказать свои предположения.
Возможно, действительно есть какие-то проблемы со стиком.
А возможно, проблемы с маршрутизацией пакетов в Z-wave сети.
В каком-то из сообщений упоминалось, что после полного обнуления, все устройства для включения в сеть подносились к контроллеру, включались в сеть и уносились обратно на их постоянное место. При этом в памяти устройства в таблице маршрутизации появлялся прямой маршрут до контроллера, т.к. устройство считало, что контроллер в прямой видимости (при включении в сеть, так и было, верно?). И дальше, вероятно, устройство старательно отсылало пакеты напрямую в контроллер и видимо в большинстве случаев это проходило успешно, но иногда пакеты видимо терялись. Косвенным подтверждением этому может служить ответ на вопрос, проблемы с потерями были со всеми устройствами или с теми, которые наиболее далеко находились от стика?
Например в Vera, после добавления нового устройства в Z-wave сеть и установки устройства на его постоянное место рекомендуется нажать кнопку Repair Network, что запускает процесс обновления таблиц маршрутизации на всех устройствах сети и прописывание наиболее оптимальных маршрутов, чтобы посылать пакеты не напрямую к контроллеру, а по цепочке через ближайшие устройства.
Возможно причина и не в этом, но как идею проверить можно.
Так же можно в переменных каждого устройства обновить информацию о ближайших устройствах, в переменной Neighbors и потом вручную прописать маршрутизацию используя переменную ManualRoute.