Easyelectronics.ru

Электроника для всех
Текущее время: 06 дек 2019, 02:52

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



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

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

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5278
автоматизация дома хобби
начинал с установки и настройки дома сети 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
Сообщения: 5278
Для иллюстрации пример bridge на STM8:

Show


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


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

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

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


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

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

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


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

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


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

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5278
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
Сообщения: 5278
добавил Linux Router https://github.com/axillent/swi_appserver


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

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


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

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

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

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

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

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


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


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

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


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

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5278
я пишу на С++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
Сообщения: 5278
Cujo писал(а):
CAN шин довольно много, есть и однопроводные с открытым коллектором, есть по проводу питания.
По радио и ИК гнать тоже не проблема. Только зачем?

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

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

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


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

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3793
С++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
Сообщения: 5278
BusMaster вы верно отметили фишки двух технологий
Но они привязаны чернз них к конкретному железу
Я хочу возможность гибкого развертывания
Например конкретный план:
На этаже в доме коллекторы отопления прицепить через esp
В котельной оборудование прицепить к витой паре, там поставить bridge и дальше по котельной проводная сеть
Есть еще радио датчики, для них взять bridge к витой паре
И тд любое железо цепляется
Можно и modbus и can прицепить сделав нужную трансляцию

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


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

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


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

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


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

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


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

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

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


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

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

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


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

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


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

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


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


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

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


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

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

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


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

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


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

Сейчас этот форум просматривают: kalala


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

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

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