Update script version to v5.1.1.2 and fix screensaver logic

This commit is contained in:
Armilar
2025-12-21 15:33:31 +01:00
committed by GitHub
parent 8805e2189c
commit 52c695cf1c

View File

@@ -1,6 +1,6 @@
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
TypeScript v5.1.1.1 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne TypeScript v5.1.1.2 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne
- abgestimmt auf TFT 61 / v5.1.1 / BerryDriver 10 / Tasmota 15.0.1 - abgestimmt auf TFT 61 / v5.1.1 / BerryDriver 10 / Tasmota 15.2.0
Projekt: Projekt:
https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
@@ -100,6 +100,7 @@ ReleaseNotes:
- 18.11.2025 - v5.1.0.3 Fix QR-Code Generation cardQR - 18.11.2025 - v5.1.0.3 Fix QR-Code Generation cardQR
- 21.11.2025 - v5.1.1.1 Add some LongPress Actions in TFT/HMI v5.1.1 for NSPanel Adapter - 21.11.2025 - v5.1.1.1 Add some LongPress Actions in TFT/HMI v5.1.1 for NSPanel Adapter
- 21.11.2025 - v5.1.1.1 Remove Subscription if .ON and ON_ACTUAL - 21.11.2025 - v5.1.1.1 Remove Subscription if .ON and ON_ACTUAL
- 21.12.2025 - v5.1.1.2 Left screensaver unit from ioBroker data point to create a dynamic screensaver (by ernstdaheim-hub)
*************************************************************************************************************** ***************************************************************************************************************
* DE: Für die Erstellung der Aliase durch das Skript, muss in der JavaScript Instanz "setObject" gesetzt sein! * * DE: Für die Erstellung der Aliase durch das Skript, muss in der JavaScript Instanz "setObject" gesetzt sein! *
@@ -1001,7 +1002,7 @@ export const config: Config = {
// _________________________________ DE: Ab hier keine Konfiguration mehr _____________________________________ // _________________________________ DE: Ab hier keine Konfiguration mehr _____________________________________
// _________________________________ EN: No more configuration from here _____________________________________ // _________________________________ EN: No more configuration from here _____________________________________
const scriptVersion: string = 'v5.1.1.1'; const scriptVersion: string = 'v5.1.1.2';
const tft_version: string = 'v5.1.1'; const tft_version: string = 'v5.1.1';
const desired_display_firmware_version = 61; const desired_display_firmware_version = 61;
const berry_driver_version = 10; const berry_driver_version = 10;
@@ -12478,76 +12479,85 @@ function HandleScreensaverUpdate (): void {
} }
// 3 leftScreensaverEntities // 3 leftScreensaverEntities
if (screensaverAdvanced) { if (screensaverAdvanced) {
let checkpoint = true; let checkpoint = true;
let i = 0; let i = 0;
if (config.leftScreensaverEntity && Array.isArray(config.leftScreensaverEntity) && config.leftScreensaverEntity.length > 0) { if (config.leftScreensaverEntity && Array.isArray(config.leftScreensaverEntity) && config.leftScreensaverEntity.length > 0) {
for (i = 0; i < 3 && i < config.leftScreensaverEntity.length; i++) { for (i = 0; i < 3 && i < config.leftScreensaverEntity.length; i++) {
const leftScreensaverEntity = config.leftScreensaverEntity[i]; const leftScreensaverEntity = config.leftScreensaverEntity[i];
if (leftScreensaverEntity === null || leftScreensaverEntity === undefined) { if (leftScreensaverEntity === null || leftScreensaverEntity === undefined) {
checkpoint = false; checkpoint = false;
break; break;
} }
RegisterScreensaverEntityWatcher(leftScreensaverEntity.ScreensaverEntity); RegisterScreensaverEntityWatcher(leftScreensaverEntity.ScreensaverEntity);
let val = getState(leftScreensaverEntity.ScreensaverEntity).val; let val = getState(leftScreensaverEntity.ScreensaverEntity).val;
let iconColor = rgb_dec565(White); let iconColor = rgb_dec565(White);
let icon; let icon;
if (typeof leftScreensaverEntity.ScreensaverEntityIconOn == 'string' && existsObject(leftScreensaverEntity.ScreensaverEntityIconOn as string)) { if (typeof leftScreensaverEntity.ScreensaverEntityIconOn == 'string' && existsObject(leftScreensaverEntity.ScreensaverEntityIconOn as string)) {
let iconName = getState(leftScreensaverEntity.ScreensaverEntityIconOn!).val; let iconName = getState(leftScreensaverEntity.ScreensaverEntityIconOn!).val;
icon = Icons.GetIcon(iconName); icon = Icons.GetIcon(iconName);
} else { } else {
icon = Icons.GetIcon(leftScreensaverEntity.ScreensaverEntityIconOn); icon = Icons.GetIcon(leftScreensaverEntity.ScreensaverEntityIconOn);
} }
if (parseFloat(val + '') == val) { if (parseFloat(val + '') == val) {
val = parseFloat(val); val = parseFloat(val);
} }
if (typeof val == 'number') { if (typeof val == 'number') {
val = val * (leftScreensaverEntity.ScreensaverEntityFactor ? leftScreensaverEntity.ScreensaverEntityFactor! : 0) val = val * (leftScreensaverEntity.ScreensaverEntityFactor ? leftScreensaverEntity.ScreensaverEntityFactor! : 0)
icon = determineScreensaverStatusIcon(leftScreensaverEntity,val,icon) icon = determineScreensaverStatusIcon(leftScreensaverEntity, val, icon)
val = val.toFixed(
leftScreensaverEntity.ScreensaverEntityDecimalPlaces // Einheit ermitteln: String oder aus DP
) + leftScreensaverEntity.ScreensaverEntityUnitText; let unitText = '';
iconColor = GetScreenSaverEntityColor(leftScreensaverEntity); if (typeof leftScreensaverEntity.ScreensaverEntityUnitText === 'string') {
} else if (typeof val == 'boolean') { if (existsObject(leftScreensaverEntity.ScreensaverEntityUnitText)) {
iconColor = GetScreenSaverEntityColor(leftScreensaverEntity); unitText = getState(leftScreensaverEntity.ScreensaverEntityUnitText).val;
if (!val && leftScreensaverEntity.ScreensaverEntityIconOff != null) { } else {
icon = Icons.GetIcon(leftScreensaverEntity.ScreensaverEntityIconOff); unitText = leftScreensaverEntity.ScreensaverEntityUnitText;
} }
} else if (typeof val == 'string') { }
iconColor = GetScreenSaverEntityColor(leftScreensaverEntity);
let pformat = parseFormat(val); val = val.toFixed(leftScreensaverEntity.ScreensaverEntityDecimalPlaces) + unitText;
if (Debug) log('moments.js --> Datum ' + val + ' valid?: ' + moment(val, pformat, true).isValid(), 'info'); iconColor = GetScreenSaverEntityColor(leftScreensaverEntity);
if (moment(val, pformat, true).isValid()) { } else if (typeof val == 'boolean') {
let DatumZeit = moment(val, pformat).unix(); // Umwandlung in Unix Time-Stamp iconColor = GetScreenSaverEntityColor(leftScreensaverEntity);
if (leftScreensaverEntity.ScreensaverEntityDateFormat !== undefined) { if (!val && leftScreensaverEntity.ScreensaverEntityIconOff != null) {
val = new Date(DatumZeit * 1000).toLocaleString(getState(NSPanel_Path + 'Config.locale').val, leftScreensaverEntity.ScreensaverEntityDateFormat); icon = Icons.GetIcon(leftScreensaverEntity.ScreensaverEntityIconOff);
} else { }
val = new Date(DatumZeit * 1000).toLocaleString(getState(NSPanel_Path + 'Config.locale').val); } else if (typeof val == 'string') {
} iconColor = GetScreenSaverEntityColor(leftScreensaverEntity);
} let pformat = parseFormat(val);
} if (Debug) log('moments.js --> Datum ' + val + ' valid?: ' + moment(val, pformat, true).isValid(), 'info');
const temp = leftScreensaverEntity.ScreensaverEntityIconColor; if (moment(val, pformat, true).isValid()) {
if (temp && typeof temp == 'string' && existsObject(temp)) { let DatumZeit = moment(val, pformat).unix(); // Umwandlung in Unix Time-Stamp
iconColor = getState(temp).val; if (leftScreensaverEntity.ScreensaverEntityDateFormat !== undefined) {
} val = new Date(DatumZeit * 1000).toLocaleString(getState(NSPanel_Path + 'Config.locale').val, leftScreensaverEntity.ScreensaverEntityDateFormat);
} else {
payloadString += '~' + '~' + icon + '~' + iconColor + '~' + leftScreensaverEntity.ScreensaverEntityText + '~' + val + '~'; val = new Date(DatumZeit * 1000).toLocaleString(getState(NSPanel_Path + 'Config.locale').val);
} }
} }
}
if (i < 3) { const temp = leftScreensaverEntity.ScreensaverEntityIconColor;
checkpoint = false; if (temp && typeof temp == 'string' && existsObject(temp)) {
} iconColor = getState(temp).val;
}
if (checkpoint == false) {
for (let j = i; j < 3; j++) { payloadString += '~' + '~' + icon + '~' + iconColor + '~' + leftScreensaverEntity.ScreensaverEntityText + '~' + val + '~';
payloadString += '~~~~~~'; }
} }
}
} if (i < 3) {
checkpoint = false;
}
if (checkpoint == false) {
for (let j = i; j < 3; j++) {
payloadString += '~~~~~~';
}
}
}
// 6 bottomScreensaverEntities // 6 bottomScreensaverEntities
let maxEntities: number = 7; let maxEntities: number = 7;