Third-Party Sources
The third-party code this project runs on, and — separately — cases where a
service’s behavior was adapted from ideas or documentation in another
open-source project without using its code. Package managers
(pyproject.toml, go.mod, package.json) remain the source of truth for
exact versions; this page exists to name what each dependency is actually
for, and to trace a non-obvious implementation choice back to where it came
from.
Python services
Every service depends on paho-mqtt (via libs/energy_node_common) for its
MQTT connection. Beyond that:
| Package | Used by | What for |
|---|---|---|
paho-mqtt |
all services | MQTT client, declared in libs/energy_node_common/pyproject.toml |
apsystems-ez1 |
services/apsystems_ez1/ |
client for the EZ1 microinverter’s local REST API |
requests + urllib3 |
services/shelly/, services/trucki/ |
HTTP polling with connection pooling/retry |
tinytuya |
services/tuya_mqtt/ |
local (non-cloud) protocol for Tuya devices, including the device-setup wizard the dashboard shells out to |
services/battery_soc/ and services/automation/ have no third-party
dependency beyond paho-mqtt; their logic lives in the stdlib-only internal
packages battery_soc_core and energy_node_common.
Go: dashboard and installer
| Package | Used by | What for |
|---|---|---|
eclipse/paho.mqtt.golang |
dashboard/ |
MQTT client (direct dependency; gorilla/websocket, golang.org/x/net and golang.org/x/sync come in transitively) |
pkg/sftp |
installer/ |
file transfer to the target Pi over SSH |
golang.org/x/crypto, golang.org/x/term |
installer/ |
SSH client and terminal handling for the provisioning flow |
installer/webui/ (github.com/Developer-Simon/energy-node-webui) has no
external dependency — standard library only.
Dashboard web UI (JavaScript)
Vendored directly, no CDN and no build step — see
dashboard/internal/webui/static/js-deps/THIRD-PARTY-NOTICES.md
for the full list with versions and licenses (Alpine.js, ApexCharts,
Choices.js, Cytoscape.js, flatpickr, GridStack.js, htmx, Popper, Tippy.js).
installer/webui/ embeds the same build; its own notices file points back
here rather than duplicating the table.
Adapted from, not depended on
APsystems EZ1
apsystems-ez1-enhanced— a community-maintained Home Assistant integration for the same inverter family. Its documented RAM-vs-flash power-limit behavior (getDefaultMaxPower/setDefaultMaxPower) and its use of the undocumentedgetOutputDataDetailendpoint informed the power-limit handling and extended diagnostics described inservices/apsystems-ez1.md. No code was copied — both projects use the same underlyingapsystems-ez1PyPI package, so the endpoint behavior applies directly.