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);
}
})();