- Notifications
You must be signed in to change notification settings - Fork9
A Rust library for building IEEE 2030.5 Clients
License
Apache-2.0, MIT licenses found
Licenses found
ethanndickson/sep2_client
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
sep2_client
is a (WIP) Rust library for developing IEEE 2030.5 compliant clients on Linux1 based operating systems.
It relies on, and should be used alongside, thesep2_common
crate, and it's implementation of the IEEE 2030.5 XSD.
This crate uses async rust, and currently only supports thetokio
runtime.
sep2_client
- Implementation of an IEEE 2030.5 Client Library, including documentation & examples
sep2_test_server
- Dumb IEEE 2030.5 Server for testing
docs
- Thesis Project Reports & Seminars
- Application Support Function Set (TCP, HTTP)
- Security Function Set (TLS + Certificate Verification, HTTPS)
- IEEE 2030.5 Base Client Capabilities (GET, POST, PUT, DELETE)
- Asynchronous Resource Polling
- Notification / Subscription Client Server Mechanism
- Global Time Offset (Server Time Sync)
- Event Scheduler
- DER
- DRLC
- Messaging
- Pricing
- Per-Schedule Time Offset
- Tests / Documentation
- IEEE 2030.5 Examples as System Tests
- Event Scheduler Tests
- Subscription/Notification Tests
- DER Non-Aggregate Client Sample Impl.
- Australian CSIP Extensions
A client that synchronises it's time with the server:
use sep2_client::{client::Client, time::update_time_offset};use sep2_common::packages::{dcap::DeviceCapability, time::Time};#[tokio::main]asyncfnmain(){// Create a HTTPS client for a specific serverlet client =Client::new_https("https://127.0.0.1:1337","client_cert.pem","client_private_key.pem","serca.pem",// No KeepAliveNone,// 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 timeupdate_time_offset(time);}
More comprehensive examples can be found in thesep2_client/examples
directory.
Features can be enabled or disabled through your crate's Cargo.toml
[dependencies.sep2_client]features = ["der","pubsub"]
default
: All mandatory IEEE 2030.5 Client function sets. Application Support, Security & Time.event
: A Generic Event Schedule interfaceder
: A Scheduler for DER Function Set Eventspricing
: A Scheduler for Pricing Function Set Eventsmessaging
: A Scheduler for Messaging Function Set Eventsdrlc
: A Scheduler for DRLC Function Set Eventspubsub
: A lightweight server for the Subscription / Notification function set.csip_aus
: CSIP-AUS Extensionsall
: All of the above
Due to the security requirements of IEEE 2030.5, this library only supports TLS using OpenSSL.To use this library you will require a local installation of OpenSSL with support forECDHE-ECDSA-AES128-CCM8
.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE orhttp://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT orhttp://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionallysubmitted for inclusion in the work by you, as defined in the Apache-2.0license, shall be dual licensed as above, without any additional termsor conditions.
Footnotes
The library happens to performs as expected on macOS. If you would like to test the client locally on macOS, ensure
openssl
does not refer tolibressl
, as is the case by default.↩
About
A Rust library for building IEEE 2030.5 Clients
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.