mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-22 15:34:26 +01:00
v4.4.0.2 - Calculated energy consumption
- Calculated energy consumption in relation to dimming mode and relay state (not the energy consumption of the outputs) -add Try/Catch
This commit is contained in:
@@ -2085,42 +2085,55 @@ function isDimTimeInRange(strLower, strUpper) {
|
|||||||
//--------------------Begin Consumtion (with Dimmode and Relays On Off)
|
//--------------------Begin Consumtion (with Dimmode and Relays On Off)
|
||||||
// Funktion to calculate mean linear consumtion
|
// Funktion to calculate mean linear consumtion
|
||||||
async function Calc_Consumtion(Brightness: number, Relays: number) {
|
async function Calc_Consumtion(Brightness: number, Relays: number) {
|
||||||
return parseFloat(((Relays * 0.25) + ((0.0086 * Brightness) + 0.7429)).toFixed(2));
|
try {
|
||||||
|
return parseFloat(((Relays * 0.25) + ((0.0086 * Brightness) + 0.7429)).toFixed(2));
|
||||||
|
} catch (err: any) {
|
||||||
|
log('error at function Calc_Consumtion: ' + err.message, 'warn');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
async function CountRelaysOn(Path: string) {
|
async function CountRelaysOn(Path: string) {
|
||||||
let r1: boolean = getState(Path + 'Relay.1').val;
|
try {
|
||||||
let r2: boolean = getState(Path + 'Relay.2').val;
|
let r1: boolean = getState(Path + 'Relay.1').val;
|
||||||
|
let r2: boolean = getState(Path + 'Relay.2').val;
|
||||||
|
|
||||||
if (r1 && r2) {
|
if (r1 && r2) {
|
||||||
return 2;
|
return 2;
|
||||||
} else if (!r1 && !r2) {
|
} else if (!r1 && !r2) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return 1;
|
return 1;
|
||||||
|
}
|
||||||
|
} catch (err: any) {
|
||||||
|
log('error at function CountRelaysOn: ' + err.message, 'warn');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function DetermineDimBrightness(Path: string) {
|
async function DetermineDimBrightness(Path: string) {
|
||||||
const vTimeDay = getState(Path + 'NSPanel_Dimmode_hourDay').val;
|
try {
|
||||||
const vTimeNight = getState(Path + 'NSPanel_Dimmode_hourNight').val;
|
|
||||||
const timeDimMode: NSPanel.DimMode = {
|
|
||||||
dimmodeOn: true,
|
|
||||||
brightnessDay: getState(NSPanel_Path + 'NSPanel_Dimmode_brightnessDay').val,
|
|
||||||
brightnessNight: getState(NSPanel_Path + 'NSPanel_Dimmode_brightnessNight').val,
|
|
||||||
timeDay: (vTimeDay < 10) ? `0${vTimeDay}:00` : `${vTimeDay}:00`,
|
|
||||||
timeNight: (vTimeNight < 10) ? `0${vTimeNight}:00` : `${vTimeNight}:00`
|
|
||||||
};
|
|
||||||
|
|
||||||
if (getState(Path + 'ScreensaverInfo.activeDimmodeBrightness').val == -1) {
|
const vTimeDay = getState(Path + 'NSPanel_Dimmode_hourDay').val;
|
||||||
if (getState(Path + 'ActivePage.id0').val == 'screensaver') {
|
const vTimeNight = getState(Path + 'NSPanel_Dimmode_hourNight').val;
|
||||||
return await DetermineScreensaverDimmode(timeDimMode);
|
const timeDimMode: NSPanel.DimMode = {
|
||||||
|
dimmodeOn: true,
|
||||||
|
brightnessDay: getState(NSPanel_Path + 'NSPanel_Dimmode_brightnessDay').val,
|
||||||
|
brightnessNight: getState(NSPanel_Path + 'NSPanel_Dimmode_brightnessNight').val,
|
||||||
|
timeDay: (vTimeDay < 10) ? `0${vTimeDay}:00` : `${vTimeDay}:00`,
|
||||||
|
timeNight: (vTimeNight < 10) ? `0${vTimeNight}:00` : `${vTimeNight}:00`
|
||||||
|
};
|
||||||
|
|
||||||
|
if (getState(Path + 'ScreensaverInfo.activeDimmodeBrightness').val == -1) {
|
||||||
|
if (getState(Path + 'ActivePage.id0').val == 'screensaver') {
|
||||||
|
return await DetermineScreensaverDimmode(timeDimMode);
|
||||||
|
} else {
|
||||||
|
return getState(Path + 'ScreensaverInfo.activeBrightness').val;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return getState(Path + 'ScreensaverInfo.activeBrightness').val;
|
return getState(Path + 'ScreensaverInfo.activeDimmodeBrightness').val;
|
||||||
}
|
}
|
||||||
} else {
|
} catch (err: any) {
|
||||||
return getState(Path + 'ScreensaverInfo.activeDimmodeBrightness').val;
|
log('error at function DetermineDimBrightness: ' + err.message, 'warn');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2134,18 +2147,22 @@ async function DetermineScreensaverDimmode(timeDimMode:NSPanel.DimMode) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
log('error at function ScreensaverDimmode: ' + err.message, 'warn');
|
log('error at function DetermineScreensaverDimmode: ' + err.message, 'warn');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function InitMeanPowerConsumtion() {
|
async function InitMeanPowerConsumtion() {
|
||||||
const MeanPower = NSPanel_Path + 'Consumtion.MeanPower';
|
try {
|
||||||
let meanConsumtion: number = await Calc_Consumtion(await DetermineDimBrightness(NSPanel_Path), await CountRelaysOn(NSPanel_Path));
|
const MeanPower = NSPanel_Path + 'Consumtion.MeanPower';
|
||||||
if (!existsState(MeanPower)) {
|
let meanConsumtion: number = await Calc_Consumtion(await DetermineDimBrightness(NSPanel_Path), await CountRelaysOn(NSPanel_Path));
|
||||||
await createStateAsync(MeanPower, <iobJS.StateCommon>{ type: 'number', write: true, unit: 'W' });
|
if (!existsState(MeanPower)) {
|
||||||
|
await createStateAsync(MeanPower, <iobJS.StateCommon>{ type: 'number', write: true, unit: 'W' });
|
||||||
|
}
|
||||||
|
await setStateAsync(MeanPower, <iobJS.State>{ val: meanConsumtion, ack: true });
|
||||||
|
if (Debug) log(meanConsumtion + ' W', 'info');
|
||||||
|
} catch (err: any) {
|
||||||
|
log('error at function InitMeanPowerConsumtion: ' + err.message, 'warn');
|
||||||
}
|
}
|
||||||
await setStateAsync(MeanPower, <iobJS.State>{ val: meanConsumtion, ack: true });
|
|
||||||
if (Debug) log(meanConsumtion + ' W', 'info');
|
|
||||||
}
|
}
|
||||||
InitMeanPowerConsumtion();
|
InitMeanPowerConsumtion();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user