#iot #scada #api-bindings

rsiot

通过特征标志导入所有其他库

74 个版本

0.0.82 2024 年 7 月 8 日
0.0.81 2024 年 4 月 17 日
0.0.78 2024 年 3 月 25 日
0.0.64 2024 年 2 月 29 日
0.0.16 2023 年 11 月 30 日

#189 in GUI

Download history 40/week @ 2024-04-18 4/week @ 2024-05-30 123/week @ 2024-07-04 14/week @ 2024-07-11 263/week @ 2024-07-25 35/week @ 2024-08-01

每月 320 次下载

MIT/Apache 和可能 GPL-3.0-only…

7.5MB
12K SLoC

包含 (压缩文件,3MB) .xdp-..com.vivaldi.Vivaldi.Fs84b5-dWf6a8

构建数据收集、处理和可视化系统的组件

文档

概述

描述

组件 是异步函数。所有函数都有三个参数

async fn component<TMessage, TConfig>(
    input: Option<tokio::sync::mpsc::Receiver<TMessage>>,
    output: Option<tokio::sync::mpsc::Sender<TMessage>>,
    config: TConfig,
) -> ()
where
    TMessage: IMessage
{}

组件之间的消息通过 tokio 库的 "多个生产者到单个消费者" 通道传递。

输入或输出流可以不指定,因此通道被包裹在 Option 中。

每个组件的 TConfig 类型的配置结构是唯一的。

组件不返回任何内容(更准确地说,返回类型为 ())。如果组件中出现错误,必须在函数内部实现重启逻辑。TODO - 重新考虑,可能值得在关键错误时返回 Result。

消息 是一个枚举类型,例如

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

依赖项

~6–54MB
~1M SLoC