Компоненты для построения системы сбора данных
Компоненты
Взаимодействие с устройствами нижнего уровня
Взаимодейтсвие с устройствами, поддерживающими протокол Modbus TCP сервер / Modbus RTU slave.
Взаимодействие с устройствами, имеющими HTTP API.
Взаимодействие с устройствами, поддерживющими функциональность Websocket сервера.
TODO opcua-client
Взаимодействие с контроллерами, имеющими функциональность OPC UA сервера.
TODO s7-client
Взаимодействие с контроллерами Siemens по протоколу S7.
Взаимодействие с системами верхнего уровня
Поддержка HTTP API, через который внешние клиенты могут получать и вводить данные.
Поддержка Websocket сервера, к которому могут подключаться внешние клиенты.
TODO mqtt
TODO telegram
Брокеры сообщений
Публикация сообщений в Redis.
Подписка на сообщения из Redis.
Сохранение данных в БД
Сохрание сообщений в виде временных рядов в TimescaleDB.
Интерфейсы пользователя
TODO leptos
Вспомогательные крейты
Чтение конфигурации из файла .env
.
TODO logging
Настройка логгирования
Описание
Компоненты представляют собой асинхронные функции. У всех функций три аргумента:
# use tokio;
# use IMessage;
async
Сообщения между компонентами передаются через каналы "many producers to a single consumer"
библиотеки tokio
.
Входной или выходной потоки могут быть не заданы, поэтому каналы обернуты в Option.
Структура конфигурации типа TConfig
у каждого компонента своя.
Компоненты ничего не возвращают (точнее, возвращают тип ()
). Если в компоненте возникает ошибка,
логику перезапуска необходимо реализовать внутри данной функции. TODO - пересмотреть, возможно стоит
возвращать Result при критических ошибках.
Сообщения представляют собой тип enum, например:
use IMessage;
use ;
Трейт IMessage
реализует основные методы - см. документацию по крейту
rsiot-messages-core
Для упрощения компоненты можно создавать и объединять в цепочку компонентов.