mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2026-02-18 02:47:00 +01:00
Compare commits
5 Commits
71b84cc8d3
...
ead1def4bb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ead1def4bb | ||
|
|
14e944885f | ||
|
|
a075e0cba8 | ||
|
|
dd14e66f10 | ||
|
|
ce0892b986 |
@@ -1,5 +1,5 @@
|
|||||||
/*-----------------------------------------------------------------------
|
/*-----------------------------------------------------------------------
|
||||||
TypeScript v4.3.3.35 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne
|
TypeScript v4.3.3.36 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne
|
||||||
- abgestimmt auf TFT 53 / v4.3.3 / BerryDriver 9 / Tasmota 13.3.0
|
- abgestimmt auf TFT 53 / v4.3.3 / BerryDriver 9 / Tasmota 13.3.0
|
||||||
@joBr99 Projekt: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
|
@joBr99 Projekt: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
|
||||||
NsPanelTs.ts (dieses TypeScript in ioBroker) Stable: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
|
NsPanelTs.ts (dieses TypeScript in ioBroker) Stable: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
|
||||||
@@ -89,11 +89,14 @@ ReleaseNotes:
|
|||||||
- 04.01.2024 - v4.3.3.32 Add more details to types for: leftScreensaverEntity, indicatorScreensaverEntity, PageThermo, PageMedia
|
- 04.01.2024 - v4.3.3.32 Add more details to types for: leftScreensaverEntity, indicatorScreensaverEntity, PageThermo, PageMedia
|
||||||
- 04.01.2024 - v4.3.3.32 Remove not uses propertys from PageItem
|
- 04.01.2024 - v4.3.3.32 Remove not uses propertys from PageItem
|
||||||
- 05.01.2024 - v4.3.3.32 Add Body for BoseSoundtouch-Player
|
- 05.01.2024 - v4.3.3.32 Add Body for BoseSoundtouch-Player
|
||||||
- 05.01.2024 - v4.3.3.33 Add BoseSoundtouch Functions
|
- 05.01.2024 - v4.3.3.33 Add BoseSoundtouch Functions
|
||||||
- 05.01.2024 - v4.3.3.33 Screensaver Fix max Number of indicatorScreensaverEntity
|
- 05.01.2024 - v4.3.3.33 Screensaver Fix max Number of indicatorScreensaverEntity
|
||||||
- 07.01.2024 - v4.3.3.33 Fix BoseSoundtouch Proto
|
- 07.01.2024 - v4.3.3.33 Fix BoseSoundtouch Proto
|
||||||
- 08.01.2024 - v4.3.3.34 Fix: Disabled Icon Status while bug in updating data points in ioBroker (reason unknown)
|
- 08.01.2024 - v4.3.3.34 Fix: Disabled Icon Status while bug in updating data points in ioBroker (reason unknown)
|
||||||
- 08.01.2024 - v4.3.3.35 Add: relay.1/relay.2 show the confirmed status
|
- 08.01.2024 - v4.3.3.35 Add: relay.1/relay.2 show the confirmed status
|
||||||
|
- 09.01.2024 - v4.3.3.36 Fix: change ScreensaverTimeout and activeBrightness
|
||||||
|
- 09.01.2024 - v4.3.3.36 Fix: schedule SendTime
|
||||||
|
- 09.01.2024 - v4.3.3.36 Fix: Function _schedule SummerTime/WinterTime
|
||||||
|
|
||||||
Todo:
|
Todo:
|
||||||
- XX.XX.XXXX - v5.0.0 Change the bottomScreensaverEntity (rolling) if more than 6 entries are defined
|
- XX.XX.XXXX - v5.0.0 Change the bottomScreensaverEntity (rolling) if more than 6 entries are defined
|
||||||
@@ -912,10 +915,11 @@ export const config: Config = {
|
|||||||
ScreensaverEntityOnColor: On,
|
ScreensaverEntityOnColor: On,
|
||||||
ScreensaverEntityOffColor: HMIOff
|
ScreensaverEntityOffColor: HMIOff
|
||||||
},
|
},
|
||||||
// ------ DE: Ende der Screensaver Einstellungen --------------------
|
// ------ DE: Ende der Screensaver Einstellungen --------------------
|
||||||
// ------ EN: End of screensaver settings ---------------------------
|
// ------ EN: End of screensaver settings ---------------------------
|
||||||
//-------DE: Anfang Einstellungen für Hardware Button, wenn Sie softwareseitig genutzt werden (Rule2) -------------
|
|
||||||
//-------EN: Start Settings for Hardware Button, if used in software (Rule2) --------------------------------------
|
//-------DE: Anfang Einstellungen für Hardware Button, wenn Sie softwareseitig genutzt werden (Rule2) -------------
|
||||||
|
//-------EN: Start Settings for Hardware Button, if used in software (Rule2) --------------------------------------
|
||||||
// DE: Konfiguration des linken Schalters des NSPanels
|
// DE: Konfiguration des linken Schalters des NSPanels
|
||||||
// EN: Configuration of the left switch of the NSPanel
|
// EN: Configuration of the left switch of the NSPanel
|
||||||
button1: {
|
button1: {
|
||||||
@@ -941,8 +945,10 @@ export const config: Config = {
|
|||||||
entity: null,
|
entity: null,
|
||||||
setValue: null
|
setValue: null
|
||||||
},
|
},
|
||||||
//--------- DE: Ende - Einstellungen für Hardware Button, wenn Sie softwareseitig genutzt werden (Rule2) -------------
|
|
||||||
//--------- EN: End - settings for hardware button if they are used in software (Rule2) ------------------------------
|
//--------- DE: Ende - Einstellungen für Hardware Button, wenn Sie softwareseitig genutzt werden (Rule2) -------------
|
||||||
|
//--------- EN: End - settings for hardware button if they are used in software (Rule2) ------------------------------
|
||||||
|
|
||||||
// DE: WICHTIG !! Parameter nicht ändern WICHTIG!!
|
// DE: WICHTIG !! Parameter nicht ändern WICHTIG!!
|
||||||
// EN: IMPORTANT !! Do not change parameters IMPORTANT!!
|
// EN: IMPORTANT !! Do not change parameters IMPORTANT!!
|
||||||
panelRecvTopic: NSPanelReceiveTopic,
|
panelRecvTopic: NSPanelReceiveTopic,
|
||||||
@@ -957,7 +963,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 = 'v4.3.3.35';
|
const scriptVersion: string = 'v4.3.3.36';
|
||||||
const tft_version: string = 'v4.3.3';
|
const tft_version: string = 'v4.3.3';
|
||||||
const desired_display_firmware_version = 53;
|
const desired_display_firmware_version = 53;
|
||||||
const berry_driver_version = 9;
|
const berry_driver_version = 9;
|
||||||
@@ -1397,7 +1403,7 @@ async function Init_Screensaver_Backckground_Color_Switch() {
|
|||||||
type: "number",
|
type: "number",
|
||||||
name: "Color Indicator",
|
name: "Color Indicator",
|
||||||
role: "level",
|
role: "level",
|
||||||
states: {0:'black', 1:'red', 2:'green', 3:'attention', 4: 'pink'},
|
states: {0:'black', 1:'red', 2:'green', 3:'attention', 4: 'pink', 5: 'dark red'},
|
||||||
read: true,
|
read: true,
|
||||||
write: true
|
write: true
|
||||||
},
|
},
|
||||||
@@ -1493,6 +1499,19 @@ async function InitActiveBrightness() {
|
|||||||
}
|
}
|
||||||
InitActiveBrightness();
|
InitActiveBrightness();
|
||||||
|
|
||||||
|
on({id: [NSPanel_Path + 'ScreensaverInfo.activeBrightness'], change: 'ne'}, async function (obj) {
|
||||||
|
try {
|
||||||
|
let active = getState(NSPanel_Path + 'ScreensaverInfo.activeDimmodeBrightness').val;
|
||||||
|
if (obj.state.val >= 0 || obj.state.val <= 100) {
|
||||||
|
log('action at trigger activeBrightness: ' + obj.state.val + ' - activeDimmodeBrightness: ' + active, 'info');
|
||||||
|
SendToPanel({ payload: 'dimmode~' + active + '~' + obj.state.val + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 });
|
||||||
|
InitDimmode();
|
||||||
|
}
|
||||||
|
} catch (err:any) {
|
||||||
|
log('error at trigger activeBrightness: ' + err.message, 'warn');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
on({id: [NSPanel_Path + 'ScreensaverInfo.activeDimmodeBrightness'], change: "ne"}, async function (obj) {
|
on({id: [NSPanel_Path + 'ScreensaverInfo.activeDimmodeBrightness'], change: "ne"}, async function (obj) {
|
||||||
try {
|
try {
|
||||||
let active = getState(NSPanel_Path + 'ScreensaverInfo.activeBrightness').val;
|
let active = getState(NSPanel_Path + 'ScreensaverInfo.activeBrightness').val;
|
||||||
@@ -2175,7 +2194,7 @@ let pageId = 0;
|
|||||||
let activePage: PageType | undefined = undefined;
|
let activePage: PageType | undefined = undefined;
|
||||||
|
|
||||||
//Send time to NSPanel
|
//Send time to NSPanel
|
||||||
let scheduleSendTime = adapterSchedule(new Date().setMilliseconds(0), 1, () => {
|
let scheduleSendTime = adapterSchedule(new Date().setSeconds(0,0), 60, () => {
|
||||||
try {
|
try {
|
||||||
SendTime();
|
SendTime();
|
||||||
HandleScreensaverUpdate();
|
HandleScreensaverUpdate();
|
||||||
@@ -6241,11 +6260,8 @@ function HandleButtonEvent(words: any): void {
|
|||||||
if (words[2] == 'bNext' || words[2] == 'bPrev' || words[2] == 'bUp' || words[2] == 'bHome' || words[2] == 'bSubNext' || words[2] == 'bSubPrev' ) {
|
if (words[2] == 'bNext' || words[2] == 'bPrev' || words[2] == 'bUp' || words[2] == 'bHome' || words[2] == 'bSubNext' || words[2] == 'bSubPrev' ) {
|
||||||
buttonAction = words[2];
|
buttonAction = words[2];
|
||||||
pageCounter = 0;
|
pageCounter = 0;
|
||||||
// Turn off the display if the alwaysOnDisplay parameter was specified
|
alwaysOn = false;
|
||||||
if (alwaysOn == true) {
|
SendToPanel({ payload: 'timeout~' + getState(NSPanel_Path + 'Config.Screensaver.timeoutScreensaver').val });
|
||||||
alwaysOn = false;
|
|
||||||
SendToPanel({ payload: 'timeout~' + getState(NSPanel_Path + 'Config.Screensaver.timeoutScreensaver').val });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Debug) {
|
if (Debug) {
|
||||||
@@ -9062,6 +9078,8 @@ function HandleScreensaverColors(): void {
|
|||||||
scrSvrBGCol = rgb_dec565(scbackgroundInd3);
|
scrSvrBGCol = rgb_dec565(scbackgroundInd3);
|
||||||
} else if (bgColorScrSaver == 4) {
|
} else if (bgColorScrSaver == 4) {
|
||||||
scrSvrBGCol = rgb_dec565({red:255, green:16, blue:240});
|
scrSvrBGCol = rgb_dec565({red:255, green:16, blue:240});
|
||||||
|
} else if (bgColorScrSaver == 5) {
|
||||||
|
scrSvrBGCol = rgb_dec565({ red: 100, green: 0, blue: 0 });
|
||||||
}
|
}
|
||||||
|
|
||||||
let payloadString = 'color' + '~' +
|
let payloadString = 'color' + '~' +
|
||||||
@@ -9671,7 +9689,13 @@ type PageAlarm = NSPanel.PageAlarm;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// dont work with summer/winter time has to be fixed
|
/**
|
||||||
|
*
|
||||||
|
* @param time object: { hour: number, minutes: number } | starttime
|
||||||
|
* @param repeatTime in ms
|
||||||
|
* @param callback what todo
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
function adapterSchedule(time: {hour?: number, minute?: number} | undefined | number, repeatTime: number, callback: () => void): number|null {
|
function adapterSchedule(time: {hour?: number, minute?: number} | undefined | number, repeatTime: number, callback: () => void): number|null {
|
||||||
if (typeof callback !== 'function') return null
|
if (typeof callback !== 'function') return null
|
||||||
const ref = Math.random() + 1;
|
const ref = Math.random() + 1;
|
||||||
@@ -9685,18 +9709,21 @@ function _schedule(time: {hour?: number, minute?: number} | undefined | number,
|
|||||||
let targetTime: number;
|
let targetTime: number;
|
||||||
if ( time === undefined) {
|
if ( time === undefined) {
|
||||||
targetTime = new Date().setMilliseconds(0) + repeatTime * 1000;
|
targetTime = new Date().setMilliseconds(0) + repeatTime * 1000;
|
||||||
|
time = targetTime;
|
||||||
} else if (typeof time === 'number') {
|
} else if (typeof time === 'number') {
|
||||||
targetTime = time + repeatTime * 1000;
|
targetTime = time + repeatTime * 1000;
|
||||||
|
time = targetTime;
|
||||||
} else {
|
} else {
|
||||||
time.hour = time.hour !== undefined ? time.hour : 0;
|
time.hour = time.hour !== undefined ? time.hour : 1;
|
||||||
time.minute = time.minute !== undefined ? time.minute : 0;
|
time.minute = time.minute !== undefined ? time.minute : 0;
|
||||||
targetTime = time.hour !== undefined ? new Date().setHours(time.hour, time.minute, 0) : new Date().setMinutes(time.minute, 0);
|
targetTime = time.hour !== -1 ? new Date().setHours(time.hour, time.minute, 0) : new Date().setMinutes(time.minute, 0);
|
||||||
if (new Date().getTime() > targetTime) {
|
if (new Date().getTime() > targetTime) {
|
||||||
targetTime += repeatTime * 1000;
|
targetTime += repeatTime * 1000;
|
||||||
|
targetTime = time.hour !== -1 ? new Date(targetTime).setHours(time.hour, time.minute, 0) : new Date(targetTime).setMinutes(time.minute, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const timeout = targetTime - new Date().getTime();
|
const timeout = targetTime - new Date().getTime();
|
||||||
scheduleList[ref] = setTimeout(_schedule, timeout, targetTime, ref, repeatTime, callback);
|
scheduleList[ref] = setTimeout(_schedule, timeout, time, ref, repeatTime, callback);
|
||||||
}
|
}
|
||||||
function _clearSchedule(ref: number): null {
|
function _clearSchedule(ref: number): null {
|
||||||
if (scheduleList[ref]) clearTimeout(scheduleList[ref]);
|
if (scheduleList[ref]) clearTimeout(scheduleList[ref]);
|
||||||
|
|||||||
Reference in New Issue
Block a user