Skip to content

Repository files navigation

Enphase Solar — Stream Deck plugin

An Elgato Stream Deck plugin that shows live solar production and household consumption (watts) read directly from a local Enphase IQ Gateway / Envoy on your network — no cloud round-trip.

Live, stale, and setup states of the Enphase key

From left to right: a live key, the same reading dimmed when the gateway can't be reached, and the setup prompt shown before a gateway host is configured.

Action

One action — Production & Consumption (tphan.enphase.overview) — fills a single key with two stacked horizontal bars, each labelled with its live watt value:

  • yellow — solar production
  • red — household consumption

Each bar has its own full-scale value (the watts that equal a 100%-filled bar), configurable independently — Production scale and Consumption scale (default 6000 W each). Press the key to force an immediate refresh; otherwise it polls on its configured interval (default 15s). If the gateway can't be reached, the last reading stays on the key but dims to show it's no longer live.

Requirements

  • Stream Deck app 6.5+
  • Node.js 20+ (for development/build)
  • An Enphase IQ Gateway reachable on your LAN, running firmware pre-v7 (see note below)

Install

Node not on your PATH? This machine's Node lives under nvm. Run export PATH="$HOME/.nvm/versions/node/v24.15.0/bin:$PATH" (or nvm use 24) first so npm/npx resolve.

Make sure the Stream Deck app is installed and running, then build the plugin:

npm install        # first time only
npm run build      # creates tphan.enphase.sdPlugin/bin/plugin.js (required)

Option A — link it (recommended while developing). Symlinks the plugin folder into Stream Deck so it loads in place:

npx streamdeck link tphan.enphase.sdPlugin
npx streamdeck restart tphan.enphase     # reload after each rebuild

To remove the dev symlink later, use npx streamdeck unlink tphan.enphase.sdPlugin.

Option B — package it (to install like a normal plugin or share it). Produces a double-clickable .streamDeckPlugin installer:

npx streamdeck pack tphan.enphase.sdPlugin

Either way, Enphase Solar then appears in the Stream Deck actions list — drag a key onto your deck and configure it (see Setup below).

Setup

  1. Configure the key. Add the Production & Consumption action, open its settings (property inspector), and enter:
    • Gateway host — usually envoy.local or the gateway's LAN IP (stored in global settings, shared by all keys).
    • Refresh — poll interval in seconds.
    • Production scale / Consumption scale (W) — the watt value that fills each bar completely (set independently per metric).

That's it — no account or token needed. The plugin reads the gateway's unauthenticated /production.json endpoint over plain HTTP, which returns both production and consumption arrays.

Firmware note: the unauthenticated endpoint is only available on older IQ Gateway firmware (pre-v7). Firmware v7+ locks /production.json behind a JWT over HTTPS; on those gateways the key shows a setup error. Token-based access for newer firmware is not yet implemented.

Development

npm install
npm run build      # bundle src → tphan.enphase.sdPlugin/bin/plugin.js
npm run watch      # rebuild on change and restart the plugin in Stream Deck
npm run lint       # type-check only (tsc --noEmit)
npm run gen:icons  # regenerate the icons

See Install for linking/packaging the plugin into Stream Deck.

Note: the icons under imgs/ are generated by scripts/gen-icons.mjs (npm run gen:icons) — the plugin and category icons from the Enphase logomark (.claude/assets/enphase_logomark_white.svg), and the action icon from the MDI "solar-panel" glyph.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages