saga111a
@saga111a
физика, химия, питон, машинное обучение

Как правильно организовать архитектуру сервер-серверного управления удаленными устройствами(роботом)?

Всем доброго дня.
Если кратко, то имеются роботы которыми нужно управлять удаленно - отправлять команды, давать расписания на работу, получать данные + что-то еще. Все это должно управляться с централизованного сервера.
Нужно по-критиковать/по-советовать по поводу той реализации которую хочется сделать. Может быть предложить что-то кардинально иное...

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

Пока что мне видится решение данной задачи - установка в помещение какого-либо устройства, которое выполняет необходимые операции, при это он может отправлять данные на и получать команды от центрального сервера. В частности раз в несколько минут устройство шлет запросы на центральный сервер и отправляет/получает с него данные/команды. Для центрального сервера думаю брать джангу, что ставить на "клиента" не совсем понимаю. Видится мне малинка там с написанным приложением, но на чем? Не понимаю хватит ли только requests + celery + threads + мелкая база на mysql или кого-то вроде джанги туда ставить(flask, tornado?) - кажется что они там лишние.

Вопрос в следующем, как организовать данную работу системы?
  • Что должно стоять на "клиентской стороне" ?
  • Как поддерживать долговременное соединение?
  • Что взять в качестве "клинетской" машины(малинку?)?
  • Что ставить на "клиента"?
  • Как организовать синхронизацию баз данных?

Заранее спасибо!
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
Писать логи в текстовик, максимально полно, так чтоб можно было собрать все данные в один файл и профтись грепом и понять, что откуда пришло

Собирать логи на основную машину чем-то тупым типа ssh + cp

Если требуется пулять логи с машины, то rsyslog

Управление - ansible
Или набор очень простых баш скриптов
Если башскрипт больше екрана - переходите на ансибл или на крайний случай на fabric

Чем будете показывать графики - не важно
Предпочитаю джангу
В джанге все синхронно - никаких тредов и асинхронности
Для задач есть celery

Раз в Х минут агрегируем логи в БД, которая доступна джанге
Логи жмем и не удаляем

Учтите, что малина и подобные устройства не предназначены для пром использования
Так что имейте время и запас устройств для замены
Ответ написан
@antonsr98
Системный Администратор
Удаленно вы имеете в виду на расстоянии? Если да то к. Алинке можно подключить интерфейсы и передавать принимать данные с 1км к примеру
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы