MySensors

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#1

Сообщение Mikhail72 » 31.10.2017{, 13:54}

В этой теме можно скачать блоки для передачи данных по протоколу MySensors, а также библиотеку последнего релиза в zip или с официальной странички на GitHub
Удалил привязку библиотеки к блокам, т.к. программа жутко тормозит и вылетает, а также проекты весят очень много поэтому невозможно добавить на форум. После установки блоков необходимо в Arduino IDE подключить библиотеку скачанную по ссылкам.
Как подключить библиотекуПоказать
Создаёте проект в FLProg, нажимаете скомпилировать проект, откроется Arduino IDE, в верхнем меню нажимаете Скетч -> Подключить библиотеку -> Добавить .Zip библиотеку и указываете скаченный ранее архив с библиотекой, компилируете и загружаете проект в вашу ардуино.
В теме просьба сообщать об ошибках работы блоков, вести обсуждение и задавать вопросы по их работе.
Подробная информация по проекту:
mysensors.org (Eng)
mysensors.ru (Rus)
Группа в Skype. В ней обсуждаются общие вопросы по MySensors и программирование на Си
Для обсуждения по вопросам программирования на FBD создал вторую группу.

Если я долго не отвечаю, найти меня можно в группах Skype
Последний раз редактировалось Mikhail72 10.02.2018{, 14:51}, всего редактировалось 4 раза.

vovka1973
Капитан
Сообщения: 861
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 29
Откуда: kazahstan

MySensors

#2

Сообщение vovka1973 » 31.10.2017{, 17:35}

я не пойму что они дают если я использую блоки для nrf2401 эти для чего ,не могли бы вы пример с ними и датчиками nrf2401?
Изображение

sillver
Сержант
Сообщения: 194
Зарегистрирован: 27.04.2017{, 12:04}
Репутация: 3
Откуда: УКРАИНА
Имя: Вячеслав

MySensors

#3

Сообщение sillver » 31.10.2017{, 20:07}

поддерживаю вопрос!

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#4

Сообщение Mikhail72 » 31.10.2017{, 20:22}

MySensors используется в создании интернет вещей и систем умного дома. Поэтому при использовании этого протокола подразумевается что у вас есть сервер(контроллер) и шлюз, который соединяет радио сеть с контроллером, а также выступает маршрутизатором радиообмена. У MySensors есть много плюсов, из ключевых: Обновление прошивки ардуино по воздуху и подтверждение доставки сообщения.
Если вы будете писать конкретные задачи, что интересует, я постараюсь ответить созданием проекта.
Самый простой пример два устройства:
Кнопка
7382038.jpg
и Реле
9923922.jpg
При нажатии на кнопку будет происходить включение и выключение реле. В данном примере предполагается передача данных с кнопки на реле. В случае пропадания питания узла-реле и при его за/перезагрузке, узел-реле будет запрашивать статус у кнопки и если статус включено, то реле включится. Если реле включено, то при следующем нажатии кнопки оно выключится, если данные до реле по каким то причинам не дошли, то статус не измениться на противоположный, т.е. следующей командой при нажатии на кнопку будет выключение.

Проект кнопкиПроект реле

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

P.S. Читайте описание блоков, т.к. пока без вмешательства в скетч ArduinoIDE не обойтись, необходимо соблюдать порядок в декларации констант и переменных, подключение библиотек , а также объединять данные с одноимённых функций в одну.
Последний раз редактировалось Mikhail72 10.02.2018{, 15:01}, всего редактировалось 3 раза.

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#5

Сообщение Mikhail72 » 31.10.2017{, 23:27}

То что подразумевается под вмешательством, после компиляции мы имеем следующее:

начало скетча
6642030.jpg
конец скетча
9801577.jpg
После правки должно выглядеть так:
начало скетча
1003159.jpg
Конец скетча
9411046.jpg
Т.е. в скетче должна быть одна функция void presentation() и одна void receive(const MyMessage &message)

P.S. Блоки создавал для себя, чтобы можно было быстро и просто создавать мульти ноды(узлы) с несколькими(более 2-х) сенсорами на борту и решил поделиться с сообществом flprog, т.к. простые ноды есть в примерах приведённых на сайтах в первом сообщении, т.е. берёте ардуино, подключаете нрф24 получается нода(узел), подключаете к нему dht22, заливаете скетч примера и у вас сенсор температуры и влажности, который с указанным интервалом отсылает данные на ваш контроллер.

Добавлено (31.10.2017, 23:27)
---------------------------------------------
Обязательно для прочтения начало, а также тут и тут на родном языке.
Последний раз редактировалось Mikhail72 10.02.2018{, 14:57}, всего редактировалось 2 раза.

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#6

Сообщение Mikhail72 » 02.11.2017{, 13:01}

К сообществу MySensors обратится человек за помощью в создании ноды, измеряющей ток в цепи электропитания, для осуществления обратной связи при включении медиа системы с системы умного дома. В качестве датчика выступает GY712.

Выглядит это так
8863971.jpg
Проект
Последний раз редактировалось Mikhail72 10.02.2018{, 15:02}, всего редактировалось 3 раза.

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#7

Сообщение Mikhail72 » 05.11.2017{, 15:23}

Решил поделится проектом созданным мной и для своих нужд, ну и так сказать для понимания других.
Это датчик температуры и влажности почвы, который у меня стоял всё лето на огороде примерно в метрах 50 от дома и отсылал данные каждые 15 мин.
Выглядит это так, только графитовые стержни поломались, снял его сегодня с замёрзшей земли.

СпойлерПоказать
 
5112249.jpg
9657149.jpg
А вот так он отображается на сервере MajorDoMo


СпойлерПоказать
2265291.jpg
А это для тех кто говорит, что nRF24 фигня, а с усилителем которые так вообще долго не живут.

СпойлерПоказать
5142695.jpg
В этой таблице видно, что дата последней перезагрузки этого узла 3 июня, а последние данные она прислала сегодня, 5 ноября, т.е. она проработала 5 месяцев и её оставшийся заряд батареи в 71%, отображён на предыдущей картинке.
Проект
0942655.jpg
И еще для ознакомления, как можно использовать MySensors, тоже мой проект.
Последний раз редактировалось Mikhail72 10.02.2018{, 15:08}, всего редактировалось 2 раза.

vovka1973
Капитан
Сообщения: 861
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 29
Откуда: kazahstan

MySensors

#8

Сообщение vovka1973 » 05.11.2017{, 15:52}

Mikhail72 писал(а):протокола подразумевается что у вас есть сервер(контроллер)
извените за мою тупость .спрошу еще раз если я использую ваши блоки то блоки для нрф 2401 не нужны в проекте ? на ссылки куда посылаете ничего не понял.
Изображение

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#9

Сообщение Mikhail72 » 05.11.2017{, 16:00}

vovka1973 писал(а):блоки для нрф 2401 не нужны
Нет, я старался сделать блоки, по принципу блоков MQTT от Слимпера.
Т.е. вы данные которые хотите отправить указываете на вход data_send и по переднему фронту на send они отправляются, туда чей ID указан в параметре destination в параметрах блока, по умолчанию 0 -  это шлюз(гейт).

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

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#10

Сообщение Mikhail72 » 05.11.2017{, 16:14}

А вот так выглядит мой EthernetGateway(гейт), который работает 24/7 с января-февраля 2017 года.

СпойлерПоказать
 
3715517.jpg
3210145.jpg
 
Последний раз редактировалось Mikhail72 10.02.2018{, 15:09}, всего редактировалось 1 раз.

vovka1973
Капитан
Сообщения: 861
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 29
Откуда: kazahstan

MySensors

#11

Сообщение vovka1973 » 05.11.2017{, 16:35}

Mikhail72 писал(а):Нет, я старался сделать блоки, по принципу блоков MQTT от Слимпера.
тогда как или чем приведу настройку нрф привязка к пинам ?
Изображение

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#12

Сообщение Mikhail72 » 05.11.2017{, 16:44}

vovka1973 писал(а):настройку нрф привязка к пинам
Вы должны подключить nrf24 по схеме остальное сделает библиотека MySensors.
Последний раз редактировалось Mikhail72 10.02.2018{, 15:11}, всего редактировалось 1 раз.

vovka1973
Капитан
Сообщения: 861
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 29
Откуда: kazahstan

MySensors

#13

Сообщение vovka1973 » 05.11.2017{, 16:50}

Mikhail72 писал(а):по схеме остальное сделает
тоесть как в схеме привязка к пинам и менять нельзя я правильно понял
буду разбираться .вопрос такой приемущество есть какое нибуль в отличии блоков от нрф ,я иммею ввиду занимаемую память в микроконтроллере, быстродействие, извените за назойливость
Последний раз редактировалось vovka1973 05.11.2017{, 16:58}, всего редактировалось 1 раз.
Изображение

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#14

Сообщение Mikhail72 » 05.11.2017{, 16:56}

На этот вопрос не могу точно ответить, но например на гейте, подключаются 2 устройства с SPI к разным пинам и nRF в данном случае к софтовым, у меня не возникало такой необходимости, поэтому не вникал.

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#15

Сообщение Mikhail72 » 05.11.2017{, 20:24}

vovka1973 писал(а):в отличии блоков от нрф
Если честно я их не смотрел, т.к. меня не интересует передача данных среди несколько устройств, меня интересует целая эко система, в соседней теме я уже писал, что все (далеко не любители) кто пытался на Си и nRF изобрести велосипед пришли в сообщество MySensors, преимуществ у него много, но не в занимаемой памяти.
vovka1973 писал(а):извените за назойливость
Я для этого и создал тему чтобы все желающие могли разобраться в этом протоколе, т.к. не все, даже умеющие программировать на Си, понимают как правильно использовать все плюшки MySensors.

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

8832038.jpg
Это данные с моего освежителя воздуха
0752755.jpg
Это данные проекта ЛОС при отладке на макетной плате для этого проекта который будет всё-таки на MySensors.
5907168.jpg
Последний раз редактировалось Mikhail72 10.02.2018{, 15:13}, всего редактировалось 1 раз.

Александр_Светлый
Лейтенант
Сообщения: 354
Зарегистрирован: 12.10.2016{, 19:03}
Репутация: 2
Откуда: Краснодар

MySensors

#16

Сообщение Александр_Светлый » 25.11.2017{, 00:58}

Ума не приложу как оно должно работать...
Пробовал по разному и всё равно не получается, что то я недопонимаю...

Добавлено (25.11.2017, 00:58)
---------------------------------------------
Проекты что то не цепляются... Прикрепляю файлы ino, flp попробую позже прикрепить.
Вложения
pr2.ino
(4.75 КБ) 49 скачиваний
pr1.ino
(4.67 КБ) 52 скачивания
Последний раз редактировалось Александр_Светлый 25.11.2017{, 01:22}, всего редактировалось 1 раз.
Я не флудер , просто мне есть что сказать =)

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#17

Сообщение Mikhail72 » 25.11.2017{, 14:18}

Приветствую, если Вы опишите что хотите сделать я постараюсь помочь. По предоставленным скетчам могу сказать следующее, что касаемо MySensors:

В первом Вы поправили шапку,то что до void setup() правильно, т.е. подключение библиотек перенесли после объявления констант (#define), но в конце у кода две функции презентации и неисправленная функция void receive(const MyMessage &message)

Первая картинка начало скетча до правки, вторая после.
Удалил закомментированные строки для лучшей наглядности
СпойлерПоказать
2567536.jpg
7871097.jpg
В конце скетча необходимо тоже сделать правки
СпойлерПоказать
До
5559269.jpg
После
4460536.jpg
Во втором скетче у вас просто скомпилированный проект из Flprog без правок.

Посмотрев скетчи я так понял, Вы хотите на одном устройстве получать данные и передавать их на другое устройство для вывода на дисплей. Если так то вам необходимо ещё третье устройство, которое обеспечивает маршрутизацию, называемое гейт(шлюз), т.к. в данной версии библиотеки MySensors нет прямого взаимодействия между 2-мя устройствами, в ближайшее время выйдет обновление библиотеки (версия 2.2) с данным функционалом. Также в секции define на обоих устройствах необходимо раскомментировать  строку #define MY_NODE_ID и указать номера устройств в диапазоне от (1-254), а в пользовательских настройках устройства, которое должно отправлять данные, указать в параметре destination, id принимающего устройства.

P.S. протокол MySensors разработан для создания "Интернета вещей"(IoT), где подразумевается создание целой эко-системы, в которой более 2-х устройств способны получать данные с различных датчиков, обмениваться ими в своей сети, управлять исполнительными устройствами, на основе полученных данных, а также собирать и хранить их на контроллере(сервере) для последующей обработки.

Добавлено (25.11.2017, 14:18)
---------------------------------------------
Рекомендую также постоянно обновлять блоки, т.к. я постоянно их обновляю при нахождении и/или исправлении каких-то неточностей или ошибок.
Последний раз редактировалось Mikhail72 10.02.2018{, 15:26}, всего редактировалось 2 раза.

Александр_Светлый
Лейтенант
Сообщения: 354
Зарегистрирован: 12.10.2016{, 19:03}
Репутация: 2
Откуда: Краснодар

MySensors

#18

Сообщение Александр_Светлый » 25.11.2017{, 17:34}

Добрый вечер. Со скетчами теперь понял, приложил их для того, чтобы хоть что то понятно было т.к. проекты ни в какую не прикрепились ночью. Да и сейчас пришлось в архив пихнуть чтоб загрузить.
По сути дела у меня к одной Ардуине подсоединён эл. компас HMC5883L и NRF24 а ко второй NRF24 и дисплей на ТМ1637 (можно и Oled маленький 128Х64, есть один).
Одна будет стоять на мачте УКВ антенны и вращаться вместе с ней вычисляя на какой азимут повёрнута антенна а вторая в радиорубке принимать данные и выводить на дисплей. Возможно доработаю для управления приводом, но пока и это не могу заставить работать.

Добавлено (25.11.2017, 17:34)
---------------------------------------------
Два устройства потому что больше пока не нужно, просто нечего считывать. Можно конечно и  метеостанцию запихнуть вместе с компасом, портов хватает (может не хватить памяти) но опять же нет смысла в шлюзе, мне просто нужно передать с одного устройства на другое. Неизвестно как ещё оно поведёт себя неподалёку от УКВ антенны, пока что там будет 50Вт но в будущем планируется стек из 4-х девяти метровых антенн  и 1-1,5КВт мощности для EME связей, тут то думаю оно как раз и завершит своё существование...
Вложения
Desktop.rar
(1.41 МБ) 81 скачивание
Последний раз редактировалось Александр_Светлый 25.11.2017{, 17:36}, всего редактировалось 1 раз.
Я не флудер , просто мне есть что сказать =)

Mikhail72
Рядовой
Сообщения: 44
Зарегистрирован: 21.12.2016{, 06:01}
Репутация: 0
Откуда: Тюмень
Имя: Михаил

MySensors

#19

Сообщение Mikhail72 » 25.11.2017{, 23:44}

Немного поправил параметры пользователя и удалил генератор в проекте дисплея, т.к. высокий уровень на входе Send нужен только для отправки данных, при получении новых данных должен быть импульс на выходе New и данные на Incoming_data.
СпойлерПоказать
Компас
6679740.jpg
Дисплей
6555339.jpg
 
Проект прилагаю, а также скетчи для библиотеки 2.2 которую можете скачать по ссылке и установить в Arduino IDE нажав меню Скетч>Подключить библиотеку>Добавить .ZIP библиотеку... и указать на скаченный архив. После подключения скомпилировать данные скетчи и прошить Ваши устройства. Если всё сделано правильно теоретически должно заработать.
Александр_Светлый писал(а):но опять же нет смысла в шлюзе
Смысл в шлюзе может быть например для обновления прошивки по воздуху. Вот установите данный девайс на мачту и решите, что время отправки слишком частое или наоборот редкое, скомпилировали прошивку с новыми параметрами в IDE и полученный hex-файл отправили для установки по воздуху не прибегая к снятию устройства, удобно?
Александр_Светлый писал(а):тут то думаю оно как раз и завершит своё существование...
Время покажет, но думаю точно придётся экранировать устройство и возможно использовать nRF24 с выносной антенной.
Вложения
Display.ino
(1.54 КБ) 63 скачивания
Compass.ino
(2.09 КБ) 55 скачиваний
3803210.rar
(1.41 МБ) 62 скачивания
Последний раз редактировалось Mikhail72 10.02.2018{, 15:29}, всего редактировалось 1 раз.

Александр_Светлый
Лейтенант
Сообщения: 354
Зарегистрирован: 12.10.2016{, 19:03}
Репутация: 2
Откуда: Краснодар

MySensors

#20

Сообщение Александр_Светлый » 26.11.2017{, 02:46}

Обновил библиотеку и опробовал исправленный Вами скетч, не работает 
На Arduino Nano к которой подключен компас моргает светодиод но при этом на Uno с дисплеем тишина.



Думал купить и поставить "радиоудлинитель" порта, но побоялся что ему будет плохо когда я буду работать на 430 мГц, антенна у меня на два диапазона, 145 и 430мГц.

Добавлено (26.11.2017, 02:38)
---------------------------------------------
Есть у меня один Ethernet шилд, можно было бы и с ним, но неохота лепить то, в чём нет никакой необходимости (в данном случае), это устройство должно работать автономно и возможно даже в полевых условиях. Поэтому основные критерии это мобильность, минимум компонентов, возможность работать автономно (от АКБ). В поле я не повезу привод для антенны, не нужен он там, всё руками крутится а вот такой компас займёт минимум места и будет полезен.

Добавлено (26.11.2017, 02:46)
---------------------------------------------
Было бы не плохо ещё и на телефон по WI-FI передавать в полевых условиях, в 99% случаев он с собой, но это уже так, скорее приятные "плюшки" чем необходимость.
Вложения
7508371.jpg
Последний раз редактировалось Александр_Светлый 26.11.2017{, 02:49}, всего редактировалось 1 раз.
Я не флудер , просто мне есть что сказать =)

Ответить

Вернуться в «Спросить у знатоков»