Http сервер, tcp, mqtt

Salamandra244
Offline
Зарегистрирован: 02.03.2020

Здравствуйте!

Есть желание сделать проект, суть которого такова:

Есть несколько устройств, так называемых клиентов, ( arduino Nano, sim800l и gps модуль), соответственно он передает свое местоположение на сервер и принимает от сервера команды на включения определенных ножек, и к примеру, координаты определенных устройств.

Иными словами, есть множество устройств, у которых следующие параметры: координаты, матрица состояния входов выходов и еще некоторые параметры, id и т.д. и они все эти данные отправляют на сервер. Сервер обрабатывает эти данные и управляет состояниями этими клиентами, при срабатывания определенных условий.

Собственно вопрос, на чем организовать сервер и по какому протоколы. Я просто не знаю, что будет оптимально

sadman41
Offline
Зарегистрирован: 19.10.2016

Тут все просто: на один листок выписываете перечень данных, которые требуется отправлять и получать. На второй листок названия протоколов, с которыми знакомы. Затем начинаете прикидывать - удовлетворяют ли возможности протокола со второго листа требованиям с первого. Если да, то ответ найден. В ином случае - формулируете причину несовместимости требования и возможности. Берете следующий протокол. Коли ничего не подошло то , в Гугле, ищете "протокол для передачи“+то, что не полезло в уже рассмотренные протоколы.

Salamandra244
Offline
Зарегистрирован: 02.03.2020

Ну в принципе то вы правы, просто я надеялся, что я прощу этот момент, поиска протокола и что у кого то есть опыт построения похожей системы.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Salamandra244,

если честно, не понял задачи. Вы используете нестандартную терминологию, которая сильно сбивает. Попробуйте объяснить без слов, значения которых Вы не знаете, а лучше нарисуйте структурную схему системы.

А то, вот Вы пишете

Salamandra244 пишет:
клиентов, ( arduino Nano, sim800l и gps модуль)

Непонятно, Вы собираетесь использовать какую-то свою - нестандартную прошивку для sim800l и gps модуля или Вы просто ошибочно назвали их клиентами, т.к. при их штатной прошивке - они серверы и клиентами быть не могут никак.

Или вот:

Salamandra244 пишет:
он передает свое местоположение на сервер и принимает от сервера команды на включения определенных ножек
Сам передаёт? И сам шлёт запросы "сервер, дай мне команду"? Или таки он не клиент, а сервер, и ничего сам не передаёт, а ждёт команд от клиента "дай мне температуру" или "включи такую-то ножку"?

Попробуйте как-то внятно объяснить и нарисовать.

Salamandra244
Offline
Зарегистрирован: 02.03.2020

Спасибо за ответ! Вы правы, я не правильно использовал термины, из-за недопонимания некоторых моментов. 

Попробую еще раз обяснить.

Устройство N
   Функционал
        Определение своего местоположение
        У каждого устройства свое ID
        Каждое устройство так же имеет некоторые свои параметры ( type, group ну и т.д.)
        Маска GPIO ( какие определенные входы в каком состоянии находятся)
        Отправка всех данных на сервер( в каком ввиде я не знаю, возможно JSON файл)
        Получение данных с сервера( маску GPIO, и , допустим, еще параметры( ввиде JSON было идеально,  чтоб аруинка парсила этот файл и вытаскивала нудные данные)

Сервер(хранилище)
    Функционал
         Сервер принимает данные со всех устройств и заносит их в таблицу, где, могу быть ледуйщие поля (id, type, maskGPIO)

Я имею представления о программирвоание ну уровне фронтенда, работа с RESTApi и т.д. 
 

sadman41
Offline
Зарегистрирован: 19.10.2016

В качестве ремарки:

1) Human-readable protocols - не лучший выбор для МК. Работать с ними можно, но это непродуктивно - придётся очень жестко втискиваться в RAM и всячески извращаться. 
2) MQTT-метрики не синхронизированны во времени.