• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Обсуждение унификация софта IoT

nikolz

Well-known member
Добрый день,
Выкладываю свою концепцию построения софта IoT.
После ряда экспериментов с ESP и RTL у меня сформировалась универсальная структура программного обеспечения IoT.
Предлагаю высказывать конструктивные предложения.
-----------------------
В общем виде, структура следующая:
Программное обеспечение состоит и трех самостоятельных программно изолированных блоков.
----------------------------
Первый блок отвечает за сбор информации с датчиков.
Этот блок реализуется по типу "bare metal" либо на основе "легких" OCРВ.
У него на входе все датчики и провода, а на выходе энергонезависимая память для хранения первичной информации от датчиков.
Применительно к ESP, этот блок реализуется в boot , а информацию пишет в память RTC.
-------------------------
Второй и третий блоки реализуются на любых OC.
Второй блок отвечает за вторичную обработку информации и передачу этой информации по каналам связи пользователю.
Применительно к ESP у меня этот блок отвечает за передачу информации по WIFI.
----------------------------
Третий блок отвечает за интерфейс с пользователем и накопление информации на удаленных носителях.
==============================
В чем собственно отличие данной концепции от той, которая используется практически всеми в том числе и посетителями данного форума.
отличие в том, что второй и третий блоки являются универсальными и не зависят от набора датчиков.
А первый блок содержит лишь управление датчиками и не требует от его разработчика знать как передавать по WIFI как настраивать соединение.
При этом второй и третий блоки практически не зависят от используемых микроконтроллеров.
======================
Если третий блок сейчас так и реализуется (это андроид или облако), то первый и второй блоки сейчас это винегрет, который стряпает каждый, кто берется делать автоматизацию своего дома.
В данной концепции, выделение второго блока как самостоятельного, позволяет использовать для него коробочное решение и не заниматься изучением протоколов и особенностей соединений по WIFI BLE и т д
--------------------------
В данной концепции, любому желающему надо будет лишь определиться с набором датчиков т е разрабатывать лишь первый блок, а второй блок - взять готовую прошивку (бинарик, а не скетч и либы).
----------------------------------
 
Последнее редактирование:

kab

New member
Добрый день,
Выкладываю свою концепцию построения софта IoT.
После ряда экспериментов с ESP и RTL у меня сформировалась универсальная структура программного обеспечения IoT.
Предлагаю высказывать конструктивные предложения.
-----------------------
В общем виде, структура следующая:
Программное обеспечение состоит и трех самостоятельных программно изолированных блоков.
----------------------------
Первый блок отвечает за сбор информации с датчиков.
Этот блок реализуется по типу "bare metal" либо на основе "легких" OCРВ.
У него на входе все датчики и провода, а на выходе энергонезависимая память для хранения первичной информации от датчиков.
Применительно к ESP, этот блок реализуется в boot , а информацию пишет в память RTC.
-------------------------
Второй и третий блоки реализуются на любых OC.
Второй блок отвечает за вторичную обработку информации и передачу этой информации по каналам связи пользователю.
Применительно к ESP у меня этот блок отвечает за передачу информации по WIFI.
----------------------------
Третий блок отвечает за интерфейс с пользователем и накопление информации на удаленных носителях.
==============================
В чем собственно отличие данной концепции от той, которая используется практически всеми в том числе и посетителями данного форума.
отличие в том, что второй и третий блоки являются универсальными и не зависят от набора датчиков.
А первый блок содержит лишь управление датчиками и не требует от его разработчика знать как передавать по WIFI как настраивать соединение.
При этом второй и третий блоки практически не зависят от используемых микроконтроллеров.
======================
Если третий блок сейчас так и реализуется (это андроид или облако), то первый и второй блоки сейчас это винегрет, который стряпает каждый, кто берется делать автоматизацию своего дома.
В данной концепции, выделение второго блока как самостоятельного, позволяет использовать для него коробочное решение и не заниматься изучением протоколов и особенностей соединений по WIFI BLE и т д
--------------------------
В данной концепции, любому желающему надо будет лишь определиться с набором датчиков т е разрабатывать лишь первый блок, а второй блок - взять готовую прошивку (бинарик, а не скетч и либы).
----------------------------------
Эти соображения, скорее всего полезны. Но для кого они?

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

pvvx

Активный участник сообщества
Приведу пример.
Есть свалка pvvx. В ней работа WIFI переплетена с работой с датчиками.
Чтобы добавить новый датчик Вы должны не испортить все остальное и как-то все это подключить к имеющемуся софту WIFI.
А если надо перенести это на другой контроллер, то появляется такого же размера очередная свалка.
Вы ошиблись в корне. Добавление датчика в Web-свалке не требует переписывания её. Добавляется отдельный программный модуль (оверлей) работы с датчиком, который может грузится хоть по сети или добавляется на web-диск устройства.
При этом на смартфоне или на том, через что производите просмотр показаний ничего не меняется - там работает обычный броузер, а запросы и ответы к оверлею стандартизированы и поддерживаются в web-интерфейсе. При этом оверлей имеет доступ ко всем переменным и функциям основного блока и SDK, чего нет на многих ОС и при этом отсутствуют таблицы стыковки, т.е. память не занята лишними указателями на стандартный ограниченный ряд функций. При этом есть свои "но", но ресурсов у ESP8266 и так мало и без "но" там не обойтись...
Данная концепция покрывает и коммерческие варианты, где оверлей является платным и передается с платного сервиса. :p
Сама Web-свалка - это всего интерфейс по настройке устройства, содержащий и Help (описание самого устройства в текстовом и графическом формате для пользователя) используя стандартные средства имеющиеся у пользователя с web-браузером. У вас отсутствует данная часть и требуется пляска с бубном и внешние инструкции, что удорожает товар и требует специалиста. Для простых датчиков (BT и т.д.) у всех производителей имеется автоматический интерфейс подключения/включения датчика в систему, существуют и разработаны общие стандарты, и данных вещей и всякой отсебятины на Arduino не требуется.

Основным основанием использования WiFi в IoT является требование от устройства потоков с пропускной способностью превышающей сотню килобайт в сек. Всё остальное реализуется на устройствах c интерфейсом связи типа BT и аналогичных, бурно развивающихся на данном рынке.

Все производители, наполняющие рынок IoT уже выпустили такие устройства в неимоверных кол-вах и рынок заполнен ими. WiFi при этом не используется для включения лампочек или опроса медленных датчиков… Нет никакого смысла в WiFi у таких устройств, что уже доказал рынок. Все имеющиеся на сайте Arduino устройства и проекты на ESP8266 пока ограничены этой областью, т.е. замещены давно готовыми и с лучшими характеристиками.

ESP8266 не вписывается в данный сегмент и никогда туда не попадет – это игрушка для изучения основ программирования для “начинающих” и стремления повторения уже готовых изделий на собственный лад.

Остается только отдельная сфера – устройства пользователя, где нет своего дисплея и проще использовать дисплей на смартфоне или компе. Простейший пример: лабораторный БП с задаваемыми множественными установками, контролем и мониторингом в реальном времени. Но в связи со своей ненадежность работы ESP8266 не может использоваться и для таких целей.
----
По остальному, что требуется для бытовых устройств, уже было всё разжовано. Каждое устройство должно/обязано обладать автономностью. Об этом гласит вся история всех известных природных объектов :p По минимуму оно должно иметь внутренний лог использования и прочей статистики за год. Это требуется для производителя и обеспечения гарантий от него. Для примера возьмите холодильник… Пользователю, для контроллера лампочки, так-же надо содержать статистику для определения качеств товара и своевременной замены – сколько раз она включалась и на сколько, и при этом эти данные должны храниться на самом устройстве, т.к. внешняя связь с серверами, через глобальную интернет сеть не обязательна, а для просмотра их не требовалось специальных нестандартных устройств и ПО. Минимальный пример - SMART у винчестера. Данные направления только развиваются и стандартных вариантов доступа к такой информации не имеют, что усложняет ремонт и обслуживание. А это одни из основных показателей у товара в бытовой сфере.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Написали Вы много но не по теме.
В данной теме речь идет об унификации модуля беспроводной коммуникации и вынос его бин код.
Давно такое есть у всех чипов. Исключение составляет только ESP8266. У него нет частей с интерфейсами в бинарном виде.
Линковать итого проще и компактнее с либами или вообще с исходниками. С исходниками намного короче выходит. Ну, а т.к. в ESP вообще ничего кроме мигалки светодиодами не лезет с китай-Espressif подходом, то и заранее подготовленных бинарных либ c интерфейсами у неё нет, кроме варианта web-свалки. У web-свалки основное тело именно в бинарном виде и линкуется с оверлеями. :p
На RTL (у EMW3080 - RTL серии "B" и для пару других из серии "A") так-же используется основной прошитый заранее блок со всеми интерфейсами и отдельно прошивается модуль пользователя. Основной блок у них назван "kernel" и в нем всё, включая поддержку MQTTS.
Понимаете разницу между ПЕРЕПИСАТЬ и НЕ ИСПОРТИТЬ?
А вы это понимаете?
Опять у вас всё по своему? :)
Для написания оверлея к web-свалке категорически не надо трогать его исходников и патчить основной блок находящийся в бинарном виде = файл основной прошивки! - это обозначает, что ничего испортить не выйдет, если не пользоваться WinHex :) :p
Ваше описание и видение намекает, что вы не ушли далее "AT" команд. Все модули RTL поддерживают "AT" с HTTPS и MQTTS запросами и ответами. Они как раз вписываются в ваше описание как раздельная часть готовых, простых в обращении и полностью рабочих интерфейсов для датчика. :)
Вы представляете - ещё с DOS (и ранее), и ныне в Windows и Linux все сервисы в виде исполняемых файлов обычно в бинарном виде и ИСПОРТИТЬ их можно только в редакторе типа WinHex :) Но даже ESP-32, в отличии от RTL с индексом "AM" обделен такой возможностью - загрузки пачки исполняемых файлов, даже если туда поставили PSRAM (при чем это сделано специально, чтобы ограничить ваши возможности в выборе). :)
 
Последнее редактирование:

Peter1001

New member
Основным основанием использования WiFi в IoT является требование от устройства потоков с пропускной способностью превышающей сотню килобайт в сек.
Еще дальнобойность. тот же BT просто не пробъёт стену. Z-wave то же так себе, ячеистая сеть только и спасает.
Смотрел коммерческие проекты, везде все пишут, что если главный сервер отказал, то не проблема, датчик сам решит.
Копнул поглубже сплошная дичь, умного нечего не остаётся при выходе сервера. Базовые ф-и конечно работают, если тот же дым он запищит итд.

PS: Я как раз с такой же концепции переполз немного на другую. Но начал с такой же. Концепция автора имеет фундаментальные косяки. Если интересно распишу какая концепция у меня.
 
Сверху Снизу