Easyelectronics.ru

Электроника для всех
Текущее время: 22 апр 2019, 03:25

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 120 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 21:35 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
автоматизация дома хобби
начинал с установки и настройки дома сети zwave
потом подключался к проекту mysensors который стартовал от контроллера micasaverde для zwave

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

основные принципы:

  • формат сообщений никак не привязан ни к используемой платформе ни к используемому физическому/логическому железу через которое передаются сообщения
  • отсюда следует отсутствие привязки к какой либо платформе для чего была выделена отдельная библиотека stavrp - сокращение от stm + avr + plus (C++), хотя сейчас список платформ уже несколько шире и в общем то может быть расширен
  • для поддержки первых двух подходов программная часть разделена на несколько слоев, все кроме последнего платформо независимы или условно независимы, от верхнего к нижнему:
    • Application - конечное приложение, их может быть несколько в паралелль или в связке. Приложение имеет стандартные интерфейсы для получения и отправки сообщений, может участвовать в фильтре входящих и исходящих сообщений - это позволяет расширять базовый функционал путем plug&play нужных Application, добавляя такой функционал как Ping и автоматическое назначение адресов, также интерфейс к таймеру и к основному циклу. Цель библиотеки, чтобы вся суть конечного устройства была сосредоточена на разработке приложений. Пример приложения - термостат, т.е. считывающая данные с датчика температуры, отсылающая команды на включение локального или удаленного реле и управляемое по сети через сообщения
    • Node - это инфраструктура для запуска приложений, организует все доступные приложениям интерфейсы. Node может быть одна или несколько на устройство, но одна нода на один физический интерфейс передачи данных. Т.е. один интефейс - одна нода, два интерфейса - две ноды и т.д. Адрес устройства соотносится с нодой, может быть один для всех нод устройства или разные. Рассматривается сейчас три типа Node: простая нода, мост (bridge) - связка двух разных физических сред передачи, router - маршрутизатор между многими подсетями в однородной или разнородной физической среде передачи
    • Interface - логический уровень интерфейса к физическому уровню для Node. Рассматриваются сейчас два типа стандартных интерфейсов (другое название диспетчер) - P2P для сети равноправных устройств и Master&Slave для сетей с выделенным мастером
    • Translator - преобразователь формата сообщения между логическим уровнем понятным (и стандартным) для приложений и физическим уровнем оптимальным для передачи через физический интерфейс. Например для сред без гарантированной передачи стандартное сообщение инкапсулируется в другое сообщение с преамбулой и контрольной суммой
    • Driver - собственно единственный явно платформо зависимый и завязанный на среду передачи. он дает связку для Translator в обе стороны между логическим уровнем приложений и физической средой передачи. Пример драйвера - UART
  • Исключение обязательного центрального контроллера. Каждое устройство может самостоятельно общаться с любым другим устройством путем настроенной прямой адресации или через широковещательные сообщения. При этом центральные устройства могут добавлять дополнительные сервисы и возможности.

для гибкости при сохранении оптимального использования ресурсов интенсивно используется С++11 с шаблонами
это позволяет гибко настраивать конкретное приложение под конкретное железо в основном в процессе компиляции

Адресация глобальная, вне зависимости от того какая среда передачи использована. Можно адресовать глобально или локально любое устройство.
Адресация 16 бит, организована как 4094 сегмента по 16 устройств и два сегмента широковещательных сообщений - один для глобальной сети, второй для локальной.
Локальная сеть - это устройства подключенные к одной физической среде где они могут без посредников общаться друг с другом.
На локальной сети может быть один или несколько сетевых сегментов

Стандартный заголовок (10 байт) сообщения универсальный для любых задач:
Код:
struct Header {
   // --- message data
   uint8_t             size;         // message data length in bytes excluding header
   Attributes          attributes;
   ID                 rx;            // id of device this message is sending to
   ID                 tx;            // id of device this message is sended from
   Type              type;         // type of the message
   Smartlets::uint16   sid;             // message sequence number
   // --- methods
   Header() : size(0), attributes(), sid(0) {}
};


Остальная часть сообщения специфична для каждого типа сообщений определяемых полем type. Это поле 16 бит.
Максимальный размер сообщения определяется настройками при компиляции и задает некую планку тех сообщений которые могут приниматься и пересылаться:
Код:
template <int payload_size>
struct Message : public MessageBase {
   // --- static
   static const int data_maxsize = payload_size - sizeof(header);
   // --- message data
   DataArray<data_maxsize>   data;
    // --- methods
    Message() : MessageBase() {}
    Message(const MessageBase& msg) : MessageBase(msg) {}
};


Использование шаблона здесь позволяет минимизировать требования к ресурсам на конкретном устройстве не вводя никаких принципиальных ограничений. Минимальное требование для устройств на базе 8ми битных МК - 8Кб флэш и 1Кб RAM

Сообщения позволяют следующие базовые функции сети:

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

что сейчас реализовано:

  • ядро для написание кода для устройств на базе esp8266 в среде ардуино и пример термостата. Ядро содержит в себе bridge node которая также позволяет связывать устройство подключенное к esp по UART связываться по TCP/IP с router и с любыми сегментами подключенными к этому же router. Т.е. можно сделать два локальных сегмента на МК например на RS485 и связать их друг с другом через ESP по wifi и их же завязать на openhab
  • похожее ядро отлаживаю для STM32 с W5500, пока не стабильно. Цель таже что с ESP только по проводам
  • все программные уровни для STM8S с драйверами для трехпроводной P2P сети (питание + сигнальный) на базе драйвера из 4-х резисторов и одного транзистора на скорости 2000 бод - называю ее W3P (wire 3 pole)
  • bridge на STM8S между W3P и UART, позволяет связывать любую сеть W3P с router
  • linux router - серверное приложение которое связывает между собой все bridge с интерфейсом к TCP/IP (сейчас это ESP8266 и STM32&W5500), кроме того в нем интерфейс к MQTT, позволяет маршрутизировать сообщения туда и обратно в формате JSON. Серверов может быть несколько. сейчас поддерживается один основной и один резервный

Библиотека определяет порядок следования байт на платформе и автоматически вставляет код для преобразования, чтобы была совместимость при передаче данных между разными платформами. В качестве стандартного для сообщений принят bigendian.

Библиотеки опубликованы https://github.com/axillent
stavrp - C++ библиотека для поддержки платформозависимого кода
smartletsp - C++ библиотека сети устройств

swilib - обертка для разработки в среде ардуино


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 21:42 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
Для иллюстрации пример bridge на STM8:

Show


что внутри hw-0005.hpp:
Show


Последний раз редактировалось axill 27 ноя 2018, 21:59, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 21:52 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2977
Хм. Господин изобретает колесо или велосипед?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 21:54 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
и то и то можно?
на самом деле изобретаю ultra tiny tcp/ip

назовите готовое с теми же качествами


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 22:02 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2977
Ультра-гипер-экстра-лайт? Ну пусть будет Modbus. Или CAN, если хотите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 22:07 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
BusMaster писал(а):
Ультра-гипер-экстра-лайт? Ну пусть будет Modbus. Или CAN, если хотите.

а как же с отсутствием привязки к среде передачи? насколько знаю CAN гвоздями прибит к среде
что насчет глобальной адресации и широковещательных сообщений? я могу с ESP бросить через Internet modbus чтобы оно достигло другой modbus на NRF024?
OTA через CAN или модбас?


Последний раз редактировалось axill 27 ноя 2018, 22:18, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 22:15 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
добавил Linux Router https://github.com/axillent/swi_appserver


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 22:21 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2977
К какой среде прибит CAN? Что вы понимаете под словом "среда"? CAN с удовольствием работает в автомобилях с множеством датчиков и модулей, в том числе и по оптике.
Modbus - всего лишь протокол и он может быть портирован на любой физический интерфейс, в том числе и на nRF24.
Как раз в противоположность модбасу, CAN - это физический интерфейс, зато с приоритетами и разруливанием конфликтов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 22:30 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
BusMaster писал(а):
К какой среде прибит CAN? Что вы понимаете под словом "среда"?

могу я CAN сообщения слать через разные физические интерфейсы? RS485? TCP/IP? радио?

BusMaster писал(а):
Modbus - всего лишь протокол и он может быть портирован на любой физический интерфейс, в том числе и на nRF24.

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

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


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 23:03 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2977
Язык Си придуман в 70-х годах. С++ - немного позже. Они очень архаичны, а вы на них пишете.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 23:11 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
я пишу на С++11
выше к сожалению не все мои компиляторы умеют

но это оффтопик
сами подтверждаете ограничения названных стандартов
вот поэтому и делаю свое
отчасти чисто из любопытства


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 23:12 
Старожил

Зарегистрирован: 09 июл 2013, 17:10
Сообщения: 253
Откуда: Санкт-Петербург
axill писал(а):
BusMaster писал(а):
К какой среде прибит CAN? Что вы понимаете под словом "среда"?

могу я CAN сообщения слать через разные физические интерфейсы? RS485? TCP/IP? радио?

CAN шин довольно много, есть и однопроводные с открытым коллектором, есть по проводу питания.
По радио и ИК гнать тоже не проблема. Только зачем?
TCP это не физика


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 23:16 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
Cujo писал(а):
CAN шин довольно много, есть и однопроводные с открытым коллектором, есть по проводу питания.
По радио и ИК гнать тоже не проблема. Только зачем?

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

Cujo писал(а):
TCP это не физика

ну если более корректно то под этим подразумевался список физики типичной для передачи TCP/IP
в доме это в основном витая пара и wifi


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 23:27 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2977
С++11 базируется на языке 80-х годов. Просто дополненный.
Ну ладно, а чего вы добьетесь, изобретая свой велосипед? Широковещательные посылки? Ага. И что именно вы пошлете всем? "Вслючить всё"? Или "Кто здесь есть?":))) А прикиньте, как все эти ваши 4000 устройств начнут одновременно отвечать? Кто будет разруливать арбитраж? CAN имеет разруливатель на уровне интерфейса. И в CAN нет адресации устройств. Там есть идентификатор сообщения. А уж устройства сами определяют, для них ли было передано это сообщение. То есть, сообщения как бы всегда широковещательные.
А на nFR24 имеется собственная 5-байтная адресация и выбор радиочастотного канала, поэтому вставлять адрес в пакет не нужно. Причем, каждый радиомодуль может работать с 6-ю адресами одновременно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 23:51 
Старожил

Зарегистрирован: 09 июл 2013, 17:10
Сообщения: 253
Откуда: Санкт-Петербург
axill писал(а):
ну если более корректно то под этим подразумевался список физики типичной для передачи TCP/IP
в доме это в основном витая пара и wifi

физика там пам5 в случае ethernet или RS
это две разные физики
смысл CAN в двунаправленной линии с одновременной работой во все стороны по типу i2c, остальное все аппаратно делается
по витой паре это реализуется CAN драйверами, без витой, оптике и радио через доп устройства


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 27 ноя 2018, 23:51 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
BusMaster вы верно отметили фишки двух технологий
Но они привязаны чернз них к конкретному железу
Я хочу возможность гибкого развертывания
Например конкретный план:
На этаже в доме коллекторы отопления прицепить через esp
В котельной оборудование прицепить к витой паре, там поставить bridge и дальше по котельной проводная сеть
Есть еще радио датчики, для них взять bridge к витой паре
И тд любое железо цепляется
Можно и modbus и can прицепить сделав нужную трансляцию

Широкое вещание конечно нужно с умом применять
У меня оно предусмотрено в основном для автоконфигурирования
В малых сетях можно делать plug&play без настройки, например прицепить к реле датчик температуры и дисплей и получить термомтат
В больших сетях дать доступ к глобальным сервисам без необходимости настраивать доступ на множестве устройств. Например в домашней сети прицепить сервис критичных смс


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 28 ноя 2018, 00:53 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3634
Откуда: КЧР, поселок Нижний Архыз
для STM8 есть только один компилятор - sdcc. И с++ он не умеет.
И как?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 28 ноя 2018, 01:55 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3161
это у красноглазых есть только один компилятор sdcc, который и С без плюсов умеет так, что лучше бы не умел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 28 ноя 2018, 02:05 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3634
Откуда: КЧР, поселок Нижний Архыз
А у геймеров их много?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 28 ноя 2018, 02:06 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
Eddy_Em писал(а):
для STM8 есть только один компилятор - sdcc. И с++ он не умеет.
И как?

IAR C++11 с некоторыми исключениями


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 28 ноя 2018, 02:09 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3634
Откуда: КЧР, поселок Нижний Архыз
axill писал(а):
IAR C++11 с некоторыми исключениями

Тогда каким местом там "Linux Router"? Или компилять при помощи краденного ПО на игровой приставке, а потом работать на компьютере? Забавно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 28 ноя 2018, 02:18 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3634
Откуда: КЧР, поселок Нижний Архыз
Покопался в исходниках. А где, интересно, берутся файлы iostm8s003f3.h и т.п.? Нет их там!!! Не соберется ж ничего!
Да и makefile'ов в примерах нет.
Судя по readme, это требует еще: а) использовать для компиляции игровую приставку, б) своровать кайло или йяр...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 28 ноя 2018, 02:24 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
Eddy_Em писал(а):
Покопался в исходниках. А где, интересно, берутся файлы iostm8s003f3.h и т.п.? Нет их там!!! Не соберется ж ничего!
Да и makefile'ов в примерах нет.
Судя по readme, это требует еще: а) использовать для компиляции игровую приставку, б) своровать кайло или йяр...


те хидеры иаровские, поддерживается сейчас только иар
воровать не надо, можно скачать официально и пользовать для прошивок до 32к
Show


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 28 ноя 2018, 02:37 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3634
Откуда: КЧР, поселок Нижний Архыз
Угу, и работает это только на игровых приставках!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Универсальная сеть умных устройств smartlets
СообщениеДобавлено: 28 ноя 2018, 02:39 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5256
wine не?

даже ходить далеко не надо viewtopic.php?f=35&t=6660


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 120 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB