From 1dbc34bc8a999bfdadb64d81b85c4e106c978415 Mon Sep 17 00:00:00 2001 From: Jorrit Nutma Date: Thu, 20 Aug 2026 15:32:28 +0200 Subject: [PATCH 1/2] Add page about S2 Connect implementations --- .../learn/communication-layer/introduction.md | 4 ++- .../s2-connect-implementations.md | 32 +++++++++++++++++++ .../communication-layer/why-not-oauth.md | 1 + website/docs/specs/specs.md | 9 +++++- 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 website/docs/learn/communication-layer/s2-connect-implementations.md diff --git a/website/docs/learn/communication-layer/introduction.md b/website/docs/learn/communication-layer/introduction.md index bc1e48e..78c6355 100644 --- a/website/docs/learn/communication-layer/introduction.md +++ b/website/docs/learn/communication-layer/introduction.md @@ -16,4 +16,6 @@ S2 was designed as a semantic protocol, which can have multiple, mutually compat S2 Connect specifies the discovery, pairing, communication and unpairing process between two S2 Connect capable devices. -Refer to [specification](/s2-connect/1.0.0/discovery-pairing-authentication) to read the S2-Connect specification. \ No newline at end of file +Refer to [specification](/s2-connect/1.0.0/discovery-pairing-authentication) to read the S2-Connect specification. + +If you are looking for implementations of S2 Connect, head over to the [implementation status](s2-connect-implementations) page. \ No newline at end of file diff --git a/website/docs/learn/communication-layer/s2-connect-implementations.md b/website/docs/learn/communication-layer/s2-connect-implementations.md new file mode 100644 index 0000000..7642b20 --- /dev/null +++ b/website/docs/learn/communication-layer/s2-connect-implementations.md @@ -0,0 +1,32 @@ +--- +title: Implementations +sidebar_position: 2 +--- + +# S2 Connect implementations + +S2 Connect allows for full interoperability between Resource Managers and Energy Management Systems in local, cloud and hybrid deployments. It is quite some work to implement the [S2 Connect specification](/s2-connect/1.0.0/discovery-pairing-authentication/). Therefore, S2 Connect is implemented in libraries for several programming languages. The goal is to have libraries with a clean API for the discovery, pairing and S2 session initiation process that shields all the implementation details from the users of the libraries such that they can focus on the real work of creating Resource Managers and Energy Management systems. + +## Language overview +- **Rust**: currently the most complete implementation. S2 Connect is implemented in the [S2-Rust library](https://github.com/flexiblepower/s2-rust). +- **Python**: a work in progress. The implementation is currently in a private repository but if you are a Python developer and interested in contributing, please reach out on [discord](https://discord.com/invite/NyFMEPmuDw). +- **C**: a work in progress by [Inversable](https://inversable.com/). Will be published open source soon. +- **Go**: a work in progress. + +## Feature overview +The main efforts have been put into the implementation of S2 Connect in Rust and Python. Below is an overview of the current implementation status. + +| Feature | **Rust** | **Python**| +|---|---|---| +| WAN discovery | ❌ | ❌ | +| LAN discovery | ✅ | ❌ | +| Pairing Client | ✅ | ✅ | +| Pairing Server | ✅ | 🚧| +| Pairing API | ✅ | ❌ | +| Session initiation | ✅ | 🚧 | +| Unpairing | ✅ | 🚧 | + +There is important note about Rust implementation: the specification says that there must be a rate limiting on the pairing process of one pairing per node_id per second. This is not yet implemented in Rust. + +## Help wanted +There is still a lot of work to do. So if you like to contribute, have a look at the open issues, pick one, start the implementation and open a pull request. We would also like to get in touch with you on [discord](https://discord.com/invite/NyFMEPmuDw) where we can also discuss technical decision for the implementation of S2 Connect. \ No newline at end of file diff --git a/website/docs/learn/communication-layer/why-not-oauth.md b/website/docs/learn/communication-layer/why-not-oauth.md index 939de10..cffe3bc 100644 --- a/website/docs/learn/communication-layer/why-not-oauth.md +++ b/website/docs/learn/communication-layer/why-not-oauth.md @@ -1,5 +1,6 @@ --- title: Why not OAuth 2.0? +sidebar_position: 3 --- Since OAuth 2.0 is the industry standard to authorize clients for accessing protected server resources, it is very reasonable to question why the authorization of S2 clients do not use OAuth 2.0. This chapter addresses that question. diff --git a/website/docs/specs/specs.md b/website/docs/specs/specs.md index 0e55196..fe8d688 100644 --- a/website/docs/specs/specs.md +++ b/website/docs/specs/specs.md @@ -5,6 +5,7 @@ import LinkCard from '@site/src/components/LinkCard'; import ThemedImage from '@theme/ThemedImage'; import useBaseUrl from '@docusaurus/useBaseUrl'; import CodeJsonIcon from '@iconify-react/mdi/code-json'; +import FileCodeIcon from '@iconify-react/mdi/file-code'; # Overview of specifications @@ -32,7 +33,7 @@ S2 Connect is a protocol specification enabling communication between an Energy title="S2 Connect specification" description="Read the full specification about interoperable device discovery, secure pairing, and authentication mechanisms" icon={} /> +} +/> From 65c73aabaa9cc4ff18bbfd1ee77fcf3d6fb13af7 Mon Sep 17 00:00:00 2001 From: Jorrit Nutma Date: Thu, 20 Aug 2026 16:50:53 +0200 Subject: [PATCH 2/2] Fix broken link --- website/docs/learn/communication-layer/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/learn/communication-layer/introduction.md b/website/docs/learn/communication-layer/introduction.md index 78c6355..6202417 100644 --- a/website/docs/learn/communication-layer/introduction.md +++ b/website/docs/learn/communication-layer/introduction.md @@ -18,4 +18,4 @@ S2 Connect specifies the discovery, pairing, communication and unpairing process Refer to [specification](/s2-connect/1.0.0/discovery-pairing-authentication) to read the S2-Connect specification. -If you are looking for implementations of S2 Connect, head over to the [implementation status](s2-connect-implementations) page. \ No newline at end of file +If you are looking for implementations of S2 Connect, head over to the [implementation status](s2-connect-implementations.md) page. \ No newline at end of file