Комментарии 2
С точки зрения архитектуры ИМХО Вы недостаточно подробно остановились на некоторых весьма важных компонентах архитектуры IoT.
Например на уровне железа связь с различными хардварными устройствами не всегда возможна с помощью MQTT. В мире существует множество стандартов, прижившихся в разных сферах — проводных, беспроводных, интернетных. Поэтому тут при прототипировании или построении готовых систем весьма кстати приходятся так называемые Хаб-платформы, которые позволяют подключать различные датчики, устройства, протоколы и сервисы и приводить все это многообразие к одному протоколу. Например я пользуюсь OpenHAB — открытой платформой, которую можно запустить на том же RPI. Она поддерживает больше 100 различных производителей железа и сервисов. Есть множество аналогичных систем — ioBroker, HomeAssistant, Domotiqz и т.д. OpenHAB и NodeRED прекрасно дополняют друг-друга — OpenHAB отвечает за низкий уровень, а Node-RED за сценарии работы.
Второй интересный компонент — удаленный доступ и UI. Облако — это хорошо, и голосовые ассистенты тоже, но пользователи также хотят видеть и управлять с телефона и не только через WEB. А также иметь определенную безопасность. В этом случае мое решение для прототипирования — облачный брокер, например CloudMQTT + приложение не телефон/планшет/компьютер The Home Remote, которое позволяет легко создавать пользовательские UI с поддержкой MQTT. И тогда организация удаленного доступа через интернет становится простой игрой, а не мученьем с проброской портв, dynamic DNS и прочего.
Ну и третий компонент, которые только начинает набирать обороты в IoT — edge computing. Опять же облако — это хорошо, но некоторые задачи и алгоритмы необходимо выполнять на месте, особенно если они требуют определенного времени реакции. Если сработал датчик движения, то система должна включить свет сразу-же, а не через 5 секунд, пока все не пройдет через облако. В данном случае нам помогают промышленные решения, которые выходят на рынок IoT. Например я и использую Codesys — среду и рантайм, который используется для программирования программируемых логических контроллеров и исполнения кода на них в реальном времени + библиотеку MQTT для интеграции с IoT.
Быстрое прототипирование устройств Интернета вещей