Платформа для управления умным домом на базе чипа NRF24L01+

axill
Offline
Зарегистрирован: 05.09.2011

Puhlyaviy пишет:

а я знаю что я не ошибаюсь... и я дал вам достаточно информации для размышления что бы вы сделали правильный вывод...

вы ошибаетесь, если не делать stop - ethernet работает на ура

мне так неловко, что ВЫ соизволяете тратить свое наимудрейшее время, чтобы дать мне почву для самостоятельного размышления, чтобы я не глупел от готовых решений, а приходил к ним сам. Поэтому не отвечайте на мои посты больше ни здест ни в других местах. Общение с Вами закрыто

axill
Offline
Зарегистрирован: 05.09.2011

интересно, если делать синхронизацию часов по радио то есть ли какой-то хитрый алгоритм как учесть время на передачу? У меня разница между часами на гейте и тех которые синхронихзируются с гейтом порядка секунды

toc
Offline
Зарегистрирован: 09.02.2013

axill, вероятно, тут есть ответ на ваш вопрос http://ru.wikipedia.org/wiki/Ntp или sntp

axill
Offline
Зарегистрирован: 05.09.2011

toc пишет:

axill, вероятно, тут есть ответ на ваш вопрос http://ru.wikipedia.org/wiki/Ntp или sntp

врядли логику ntp стоит перекладывать на радио, все таки ethernet от nrf24 отличаются. В простом случае для дома можно проигнорировать ошибку в 0,5-1 секунды. Либо произвести замеры средней ошибки и запрограмировать корректировку, тогда ошибка наверно будет и меньше 0,5сек.

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

 

toc
Offline
Зарегистрирован: 09.02.2013

Вам было интересно я ответил. А так, конечно, можно игнорировать секунду или десять секунд. Ethernet и RF24 в этом контексте ни чем не отличаются. Нужно отправить запрос и получить ответ. А летят ли байтики по меди или по воздуху, и завёрнуты ли они в tcp/ip или во что-то от nrf24l01+ не важно.

В статье sntp как раз сформулировано хорошо ...

В качестве текущего времени устанавливается значение Т3 с поправкой t, которая вычисляется по формуле:
t = ((Т2 – Т1) + (Т3 – Т4)) / 2

где

Т1 Время отправки запроса клиентом
Т2 Время приёма запроса сервером
Т3 Время отправки ответа сервером
Т4 Время приёма ответа клиентом

axill
Offline
Зарегистрирован: 05.09.2011

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

кроме того удалось интегрировать умный дом (zvawe) - по событию "все ушли из дома" умный дом дергает гейт по http, тот в свою очередь по радио сообщает новый статус контроллеру плиты и теперь если окажется, что плита потребляет ток - она будет аварийно обесточена (защита от забытой кастрбли на плите). Все это не самоцель, а отработка решений

следующим шагом надо на гейте поднять web клиента, чтобы уже со стороны гейта дергать умный дом и сообщать ему информацию полученную по радио

axill
Offline
Зарегистрирован: 05.09.2011

позникла еще одна непонятная деталь. Мои три устройства общаются друг с другом, но почему-то иногда гейт получает сообщения адресованные между двумяя другими устройствами. Почему так? использую адресацию NRF24 - указываю 40 битный адрес как при открытии pipe на запись так и при открытии pipe на чтения.

axill
Offline
Зарегистрирован: 05.09.2011

делюсь. добрался до окончательнйо сборки и установке тройки устройств. Для меня это концепт для дальнешего развития умного дома на базе AVR/arduino+NRF24

здесь контроллер плиты (будет стоять за духовкой, управлять силовой нагрузкой духовки и варочной поверхности и измерять потребляемые токи) и контроллер вытяжки (автоматическое управление подсветкой и вентиляцией в зависимости от токов потребления измеренных первым контроллером):

здесь гейт для интеграции с домашней сетью, интернетом и умным домом z-wave

понравилась работа часов - полностью атвономная от ручных операций синхронизация времени. Так лень по всему дому подстраивать часы! :) Гейт раз в сутки синхронизирует свои RTC (DS1307) часы с интернет по NTP, а часики на вытяжке синхронизируют свои RTC (DS1307) с гейтом раз в сутки и один раз после подачи питания.

моя структура ля радио:

// basic network message structure, it is common to all network messages
struct axill_network_message {
	unsigned char	version;			// 01 | version of the format
	unsigned char	data_type;			// 01 | type of data in data[]
	unsigned char	control;			// 01 | is used to be sure that message of right format
	unsigned char	to_addr[3];			// 03 | receiver address
	unsigned char	from_addr[3];		// 03 | transmitter address
	unsigned char	throuth_addr[3];	// 03 | address of a node though which we are sending message
	unsigned char	data[20];			// 20 | data to be send
};

синхронизация по радио сделана так:

- контроллер вытяжки формирует сообщение для гейта в котором в качестве типа сообщения (data_type) указывает мой тип - запрос и подтип (data[0]) - запрос RTC и в поле from_addr прописываются младшие 3 байта самого контроллера вытяжки (старшие два байта по всей сети одинаковы)

- гейт получив такое сообщение формирует сообщение со структурой RTC указав data_type как rtc, адрес для openWritingPipe формируется на базе поля from_addr полученного сообшения

struct axnet_clock {
	unsigned char seconds;
	unsigned char minutes;
	unsigned char hours;
	unsigned char weekday;
	unsigned char day;
	unsigned char month;
	unsigned char year;
	unsigned char year100;
};

структура axnet_clock прописывается на тоже место что data в моем сообщении, т.е. в зависимости от data_type я интерпретирую массив data[20] по разному. В самом простом случае фиксирую "договоренность" между устройствами по поводу того какой элемент массива за что отвечает. В более сложном случае как с часами к data[20] я обращаюсь как к структуре типа (struct axnet_clock)

mihart пока прошивка по старинке с проводами :) жду новостей

axill
Offline
Зарегистрирован: 05.09.2011

облом пока выходит - отлаженные на столе устройства установленные по своим местам плохо по радио общаеютм, черещ раз ((

mitekg
Offline
Зарегистрирован: 14.05.2013

а до этого стресс-тест что показал? все работало?

у меня просто правило: собрал чени-нить, после этого оставляю на несколько дней на стенде, и гоняю в хвост и гриву

axill
Offline
Зарегистрирован: 05.09.2011

mitekg пишет:

а до этого стресс-тест что показал? все работало?

у меня просто правило: собрал чени-нить, после этого оставляю на несколько дней на стенде, и гоняю в хвост и гриву

на стенде (на столе) гонял долго

сказывается видимо экранивроание и возможно помехи от силовых цепей, на стенде не было возможности полноценную нагрузку подключить - для одного устройства это две светодиодные лампы и вентилятор (вятяжка) для второго 2,5квт духовки + 5,5квт варочная поверхность.

корпус вытяжки из нержавейки - сушественное экранирование

сообщения теперь пролетают как придется - то густо то пусто, то серия прилетает то несколько серий не долетают ((

mitekg
Offline
Зарегистрирован: 14.05.2013

а если заменить на модули с внешней антенной? или поставить дополнительный релей?

axill
Offline
Зарегистрирован: 05.09.2011

mitekg пишет:

а если заменить на модули с внешней антенной? или поставить дополнительный релей?

усложнение сильное - по сути между устройствами всего то два метра - одно внизу за духовкой второе наверху встроено в вытяжку

вот что значит грамотная проектировка ) у меня как-то не очень вышло - всплыли косяки по радио, одна релюшка китацская залипает (не сталкивался раньше с таким - щелбаном приводится в норму а потом снова залипает), семисторные ключи для управдения нагрузкой греются больше предполагаемого, вентиялятор принудительного охлаждения мелковат отказался )) По кругу целый список доработок

Зато часики на вытяжке получились знатные - с ежедневной синхронизацией с интернет) благо на гейте я сразу поставил радио с усилителем мощности и приема - из другой комнаты синхронизация нормально проходит

я вот пока не потерял надежду как-то решить програмно, все-таки сообщения доходят. Делал ли кто замер зависимости дальности связи от битрейта? стоит ли его понижать? (сейчас 1мбит). Стоит ли играться с каналами? Все таки 2,4ггц очень зашумлен wifi-ем. Помнится был момент когда я не понял почему у меня в квартире пропал wifi -  потом случайно заметил, что стоит выключить радионяню и wifi работает как раньше)) Разнес каналы.

Еще пытаюст понять где у maniacbug в RF24 возсожность проверить статус доставки сообщения? В библиотеке предусмотрена долбежка до 15 попыток, а я мог бы поверх накрутить еще пару десятков, только не вижу такого метода. В другой библиотеке для nrf24 есть такая функция, значит в железе возможность предусмотрена

axill
Offline
Зарегистрирован: 05.09.2011

объективно сложно оценить, но субъективно ситуация улучшилась после того как я снизил скорость до 250кбит и проверку четности сделал по 8 битам

нашел, что в библиотеке radio.write возвращает статус доставки сообщения (0 - ошибка, 1 - успех)

почему-то у меня возвращается всегда ошибка даже тогда когда сообщение доставляется успешно. Почему так? Нужно ли какие-то специальные настройки делать, чтобы этот механизм работал?

непонятно....

 

toc
Offline
Зарегистрирован: 09.02.2013

с настройками по умолчанию работает. Например в примере http://maniacbug.github.io/RF24/pingpair_8pde-example.html

выводится сообщение  Now sending ... ok ...

тут "ок" означает, что этот модуль отправил пакет другому модулю и получил от нeго квитанцию (acknowlegment), то есть отправка выполнена успешно.

axill
Offline
Зарегистрирован: 05.09.2011

я смотрю уже не на стенде, а в реальных условиях

можно конечно предположить, что условия передачи настолько плохие, что квитанция не доходит даже если дошло сообщение

a5021
Offline
Зарегистрирован: 07.07.2013

axill пишет:

моя структура ля радио:

// basic network message structure, it is common to all network messages
struct axill_network_message {
	unsigned char	version;			// 01 | version of the format
	unsigned char	data_type;			// 01 | type of data in data[]
	unsigned char	control;			// 01 | is used to be sure that message of right format
	unsigned char	to_addr[3];			// 03 | receiver address
	unsigned char	from_addr[3];		// 03 | transmitter address
	unsigned char	throuth_addr[3];	// 03 | address of a node though which we are sending message
	unsigned char	data[20];			// 20 | data to be send
};

 

Не сочтите, что смеюсь или цепляюсь, но комментарии хромают на обе ноги. Определенно, что есть смысл писать их на английском, но даже я со своими, более чем скромными, языковыми скиллами вижу, что фразы построенные по правилам русского языка, но посредством английских слов, выглядят презабавнейше.  "is used to be sure that message of right format"  в обратном переводе будет "привык полагаться, что сообщение из формата прав". Именно так его воспримут англоговорящие. Кто привык полагаться и где находится этот "формат прав", совсем им будет не понятно. :) Наверное было бы правильно написать что-то навроде: whether a message has valid structure  or not.

axill
Offline
Зарегистрирован: 05.09.2011

Смейтесь сколько хотите)

Сожалею, что вы не понимаете мой английский. Насчет иностранцев не переживайте, у меня более чем 14 летний опыт общения на разговорном и письменном английским как с носителями языка с обоих континентов так и с иностранцами не носителями языка. 
Проблем с пониманием никогда не было.
 
если что то не понятно из моих сообщений - всегда готов дать разъяснения на русском
конкретно это поле на которое вы сослались я пока не использую, но планирую в нем держать что-то типо контрольной суммы, чтобы проверять сообщение на "достоверность" или просто на то что оно пришли в нужном формате
axill
Offline
Зарегистрирован: 05.09.2011

mihart дошли руки дл LE01? похоже вот один из програматоров для этого чипа http://dx.com/p/nrf24le1-downloader-mpro-programmer-for-51-avr-stc-3-3v-...

mihart
Offline
Зарегистрирован: 14.05.2013

axill пишет:

mihart дошли руки дл LE01?

Привет. Когда мне месяц назад пришли L01 у меня руки дошли развести платку и попробовать их запустить. Не заработали. Заказал себе уже распаянные модули, аналогичные LE1 с программатором, платой тестирования и т.д.

Жду модули.

Но в любом случае, ни на что пока времени нет, у меня переезд. Мне сейчас актуальнее ремонт, установка перегородок, утепление лоджий и т.д. У меня нет мастерской как было на прежней квартире, угла даже попаять нет. Через месяц надеюсь оборудую комнату, апдейты будут.

Пока что после просмотра твоей статьи понял, что мне СОВЕРШЕННО НЕОБХОДИМ 3d принтер, который и заказал. Он успел придти, уже кучу всяких крепежек жене распечатал.

Еще по сути LE1 восстановил контакт со специалистом, который разрабатывал алгоритм общения охранных систем SOBR. Они работают на этих чипах. У него все по часам работает, даже если обложить метку ключами. Он в Австралии сейчас, пересечься по времени трудно, но одно точно - скорость нужно выбирать минимальную!

Пока все, будут новости, напишу.

axill
Offline
Зарегистрирован: 05.09.2011

mihart перезд важнее! ) желаю чтобы он сопровождался только приятными хлопотами

пришли ссылку на то что заказал для  LE1. Принтер какоц выбрал?

Минимальная скорость это 250кбит, я сам на ней остановился - с ней у меня более менее все работает в моем проекте

Кстати рекомендую Solidworks для разработки корпусов для печати. Могу подстказать если что, руку на нем уже хорошо набил

axill
Offline
Зарегистрирован: 05.09.2011

ух.... прикрутил к своей библиотеке механизм управления параметрами по радио с сохранением в EEPROM. Пока сделал только метод удаленного изменения значений, позже прикручу удаленный просмотр списка параметров и индивидуальных значений. Параметры удаленно адресуются 8 символьным именем, а в программе самого устройства - как обычные переменные.

Сначала в программе делается объявление параметров:

AXNET_EEPARAM_UINT8(disp_clk, 10)			// сек, вермя отображения часов
AXNET_EEPARAM_UINT8(disp_dat, 2)			// сек, время отображения даты и года
AXNET_EEPARAM_UINT8(disp_par, 2)			// сек, время отображения значений с контролера плиты в секундах

const struct axnet_eeparams axnet_ee_params_array [] PROGMEM = {
	AXNET_EEPARAM_LIST_UINT8(disp_clk),
	AXNET_EEPARAM_LIST_UINT8(disp_dat),
	AXNET_EEPARAM_LIST_UINT8(disp_par),
};

Для удобства написал макросы, внутри они раскрываются в определения переменных с атрибутом EEMEM, обычной переменной для использования и строки с именем переменной. Получается само описывающая структура данных, сохраняемая в память программ (PROGMEM). Структура описывает количество переменных, их тип, название, адреса хранения в EEPROM и в RAM. Легко настроил 10 параметров, для простоты тут указываю 3. Пока реализовал один тип - uint8, но все расчитано на расширение, будут uint16, uint32 и char[8].

в начале программы делаю инициализацию, при ней переменные в памяти заполняются значениями из eeprom:

	axnet_eeprom_init(axnet_ee_params_array, sizeof(axnet_ee_params_array) / sizeof(struct axnet_eeparams));

Далее в программе вызывается моя функция:

		// проверяем наличие сообщений
		switch(axnet_update()) {
		axnet_message message; // не было сообщений
		case axnet_update_none:
			break;
		case axnet_update_done: // автоматически обработаны известные типы сообщений
                                                          // в том числе изменение параметров
.....
			break;
		case axnet_update_ready:  // обрабытываю специфичные сообщения
			axnet_copy_last_message(&message);
			switch(message.data_type) {
				break;
			case axnet_update_donerr:
				status_blue_count = 3;
				break;
			default:
				// непонятный тип сообщений
			}
			break;
			default:
				// непонятный статус axnet_update
		}

На гейте, который подключен к ethernet реализован такого типа запрос (пример) - http://<ip>/dev/010101/eeparam/setbyname/disp_dat/2/

После изменения по радио автоматически меняется значение как в EEPROM так и в RAM - программа тут же начинает работать с новым значением

это конечно не програмирование по радио, но позволяет подстраивать параметры логики без перепрограмирования. На финальной отладке как правило именно эти параметры и нужно настраивать под удобство использования. Существенно снижается потребность в удаленной прошивке.

Кстати таким образом можно делать домашние устройства без органов управления! Никаких кнопок, клавиатур. Все упрощается. Без фанатизма конечно, там где это удобно - все можно настраивать удаленно, через WEB или еще как

axill
Offline
Зарегистрирован: 05.09.2011

описал свой завершенный мини проект http://radiokot.ru/konkurs/29/

axill
Offline
Зарегистрирован: 05.09.2011

для отработки концепта сделал простые часики без органов управления - время автоматически берется из сети, а все настройки из браузера. Сделано на atmega8 - скетч около 6кб. Динамическая индикация сделана с програмным ШИМом - яркость меняется в зависимости от освещенности

http://www.youtube.com/watch?v=uzudtPO5xok

ZiB
Offline
Зарегистрирован: 10.09.2013

Всем, привет!

Отличные часики получились!

Подумываю над сетью из устройств на nrf24l01. Нашел данную ветку. Прочитал всю за несколько вечеров. Вначале проскакивали идеи о передачи данных от одной точке к другой (мэш сети, или что-то подобное), если получатель вне зоны видимости источника. Но так и не понял был ли реализован в железе данный алгоритм ?

П.С. К сожалению я не использую arduino, люблю свои железки. Последнии три года использую STM8, STM32.

axill
Offline
Зарегистрирован: 05.09.2011

ZiB пишет:

Подумываю над сетью из устройств на nrf24l01. Нашел данную ветку. Прочитал всю за несколько вечеров. Вначале проскакивали идеи о передачи данных от одной точке к другой (мэш сети, или что-то подобное), если получатель вне зоны видимости источника. Но так и не понял был ли реализован в железе данный алгоритм ?

П.С. К сожалению я не использую arduino, люблю свои железки. Последнии три года использую STM8, STM32.

привет! Я тоже предпочитаю делать устройства без ардуино, но так исторически сложилось, что я начал с atmel и сейчас мне проще и дальше на нем делать, чем изучать еще и STM, хотя по-моему STM явно одновременно и круче и дешевле. Ардуина бывает хороша, чтобы с чего-то начать или опробовать идею. Моей гейт в интернет на ардуине - убил бы кучу времени собирать библиотеки под wiznet и под tft для голого МК.

STM - вполне реально делать на нем, но нужно будет повозится с настройкой библиотек. В сети есть ряд готовых библиотек, но надо быть готовым к "докручиванию" и доведению до ума.

Полноценной реализации мэш сети нет, по крайней мере в открытом доступе. Есть некое подобие сделанное maniacbug и увы только для ардуины. Но логика его библиотеки достаточно проста, чтобы ее переложить на другое МК.

Я решил сделать упор сначала на функциональность - на реальные работающие устройства. А потом можно уже и прикрутить фишки для сети. В крайнем случае есть модули с усилителем - их можно ставить на большом удалении без всякой мэш сети

ZiB
Offline
Зарегистрирован: 10.09.2013

Спасибо за развернутый ответ.

Мне был интересен именно алгоитм работы мэш (или чего-то подобного), я читал записи maniacbug, но как я понял у него организованно в виде дерева.

Была ещё ссылка http://www.insidegadgets.com/2013/06/09/nrf24-multi-network-allowing-for-255-addresses/ но что-то я не совсем понял, в чем там фишка. С английским не очень у меня.

Готовая реализация мне не особо интересна. Это хобби поэтому приятнее написать самому.

В наличии парочка модулей есть. Заказал ещё 10 по баксу за штуку. Модули только включал для проверки связи, плотно не работал.

Есть шилд на 5100, тут решил купить готовый, всего 300 руб с ебея, а у нас только сами чипы по 300 руб :(

Я сам начинал с АВР, тогда ещё с 2313 :) С появлением чего-то нового и интересного, при наличии времени, проявляю интерес, так было и с стм8, а потом и стм32. Понравились. Так на них и остался. У меня задачи не очень сложные, поэтому их слихвой хватает. С пол года назад была попытка вернутся на одном из устройств на АВР, но не смог, уж очень быстро привыкаешь к хорошему (ПДП (DMA), приоритеты прерываний, "авто" вложенность прерываний, единое адресное пространство, запуск кода из ОЗУ, больше фарша за ту же цену, 12 бит АЦП-ЦАП, "единая" периферия для стм 8 и стм32).

Познакомился с таким же любителем, при клонировании его устройства. Стали общатся, потом решили делать устройство совместно http://ziblog.ru/category/proektyi/zichip, http://www.forum.getchip.net/viewtopic.php?f=8&t=314 правда за год это устройство разрослось сильно и получается не совсем то :) Почему-то изначально решили использовать "провода", наверное для простоты. Сейчас вот я думаю как добавить радиоканал. Ну и более плотнее начал думать, что же я хочу реализовать дома. Скоро зима времени больше будет на хобби выделятся, поэтому начал активизироваться и набирать шурушки для опытов :)

Хорошо. Ещё раз спасибо за ответ. Буду следить за темой и вашими устройствами.

axill
Offline
Зарегистрирован: 05.09.2011

Спасибо за интерес. Всегда интересно общаться с людьми имеющими общие интересы) Сайт по ссылке смотрел на днях - очень интересный блог, но вот логику этой проводно-инфракрасной сети не воспринял, мне показалось не перспективен такой выбор каналов связи. У меня дома промышленного изготовления умный дом на zwave - по-моему идеальный вариант - легко разворачивать автоматизацию без капиатльных ремонтов, но вот в чем ограничение zwave - есть только такие возможности какие готовые устройства можно купить. Все остальное или громоздко и дорого или вообще не возможно.

вот тут мне и подходят самодельные устройства на МК с радиоканалом. Уже в отладке контроллер на водяные стояки - счет расхода, интеграция с системой протечки и замер температуры (для детекции отключения горячей воды).

Я долго созревал (год наверно) изучая не торопясь тему и самое сложное концептуально для меня было запустить гейт из радио сети в сеть компьютерную - без этого не возможна интеграция с действцующим умным домом. Сейчас понимание сложилось и пусть оно еще не окончательное (не все нужные решения отработаны), но что важно - перешло в практическую плоскость. От концептов перешел в реально работающим устройствам и это самое интересное. Можно как горячие пирожки печь устройства с последовательными доработками гейта. Было бы время и силы.

axill
Offline
Зарегистрирован: 05.09.2011

сегодня опублликовали мою статью, там немного подробнее про часики http://radiokot.ru/konkurs/42/

toc
Offline
Зарегистрирован: 09.02.2013

axill, пожалуйста, покажите начинку axnet_rtc_request_sync()

axill
Offline
Зарегистрирован: 05.09.2011

там проще простого ))

void axnet_rtc_request_sync() {
	uint8_t request_type = axnet_request_rtc;
	axnet_send_togateway(axnet_datatype_request, &request_type, sizeof(request_type));
}

функция axnet_send_togateway отправляет сообщение с типом axnet_datatype_request и внутри сообщения передает подтип axnet_request_rtc

общую структуру я приводил уже, вот еще раз:

struct axill_network_message {
	unsigned char	version;			// 01 | version of the format
	unsigned char	data_type;			// 01 | type of data in data[]
	unsigned char	control;			// 01 | is used to be sure that message of right format
	unsigned char	to_addr[3];			// 03 | receiver address
	unsigned char	from_addr[3];		// 03 | transmitter address
	unsigned char	throuth_addr[3];	// 03 | address of a node though which we are sending message
	unsigned char	data[20];			// 20 | data to be send
};

вот еще кусок кода:


uint8_t axnet_send(uint64_t to_addr, uint8_t data_type, void* message, uint8_t size) {
	axnet_message msg;
	uint8_t res;
	
	// copy data to be send into cover
	msg.data_type		= data_type;
	msg.version			= 0x01;
	_axnet_address_40bit_to_24bitarray(msg.from_addr, _axnet_myaddress);		// setting 24bit from address
	_axnet_address_40bit_to_24bitarray(msg.to_addr, to_addr);					// setting 24bit to address
	memcpy(&msg.data, message, (size<20)?size:20);								// copy data to be send

#ifdef AXNET_RADIO_SMALL_DRIVER
		uint64_t txaddress = _axnet_address_24bit_to_40bit(to_addr);
		uint8_t temp;
		
	    nrf24_tx_address((uint8_t*)&txaddress);
		/* Automatically goes to TX mode */
		nrf24_send((uint8_t*)&msg);

		/* Wait for transmission to end */
		while(nrf24_isSending());

		/* Make analysis on last tranmission attempt */
		temp = nrf24_lastMessageStatus();

		res = 0;
		if(temp == NRF24_TRANSMISSON_OK)
		{
			res = 1;
		}
		else if(temp == NRF24_MESSAGE_LOST)
		{
			res = 0;
		}
		nrf24_powerUpRx();
		_delay_ms(20);
#else	
	nrf24_stopListening();
	nrf24_openWritingPipe(_axnet_address_24bit_to_40bit(to_addr));				// open writing pipe
	res = nrf24_write(&msg, AXILL_NETWORK_PAYLOADSIZE);							// actual blocking send
	nrf24_startListening();														// return back to listening mode
#endif
	
	return res;
}
uint8_t axnet_send_togateway(uint8_t data_type, void* message, uint8_t size) {
	return axnet_send(axnet_gateway_address(), data_type, message, size);
}

#endif

в целом суть такая - устройство отправляет сообщение гейту - "какое сейчас правильное время?", гейт получив такое сообщение берет из поля from_addr адрес спрашивающего и формирует ответное сообщение на этот адрес, сообщение типа axnet_datatype_clock со структурой (на месте data[20]):

struct axnet_msg_clock {
	unsigned char seconds;
	unsigned char minutes;
	unsigned char hours;
	unsigned char weekday;
	unsigned char day;
	unsigned char month;
	unsigned char year;
	unsigned char year100;
};

 

toc
Offline
Зарегистрирован: 09.02.2013

спс. я надеялся , что вы применили #155

axill
Offline
Зарегистрирован: 05.09.2011

toc пишет:

спс. я надеялся , что вы применили #155

это будет fine tuning, т.е. когда основные задачи будут решенф...когда нибудь

займусь рюшечками типа этой

сейчас ниразу ни актуально. Более того - алгоритм #155 расчитан на то, что мы имеет точность хода часов сотые или тысячные доли секунды. На МК иметь часы с такой точностью затратно, таже известная всем DS1307 имеет точность хода секунду и у нее нет даже возможности синхронизировать начало этой секунды, так что не актуально иметь точность выще полусекунды, а такая обеспечивается и без наворотов

mihart
Offline
Зарегистрирован: 14.05.2013

axill пишет:

пришли ссылку на то что заказал для  LE1. Принтер какоц выбрал?

На следующей неделе возвращаюсь из командировки и заберу все посылки, две пришли, две на пути из Москвы:

Для LE1 я взял:

Непосредственно сами модули: http://www.aliexpress.com/item/Freeshipping-NRF24LE1-wireless-transmissi...

Программатор к ним: http://www.aliexpress.com/item/Freeshipping-1pcs-lot-NRF24LE1-downloader...

Пару тестовых плат, одну такую, я так понимаю, это реплика оригинальной NRF и с ней будет работать Nordic Software: http://www.aliexpress.com/item/HOT-SALE-1pcx-NRF24LE1-wireless-module-da...

И взял вот такую, чтобы визуально отлаживать модули:  http://www.aliexpress.com/item/Wireless-Module-NRF24LE1-special-test-mod...

Так как у меня умный дом еще в самом начале пути, я задумался о том, как управлять освещением, посчитал, что обычные замыкающие реле мне не очень подходят, потому как если их подключить как нормально разомкнутые, то всегда когда я дома, они будут под напряжением - мне не нравится. Если же их подключить как нормально замкнутые, то они будут под напряжением, когда меня дома нет, что еще хуже.

Поискал и нашел вот такие реле: http://www.aliexpress.com/item/HFD2-005-ML2-D-new-authentic-hongfa-relay...

По даташиту для управления светом под 220в они подходят, для остальных нагрузок лучше брать помощнее. Их плюс в том, что они не требуют питания во время работы, только во время переключения. Удобно при построении умного дома. Они дороже обычных реле, но стоимость остается смешной.

 

Принтер я себе взял самый простой Prusa Mendel: http://www.printers3d.ru/index.php?com=autoshop&elemId=119#mcom

Печатает отлично, но поначалу показался капризным, вредничал по оси Z, первые большие детали отклеивались по углам. Почитал форумы, решил проблемы, дальше печатал как по маслу. Но тем, кто не хочет с такими капризами связываться, конечно лучше покупать чтото фабричное, тем более по цене вполне доступны.

 

В общем, планирую на следующей неделе все это добро опробовать. В сети есть прошивка бута для LE1 с возможностью дистанционной прошивки. Глядишь и велосипед изобретать не придется.

axill
Offline
Зарегистрирован: 05.09.2011

уверен опасние применять обычное реле напрасно. мои промышленные выклбчатели zwave работают с обычным реле. куда важнее то от чего они запитаны. Если от высокоэффективного импульсного преобразователя - нет проблем

что касается поляризованных - что то я не видел из массового применения

как они себя поведут?

как вариант еще использовать твердотельные реле

что касается 3д принтера - мой намного дороже, но такой же капризный

mihart
Offline
Зарегистрирован: 14.05.2013

А как обычные реле в zwave подключены? как нормально-замкнутые?

Почему поляризованные? Они не такие) Обычное реле при включении притягивает контакт, при пропадании напряжения он возвращается на место. В тех, что купил я принцип тот же, но устроены они так, что в переключенном состоянии они фиксируются. То есть в плане безопасности они ничем не отличаются от обычных. От твердотельных - да отличаются.

axill
Offline
Зарегистрирован: 05.09.2011

mihart реле которые сохраняют состояние после снятия питания называются поляризованные)

не поляризованные реле востанавливают нормальное состояние если убрать питание. В выключателях z-wave от любого производителя стоят реле нормально разомкнутые

насчет безопасности - смотря что называтьбезопасностью. Почему считаешь, что нормально разомкнутое реле не безопасно? Если ставить поляризованное надо уж тогда брать брендовые реле, конструкция поляризованного реле сложнее, кто знает как китайское будет работать - будет ли оно менять состояние так как ты будешь предполагать?

mihart
Offline
Зарегистрирован: 14.05.2013

axill пишет:

Если от высокоэффективного импульсного преобразователя - нет проблем

Что-нибудь подбирали из китая? Посоветовать можете?

axill
Offline
Зарегистрирован: 05.09.2011

mihart пишет:

Что-нибудь подбирали из китая? Посоветовать можете?

могу. Рассупыху покупал как раз в китае, но блок питания паял сам - бестрансфорсматорная конструкция на базе микросхем lnk302/lnk304/lnk306. По-моему самое компактное и эффективное решение для случаев когда не нужна гальваническая развязка с розеткой. В моих промышленных выключателях z-wave как раз такая же микросхема. В трех моих устройствах выше в двух устройствах именно такой блок питания. Схема прямо из даташита:

Причем настроить можно сразу на 5в или 3.3в чтобы не ставить дополнительных стабилизаторов

Блоки с гальванической развязкой самые удачные мне попались у этого продавца http://www.aliexpress.com/snapshot/258191915.html. Можно взять в корпусе или без него, но все равно самые компактные можно собрать именно на LNK

mihart
Offline
Зарегистрирован: 14.05.2013

Спасибо, именно то, что искал! И где-то натыкался на эту схему, но найти не мог. Меня она смутила токами, 120мА вроде немного. Хватает? или при напряжении в 5в ток потребления может быть больше?

А за поставщика на aliexpress спасибо, я у него оказывается и заказал десяток таких модулей: http://www.aliexpress.com/store/product/DC-5V-700mA-Constant-Pressure-Sw...

3см*2см*1,8см куда уж компактней для трансформаторной схемы.

axill
Offline
Зарегистрирован: 05.09.2011

Ты смотри сам даташит на lnk. Если нужно могу здесь выложить. 120ма это lnk302. Lnk306 дает до 360ма. Но на самом деле 120 это тоже не мало. Для компактного реле с микроконтроллером может вполне хватить. А уж lnk306 хватит и подавно. Я покупал именно 306 как более универсальные так как по штучно их покупать не выгодно, выгодно брать 20-50 штук

ZiB
Offline
Зарегистрирован: 10.09.2013

axill пишет:

Блоки с гальванической развязкой самые удачные мне попались у этого продавца http://www.aliexpress.com/snapshot/258191915.html. Можно взять в корпусе или без него, но все равно самые компактные можно собрать именно на LNK

А можно ссылочку обновить, а то текущая не работает :(

mihart
Offline
Зарегистрирован: 14.05.2013
ZiB
Offline
Зарегистрирован: 10.09.2013

Спасибо! Не заметил сразу в конце ссылки точку :)

mitekg
Offline
Зарегистрирован: 14.05.2013

2axill: если вспомнить с чего начинался этот проект, то думаю будет интересно http://code.mios.com/trac/mios_arduino-sensor

оч. все клево работает вместе с VERA. Осталось докрутить rf24Network и все!

axill
Offline
Зарегистрирован: 05.09.2011

Спасибо! Суперская ссылка на суперскую идею. Я сам сейчас докручиваю связку с vera3 правда она у меня через tcp/ip

Несколько смущает вариант с подключением по usb

mitekg
Offline
Зарегистрирован: 14.05.2013

Вот и я также делал через eth, но зачел лишнее звено, если можно без него? Работает все, кстати, оч не плохо.

Если он еще докрутит туда поддержку variablecontainer, то будет супер.

по usb тебя что смущает?

axill
Offline
Зарегистрирован: 05.09.2011

usb смущает тем, что это тесная интеграция с верой - сбой в ардуино может завесить веру, если у плагина ардуино нет связи с ардуино гейтом вера начинает ругаться и тратить ресурсы как минимум на ошибки в логах, а может и хуже

с tcp/ip не так - нет запросов - нет проблемы

mitekg
Offline
Зарегистрирован: 14.05.2013

были теже мысли. сделал проверку: замерял cpu usage при подключеном модуле, отключенном, и при удаленном. Разницы не увидел. Других рисков не вижу.

 

axill
Offline
Зарегистрирован: 05.09.2011

ну остается еще неудобство)) при добавлении или исправлении устройств веру таскаю по квартире - тут получится награмождение

но в целом идея классная у парня, главное все очень просто и изящно. Но опять де выходит модуль на arduino gateway надо не от нано запитывать а отдельно. У тебя сейчас от нано работает? Удалось решить проблему с потерей сообщений?