v5.0.2.1 - Update TypeScript version and fix URLs in comments

This commit is contained in:
Armilar
2025-10-19 10:56:08 +02:00
committed by GitHub
parent ff25f07b8f
commit 2b4c8d3b94

View File

@@ -1,6 +1,6 @@
/*-----------------------------------------------------------------------
TypeScript v5.0.0.1 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne
- abgestimmt auf TFT 59 / v5.0.0 / BerryDriver 10 / Tasmota 15.0.1
TypeScript v5.0.2.1 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne
- abgestimmt auf TFT 59 / v5.0.2 / BerryDriver 10 / Tasmota 15.0.1
Projekt:
https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
@@ -18,6 +18,8 @@ Achtung: Keine Beispiele mehr im Script. Die Beispiele sind jetzt unter nachfolg
Icons unter: https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html
************************************************************************************************
Achtung Tasmota 15.1.0 lässt kein FlashNextion zu --> stattdessen v15.0.1 verwenden
************************************************************************************************
Achtung Änderung des Sonoff ESP-Temperatursensors
!!! Bitte "SetOption146 1" in der Tasmota-Console ausführen !!!
@@ -90,7 +92,9 @@ ReleaseNotes:
- 21.08.2025 - v4.9.5.2 Add Bright Sky Weather Adapter
- 05.09.2025 - v5.0.0 TFT 59 / 5.0.0 - EU Changes in cardMedia, popupInSel, card Grid 1, 2, 3
- 08.09.2025 - v5.0.0 TFT 59 / 5.0.0 - US-L/US-P Changes in cardMedia, popupInSel, card Grid 1, 2, 3
- 19.09.2025 - v5.0.0.2 Remove Startup Scheedule at 3:30am / Small fix
- 19.10.2025 - v5.0.2.1 TFT 59 / 5.0.2 - EU/US-L/US-P - Fix cardAlarm Icon; Fix Notification in Advanced Screensaver; Fix Dimensions in cardChart/cardLChart
***************************************************************************************************************
* DE: Für die Erstellung der Aliase durch das Skript, muss in der JavaScript Instanz "setObject" gesetzt sein! *
@@ -199,10 +203,10 @@ Install/Upgrades in Konsole:
Tasmota BerryDriver Install: Backlog UrlFetch https://raw.githubusercontent.com/ticaki/ioBroker.nspanel-lovelace-ui/refs/heads/main/tasmota/berry/10/autoexec.be; Restart 1
Tasmota BerryDriver Update: Backlog UpdateDriverVersion https://raw.githubusercontent.com/ticaki/ioBroker.nspanel-lovelace-ui/refs/heads/main/tasmota/berry/10/autoexec.be; Restart 1
TFT EU STABLE Version: FlashNextionAdv0 http://nspanel.de/nspanel-v5.0.0.tft
TFT EU STABLE Version: FlashNextionAdv0 http://nspanel.de/nspanel-v5.0.2.tft
TFT US-L STABLE Version: FlashNextionAdv0 http://nspanel.de/nspanel-us-l-v5.0.0.tft
TFT US-P STABLE Version: FlashNextionAdv0 http://nspanel.de/nspanel-us-p-v5.0.0.tft
TFT US-L STABLE Version: FlashNextionAdv0 http://nspanel.de/nspanel-us-l-v5.0.2.tft
TFT US-P STABLE Version: FlashNextionAdv0 http://nspanel.de/nspanel-us-p-v5.0.2.tft
---------------------------------------------------------------------------------------
*/
@@ -230,10 +234,11 @@ const tasmota_web_admin_password: string = '';
// DE: Setzen der bevorzugten Tasmota32-Version (für Updates)
// EN: Set preferred Tasmota32 version (for updates)
const tasmotaOtaVersion: string = 'tasmota32-DE.bin';
const tasmotaOtaVersion: string = 'tasmota32-nspanel.bin';
// DE: Es können ebenfalls andere Versionen verwendet werden wie zum Beispiel:
// EN: Other versions can also be used, such as:
// 'tasmota32-nspanel.bin' or 'tasmota32.bin' or 'tasmota32-DE.bin' or etc.
// EN: 'tasmota32-DE.bin' oder 'tasmota32.bin' oder 'tasmota32-DE.bin' oder etc.
// DE: !!!Anmerkung!!! Seit Tasmota v15.0.X wird der 4Mb PSRAM im ESP32 nur noch in der tasmota32-nspanel.bin verwendet
// EN: !!!Note!!! Since Tasmota v15.0.X, the 4Mb PSRAM in the ESP32 is only used in the tasmota32-nspanel.bin
/***** 2. Directories in 0_userdata.0... *****/
@@ -987,8 +992,8 @@ export const config: Config = {
// _________________________________ DE: Ab hier keine Konfiguration mehr _____________________________________
// _________________________________ EN: No more configuration from here _____________________________________
const scriptVersion: string = 'v5.0.0.1';
const tft_version: string = 'v5.0.0';
const scriptVersion: string = 'v5.0.2.1';
const tft_version: string = 'v5.0.2';
const desired_display_firmware_version = 59;
const berry_driver_version = 10;
@@ -1057,7 +1062,6 @@ onStop(function scriptStop () {
if (scheduleSendTime != null) _clearSchedule(scheduleSendTime);
if (scheduleSendDate != null) _clearSchedule(scheduleSendDate);
if (scheduleSwichScreensaver != null) _clearSchedule(scheduleSwichScreensaver);
if (scheduleStartup != null) _clearSchedule(scheduleStartup);
if (scheduleCheckUpdates != null) _clearSchedule(scheduleCheckUpdates);
if (scheduleInitDimModeDay != null) _clearSchedule(scheduleInitDimModeDay);
if (scheduleInitDimModeNight != null) _clearSchedule(scheduleInitDimModeNight);
@@ -3463,11 +3467,6 @@ let scheduleSendDate = adapterSchedule(new Date().setMinutes(0, 0), 60 * 60, ()
SendDate();
});
// 3:30 a.m. Perform startup and receive current TFT version
let scheduleStartup = adapterSchedule({hour: 3, minute: 30}, 24 * 60 * 60, async () => {
setIfExists(config.panelSendTopic, 'pageType~pageStartup');
});
// Check for updates with Start
get_locales();
get_locales_servicemenu();
@@ -5909,7 +5908,7 @@ function CreateEntity (pageItem: PageItem, placeId: number, useColors: boolean =
}
}
if (existsState(pageItem.id + '.ACTUAL') && pageItem.icon2 != undefined) {
if (existsState(pageItem.id + '.ACTUAL') && (pageItem.icon2 != undefined || pageItem.useValue)) {
// Read Alias Datapoint Objectdata
let obj = getObject(pageItem.id + ".ACTUAL");
// Read origin Datapoint Objectdata
@@ -5921,16 +5920,22 @@ function CreateEntity (pageItem: PageItem, placeId: number, useColors: boolean =
if (obj2.type === 'state' && obj2.common.type == "boolean") {
if (Debug) log(getState(obj.common.alias.id).val, 'info');
if (getState(obj.common.alias.id).val) {
iconId = pageItem.icon != undefined ? Icons.GetIcon(pageItem.icon) : iconId;
if (!pageItem.useValue) iconId = pageItem.icon != undefined ? Icons.GetIcon(pageItem.icon) : iconId;
iconColor = pageItem.onColor != undefined ? rgb_dec565(pageItem.onColor) : iconColor;
} else {
iconId = pageItem.icon2 != undefined ? Icons.GetIcon(pageItem.icon2) : iconId;
if(!pageItem.useValue) iconId = pageItem.icon2 != undefined ? Icons.GetIcon(pageItem.icon2) : iconId;
iconColor = pageItem.offColor != undefined ? rgb_dec565(pageItem.offColor) : iconColor;
}
}
}
}
if (existsState(pageItem.id + '.COLORDEC')) {
if (Debug) log('iconcolor von ' + pageItem.id + '.COLORDEC: ' + getState(pageItem.id + '.COLORDEC').val, 'info');
RegisterEntityWatcher(pageItem.id + '.COLORDEC');
iconColor = getState(pageItem.id + '.COLORDEC').val;
}
if (Debug) log('CreateEntity Icon role info, humidity, temperature, value.temperature, value.humidity, sensor.door, sensor.window, thermostat', 'info');
if (Debug) log('CreateEntity ~' + type + '~' + placeId + '~' + iconId + '~' + iconColor + '~' + name + '~' + optVal + ' ' + unit, 'info');
return '~' + type + '~' + placeId + '~' + iconId + '~' + iconColor + '~' + name + '~' + optVal + ' ' + unit;
@@ -7033,7 +7038,7 @@ function GenerateThermo2Page (page: NSPanel.PageThermo2): NSPanel.Payload[] {
'~' +
getNavigationString(pageId) + // 2-13 Page Navigation
/*-Temp Control-----------------------------------*/
'~' + id + '~' + destTemp + '~' + minTemp + '~' + maxTemp + '~' + stepTemp + '~' + unit + '~' + '1' +
'~' + id + '~' + destTemp + '~' + minTemp + '~' + maxTemp + '~' + stepTemp + '~' + unit + '~' + /* 20 */ actualModeState +
/* Entity 1 - Actual Temperature (Icon) */
'~text~' + pageId + '?1~' + Icons.GetIcon('thermometer') + '~' + tempColor + '~~' +
/* Entity 2 - Actual Temperature (Temp) */
@@ -7047,7 +7052,7 @@ function GenerateThermo2Page (page: NSPanel.PageThermo2): NSPanel.Payload[] {
/* Entity 6 - Actual Humidity (Unit) */
'~text~' + pageId + '?6~' + humidityUnit + '~' + humColor + '~~' +
/* Entity 7 - Text-State */
'~text~' + pageId + '?7~' + modeStatus + '~' + textStateColor + '~~' + actualModeState;
'~text~' + pageId + '?7~' + modeStatus + '~' + textStateColor + '~~' + /* 62 */ actualModeState;
for (let i=0; i<9; i++) {
if(page.items[i] != undefined) {
@@ -11258,7 +11263,7 @@ function GenerateDetailPage (type: NSPanel.PopupType, optional: NSPanel.mediaOpt
if (type == 'popupSlider') {
let tempId = placeId != undefined ? placeId : id;
if (isPageMediaItem(pageItem)) {
const vTempAdapter = pageItem.adapterPlayerInstance!.split('.');
@@ -11360,6 +11365,49 @@ function GenerateDetailPage (type: NSPanel.PopupType, optional: NSPanel.mediaOpt
hSlider3Visibility // If Slider Tap > --> tmSerial 28
});
}
} else { // no Media Item
let tSlider2: string = "";
let tIconS2M: string = Icons.GetIcon("minus-box");
let tIconS2P: string = Icons.GetIcon("plus-box");
let hSlider2MinVal: number = pageItem.minValue ?? 0;
let hSlider2MaxVal: number = pageItem.maxValue ?? 100;
let hSlider2ZeroVal: number = 0;
let hSlider2CurVal: number = getState(id + '.ACTUAL').val;
let hSlider2Step: number = 1;
let hSlider2Visibility: string = "enable";
out_msgs.push({
payload:
'entityUpdateDetail' +
'~' + //entityUpdateDetail
tempId +
// Slider1
'~~~~~~~~~disable' +
// Slider2
'~' +
tSlider2 + // Slider2 Headline --> tmSerial 11
'~' +
tIconS2M + // Slider2 Left Icon --> tmSerial 12
'~' +
tIconS2P + // Slider2 Right Icon --> tmSerial 13
'~' +
hSlider2CurVal + // Slider2 Current Slider Value --> tmSerial 14
'~' +
hSlider2MinVal + // Slider2 Minimal Slider Value --> tmSerial 15
'~' +
hSlider2MaxVal + // Slider2 Maximal Slider Value --> tmSerial 16
'~' +
hSlider2ZeroVal + // If Slider2 0 is betweeb Min and Max --> tmSerial 17
'~' +
hSlider2Step + // If Slider2 Tap > 1 --> tmSerial 18
'~' +
hSlider2Visibility + // If Slider Tap > --> tmSerial 19
// Slider3
'~~~~~~~~~disable'
});
}
}
@@ -12624,7 +12672,7 @@ function HandleScreensaverUpdate (): void {
arraySunEvent[0] = getDateObject(getState('pirate-weather.' + weatherAdapterInstanceNumber + '.weather.daily.00.sunriseTime').val).getTime();
arraySunEvent[1] = getDateObject(getState('pirate-weather.' + weatherAdapterInstanceNumber + '.weather.daily.00.sunsetTime').val).getTime();
arraySunEvent[0] = getDateObject(getState('pirate-weather.' + weatherAdapterInstanceNumber + '.weather.daily.00.sunriseTime').val).getTime();
arraySunEvent[2] = getDateObject(getState('pirate-weather.' + weatherAdapterInstanceNumber + '.weather.daily.01.sunriseTime').val).getTime();
let j = 0;
for (j = 0; j < 3; j++) {
@@ -12648,7 +12696,7 @@ function HandleScreensaverUpdate (): void {
arraySunEvent[0] = getDateObject(getState('brightsky.' + weatherAdapterInstanceNumber + '.daily.00.sunrise').val).getTime();
arraySunEvent[1] = getDateObject(getState('brightsky.' + weatherAdapterInstanceNumber + '.daily.00.sunset').val).getTime();
arraySunEvent[0] = getDateObject(getState('brightsky.' + weatherAdapterInstanceNumber + '.daily.00.sunrise').val).getTime();
arraySunEvent[2] = getDateObject(getState('brightsky.' + weatherAdapterInstanceNumber + '.daily.01.sunrise').val).getTime();
let j = 0;
for (j = 0; j < 3; j++) {