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.
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.
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.
- 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)
Node not on your PATH? This machine's Node lives under nvm. Run
export PATH="$HOME/.nvm/versions/node/v24.15.0/bin:$PATH"(ornvm use 24) first sonpm/npxresolve.
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 rebuildTo 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.sdPluginEither way, Enphase Solar then appears in the Stream Deck actions list — drag a key onto your deck and configure it (see Setup below).
- Configure the key. Add the Production & Consumption action, open its settings (property inspector), and enter:
- Gateway host — usually
envoy.localor 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).
- Gateway host — usually
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.jsonbehind a JWT over HTTPS; on those gateways the key shows a setup error. Token-based access for newer firmware is not yet implemented.
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 iconsSee Install for linking/packaging the plugin into Stream Deck.
Note: the icons under
imgs/are generated byscripts/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.
MIT