А интересно можно ли стик склонировать, чтоб поэксперементировать?Ну что, поехали. Ось Windows XP 32.
Для построения сети Z-Wave был использован вот такой стик
Изображение
Модуль работы с Z-Wave устройствами
Модератор: immortal
- adzam
- Сообщения: 602
- Зарегистрирован: Сб дек 08, 2012 10:28 pm
- Откуда: Кишинев
- Благодарил (а): 20 раз
- Поблагодарили: 138 раз
Re: Модуль работы с Z-Wave устройствами
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
- Bagir
- Сообщения: 1614
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Модуль работы с Z-Wave устройствами
Да вот наврятли. Конечно не боги горшки обжигали, но думаю что в данном случае от покупки не уйти. Даже если повторить железо, без прошивки никуда. А она, наверное, вовсе не открытая. Но в инете цены сильно отличаются. Если ничего не напутали, то получается от 2 до 5 килорублей. Так то Z-Wave оборудование вообще ну очень дорогое. За идею что ли цена так завышена... Но поиграться то хочетсяsergejey писал(а):можно ли стик склонировать
А так и придется. Я пока в этом направлении мало что знаю, но капать могу долго и усердно Перед обзором на следующее железо, все же придется немного разобрать тему использования данных датчиков Z-Wave в MDM. Сейчас у меня для теста создан отдельный класс. В нем объект датчика движения с его свойствами.sergejey писал(а):так что если будут проблемы, будем решать совместно
И, внимание, при изменении свойства Level запускается метод LevelChanged
Код метода
Все упрощено до безобразия, чтобы было проще понять и разобраться. А что нам вообще нужно? Нам нужно во первых наличие в MDM объекта с текущими свойствами датчика. Это есть. И во вторых - сигнал о изменении свойства объекта, чтобы запустить свои цепочки проверок и действий. С этим пока грабли. Ближе к делу: Линкуем свойства объекта датчика и смотрим что будет. Помним, что при изменении свойства Level запустится наш метод LevelChanged.
Теперь немного опытов и теории: Замечено, что датчик присылает одновременно все свои свойства. То есть, при движении он так же обновляет свойство температуры и яркости. Также по задумке z-Wave датчик периодически просыпается (например каждые 5 минут) и сообщает свои свойства. Это весьма полезно для сбора таких параметров как температура и яркость освещения, но, одновременно с этим идет и обновление свойства движения. 0 будет обновлен на 0 если никого нет. Это как бы и ничего, но все равно вызовет срабатывание метода LevelChanged. А вот это уже нехорошо. Конечно можно создавать свойства и хранить там предыдущее значение, но это вариант ходить домой через крышу. И еще одно наблюдение: Когда датчик замечает движение, я слышу сразу два уведомления подряд. Значит каким то образом статус обновляется два раза. А почему? Вероятно надо посмотреть на взаимодействие сервера Z-Wave и MDM.
Наверное теперь вопрос уже именно к Сергею.
1. Где это все происходит.
2. Есть ли какие то логи.
3. Смогу ли я сам там что то посмотреть или сделать
Понятно что на 3 Вы мне наврятли ответите. Но мне хотя бы в целом узнать, что там такое.
Так же я еще вообще смутно представляю понятие Ассоциации. Если управлять сетью только в Z-Wave сервере, то там, например, в выключателях можно указывать исполнительные устройства, которым будут отправляться команды. Но у некоторых устройств (например датчик температура+влажность), там я вижу эти раздельные свойства. А у датчика движения такого нет. НО! у них разные производители.
В общем, чтобы смело двигаться дальше, надо поточнее понять работу этого механизма получения данных. Пишите кто что знает. Кидайте действительно полезные ссылки. Будем собирать инфу.
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Модуль работы с Z-Wave устройствами
1. Это происходит при опросе устройства. Если конкретно говорить о том, где идёт обновление связанного свойства, то это файл ./modules/zwave/zwave.class.php строки начиная с 535:Bagir писал(а):Наверное теперь вопрос уже именно к Сергею.
1. Где это все происходит.
2. Есть ли какие то логи.
3. Смогу ли я сам там что то посмотреть или сделать
Понятно что на 3 Вы мне наврятли ответите. Но мне хотя бы в целом узнать, что там такое.
Код: Выделить всё
if ($prop['LINKED_OBJECT'] && $prop['LINKED_PROPERTY']) {
setGlobal($prop['LINKED_OBJECT'].'.'.$prop['LINKED_PROPERTY'], $prop['VALUE'], array('zwave_properties'=>'0'));
}
Код: Выделить всё
if ($prop['LINKED_OBJECT'] && $prop['LINKED_PROPERTY'] && getGlobal($prop['LINKED_OBJECT'].'.'.$prop['LINKED_PROPERTY'])!=$prop['VALUE']) {
setGlobal($prop['LINKED_OBJECT'].'.'.$prop['LINKED_PROPERTY'], $prop['VALUE'], array('zwave_properties'=>'0'));
}
2. логов работы zwave не ведётся, можно только через xray смотреть последние вызовы метода или добавлять что-то в лог через debmes и через тот же xray его смотреть.
3. всё в ваших руках ))
Ассоциации -- это, скорее всего, прямая передача данных между устройствами без задействования сервера. Т.е. можно на одном устройстве указать какую команду и куда передать в случае возникновения события. При этом всё будет работать, даже если сервер по какой-то причине отключен -- с ассоциациями устройства сами между собой договариваются. Иногда это полезно.Bagir писал(а):Так же я еще вообще смутно представляю понятие Ассоциации. Если управлять сетью только в Z-Wave сервере, то там, например, в выключателях можно указывать исполнительные устройства, которым будут отправляться команды. Но у некоторых устройств (например датчик температура+влажность), там я вижу эти раздельные свойства. А у датчика движения такого нет. НО! у них разные производители.
В общем, чтобы смело двигаться дальше, надо поточнее понять работу этого механизма получения данных. Пишите кто что знает. Кидайте действительно полезные ссылки. Будем собирать инфу.
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
- Благодарил (а): 49 раз
- Поблагодарили: 327 раз
Re: Модуль работы с Z-Wave устройствами
Ассоциация нужна для привязки устройств друг к другу. Например Выключатель, датчик движения <-> лампочка, реле, итд
Очень нужная функция и МД тут не причём. Кстати она убирает многие проблемы. Например: Выключенный сервер, ускоряет работу (т.к. не нужно обрабатывать через скрипты). Также там есть понятие GlobalEvant, он нужен например когда у вас сработает датчик протечки воды. Будут срабатывать силовые блоки на мигание (Мигают все лампочки). А также срабатывает сирена.
Bagir посмотрите пожалуйста личку
Очень нужная функция и МД тут не причём. Кстати она убирает многие проблемы. Например: Выключенный сервер, ускоряет работу (т.к. не нужно обрабатывать через скрипты). Также там есть понятие GlobalEvant, он нужен например когда у вас сработает датчик протечки воды. Будут срабатывать силовые блоки на мигание (Мигают все лампочки). А также срабатывает сирена.
Bagir посмотрите пожалуйста личку
- Рейтинг: 1.16%
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
- Bagir
- Сообщения: 1614
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Модуль работы с Z-Wave устройствами
Вот спасибо! php файл, ну тут то можно и по мучатся.sergejey писал(а):Это происходит при опросе устройства. Если конкретно говорить о том, где идёт обновление связанного свойства, то это файл ./modules/zwave/zwave.class.php строки начиная с 535:
Да, безусловно тут быть беде. И так менять код нельзя. Для начала попробую понять, почему после движения приходят сразу два сообщения подряд.sergejey писал(а):но тут логическая проблема
-
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
- Благодарил (а): 49 раз
- Поблагодарили: 327 раз
Re: Модуль работы с Z-Wave устройствами
У меня тоже на Fibaro Dimer были глюки по включению. То есть приходило в систему значение включения, а потом выключения - при нажатии включения. Всё списывал на глючный димер.
Пока не пользуюсь ZWave - т.к. димер совсем сгорел.
Вот думаю продолжать ZWave или смотреть в сторону Noolite
Пока не пользуюсь ZWave - т.к. димер совсем сгорел.
Вот думаю продолжать ZWave или смотреть в сторону Noolite
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
- Bagir
- Сообщения: 1614
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Модуль работы с Z-Wave устройствами
Я еще при выборе Z на этот пульт повелся http://rus.z-wave.me/manuals/show?sku=ZMR_KFOB
Вот только пока не знаю как его с MDM использовать. А точнее даже не смотрел толком. В сети его зарегистрировал, но в MDM вижу только состояние его батарейки. В выходные доберусь до него.
Вот только пока не знаю как его с MDM использовать. А точнее даже не смотрел толком. В сети его зарегистрировал, но в MDM вижу только состояние его батарейки. В выходные доберусь до него.
Последний раз редактировалось Bagir Вс сен 28, 2014 9:39 pm, всего редактировалось 1 раз.
- Bagir
- Сообщения: 1614
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Модуль работы с Z-Wave устройствами
Долго думал, как все же быть в MDM с объектами для Z устройств. Тут надо учесть, что как правило, в Z устройстве сразу по 2-4 разных датчика + статус батареи. Но в то же время хотелось бы сохранить идеологию, когда для каждого датчика есть свой объект в соответствующем классе. Это удобно, т.к. позволяет легко переключиться на другое железо не перетряхая горы кода. Но если расщепить Z устройство на объекты его разных датчиков, то как быть с батареей? Создать еще объект под название "просто батарейка"? Ну как то мне так не нравится...
Еще надо учесть, что при срабатывании по событию, и/или по времени, Z устройство обновляет в MDM сразу ВСЕ свои статусы и данные. Такое обновление данных, даже если они не изменялись, очень нужно, например для снятия температуры, но совершенно бесполезно, например для статуса движения или открытия двери. Более того, это обновление данных запустит проверку наших условий и реакцию на изменение, а нам это не нужно. В этом случае нам нужна реакция только на изменения данных.
Можно нахудожничать в файле zwave.class.php, сделав изменения под свои разные задачи. Но это заведомо узкая и темная тропинка. Мое мнение - код MDM должен оставаться как можно менее измененным, чтобы потом разные участники форума не сравнивали посудомойку со стиральной машиной.
Как уйти от всех заморочек, не трогать код в файле и оставить объекты в стандартных классах?
Пока что я нашел только одно решение. Создать новый общий связующий класс zWave. В него добавить объекты, по одному на каждое Z устройство. Свойства класса zWave продумать так, чтобы из них можно было набрать ассортимент на любое Z устройство. Теперь о реакции на изменение. Т.к. Z устройства обновляют сразу все свои данные, надо выбрать самое распространенное свойство и по его изменению запускать метод класса, например IncomingData. В этом методе мы уже будем указывать, какому объекту, что, и при каких условиях передавать. Например, свойство температуры всегда отправлять в объект класса tempSensors. А вот движение отправлять в inhouseMovementSensors только при его изменении. Причем нам будет чего и с чем сравнить!, для принятия этого решения. Осталось выбрать свойство, по которому запускать метод. Я выберу Батарейку. Она есть у всех моих устройств. А для исполнительных устройств можно продублировать на свойство статуса.
Зацените идею, и если это полный бред, пишите сразу.
Еще надо учесть, что при срабатывании по событию, и/или по времени, Z устройство обновляет в MDM сразу ВСЕ свои статусы и данные. Такое обновление данных, даже если они не изменялись, очень нужно, например для снятия температуры, но совершенно бесполезно, например для статуса движения или открытия двери. Более того, это обновление данных запустит проверку наших условий и реакцию на изменение, а нам это не нужно. В этом случае нам нужна реакция только на изменения данных.
Можно нахудожничать в файле zwave.class.php, сделав изменения под свои разные задачи. Но это заведомо узкая и темная тропинка. Мое мнение - код MDM должен оставаться как можно менее измененным, чтобы потом разные участники форума не сравнивали посудомойку со стиральной машиной.
Как уйти от всех заморочек, не трогать код в файле и оставить объекты в стандартных классах?
Пока что я нашел только одно решение. Создать новый общий связующий класс zWave. В него добавить объекты, по одному на каждое Z устройство. Свойства класса zWave продумать так, чтобы из них можно было набрать ассортимент на любое Z устройство. Теперь о реакции на изменение. Т.к. Z устройства обновляют сразу все свои данные, надо выбрать самое распространенное свойство и по его изменению запускать метод класса, например IncomingData. В этом методе мы уже будем указывать, какому объекту, что, и при каких условиях передавать. Например, свойство температуры всегда отправлять в объект класса tempSensors. А вот движение отправлять в inhouseMovementSensors только при его изменении. Причем нам будет чего и с чем сравнить!, для принятия этого решения. Осталось выбрать свойство, по которому запускать метод. Я выберу Батарейку. Она есть у всех моих устройств. А для исполнительных устройств можно продублировать на свойство статуса.
Зацените идею, и если это полный бред, пишите сразу.
-
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
- Благодарил (а): 49 раз
- Поблагодарили: 327 раз
Re: Модуль работы с Z-Wave устройствами
Я внутри функции обновления (привязанной к свойству на изменение) . Анализирую изменение и в зависимости от алгоритма принимаю решение. Выполнить действие или передать в связанный объект.
Также в некоторых датчиках использую свойства времени последнего обновления, чтобы убрать повторений или принять решение о реальном изменении данных (То есть даже если пришли одни и те же значения но через несколько секунд, то это новые данные)
Также в некоторых датчиках использую свойства времени последнего обновления, чтобы убрать повторений или принять решение о реальном изменении данных (То есть даже если пришли одни и те же значения но через несколько секунд, то это новые данные)
- Рейтинг: 1.16%
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
- Bagir
- Сообщения: 1614
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Модуль работы с Z-Wave устройствами
Да, такой и есть план. Класс zWave объект Glaz_1 (датчик движения). У него все свойства, которые есть у Z датчика. А при изменении свойства батарейки, запускается привязанный метод IncomingData. Он и раздает данные объектам датчиков других классов.
Пока нравится.
Код: Выделить всё
// Передать температуру объекту класса tempSensors датчика температуры в коридоре
setGlobal('ts_corridor.temp', round($this->getProperty('Temperature'), 4));
// Сравнение свойства движения объекта класса inhouseMovementSensors и этого датчика.
if (getGlobal('ms_corridor.status') != $this->getProperty('level')) {
setGlobal('ms_corridor.status', $this->getProperty('level'));
}