#der #energy #client-server #sep2 #ieee2030 #20305

sep2_client

A Rust库,用于构建符合IEEE 2030.5标准的客户端

1 个不稳定版本

0.1.0 2024年3月19日

#1531 in 网络编程

MIT/Apache

135KB
2.5K SLoC

SEP2客户端库

sep2_client 是一个(WIP)Rust库,用于在基于Linux[^1]操作系统的平台上开发符合IEEE 2030.5标准的客户端。

它依赖于,并且应与 sep2_common crate 以及其IEEE 2030.5 XSD实现一起使用。

该crate使用异步Rust,并且目前仅支持 tokio 运行时。

文档

内容

sep2_client - IEEE 2030.5客户端库的实现,包括文档和示例

sep2_test_server - 用于测试的哑IEEE 2030.5服务器

docs - 论文项目报告和研讨会

进度

核心功能

  • 应用支持功能集(TCP、HTTP)
  • 安全功能集(TLS + 证书验证、HTTPS)
  • IEEE 2030.5基础客户端功能(GET、POST、PUT、DELETE)
  • 异步资源轮询
  • 通知/订阅客户端服务器机制
  • 全局时间偏移(服务器时间同步)
  • 事件调度器
    • DER
    • DRLC
    • 消息传递
    • 定价
    • 按计划时间偏移
  • 测试/文档
    • 作为系统测试的IEEE 2030.5示例
    • 事件调度器测试
    • 订阅/通知测试
    • DER非聚合客户端示例实现
  • 澳大利亚CSIP扩展

未来

示例

一个与服务器同步其时间的客户端

use sep2_client::{client::Client, time::update_time_offset};
use sep2_common::packages::{dcap::DeviceCapability, time::Time};

#[tokio::main]
async fn main() {
    // Create a HTTPS client for a specific server
    let client = Client::new_https(
        "https://127.0.0.1:1337",
        "client_cert.pem",
        "client_private_key.pem",
        "serca.pem",
        // No KeepAlive
        None,
        // Default Poll Tick Rate (10 minutes)
        None,
    )
    .expect("Couldn't create client");
    let dcap = client
        .get::<DeviceCapability>("/dcap")
        .await
        .expect("Couldn't retrieve dcap");
    let time_link = &dcap.time_link.unwrap();
    let time = client.get::<Time>(&time_link.href).await.unwrap();
    // Sync client time
    update_time_offset(time);
}

更多综合示例可以在 sep2_client/examples 目录中找到。

Cargo功能

可以通过您的crate的Cargo.toml启用或禁用功能

[dependencies.sep2_client]
features = ["der","pubsub"]

功能完整列表

  • default: 所有必需的IEEE 2030.5客户端功能集。应用支持、安全和时间。
  • event: 一个通用事件调度器接口
  • der: DER功能集事件调度器
  • pricing: 定价功能集事件调度器
  • messaging:消息功能集事件调度器
  • drlc:DRLC功能集事件调度器
  • pubsub:订阅/通知功能集的轻量级服务器。
  • csip_aus:CSIP-AUS扩展
  • all:以上所有

依赖项

由于IEEE 2030.5的安全要求,此库仅支持使用OpenSSL的TLS。要使用此库,您需要一个支持以下内容的本地OpenSSL安装:ECDHE-ECDSA-AES128-CCM8

[^1]:该库在macOS上按预期运行。如果您想在macOS上本地测试客户端,请确保openssl没有引用libressl,这是默认情况。

许可证

根据您的选择,许可如下:

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的您有意提交以包含在工作中的任何贡献,将根据上述方式双许可,不附加任何额外条款或条件。

依赖项

~13–26MB
~342K SLoC