Не работает Z-Connector в Linux

Данный раздел предназначен для русскоязычных пользователей. Если вы владеете английским, рекомендуем также просмотреть общую ветку обсуждений на английском.
roher
Posts: 28
Joined: 18 Oct 2012 10:10

Сеть стала вести себя крайне странно

Post by roher » 18 Oct 2012 13:29

Да, не успел я порадоваться с тем что свисток подключился, как начались новые проблемы, уже теперь с общением устройств.
Почему-то с того момента как я подключил свисток на его предполагаемое постоянное место жительство - debian-серверу, моя z-wave сеть стала вести себя крайне странно, причём сначала полдня проработав в штатном режиме (???) А вот вечером того же дня начались проблемы:
1) Почти все устройства z-way пометил как dead, периодически набор "мёртвых" устройств менялся (одни умирали другие "восставали из мёртвых")
2) Таблица маршрутизации почти вся залилась красным цветом, осталось только пара зелёных клеток. Обновление маршрутов не работало.
3) Устройства перестали отвечать почти на все команды, посланные с контроллера, в лог сыпались сообщения:
Not delivered to recipient due to no ACK from destination
Send data callback Id is invalid: 0x<здесь всё время разные цифры были>! Probably too late
И что-то типа CAN received without any ACK before, или как-то так, не помню точно.
Собственно, первые два пункта наверняка являлись следствием третьего.
Заново включать устройства тоже не получалось - до конроллера просто не доходила инфа о том что какое-то устройство хочет включиться в сеть.

Я подумал что наверное не хватает радиуса действия, хотя с чего бы это вдруг - во-первых, заявленная дальность одного устройства -- 30 метров, а там от силы 10 до всех устройств, во-вторых, в том же месте, но на метр (не больше) ближе к устройствам ранее стоял тот самый виндовый ноут с контроллером, и всё суперски работало. Я решил что ладно, фиг с ним, 130 рублей не жалко, и пошёл вчера купил 3-метровый usb-удлиннитель. Воткнул туда свисток, в итоге он оказался даже ближе чем был, когда был вставлен в ноут. Плюс между контроллером и остальными устройствами (так получилась конфигурация, что все остальные устройства кроме контроллера сосредоточены пока только в ванне и в туалете, так как ремонт был только там, и внедрять "умный дом" я решил начать с них, а контроллер сидит в комнате) я в коридоре между устройствами и конроллером тупо положил уже давно включённый в сеть, но ещё не установленный термостат Danfoss Living Connect, чтобы он просто усиливал сигнал.

Ситуация сильно улучшилась:
1) все устройства перестали быть "мёртвыми", это уже радует. Но вечером почему-то "мёртвым" стал тот самый термостат, хотя система видит что он периодически просыпается, плюс от него приходят репорты о батарейках. Но это ладно, не суть.
2) обновились маршруты, почти вся табличка залилась зелёно-жёлтым, красными остались только две клетки.

Улучшилась сильно, но всё равно не до конца, так как
1) репорты от устройств приходят через раз. Например, у меня настроено правило что по двойному клику на клавишу выключателя TKB_HOME (в соотв. группе ассоциации стоит контроллер) включается второй канал реле Fibaro (вентиллятор в ванне). Так вот чтобы это сработало, нужно "долбить" по выключателю от 2-х до 5-ти раз, причём до успешной попытки в логах вообще пусто, как будто в системе нет никаких событий.
2) Датчик AEON LABS Multisensor вообще странно себя ведёт - раньше в настройках я ставил чтобы он раз в 4 минуты присылал всё сразу: влажность, температуру, освещённость, батарейку. Теперь я поставил чтобы он раз в минуту слал влажность (так как хочу вентиллятор по ней включать), раз в 10 минут - температуру, раз в сутки - батарейку, а освещённость вообще отключил. Сохранение настроек прошло успешно (Delivered по всем пунктам), но датчик по-прежнему шлёт всё по старому алгоритму, причём не всё сразу, а то влажность придёт, то освещённость, то температура. Может слать раз в 4 минуты, а может и час ничего не слать (ну здесь я опять же грешу на то что не всё доходит, как с выключателем, датчик ведь не будет повторять свой репорт, его вообще не интересует дошёл он или нет). Вот щас например последнее сообщение от него было четыре часа назад. Настройки попробую ещё раз в него вбить, может не понял с первого раза.
3) Плюс ещё по логам постоянно идёт активное общение с термостатом, нафига оно нужно? Расписаний не определено никаких, управление ручное стоит в настройках. Чего ещё надо?

Т.е. в итоге получается что конроллер теперь даже ближе к остальным устройствам чем он был ранее, плюс ещё одно звено добавилось в середине, но сеть стала работать хуже чем раньше.
Вопрос: почему? Может слить бекап настроек и контроллер попробовать сбросить, или не поможет в данном случае?

Плюс ещё вопрос попутно: как можно поменять тип устройства? Просто тот самый датчик AEON LABS может питаться как от usb, так и от батареек. И когда я его первый раз включал в сеть (на батарейках сначала), он вечно засыпал не дожидаясь конца интервью. И я в итоге воткнул его через usb чтобы он вообще не спал. Интервью завершилось успешно, я вставил обратно батарейки, а система всё равно теперь думает что он mains powered. Я правда не знаю на что это влияет, кроме сохранения настроек, но наверное это неправильно. Так вот где я могу прописать что датчик-то от батареек работает, и спать умеет и любит?

И ещё: что это за кнопка такая "Включить счётчик заданий для устройств", доступная в экспертном режиме в управлении сетью? В мануале не нашёл почему-то.
Спасибо.

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

Много всего написано - сложно

Post by PoltoS » 18 Oct 2012 13:29

Много всего написано - сложно отвечать по порядку.

Сразу замечу, что Danfoss Living Connect НЕ МОЖЕТ ретранслировать сигнал, ибо спит всё время для экономии батареек. Т.е. его наличие не меняет доступность других устройств в сети. Кстати он действительно много общается с контролером - это его особенность.

30 метров - это заявленная дальность на открытом пространстве при хорошей антенне с другой стороны. Для примера, прототип нашего Z-Box "бьёт" на метров 50 до такого же Z-Box. Но в большинстве устройств антенна сильно хуже и это надо иметь в виду. Кроме того наличие стен, создающих как препятствия, так и отражения, сильно меняет картину.

Для улучшения дальности рекомендую в середине сети поставить розеточный модуль - он питается от сети и всегда готов маршрутизировать пакеты.

С AeonLabs MultiSensor мы не работали пока - у нас есть только очень старый прототип почти двухгодичной давности. Тогда прошивка его было ооооочень кривой. Потому про репорты подсказать не могу. Что касается типа питания, то оно обычно определяется на момент interview. Может также быть обновлено при получении NIF. Кажется достаточно поднести его ближе и нажать на кнопку (т.к. NIF при нажатии на кнопку не маршрутизируется).

Неверная инфа об устройстве влияет сильно - система будет пытаться доставить пакеты независимо от того, уснуло устройство или нет, ибо сон детектируется по "недоступности" при флага "любит спать". Кроме того это спящее устройство будет ошибочно фигурировать в списке маршрутизаторов у других устройств. А это очень плохо! Так что лучше исключите и пройдите заново интервью. Просто будите устройство, как только оно уснуло.

klirichek
Posts: 39
Joined: 02 Nov 2012 14:53

Кстати, тут неоднократно упоминали роутер Asus RT-N16...

Post by klirichek » 18 Oct 2012 13:29

Вы бы уточнили на будущее (чтобы путаницы не было, а то ведь топик поисковиками находится!).
Роутер - это железка, SoC. А вот про прошивку вы совершенно нигде не упоминали!
insmod и прочее сработает не для любого ядра и прошивки, а для какого-то вполне конкретного!
В "родной" прошивке от производителя сделать что-либо практически невозможно.
В dd-wrt - далеко не всегда (не для всех свистков модули есть в наличии, а собирать эту прошивку самостоятельно - тот ещё головняк).
В open-wrt - практически без проблем. Но! И там прилагаемый в исходниках Makefile не катит и требует модификации.
И так - для _каждой_ железки с usb-портом. Неважно, как называется сама железка. Важно, что там за прошивка!

Кстати... Для OpenWRT пропатченную версию сборки - можно (и нужно ли) куда-нибудь законтрибутить?

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

Так мы в заголовках пишем про

Post by PoltoS » 18 Oct 2012 13:29

Так мы в заголовках пишем про OpenWRT и DD-WRT. Или этого мало? Кончено всё зависит от Вашей прошивки и её кривизны.

Что касается подбора прошивки, то для большинства нормальных роутеров есть один из клонов *WRT. Сборка Z-Connector не представляет больший сложности, если следовать нашим примерам.

Если Вы расшарите готовый образ для популярного роутера, то будет здорово. Но обычно люди роутер прошивают не из-за Z-Wave, а почему-то ещё. И только потом встраивают туда Z-Connector. Потому, не факт, что кто-то захочет перешивать роутер только из-за Z-Cloud... Но всё может быть, будем благодарны за контрибуцию!

klirichek
Posts: 39
Joined: 02 Nov 2012 14:53

Я словил очень похожий "повис" всей сети на прошедшей неделе.

Post by klirichek » 18 Oct 2012 13:29

После примерно трёхсуточного аптайма вдруг вечером позвонила жена и пожаловалась, что свет в детской не выключился по расписанию в 21.00 (в кроне - в 20.00, т.к. сервер перевёлся на зимнее время, а страна - нет). Полез посмотреть - и увидел, что сеть, как у вас, "мертва". "Свисток" непрерывно шлёт кучу пакетов, однако ни один из них не доходит. Лог зафлужен сообщениями, как у вас - Not delivered to recipient due to no ACK from destination и т.д.
Удалённая перезагрузка роутера (свисток на нём) не помогла. Точнее - теперь очередь очистилась, однако стало падать соединение с сервером (что-то вроде socket has gone или подобное - уже в консольном логе z-agent).
Помогло в итоге извлечение и вставка свистка на место (видимо, у него свои мозги - и просто передёрнуть хост не хватает).
В общем - так вот тихонько умерло.
Возник интересный вопрос - а возможно ли программно "сбросить" свисток? (всё же передёргивать его вручную - не лучший вариант. Уже куда-нибудь в потолочную нишу не замуруешь :) ). Ясно, что можно замутить разрыв цепи питания через другой порт, но это уже похоже на "восход солнца вручную" и такой вариант не хочу пока рассматривать.

Свисток AEON LABS, хост - роутер Asus RT-N16 c OpenWRT на борту.

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

Да, с Aeon такое бывало...

Post by PoltoS » 18 Oct 2012 13:29

Да, с Aeon такое бывало... Это зависание мозгов в стике. Его можно попробовать перегрузить нажав в закладке Управление сетью кнопку Перезагрузить чип. Обычно это помогает. Можно даже профилактически делать это по расписанию: ZWaveAPI.SerialAPISoftReset()

klirichek
Posts: 39
Joined: 02 Nov 2012 14:53

А как быть, если уже завис и отпал от облака?

Post by klirichek » 18 Oct 2012 13:29

В Z-Cloud в этом случае зайти (чтобы что-то нажать) уже невозможно.
Есть ли какое нибудь магическое сочетание байтиков, которые можно локально запульнуть в порт свистка, чтобы случился программный сброс?

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

Да, есть. Собственно саму

Post by PoltoS » 18 Oct 2012 13:29

Да, есть. Собственно саму команду сброса. Вы можете включить Debug режим и "подглядеть" её ;)

Только не забудьте порт настроить правильно (см. сурсы z-agen)

Post Reply