From df40d08cc9be8ad9c22024a5254d0af401dc7c02 Mon Sep 17 00:00:00 2001 From: simatec Date: Wed, 7 Aug 2024 09:48:21 +0200 Subject: [PATCH] (simatec) Code revision and improvements --- lib/shutterDownComplete.js | 48 +++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/lib/shutterDownComplete.js b/lib/shutterDownComplete.js index 1bf9aa8..cf70d64 100644 --- a/lib/shutterDownComplete.js +++ b/lib/shutterDownComplete.js @@ -37,7 +37,9 @@ async function shutterDownComplete(adapter, delayDown, shutterSettings) { for (const i in result) { for (const s in shutterSettings) { - if (shutterSettings[s].shutterName == result[i].shutterName && shutterSettings[s].currentAction == 'middle') { + if (shutterSettings[s].shutterName == result[i].shutterName && + shutterSettings[s].currentAction == 'middle') { + const inSummerNotDown = await CheckInSummerNotDown(adapter, shutterSettings[s]); const XmasLevel = await GetXmasLevel(adapter, shutterSettings[s]); let targetLevel2Set = 0; @@ -54,7 +56,10 @@ async function shutterDownComplete(adapter, delayDown, shutterSettings) { shutterSettings[s].alarmTriggerAction = downAction; // overwrite target position and downAction if frost alarm is set. - if (statusAlarmFrost == true && shutterSettings[s].enableAlarmFrost == true && downAction != 'Xmas') { + if (statusAlarmFrost == true && + shutterSettings[s].enableAlarmFrost == true && + downAction != 'Xmas') { + targetLevel2Set = parseFloat(adapter.config.alarmFrostLevel); downAction = 'frost'; } @@ -64,21 +69,25 @@ async function shutterDownComplete(adapter, delayDown, shutterSettings) { const _autoDownState = await adapter.getStateAsync(`shutters.autoDown.${nameDevice}`).catch((e) => adapter.log.warn(e)); - if (_autoDownState && _autoDownState === true || _autoDownState && _autoDownState.val === true) { + if (_autoDownState?.val) { if (pendingAlarm == false) { - let currentValue = ''; const _triggerState = shutterSettings[s].triggerID != '' ? await adapter.getForeignStateAsync(shutterSettings[s].triggerID).catch((e) => adapter.log.warn(e)) : null; const mustValue = ('' + shutterSettings[s].triggerState); const mustValueTilted = shutterSettings[s].triggerStateTilted == 'none' ? ('' + shutterSettings[s].triggerState) : ('' + shutterSettings[s].triggerStateTilted); + const currentValue = _triggerState?.val ? ('' + _triggerState.val) : ''; - if (typeof _triggerState != undefined && _triggerState != null) { - currentValue = ('' + _triggerState.val); - } + if (currentValue === mustValue || + currentValue === mustValueTilted || + (currentValue != mustValue && + currentValue != mustValueTilted && + shutterSettings[s].autoDrive != 'onlyUp' && + shutterSettings[s].autoDrive != 'off')) { - if (currentValue === mustValue || currentValue === mustValueTilted || (currentValue != mustValue && currentValue != mustValueTilted && shutterSettings[s].autoDrive != 'onlyUp' && shutterSettings[s].autoDrive != 'off')) { const _shutterState = await adapter.getForeignStateAsync(shutterSettings[s].name).catch((e) => adapter.log.warn(e)); - if (typeof _shutterState != undefined && _shutterState != null && Math.round(_shutterState.val / adapter.config.shutterStateRound) * adapter.config.shutterStateRound != targetLevel2Set) { + if (_shutterState?.val && + Math.round(_shutterState.val / adapter.config.shutterStateRound) * adapter.config.shutterStateRound != targetLevel2Set) { + shutterSettings[s].currentHeight = targetLevel2Set; shutterSettings[s].currentAction = 'down'; shutterSettings[s].lastAutoAction = 'Down_Complete'; @@ -89,7 +98,9 @@ async function shutterDownComplete(adapter, delayDown, shutterSettings) { adapter.log.debug(`last automatic Action for ${shutterSettings[s].shutterName}: ${shutterSettings[s].lastAutoAction}`); } - else if (typeof _shutterState != undefined && _shutterState != null && Math.round(_shutterState.val / adapter.config.shutterStateRound) * adapter.config.shutterStateRound == targetLevel2Set) { + else if (_shutterState?.val && + Math.round(_shutterState.val / adapter.config.shutterStateRound) * adapter.config.shutterStateRound == targetLevel2Set) { + shutterSettings[s].currentHeight = targetLevel2Set; shutterSettings[s].currentAction = 'down'; @@ -100,7 +111,9 @@ async function shutterDownComplete(adapter, delayDown, shutterSettings) { } else if (shutterSettings[s].triggerID == '') { const _shutterState = await adapter.getForeignStateAsync(shutterSettings[s].name).catch((e) => adapter.log.warn(e)); - if (typeof _shutterState != undefined && _shutterState != null && Math.round(_shutterState.val / adapter.config.shutterStateRound) * adapter.config.shutterStateRound != targetLevel2Set) { + if (_shutterState?.val && + Math.round(_shutterState.val / adapter.config.shutterStateRound) * adapter.config.shutterStateRound != targetLevel2Set) { + shutterSettings[s].currentHeight = targetLevel2Set; shutterSettings[s].currentAction = 'down'; shutterSettings[s].lastAutoAction = 'Down_Complete'; @@ -109,7 +122,9 @@ async function shutterDownComplete(adapter, delayDown, shutterSettings) { adapter.log.debug(`last automatic Action for ${shutterSettings[s].shutterName}: ${shutterSettings[s].lastAutoAction}`); } - else if (typeof _shutterState != undefined && _shutterState != null && Math.round(_shutterState.val / adapter.config.shutterStateRound) * adapter.config.shutterStateRound == targetLevel2Set) { + else if (_shutterState?.val && + Math.round(_shutterState.val / adapter.config.shutterStateRound) * adapter.config.shutterStateRound == targetLevel2Set) { + shutterSettings[s].currentHeight = targetLevel2Set; shutterSettings[s].currentAction = 'down'; @@ -117,10 +132,15 @@ async function shutterDownComplete(adapter, delayDown, shutterSettings) { adapter.log.debug('Complete down ' + shutterSettings[s].shutterName + ' already down at: ' + targetLevel2Set + '% - setting current action: ' + shutterSettings[s].currentAction); } - } else if (currentValue != mustValue && currentValue != mustValueTilted && shutterSettings[s].driveAfterClose == true) { + } else if (currentValue != mustValue && + currentValue != mustValueTilted && + shutterSettings[s].driveAfterClose == true) { + const _shutterState = await adapter.getForeignStateAsync(shutterSettings[s].name).catch((e) => adapter.log.warn(e)); - if (typeof _shutterState != undefined && _shutterState != null && Math.round(_shutterState.val / adapter.config.shutterStateRound) * adapter.config.shutterStateRound != targetLevel2Set) { + if (_shutterState?.val && + Math.round(_shutterState.val / adapter.config.shutterStateRound) * adapter.config.shutterStateRound != targetLevel2Set) { + shutterSettings[s].triggerHeight = targetLevel2Set; shutterSettings[s].triggerAction = 'down';