# Enpal-Box (lokal) inkl. Wallbox in Homey integrieren

**URL:** <https://community.homey.app/t/enpal-box-lokal-inkl-wallbox-in-homey-integrieren/147937>\
**Category:** 🇩🇪 Deutsch (German)\
**Created:** [December 27, 2025, 6:28pm UTC](https://community.homey.app/t/enpal-box-lokal-inkl-wallbox-in-homey-integrieren/147937 "2025-12-27T18:28:45Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Torsten\_Zauner](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/torsten_zauner/32/93365_2.png) [@Torsten\_Zauner](https://community.homey.app/u/Torsten_Zauner)\
**Post date:** [December 27, 2025, 6:28pm UTC](https://community.homey.app/t/enpal-box-lokal-inkl-wallbox-in-homey-integrieren/147937/1 "2025-12-27T18:28:46Z")

</div>

# Enpal-Box (lokal) inkl. Wallbox in Homey integrieren

## Ziel

Dieses Tutorial zeigt, wie man Daten direkt aus der lokalen Enpal-Box im Heimnetzwerk mit HomeyScript ausliest und in Homey darstellt:

- PV-Leistung

- Netzbezug

- Hausverbrauch

- Batterie (Laden/Entladen + SoC)

- Wallbox-Leistung

Die Werte werden über Logik-Variablen verarbeitet und anschließend virtuellen Geräten zugewiesen.

* * *

## Voraussetzungen

- Homey (Pro empfohlen)

- App **HomeyScript**

- Enpal-Box im gleichen lokalen Netzwerk wie Homey

- Zugriff auf die lokale Enpal-Weboberfläche (z. B. `http://192.168.x.x`)

* * *

## Schritt 1: Benötigte Logik-Variablen anlegen

In Homey: **Mehr → Logik → Variablen → Neue Variable**

Lege folgende Variablen exakt mit diesen Namen an (Typ: Zahl, Startwert: 0):

- `PV_Power`

- `Grid_Power`

- `House_Power`

- `Battery_Charge_Power`

- `Battery_Discharge_Power`

- `Battery_SOC`

- `Wallbox_Power`

* * *

## Schritt 2: IDs der Variablen auslesen

```auto
const variables = await Homey.logic.getVariables();
for (const v of Object.values(variables)) {
  console.log(v.name, '→', v.id);
}

```

Notiere alle IDs, diese werden im Hauptscript benötigt.

* * *

## Schritt 3: Lokale Enpal-Box prüfen

Öffne im Browser die lokale Enpal-Box:

```auto
http://192.168.x.x
oder
http://192.168.x.x/deviceMessages

```

Homey muss im gleichen Netzwerk sein.

* * *

## Schritt 4: Haupt-HomeyScript einfügen

Lege in HomeyScript ein neues Script an und füge folgendes Script ein. **Passe nur die IP und Variablen-IDs an**.

```auto
function parseValue(val) {
  if (!val) return null;
  return parseFloat(val.replace(/[^\d.-]/g, ''));
}

function getSensorValue(html, sensorName) {
  const regex = new RegExp(`<tr>\\s*<td>\\s*${sensorName}\\s*</td>\\s*<td>(.*?)</td>`, 'i');
  const match = html.match(regex);
  if (!match) {
    console.warn(`⚠️ Sensor "${sensorName}" nicht gefunden`);
    return null;
  }
  return parseValue(match[1]);
}

async function smoothVariablePeak(varId, newValue, historySize = 5, peakThreshold = 0.3) {
  const variable = await Homey.logic.getVariable({ id: varId });
  if (!variable.history) variable.history = [];
  const lastValue = variable.history.length ? variable.history[variable.history.length - 1] : newValue;
  if (variable.history.length && Math.abs(newValue - lastValue)/Math.max(lastValue,1) > peakThreshold) {
    newValue = lastValue + Math.sign(newValue - lastValue) * lastValue * peakThreshold;
  }
  variable.history.push(newValue);
  if (variable.history.length > historySize) variable.history.shift();
  const avg = variable.history.reduce((a,b)=>a+b,0)/variable.history.length;
  variable.value = avg;
  await Homey.logic.updateVariable({ id: varId, variable });
  return avg;
}

const ENPAL_URL = "http://192.168.x.x/deviceMessages"; // ← ANPASSEN!

const VAR_GRID_POWER = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
const VAR_PV_POWER = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
const VAR_BATTERY_CHARGE_POWER = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
const VAR_BATTERY_DISCHARGE_POWER = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
const VAR_BATTERY_SOC = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
const VAR_WALLBOX_POWER = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
const VAR_HOUSE_POWER = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";

try {
  const response = await fetch(ENPAL_URL);
  const html = await response.text();

  let gridPower = getSensorValue(html, "Power.Grid.Export");
  if(gridPower !== null) gridPower = -gridPower;
  const gridAvg = await smoothVariablePeak(VAR_GRID_POWER, gridPower || 0);

  const pvPower = getSensorValue(html, "Power.DC.Total") || 0;
  const pvAvg = await smoothVariablePeak(VAR_PV_POWER, pvPower);

  const batteryPower = getSensorValue(html, "Power.Battery.Charge.Discharge") || 0;
  const batteryChargeAvg = await smoothVariablePeak(VAR_BATTERY_CHARGE_POWER, batteryPower);
  const batteryDischargeAvg = await smoothVariablePeak(VAR_BATTERY_DISCHARGE_POWER, batteryPower);

  const batterySoc = getSensorValue(html, "Energy.Battery.Charge.Level.Absolute") || 0;
  const batterySocAvg = await smoothVariablePeak(VAR_BATTERY_SOC, batterySoc);

  const wallboxPower = getSensorValue(html, "Power.Wallbox.Connector.1.Charging") || 0;
  const wallboxAvg = await smoothVariablePeak(VAR_WALLBOX_POWER, wallboxPower);

  const housePower = pvPower + (gridPower||0) - batteryDischargeAvg + batteryChargeAvg + wallboxPower;
  const houseAvg = await smoothVariablePeak(VAR_HOUSE_POWER, housePower);

  return {
    grid: Math.round(gridAvg),
    pv: Math.round(pvAvg),
    batteryCharge: Math.round(batteryChargeAvg),
    batteryDischarge: Math.round(batteryDischargeAvg),
    batterySoc: Math.round(batterySocAvg),
    wallbox: Math.round(wallboxAvg),
    house: Math.round(houseAvg)
  };
} catch(err) {
  console.error("❌ Fehler beim Auslesen der Enpal-Box:", err);
  return null;
}

```

* * *

## Schritt 5: Script testen

- Script manuell ausführen

- Log prüfen auf Fehler und sinnvolle Werte

* * *

## Schritt 6: Virtuelle Geräte anlegen

- PV-Anlage, Batterie, Wallbox, Netz, Hausverbrauch

- Mit den entsprechenden Variablen verknüpfen (`measure_power`)

* * *

## Schritt 7: Homey Energy (optional)

- PV → Erzeuger

- Batterie → Speicher

- Wallbox → Großverbraucher

- Netz → Netzanschluss

* * *

## Ergebnis

- Direkte Nutzung der lokalen Enpal-Box

- PV, Batterie & Wallbox live in Homey

- Stabil, schnell und erweiterbar

* * *

## Hinweise & Troubleshooting

- Zeigt alles 0 → IP prüfen, Netzwerk prüfen

- Fehler im Log → Variablen-IDs prüfen

- Sensor nicht gefunden → Enpal-Firmware kann abweichen

---

<div class="post-metadata">

**Author:** ![Patric\_Bachem](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/patric_bachem/32/120823_2.png) [@Patric\_Bachem](https://community.homey.app/u/Patric_Bachem)\
**Post date:** [February 22, 2026, 10:11am UTC](https://community.homey.app/t/enpal-box-lokal-inkl-wallbox-in-homey-integrieren/147937/2 "2026-02-22T10:11:36Z")

</div>

Hallo Experten,

ich bin in der Anleitung bis zum erfolgreichen Skript testen gekommen.

Beim Anlegen der virtuellen Geräte und Variablen verknüpfen komme ich aber nicht weiter. Könnte jemand von euch dazu eine etwas detailliertere Anleitung posten? Und evtl. für die folgenden Schritte auch?  
Danke Vorab!

---

<div class="post-metadata">

**Author:** ![Torsten\_Zauner](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/torsten_zauner/32/93365_2.png) [@Torsten\_Zauner](https://community.homey.app/u/Torsten_Zauner)\
**Post date:** [February 22, 2026, 4:05pm UTC](https://community.homey.app/t/enpal-box-lokal-inkl-wallbox-in-homey-integrieren/147937/3 "2026-02-22T16:05:18Z")

</div>

Die Geräte legst du mit Device Capabilities an und die variablen findest du wenn du auf Flow gehst oben links .

Mach das erstmal mit einem gerat zu Probieren , ich habe da auch lange für gebraucht ( ChatGPT ) hat mir da geholfen 😉

 ![IMG_1225](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/5/d57cbf1449392d6bb24aa723687019b837e27b6e.jpeg)

 ![IMG_1227](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/f/7/f706da8fa20d25ee7acab4987b9c6cda47ba6471.jpeg)

 ![IMG_1226](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/0/1/01b8f6cae9683fa1f64615d580918d7e01b1d00b.jpeg)

---

<div class="post-metadata">

**Author:** ![Torsten\_Zauner](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/torsten_zauner/32/93365_2.png) [@Torsten\_Zauner](https://community.homey.app/u/Torsten_Zauner)\
**Post date:** [February 22, 2026, 4:07pm UTC](https://community.homey.app/t/enpal-box-lokal-inkl-wallbox-in-homey-integrieren/147937/4 "2026-02-22T16:07:59Z")

</div>

ach ja du musst dann noch einen flow erstellen der das Script alle 5 min ausführt und die Daten in die variablen schreibt .

---

<div class="post-metadata">

**Author:** ![Torsten\_Zauner](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/torsten_zauner/32/93365_2.png) [@Torsten\_Zauner](https://community.homey.app/u/Torsten_Zauner)\
**Post date:** [May 15, 2026, 5:41pm UTC](https://community.homey.app/t/enpal-box-lokal-inkl-wallbox-in-homey-integrieren/147937/5 "2026-05-15T17:41:06Z")

</div>

Hätte da vielleicht eine Alternative [https://socke.app](https://socke.app)
