Jump to content

    

Система удаленного контроля

Добрый день, коллеги!

Имеется около 2000 изделий на базе микроконтроллера stm32 (назовем их условно черный ящик) и есть задача контроля за этими изделиями через удаленный сервер (сбор статистики, возможность отправки версии прошивки). В каждое из них планируется разместить GPRS-модуль (например SIM300). При включении изделия оно высылает на сервер необходимую информацию, т.е. выступает в роли "мастера", опрашивает наличие файла прошивки и при необходимости производит обновление. 

Вопрос: как концептуально реализовать эту задачу? Если есть SCADA-системы с подобным функционалом? Есть ли готовые серверные площадки с модемами для решения подобных задач?

Edited by alex1985

Share this post


Link to post
Share on other sites

Но только не SIM300, и даже не SIM900, все устарели не производятся, с поддержкой скоро проблемы будут. Только новые если от SIMCOMа то SIM7000 или SIM7020.

Задача без проблем решаемая, только вам сесть и написать тз самому нужно. Аналогичную пять лет назад решил, устройств было поболее 18000. SCADA-системы будут дорогими, не всегда оправдано. Да и требования у вас могут быть за пределами имеющихся систем. Лучше свое реализовать, если знаешь как.

Share this post


Link to post
Share on other sites
On 5/31/2019 at 8:19 PM, Aner said:

Лучше свое реализовать, если знаешь как

Я для того на форум и обратился, чтобы узнать как)

Share this post


Link to post
Share on other sites

Решаемо. Только сейчас уже SIM900 дается с трудом в поставках. Ему на замену идет SIM800.

Вам нужно реализовать аппаратную часть , т.е. контроллер сбора статистики? или еще написать серверную часть отображением информации через приложение или ВЕБ интерфейс?

Опыт есть. как пример реализации http://www.yakorev.com.ru/asuno.shtml

 

Share this post


Link to post
Share on other sites

SIM800 вот вот снимут с производства, не стоит закладывать их.  SIM900 сняты с производства в 2017 году, 2018 еще что-то до-выпустили. Сейчас уже не будут выпускать.  Эти в той же цене SIM7000 или SIM7020 и года 4 еще будут поддерживать, ...  

Share this post


Link to post
Share on other sites

Наверное вопрос не по адресу - с аппаратной частью проблем нет - сделать не сложно, больше интересует работа с базой данных. Как я предполагаю - нужно поднимать сервер и по TCP/IP общаться с базой. Есть у кого опыт подобных работ? Подскажите, куда копать? С университета помнится только sql и то смутно..

Share this post


Link to post
Share on other sites
18 minutes ago, alex1985 said:

Наверное вопрос не по адресу - с аппаратной частью проблем нет - сделать не сложно, больше интересует работа с базой данных. Как я предполагаю - нужно поднимать сервер и по TCP/IP общаться с базой. Есть у кого опыт подобных работ? Подскажите, куда копать? С университета помнится только sql и то смутно..

База не резиновая. Общаться надо не с базой, а с брокером. А уже брокер с базой. А еще может и балансировщик нагрузки понадобится.  
Ибо для большого количества устройств нужен посредник между IoT и SQL. 

Share this post


Link to post
Share on other sites
8 minutes ago, AlexandrY said:

База не резиновая. Общаться надо не с базой, а с брокером. А уже брокер с базой. А еще может и балансировщик нагрузки понадобится.  
Ибо для большого количества устройств нужен посредник между IoT и SQL. 

Кол-во устройств планируется до 5000. Поясните что такое брокер в этой цепочке и какой функционал он выполняет?

Нашел информацию по платформам IoT, самая крупная - Amazon Web Services. Я в правильном направлении смотрю?

Share this post


Link to post
Share on other sites
36 minutes ago, alex1985 said:

Кол-во устройств планируется до 5000. Поясните что такое брокер в этой цепочке и какой функционал он выполняет?

Брокер обрабатывают IoT протоколы, которые должны быть  компактные, быстрые, устойчивые к потерям и задержкам и транслируют их в SQL запросы к базам данных.
Кроме брокеров нужны серверы представляющие данные для клиентов в виде WEB страниц или REST протокола.

Amazon  стоит денег и навязывает свою архитектуру.
Лучше свой выделенный виртуальный сервер с Windows. 
Туда ставится как  вариант RAD Server.  в плагине к RAD серверу организуется интерфейс MQTT брокера и WEB сервер или интерфейс к штатному IIS WEB серверу.   
В RAD Studio можно написать и нативных клиентов для Android, iOS для REST протокола. 

Share this post


Link to post
Share on other sites
2 часа назад, AlexandrY сказал:

Лучше свой выделенный виртуальный сервер с Windows.

Во блин, когда я по молодости, раз сказал главному сисадмину про сервер на винде, он в меня только еще ботинком не запустил...  

2 часа назад, AlexandrY сказал:

Туда ставится как  вариант RAD Server.  в плагине к RAD серверу организуется интерфейс MQTT брокера и WEB сервер или интерфейс к штатному IIS WEB серверу.

Вот зачем это все!!! Как у нас любят усложнять себе жизнь, хотя, наверно платят за это неплохо...  В этой цепочке куча потенциальных глюков, у ТС всего 5000 устройств! Это простейший комп справится 10и летней давности. Прошивки у него не гигабайтные, надеюсь...

3 часа назад, alex1985 сказал:

самая крупная - Amazon Web Services.

Если в России предполагается работа системы - забудьте про это, оно сегодня работает, а завтра нет.

 

Ищите программиста, который может на яве написать программу, чтоб работать с "прозрачным" TCP соединением, и "прикрутить" ее к любой бесплатной CMS с БД, далее, поднимаете это соединение при помощи модема (рекомендую 3Г модем, ибо ГПРС уже скоро загнется и скорость там только для примитивной статистики годится, с перекачкой прошивок могут быть проблемы) поднимаете соединение с использованием встроенного стека и реализуете простейший протокол - заголовок, пакет данных, контр. сумма. Ну и далее в меру собственной фантазии

Edited by mantech

Share this post


Link to post
Share on other sites
15 hours ago, mantech said:

Во блин, когда я по молодости, раз сказал главному сисадмину про сервер на винде, он в меня только еще ботинком не запустил...  

Вот зачем это все!!! Как у нас любят усложнять себе жизнь, хотя, наверно платят за это неплохо...  В этой цепочке куча потенциальных глюков, у ТС всего 5000 устройств! Это простейший комп справится 10и летней давности. Прошивки у него не гигабайтные, надеюсь...

Ищите программиста, который может на яве написать программу, чтоб работать с "прозрачным" TCP соединением, и "прикрутить" ее к любой бесплатной CMS с БД, 

По сути вы предлагает брать не готовый сервер типа  RAD Server,  а писать его самому.
Взять не готовый протокол с универсальным API  (имеющийся в исходниках и коммерческого качества ) а писать самому некий "прозрачный" протокол и рожать в муках свой API.  
Зачем-то притянули лишнюю сущность CMS, наверно думая что дизайн динамических страниц это некая магия или полагая, что CMS даст удобный интерфейс к SQL.
А на самом деле ограничив выбор только MySQL.  

Эт все скорее комплексы вашего сисадмина или программера. кто там вам такое наговорил.  
 
 

Share this post


Link to post
Share on other sites
17 hours ago, mantech said:

Если в России предполагается работа системы - забудьте про это, оно сегодня работает, а завтра нет.

Спасибо! Дельное замечание в нынешней экономической ситуации.

Интересует решение на базе IoT-платформы, не американской) Самому изобретать велосипед с "балансировщиками нагрузки" и системой безопасности или поднимать сервер на базе домашнего/рабочего ПК не хочется. Но я не категоричен и готов рассмотреть все варианты решения задачи.

Edited by alex1985

Share this post


Link to post
Share on other sites
17 minutes ago, alex1985 said:

Спасибо! Дельное замечание в нынешней экономической ситуации.

Интересует решение на базе IoT-платформы, не американской) Самому изобретать велосипед с "балансировщиками нагрузки" и системой безопасности или поднимать сервер на базе домашнего/рабочего ПК не хочется. Но я не категоричен и готов рассмотреть все варианты решения задачи.

Важна требуемая функциональность.

Нужно ли наблюдать и управлять каждым дивайсом отдельно, или нужно показывать только агрегированную статистику,
Все дивайсы однаковые или у каждого свой профиль с набором параметров и функций?
Как планируется дивайсы вставлять в программную систему, удалять, апгрейдить, следить за версиями, переводить в сервисный режим и проч. 
Нужно ли управлять дивайсами при отсутствии подключения к ним , типа отложенные транзакции.
Нужно ли держать защищенный SSL/TLS канал и   нужно ли дивайсам самим проверять подлинность сервера к которому они подключаются или сервер должен ли проверять подлинность дивайсов. 
Какой объем данных накапливается и как обращаться с устаревшими данными( стирать, накапливать бесконечно, бэкапить  и т.д.) 
Авторизация и аутентификация клиентов нужна ли. 
Нужен ли динамичный UI с графиками, интерактивными таблицами, картами, виджетами. 
Как вообще отлаживать собираетесь и контролировать трафик? Как не переплатить за трафик возникающий просто из-за ошибки в протоколе. 

Рекомендую выделенный Windows сервер.
За 4 евро в месяц получаете в свое распоряжение в облаках весь Windows Server 2016 for x64-based Systems с процессором 2.60 GHz и белым IP адресом и 100 Мб/c каналом. Без домена. Но домен и не нужен для таких дел. Windows Remote Desktop Connection работает так быстро словно работаете локально. Никаких ограничений на запускаемый софт.  Все что работает у вас на десктопе все может работать и там. 
И самый бюджетный вариант будет написать софт самому на базе RAD Server в RAD Studio для такого виртуального сервера, а можете на Node.js, а можете на питоне. А можете на всем сразу. 
 

Share this post


Link to post
Share on other sites

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

2. Девайсы разные, но набор основных параметров совпадает > 50%

3. Планируется в основном собирать статистику, но возможно и изменение сервисных параметров, также по запросу, инициируемого сервером, производить обновление прошивки (размер ~100КБ).

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

5. Думаю, подлинность девайсов логично определять серверу. В БД предполагается наличие таблицы устройств с уникальными ID и заводскому номеру оборудования, после включения девайс посылает на сервер строку с ID и если ID совпадает с имеющимся в базе - то статистика с девайса заносится в базу, иначе - игнорируется. По поводу защищенного канала - не подскажу, т.к. не разбираюсь в этом.

6.  В первом приближении хочу организовать что-то типа журнала событий, т.е. время включения устройства, время работы, ошибки и т.д. но в идеале хочется снимать данные с интервалом в 1 сек., кол-во регистров ~ 10, размерность 1-2 байта. Понимаю, что для опроса данных с такой частотой потребуется сотни мегабайт данных, поэтому пока этот вариант рассматриваю как запасной. Данные планируется хранить вечно.

7. Авторизация и аутентификация клиентов нужна. Доступ в первом приближении планируется сделать по http через сайт, где пользователь вводит логин/пароль и попадает на страницу статистики.  А в идеале - и через приложение IOS/Andriod , которое будет доставать данные с сервера и отображать их в нужном виде (табличном или графическом).

8. Графики/таблицы конечно хотелось бы иметь, поэтому я смотрю в сторону промышленных решений, т.к. не хочется самому изобретать приложения для IOS/андроид и т.п.

9. По трафику пока не думал даже. Как вариант, можно считать и отправлять трафик прямо с девайсов и при его низком значении выставлять какое-то поле в БД, сигнализирующее пользователю о его расходе.

1 hour ago, AlexandrY said:

Рекомендую выделенный Windows сервер.
За 4 евро в месяц получаете в свое распоряжение в облаках весь Windows Server 2016 for x64-based Systems с процессором 2.60 GHz и белым IP адресом и 100 Мб/c каналом. Без домена. Но домен и не нужен для таких дел. Windows Remote Desktop Connection работает так быстро словно работаете локально. Никаких ограничений на запускаемый софт.  Все что работает у вас на десктопе все может работать и там. 

Интересный вариант! Но меня интересует механизм обмена с БД. Идеальным вариантом было бы решение типа "аренда сервера с конструктором БД и mqtt-брокером", интуитивно-понятное, не требующее долгого погружения в программирование БД, в котором за пол-часа можно было бы накидать структуру БД и огранизовать обмен через mqtt. Не знаю, может чушь пишу конечно, но информации пока мало нахожу.. Изучаю в данный момент mqtt и IoTmanager.

Edited by alex1985

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now