Expand description
Компоненты для построения системы сбора, обработки и визуализации данных
Документация по платформам:
- x86_64-unknown-linux-gnu
- aarch64-linux-android
- aarch64-unknown-linux-gnu
- riscv32imc-esp-espidf
- wasm32-unknown-unknown
§Обзор
Набор компонентов для создания системы управления и диспетчиризации.
Клиентское подключение:
- cmp_http_client_wasm
- cmp_http_client
- cmp_modbus_client
- cmp_websocket_client_wasm
- cmp_websocket_client
Сервера:
- cmp_http_server_esp
- cmp_http_server
- cmp_websocket_server
Брокеры сообщений:
- cmp_esp_mqtt_client
- cmp_mqtt_client
- cmp_redis_client
Интерфейс пользователя:
- cmp_leptos
- cmp_slint
Авторизация:
- cmp_auth
Сохранение данных:
- cmp_esp_nvs
- cmp_influxdb
- cmp_surrealdb
- cmp_timescaledb
- cmp_webstorage
Взаимодействие с аппаратной частью:
- cmp_esp_adc
- cmp_esp_gpio
- cmp_esp_i2c_master
- cmp_esp_i2c_slave
- cmp_esp_led
- cmp_esp_mqtt_client
- cmp_esp_spi_master
- cmp_esp_wifi
- cmp_raspberrypi_gpio
Логика исполнения
- cmp_plc
Систеная информация
- cmp_system_info
Служебные компоненты:
- cmp_add_input_stream
- cmp_add_output_stream
- cmp_derive
- cmp_external_fn_process
- cmp_inject_periodic
- cmp_logger
§Описание
Компоненты представляют собой асинхронные функции. У всех функций три аргумента:
async fn component<TMessage, TConfig>(
input: Option<tokio::sync::mpsc::Receiver<TMessage>>,
output: Option<tokio::sync::mpsc::Sender<TMessage>>,
config: TConfig,
) -> ()
where
TMessage: IMessage
{}
Сообщения между компонентами передаются через каналы “many producers to a single consumer”
библиотеки tokio
.
Входной или выходной потоки могут быть не заданы, поэтому каналы обернуты в Option.
Структура конфигурации типа TConfig
у каждого компонента своя.
Компоненты ничего не возвращают (точнее, возвращают тип ()
). Если в компоненте возникает
ошибка, логику перезапуска необходимо реализовать внутри данной функции. TODO - пересмотреть,
возможно стоит возвращать Result при критических ошибках.
Сообщения представляют собой тип enum, например:
use rsiot_messages_core::eav::EavModel;
use rsiot_messages_core::IMessage;
use serde::{Deserialize, Serialize};
[derive(Clone, Debug, Deserialize, Serialize)]
enum Message {
/// Текущее значение температуры
Temperature(f64),
/// Задание уставки
ChangeSetpoint(f64),
}
impl IMessage for Message {
fn into_eav(self) -> Vec<EavModel> {
vec![]
}}
Трейт IMessage
реализует основные методы - см. документацию по крейту
rsiot-messages-core
Для упрощения компоненты можно создавать и объединять в цепочку компонентов.
- может генерировать сообщения как на основе входных сообщений
- может генерировать сообщения периодически
§Флаги feature
:
env_vars
— Конфигурирование через переменныеexecutor
— Базовые компонентыlogging
— Настройка логгирования сообщенийsingle-thread
— Работа в однопоточном режимеcmp_auth
— Компонент аутентификацииcmp_esp
— Компоненты для работы с микроконтроллером ESPcmp_http_client
— Компонент http-клиентcmp_http_client_wasm
— Компонент http-клиент для платформы WASMcmp_http_server
— Компонент http-серверcmp_influxdb
— Компонент сохранения в БД InfluxDBcmp_filesystem
— Комонент сохранения данных в файловой системеcmp_leptos
— Компонент для создания интерфейсов на базе Leptoscmp_linux_spi_master
— Комонент для коммуникации через порт SPIcmp_linux_uart_master
— Комонент для коммуникации через порт UARTcmp_modbus_client
— Компонент Modbus клиентcmp_mqtt_client
— Комонент клиента MQTTcmp_os_process
— Выполнение процесса ОСcmp_plc
— Компонент ПЛКcmp_raspberrypi
— Работа с периферией Raspberry Picmp_redis_client
— Компонент клиента Rediscmp_slint
— Компонент пользовательского интерфейса, реализованного с помощью библиотеки Slintcmp_surrealdb
— Компонент доступа к БД SurrealDBcmp_system_info
— Компонент получает системную информациюcmp_telegram
— Компонент бота telegramcmp_timescaledb
— Компонент сохранения в БД TimescaleDBcmp_websocket_client
— Компонент websocket клиентаcmp_websocket_client_wasm
— Компонент websocket клиента для платформы WASMcmp_websocket_server
— Компонент websocket сервераcmp_webstorage
— Хранение и загрузка сообщений используя Web Storage API браузераrustdoc
— Компиляция документации TODO - какая-то проблема в tokio
Modules§
- Компоненты
- Структуры для конфигурации компонентов.
- Дополнительная документация
- Драйверы для протокола I2C
- Загрузка переменных среды из ОС и из файла .env
- Исполнитель - структура для запуска компонентов
- Настройки логгирования для разных платформ.
- Представление сообщений в системе.
- Утилиты для сериализации / десериализации