Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rdc_proxy-0.2.1.tar.gz (97.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rdc_proxy-0.2.1-py3-none-any.whl (93.2 kB view details)

Uploaded Python 3

File details

Details for the file rdc_proxy-0.2.1.tar.gz.

File metadata

  • Download URL: rdc_proxy-0.2.1.tar.gz
  • Upload date:
  • Size: 97.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rdc_proxy-0.2.1.tar.gz
Algorithm Hash digest
SHA256 ecd07bcf528eeaa15f55a2a06304888b5eda64ee636337084e5befcf8d15b54a
MD5 8bb6153afde3a566bdb3ed5600daf410
BLAKE2b-256 efbaf0b5e07930f0cd7eb5f242b1a01aa1282bcfc3d1490aa98394083dee8bf7

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdc_proxy-0.2.1.tar.gz:

Publisher: publish.yml on andrewroydshayes/rdc-proxy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rdc_proxy-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: rdc_proxy-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 93.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rdc_proxy-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 87dedb53b54ffba3d4afad65c256dc3a1f4c51bae032dcd0918eb2599fe72fa6
MD5 d179430258698f795f51682d19eb8d16
BLAKE2b-256 9b35f12e4da318a4e3b9b933884b57f3b8088b350d734345f70edf7e8d9df153

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdc_proxy-0.2.1-py3-none-any.whl:

Publisher: publish.yml on andrewroydshayes/rdc-proxy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page