Homewizard thuisbatterij: energy tabblad hangt

Ehhhh. Hoe heb ik dat ook alweer gedaan. Volgens mij dit:

  • Ik heb deze app gemaakt: Marstek Energy | Homey
    (Alleen Marstek Battery installeren. (ik heb de app net geüpload…maar ga hem verder niet publiceren. Even niet letten op de images.. :))

  • Onderstaande homeyscript draai ik elke 10 seconden.

Je moet een nummer variabele aanmaken = batterij_capaciteit (Vul deze met het percentage die je ziet in de Marstek app)

De waarden komen dus niet echt van de Marstek Batterij, maar van de Homewizard socket.

'use strict';

(async () => {
  try {
    // Jouw vaste device-ID’s
    const SOCKET_ID  = '12345etc';  // Marstek batterij (HomeWizard socket)
    const BATTERY_ID = '67890etc';  // Marstek Battery

    // 1) Cumulatief verbruik & productie uitlezen van de socket
    const totalConsumed = await Homey.devices.getCapabilityValue({
      deviceId: SOCKET_ID,
      capabilityId: 'meter_power.consumed.t1'
    });
    const totalProduced = await Homey.devices.getCapabilityValue({
      deviceId: SOCKET_ID,
      capabilityId: 'meter_power.produced.t1'
    });

    // 2) Instantane power uitlezen
    const power = await Homey.devices.getCapabilityValue({
      deviceId: SOCKET_ID,
      capabilityId: 'measure_power'
    });

    // 3) Waarden wegschrijven naar de batterij
    await Homey.devices.setCapabilityValue({
      deviceId: BATTERY_ID,
      capabilityId: 'meter_power.charged',
      value: totalConsumed
    });
    await Homey.devices.setCapabilityValue({
      deviceId: BATTERY_ID,
      capabilityId: 'meter_power.discharged',
      value: totalProduced
    });
    await Homey.devices.setCapabilityValue({
      deviceId: BATTERY_ID,
      capabilityId: 'measure_power',
      value: power
    });

    // 4) SOC uit variabele halen & bijwerken
    const allVars = Object.values(await Homey.logic.getVariables());
    const varEntry = allVars.find(v => v.name === 'batterij_capaciteit');
    if (!varEntry) throw new Error('Variabele "batterij_capaciteit" niet gevonden');
    await Homey.devices.setCapabilityValue({
      deviceId: BATTERY_ID,
      capabilityId: 'measure_battery',
      value: varEntry.value
    });

    console.log('✅ Script voltooid zonder fouten.');
  }
  catch (err) {
    console.error('❌ Script Error:', err.message);
  }
})();
1 Like