Private investigator for Magnum Energy inverter/charger RS-485 networks
Project description
magnum-pi
I know what you're thinking, and you're right.
Your Magnum Energy MS-Series inverter/charger has been broadcasting its secrets on a proprietary RS-485 bus since the day it was installed. Every 100 milliseconds, it transmits DC voltage, AC output, fault codes, battery temperature, charger state — the full dossier. The remote panel answers back with your configured setpoints. The AGS and BMK chime in from the back seat with generator status and battery state-of-charge. All of it flowing across two wires at 19200 baud, unencrypted, no authentication, just trust.
Someone needs to investigate. That's what magnum-pi does.
╭──────────────────────────────────╮
│ ╭───────────────╮ │
│ ╰──╮ ╭──╯ MAGNUM │
│ ╰─────────╯ P . I . │
│ │
│ Private Investigator for │
│ Magnum Energy RS-485 Networks │
╰──────────────────────────────────╯
Async Python library for reading and writing to the Magnum Network bus using any standard RS-485 adapter (USB dongles, Pi HATs, FTDI cables). Built on asyncio with Pydantic models, typed enums, and proper gap-based protocol framing.
Install
pip install magnum-pi
Quick start
from magnum_pi import MagnumBus
async with MagnumBus("/dev/ttyUSB0") as bus:
async for cycle in bus.listen():
if cycle.inverter:
print(f"{cycle.inverter.status.name} {cycle.inverter.dc_volts}V")
CLI
magnum-pi sniff # Raw hex dump
magnum-pi monitor --pretty # Decoded live dashboard
magnum-pi send --inverter toggle # Send commands
Prior art
pymagnum by Charles Godwin (BSD-3) — the original Python implementation that established the packet identification heuristics and scaling factors this library builds upon.
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 magnum_pi-2026.3.1.tar.gz.
File metadata
- Download URL: magnum_pi-2026.3.1.tar.gz
- Upload date:
- Size: 45.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4fbea2401303dbcbfe657090146f24cb0d3e1eafdc95f9513c8d4a670222a47
|
|
| MD5 |
8bf32c6ffb3d7d401f157d0b94abded1
|
|
| BLAKE2b-256 |
fb39e5b3d079b1841d1200af178d4a990765a8ba56cf93ae12fd7374ddaddddb
|
File details
Details for the file magnum_pi-2026.3.1-py3-none-any.whl.
File metadata
- Download URL: magnum_pi-2026.3.1-py3-none-any.whl
- Upload date:
- Size: 30.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ae1e494e11b3a5ca227ca06c5c32de0e2cfd7e04011f74f54feeaeb3ae44763
|
|
| MD5 |
d6b31eadd056cd1dac59012be86d7cbd
|
|
| BLAKE2b-256 |
5b19e36cc6f2f000d26b4534a5b1d5745019c77ebf6cc78aaa1f679431b3cdef
|