Transparent TCP proxy for the Kohler RDC2 generator controller — decodes telemetry, survives Kohler/Rehlko cloud outages.
Project description
rdc-proxy
Transparent TCP proxy for the Kohler RDC2 (Blue Board) generator controller. Decodes the plaintext TLV wire protocol in real time, survives Kohler/Rehlko cloud outages by replaying a captured handshake, and serves a local-only dashboard.
What it does
- Sits as a Linux L2 bridge between the RDC and your LAN — zero config on the RDC side, no cloud account required after initial pairing.
- In PROXY mode it relays RDC ↔ Kohler cloud transparently while tapping the stream to decode telemetry.
- In LOCAL mode (no internet) it replays a captured cloud handshake so the RDC keeps streaming to the Pi instead of faulting.
- Serves a dashboard at
http://<pi>/with engine state, voltages, frequency, runtime hours, utility loss events, and interface counters.
Quick start (fresh Raspberry Pi)
See docs/PI-SETUP.md for the full flash-to-running walkthrough. The short version once you're SSH'd into the Pi:
curl -fsSL https://raw.githubusercontent.com/andrewroydshayes/rdc-proxy/main/install/install.sh \
| sudo RDC_IP=10.0.0.50 bash
Architecture
See docs/ARCHITECTURE.md for module layout, the plugin contract, and the TPROXY-on-bridge gotchas.
Plugins
External integrations live in separate packages that register under the
rdc_proxy.plugins entry-point group. Install a plugin with pip after
rdc-proxy is up — it's picked up automatically on next service restart.
Development
# Run tests
pip install -e ".[dev]"
pytest
# Run locally (without systemd)
python -m rdc_proxy
Status
Runs in production on a Raspberry Pi 4 monitoring a Kohler 20 kW generator (Model20KW, RDC2, firmware 3.4.5). See project memory for the handshake reverse-engineering notes and mode-transition validation tests.
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rdc_proxy-0.2.0.tar.gz.
File metadata
- Download URL: rdc_proxy-0.2.0.tar.gz
- Upload date:
- Size: 96.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aedccb85ffd92adc14455c9fa3c19fea81a65c93c457c8191b6fbdedd47fe107
|
|
| MD5 |
aa1f1bb9f14a36d8c580112ae6b4be33
|
|
| BLAKE2b-256 |
0055cf7d85d4e8f970cca701cf185240718236145bd7029697575694e2b80c70
|
Provenance
The following attestation bundles were made for rdc_proxy-0.2.0.tar.gz:
Publisher:
publish.yml on andrewroydshayes/rdc-proxy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rdc_proxy-0.2.0.tar.gz -
Subject digest:
aedccb85ffd92adc14455c9fa3c19fea81a65c93c457c8191b6fbdedd47fe107 - Sigstore transparency entry: 1340831708
- Sigstore integration time:
-
Permalink:
andrewroydshayes/rdc-proxy@8de360f06f1e720ea5a2e0b13d035ccb4c00e3bb -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/andrewroydshayes
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8de360f06f1e720ea5a2e0b13d035ccb4c00e3bb -
Trigger Event:
push
-
Statement type:
File details
Details for the file rdc_proxy-0.2.0-py3-none-any.whl.
File metadata
- Download URL: rdc_proxy-0.2.0-py3-none-any.whl
- Upload date:
- Size: 92.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf667ae690463decc5a67b1905b1e0ebb124360de54a96b9af976f527f211568
|
|
| MD5 |
4e7864b97a68012420458b9e85c249f6
|
|
| BLAKE2b-256 |
1cdfef5658b1094d5af23b3be2b227e81b407f269db8dd08d222fbd7d0bbd12a
|
Provenance
The following attestation bundles were made for rdc_proxy-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on andrewroydshayes/rdc-proxy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rdc_proxy-0.2.0-py3-none-any.whl -
Subject digest:
cf667ae690463decc5a67b1905b1e0ebb124360de54a96b9af976f527f211568 - Sigstore transparency entry: 1340831711
- Sigstore integration time:
-
Permalink:
andrewroydshayes/rdc-proxy@8de360f06f1e720ea5a2e0b13d035ccb4c00e3bb -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/andrewroydshayes
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8de360f06f1e720ea5a2e0b13d035ccb4c00e3bb -
Trigger Event:
push
-
Statement type: