@io2345 probiers mal hiermit. Die lokale Zwischenspeichern hab ich jetzt mal wegelassen.
var pump_on, schedule_sichern, schedule_wiederherstellen;
async function start_zirk() {
// Schedule wird zum Einschalten der Pumpe temporär verändert, so dass die Pumpe
// zwischen 00:00 und 23:59 Uhr zuverlässig eingeschaltet ist. Das in der Wärmepumpe
// vorhandene Zeitprogramm der Zirkulationspumpe wird in einen eigenen Datenpunkt gesichert
pump_on = '{"mon":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
"tue":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
"wed":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
"thu":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
"fri":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
"sat":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
"sun":[{"start":"00:00","end":"23:59","mode":"on","position":0}]}'
schedule_sichern = getState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue').val;
//setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule', JSON.parse(schedule_sichern));
setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(pump_on)); // oder pump_off
}
async function stop_zirk() {
// Der urspüngliche Schedule wird zurückgeschrieben.
//schedule_wiederherstellen = getState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule').val;
schedule_wiederherstellen = schedule_sichern;
setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(schedule_wiederherstellen));
}
on({ id: [].concat(['0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_']), change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if ((obj.state ? obj.state.val : "") == true) {
await start_zirk();
log ("Zirkulationspumpe läuft für zwei Minuten");
await wait(120000);
setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_' /* EigeneDatenpunkte.Heizung.ZirkulationAn */, false, true);
await stop_zirk();
}
});