mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-20 14:37:01 +01:00
remove unused propertys
add types leftScreensaverEntityType add types indicatorScreensaverEntityType add types PageMediaItem add types PageThermoItem add types roles (common.role) add types ButtonActionType add alot undefined checks add some type checks merge 2 on() functions
This commit is contained in:
@@ -2769,12 +2769,14 @@ function check_online_display_firmware() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//mqttCallback (topic: string, message: string): Promise<void> {
|
||||||
on({ id: config.panelRecvTopic }, async (obj) => {
|
on({ id: config.panelRecvTopic }, async (obj) => {
|
||||||
if (obj.state.val.startsWith('\{"CustomRecv":')) {
|
if (obj.state.val.startsWith('\{"CustomRecv":')) {
|
||||||
try {
|
try {
|
||||||
|
const json = JSON.parse(obj.state.val);
|
||||||
|
const split = json.CustomRecv.split(',');
|
||||||
if (isSetOptionActive) {
|
if (isSetOptionActive) {
|
||||||
let json = JSON.parse(obj.state.val);
|
|
||||||
let split = json.CustomRecv.split(',');
|
|
||||||
if (split[0] == 'event' && split[1] == 'startup') {
|
if (split[0] == 'event' && split[1] == 'startup') {
|
||||||
await createStateAsync(NSPanel_Path + 'Display_Firmware.currentVersion', <iobJS.StateCommon>{ type: 'string' });
|
await createStateAsync(NSPanel_Path + 'Display_Firmware.currentVersion', <iobJS.StateCommon>{ type: 'string' });
|
||||||
await createStateAsync(NSPanel_Path + 'NSPanel_Version', <iobJS.StateCommon>{ type: 'string' });
|
await createStateAsync(NSPanel_Path + 'NSPanel_Version', <iobJS.StateCommon>{ type: 'string' });
|
||||||
@@ -2790,9 +2792,11 @@ on({ id: config.panelRecvTopic }, async (obj) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
HandleMessage(split[0], split[1], parseInt(split[2]), split);
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
log('error at trigger rceiving CustomRecv: ' + err.message, 'warn');
|
log('error at trigger rceiving CustomRecv: ' + err.message, 'warn');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2915,7 +2919,7 @@ function update_tasmota_firmware() {
|
|||||||
log('error request in function update_tasmota_firmware: ' + err.message, 'warn');
|
log('error request in function update_tasmota_firmware: ' + err.message, 'warn');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//mqttCallback (topic: string, message: string): Promise<void> {
|
||||||
on({ id: config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 'RESULT'.length) + 'INFO1', change: 'ne'}, async (obj) => {
|
on({ id: config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 'RESULT'.length) + 'INFO1', change: 'ne'}, async (obj) => {
|
||||||
try {
|
try {
|
||||||
if (getState(NSPanel_Path + 'Config.Update.activ').val == 0) {
|
if (getState(NSPanel_Path + 'Config.Update.activ').val == 0) {
|
||||||
@@ -2936,23 +2940,6 @@ on({ id: config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 'RESU
|
|||||||
|
|
||||||
//------------------End Update Functions
|
//------------------End Update Functions
|
||||||
|
|
||||||
on({ id: config.panelRecvTopic, change: 'any' }, async function (obj) {
|
|
||||||
try {
|
|
||||||
if (obj.state.val.startsWith('\{"CustomRecv":')) {
|
|
||||||
try {
|
|
||||||
let json = JSON.parse(obj.state.val);
|
|
||||||
|
|
||||||
let split = json.CustomRecv.split(',');
|
|
||||||
HandleMessage(split[0], split[1], parseInt(split[2]), split);
|
|
||||||
} catch (err: any) {
|
|
||||||
log('error json.split in Trigger panelRecTopic: ' + err.message, 'warn');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (err: any) {
|
|
||||||
log('error at Trigger panelRecTopic: ' + err.message, 'warn');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
async function SendToPanel(val: Payload | Payload[]) {
|
async function SendToPanel(val: Payload | Payload[]) {
|
||||||
try {
|
try {
|
||||||
if (Array.isArray(val)) {
|
if (Array.isArray(val)) {
|
||||||
@@ -3316,17 +3303,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
|||||||
let buttonText: string = 'PRESS';
|
let buttonText: string = 'PRESS';
|
||||||
let type: string;
|
let type: string;
|
||||||
|
|
||||||
if (pageItem.id && existsState(pageItem.id + '.ACTUAL') == false) {
|
|
||||||
if (pageItem.popupTimerType == 'TimeCard' && pageItem.autoCreateALias == true) {
|
|
||||||
log(NSPanel_Path + 'Userdata.' + pageItem.id + '.Time')
|
|
||||||
createStateAsync(NSPanel_Path + 'Userdata.' + pageItem.id + '.Time', '0', { type: 'number' });
|
|
||||||
createStateAsync(NSPanel_Path + 'Userdata.' + pageItem.id + '.State', 'idle', { type: 'string' });
|
|
||||||
setObject(pageItem.id, { type: 'channel', common: { role: 'value.time', name: 'Time' }, native: {} });
|
|
||||||
createAliasAsync(pageItem.id + '.ACTUAL', NSPanel_Path + 'Userdata.' + pageItem.id + '.Time', true, <iobJS.StateCommon>{ type: 'number', role: 'state', name: 'ACTUAL' });
|
|
||||||
createAliasAsync(pageItem.id + '.STATE', NSPanel_Path + 'Userdata.' + pageItem.id + '.State', true, <iobJS.StateCommon>{ type: 'string', role: 'state', name: 'STATE' });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ioBroker
|
// ioBroker
|
||||||
if (pageItem.id && existsObject(pageItem.id) || pageItem.navigate === true) {
|
if (pageItem.id && existsObject(pageItem.id) || pageItem.navigate === true) {
|
||||||
|
|
||||||
@@ -3398,11 +3374,11 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
|||||||
} else if (pageItem.id != null && pageItem.targetPage != undefined) {
|
} else if (pageItem.id != null && pageItem.targetPage != undefined) {
|
||||||
|
|
||||||
type = 'button';
|
type = 'button';
|
||||||
|
const role = o.common.role as roles;
|
||||||
switch (o.common.role) {
|
switch (role as roles) {
|
||||||
case 'socket':
|
case 'socket':
|
||||||
case 'light':
|
case 'light':
|
||||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
||||||
iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId;
|
iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId;
|
||||||
|
|
||||||
buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS';
|
buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS';
|
||||||
@@ -3426,8 +3402,8 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
|||||||
|
|
||||||
case 'door':
|
case 'door':
|
||||||
case 'window':
|
case 'window':
|
||||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant');
|
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant');
|
||||||
iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : o.common.role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant');
|
iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant');
|
||||||
|
|
||||||
buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS';
|
buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS';
|
||||||
if (existsState(pageItem.id + '.COLORDEC')) {
|
if (existsState(pageItem.id + '.COLORDEC')) {
|
||||||
@@ -3499,7 +3475,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
|||||||
|
|
||||||
case 'thermostat':
|
case 'thermostat':
|
||||||
|
|
||||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'temperature' || o.common.role == 'value.temperature' || o.common.role == 'thermostat' ? Icons.GetIcon('thermometer') : Icons.GetIcon('information-outline');
|
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'temperature' || role == 'value.temperature' || role == 'thermostat' ? Icons.GetIcon('thermometer') : Icons.GetIcon('information-outline');
|
||||||
|
|
||||||
let unit = '';
|
let unit = '';
|
||||||
optVal = '0';
|
optVal = '0';
|
||||||
@@ -3583,13 +3559,13 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
|||||||
return '~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText;
|
return '~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const role = o.common.role as roles
|
||||||
switch (o.common.role) {
|
switch (role as roles) {
|
||||||
case 'socket':
|
case 'socket':
|
||||||
case 'light':
|
case 'light':
|
||||||
type = 'light';
|
type = 'light';
|
||||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
||||||
iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : o.common.role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
||||||
optVal = '0';
|
optVal = '0';
|
||||||
|
|
||||||
if (val === true || val === 'true') {
|
if (val === true || val === 'true') {
|
||||||
@@ -3804,11 +3780,11 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
|||||||
|
|
||||||
if (existsState(pageItem.id + '.ACTUAL')) {
|
if (existsState(pageItem.id + '.ACTUAL')) {
|
||||||
if (getState(pageItem.id + '.ACTUAL').val) {
|
if (getState(pageItem.id + '.ACTUAL').val) {
|
||||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant');
|
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant');
|
||||||
iconColor = GetIconColor(pageItem, true, useColors);
|
iconColor = GetIconColor(pageItem, true, useColors);
|
||||||
windowState = findLocale('window', 'opened');
|
windowState = findLocale('window', 'opened');
|
||||||
} else {
|
} else {
|
||||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant');
|
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant');
|
||||||
iconId = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId;
|
iconId = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId;
|
||||||
iconColor = GetIconColor(pageItem, false, useColors);
|
iconColor = GetIconColor(pageItem, false, useColors);
|
||||||
windowState = findLocale('window', 'closed');
|
windowState = findLocale('window', 'closed');
|
||||||
@@ -3850,7 +3826,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
|||||||
case 'thermostat':
|
case 'thermostat':
|
||||||
type = 'text';
|
type = 'text';
|
||||||
|
|
||||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'temperature' || o.common.role == 'value.temperature' || o.common.role == 'thermostat' ? Icons.GetIcon('thermometer') : Icons.GetIcon('information-outline');
|
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'temperature' || role == 'value.temperature' || role == 'thermostat' ? Icons.GetIcon('thermometer') : Icons.GetIcon('information-outline');
|
||||||
|
|
||||||
let unit = '';
|
let unit = '';
|
||||||
optVal = '0';
|
optVal = '0';
|
||||||
@@ -4294,7 +4270,7 @@ function GenerateThermoPage(page: PageThermo): Payload[] {
|
|||||||
if ((i_list.length - 3) != 0) {
|
if ((i_list.length - 3) != 0) {
|
||||||
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
switch (o.common.role) {
|
switch (o.common.role as roles) {
|
||||||
case 'thermostat': {
|
case 'thermostat': {
|
||||||
|
|
||||||
if (existsState(id + '.AUTOMATIC') && getState(id + '.AUTOMATIC').val != null) {
|
if (existsState(id + '.AUTOMATIC') && getState(id + '.AUTOMATIC').val != null) {
|
||||||
@@ -4995,7 +4971,8 @@ function GenerateMediaPage(page: PageMedia): Payload[] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let vMediaDevice = (page.items[0].mediaDevice != undefined) ? page.items[0].mediaDevice : '';
|
let vMediaDevice = (page.items[0].mediaDevice != undefined) ? page.items[0].mediaDevice : '';
|
||||||
if (v2Adapter == 'alexa2' || v2Adapter == 'sonos' || v2Adapter == 'squeezeboxrpc') {
|
|
||||||
|
if (isPlayerWithMediaDevice(v2Adapter)) {
|
||||||
if (!vMediaDevice) throw new Error(`Error in cardMedia! mediaDevice is empty! Page: ${JSON.stringify(page)}`);
|
if (!vMediaDevice) throw new Error(`Error in cardMedia! mediaDevice is empty! Page: ${JSON.stringify(page)}`);
|
||||||
}
|
}
|
||||||
createAutoMediaAlias(id, vMediaDevice, page.items[0].adapterPlayerInstance!);
|
createAutoMediaAlias(id, vMediaDevice, page.items[0].adapterPlayerInstance!);
|
||||||
@@ -6114,7 +6091,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
|
|
||||||
let tempid = words[2].split('?');
|
let tempid = words[2].split('?');
|
||||||
let id = tempid[0];
|
let id = tempid[0];
|
||||||
let buttonAction = words[3];
|
let buttonAction: ButtonActionType = words[3] as ButtonActionType;
|
||||||
let pageItemID: string = '';
|
let pageItemID: string = '';
|
||||||
|
|
||||||
if (!isNaN(id)) {
|
if (!isNaN(id)) {
|
||||||
@@ -6293,7 +6270,8 @@ function HandleButtonEvent(words: any): void {
|
|||||||
if (Debug) {
|
if (Debug) {
|
||||||
log('HandleButtonEvent -> OnOff: ' + words[4] + ' - ' + id + ' - Role - ' + o.common.role, 'info')
|
log('HandleButtonEvent -> OnOff: ' + words[4] + ' - ' + id + ' - Role - ' + o.common.role, 'info')
|
||||||
}
|
}
|
||||||
switch (o.common.role) {
|
const role = o.common.role as roles;
|
||||||
|
switch (role as roles) {
|
||||||
case 'level.mode.fan':
|
case 'level.mode.fan':
|
||||||
case 'socket':
|
case 'socket':
|
||||||
case 'light':
|
case 'light':
|
||||||
@@ -6329,7 +6307,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
if (words[4] == '1')
|
if (words[4] == '1')
|
||||||
action = true;
|
action = true;
|
||||||
let o = getObject(id);
|
let o = getObject(id);
|
||||||
switch (o.common.role) {
|
switch (o.common.role as roles) {
|
||||||
case 'lock':
|
case 'lock':
|
||||||
case 'button':
|
case 'button':
|
||||||
toggleState(id + '.SET') ? true : toggleState(id + '.ON_SET');
|
toggleState(id + '.SET') ? true : toggleState(id + '.ON_SET');
|
||||||
@@ -6503,8 +6481,8 @@ function HandleButtonEvent(words: any): void {
|
|||||||
if (existsObject(id)) {
|
if (existsObject(id)) {
|
||||||
let o = getObject(id);
|
let o = getObject(id);
|
||||||
let pageItem = findPageItem(id);
|
let pageItem = findPageItem(id);
|
||||||
|
const role = o.common.role as roles;
|
||||||
switch (o.common.role) {
|
switch (role as roles) {
|
||||||
case 'dimmer':
|
case 'dimmer':
|
||||||
if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
|
if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
|
||||||
let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness));
|
let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness));
|
||||||
@@ -6550,7 +6528,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
log('HandleButtonEvent colorWeel -> getHue-Werte: ' + getHue(rgb.red, rgb.green, rgb.blue), 'info');
|
log('HandleButtonEvent colorWeel -> getHue-Werte: ' + getHue(rgb.red, rgb.green, rgb.blue), 'info');
|
||||||
}
|
}
|
||||||
let o = getObject(id);
|
let o = getObject(id);
|
||||||
switch (o.common.role) {
|
switch (o.common.role as roles) {
|
||||||
case 'hue':
|
case 'hue':
|
||||||
setIfExists(id + '.HUE', getHue(rgb.red, rgb.green, rgb.blue));
|
setIfExists(id + '.HUE', getHue(rgb.red, rgb.green, rgb.blue));
|
||||||
break;
|
break;
|
||||||
@@ -6625,7 +6603,9 @@ function HandleButtonEvent(words: any): void {
|
|||||||
const tempPage = findPageItem(id);
|
const tempPage = findPageItem(id);
|
||||||
if (isPageMediaItem(tempPage)) {
|
if (isPageMediaItem(tempPage)) {
|
||||||
if (tempPage.adapterPlayerInstance.startsWith("volumio")) {
|
if (tempPage.adapterPlayerInstance.startsWith("volumio")) {
|
||||||
findPageItem(id).playList = []; break;
|
const item = findPageItem(id)
|
||||||
|
if (isPageMediaItem(item)) item.playList = [];
|
||||||
|
break;
|
||||||
} //Volumio: empty playlist $uha-20230103
|
} //Volumio: empty playlist $uha-20230103
|
||||||
if ((tempPage.adapterPlayerInstance).startsWith("spotify")) {
|
if ((tempPage.adapterPlayerInstance).startsWith("spotify")) {
|
||||||
if (getState(id + '.SHUFFLE').val == 'off') {
|
if (getState(id + '.SHUFFLE').val == 'off') {
|
||||||
@@ -6837,6 +6817,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
break;
|
break;
|
||||||
case 'mode-equalizer':
|
case 'mode-equalizer':
|
||||||
let pageItemEQ = findPageItem(id);
|
let pageItemEQ = findPageItem(id);
|
||||||
|
if (!isPageMediaItem(pageItemEQ)) break;
|
||||||
if (Debug) log('HandleButtonEvent mode-equalizer -> id: ' + id, 'info');
|
if (Debug) log('HandleButtonEvent mode-equalizer -> id: ' + id, 'info');
|
||||||
let lastIndex = (id.split('.')).pop();
|
let lastIndex = (id.split('.')).pop();
|
||||||
setState(NSPanel_Path + 'Media.Player.' + lastIndex + '.EQ.activeMode', pageItemEQ.equalizerList![words[4]]);
|
setState(NSPanel_Path + 'Media.Player.' + lastIndex + '.EQ.activeMode', pageItemEQ.equalizerList![words[4]]);
|
||||||
@@ -7010,19 +6991,19 @@ function HandleButtonEvent(words: any): void {
|
|||||||
break;
|
break;
|
||||||
case 'mode-modus1':
|
case 'mode-modus1':
|
||||||
let pageItemT1 = findPageItem(id);
|
let pageItemT1 = findPageItem(id);
|
||||||
setIfExists(id + '.' + pageItemT1.setThermoAlias![0], pageItemT1.popupThermoMode1![parseInt(words[4])]);
|
if (isPageThermoItem(pageItemT1)) setIfExists(id + '.' + pageItemT1.setThermoAlias![0], pageItemT1.popupThermoMode1![parseInt(words[4])]);
|
||||||
break;
|
break;
|
||||||
case 'mode-modus2':
|
case 'mode-modus2':
|
||||||
let pageItemT2 = findPageItem(id);
|
let pageItemT2 = findPageItem(id);
|
||||||
setIfExists(id + '.' + pageItemT2.setThermoAlias![1], pageItemT2.popupThermoMode2![parseInt(words[4])]);
|
if (isPageThermoItem(pageItemT2)) setIfExists(id + '.' + pageItemT2.setThermoAlias![1], pageItemT2.popupThermoMode2![parseInt(words[4])]);
|
||||||
break;
|
break;
|
||||||
case 'mode-modus3':
|
case 'mode-modus3':
|
||||||
let pageItemT3 = findPageItem(id);
|
let pageItemT3 = findPageItem(id);
|
||||||
setIfExists(id + '.' + pageItemT3.setThermoAlias![2], pageItemT3.popupThermoMode3![parseInt(words[4])]);
|
if (isPageThermoItem(pageItemT3)) setIfExists(id + '.' + pageItemT3.setThermoAlias![2], pageItemT3.popupThermoMode3![parseInt(words[4])]);
|
||||||
break;
|
break;
|
||||||
case 'number-set':
|
case 'number-set':
|
||||||
let nobj = getObject(id);
|
let nobj = getObject(id);
|
||||||
switch (nobj.common.role) {
|
switch (nobj.common.role as roles) {
|
||||||
case 'level.mode.fan':
|
case 'level.mode.fan':
|
||||||
(function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
|
(function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
|
||||||
timeoutSlider = setTimeout(async function () {
|
timeoutSlider = setTimeout(async function () {
|
||||||
@@ -7229,7 +7210,6 @@ function GetNavigationString(pageId: number): string {
|
|||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function GenerateDetailPage(type: string, optional: mediaOptional | undefined, pageItem: PageItem, placeId: number | undefined): Payload[] {
|
function GenerateDetailPage(type: string, optional: mediaOptional | undefined, pageItem: PageItem, placeId: number | undefined): Payload[] {
|
||||||
if (Debug) log('GenerateDetailPage Übergabe Type: ' + type + ' - optional: ' + optional + ' - pageItem.id: ' + pageItem.id, 'info');
|
if (Debug) log('GenerateDetailPage Übergabe Type: ' + type + ' - optional: ' + optional + ' - pageItem.id: ' + pageItem.id, 'info');
|
||||||
try {
|
try {
|
||||||
@@ -7238,16 +7218,17 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
|
|
||||||
if (id && existsObject(id)) {
|
if (id && existsObject(id)) {
|
||||||
|
|
||||||
let o = getObject(id);
|
const o = getObject(id);
|
||||||
let val: (boolean | number) = 0;
|
let val: (boolean | number) = 0;
|
||||||
let icon = Icons.GetIcon('lightbulb');
|
let icon = Icons.GetIcon('lightbulb');
|
||||||
let iconColor = rgb_dec565(config.defaultColor);
|
let iconColor = rgb_dec565(config.defaultColor);
|
||||||
|
const role = o.common.role as roles;
|
||||||
|
|
||||||
if (type == 'popupLight') {
|
if (type == 'popupLight') {
|
||||||
|
|
||||||
let switchVal = '0';
|
let switchVal = '0';
|
||||||
let brightness = 0;
|
let brightness = 0;
|
||||||
switch (o.common.role) {
|
switch (role) {
|
||||||
case 'light':
|
case 'light':
|
||||||
case 'socket': {
|
case 'socket': {
|
||||||
if (existsState(id + '.GET')) {
|
if (existsState(id + '.GET')) {
|
||||||
@@ -7264,7 +7245,7 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
icon = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
icon = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
||||||
|
|
||||||
if (val) {
|
if (val) {
|
||||||
switchVal = '1';
|
switchVal = '1';
|
||||||
@@ -7740,12 +7721,12 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
|
|
||||||
if (type == 'popupThermo') {
|
if (type == 'popupThermo') {
|
||||||
let vIcon = (pageItem.icon != undefined) ? pageItem.icon : 'fan';
|
let vIcon = (pageItem.icon != undefined) ? pageItem.icon : 'fan';
|
||||||
let mode1 = (pageItem.popupThermoMode1 != undefined) ? pageItem.popupThermoMode1.join('?') : '';
|
let mode1 = (isPageThermoItem(pageItem) && pageItem.popupThermoMode1 != undefined) ? pageItem.popupThermoMode1.join('?') : '';
|
||||||
let mode2 = (pageItem.popupThermoMode2 != undefined) ? pageItem.popupThermoMode2.join('?') : '';
|
let mode2 = (isPageThermoItem(pageItem) && pageItem.popupThermoMode2 != undefined) ? pageItem.popupThermoMode2.join('?') : '';
|
||||||
let mode3 = (pageItem.popupThermoMode3 != undefined) ? pageItem.popupThermoMode3.join('?') : '';
|
let mode3 = (isPageThermoItem(pageItem) && pageItem.popupThermoMode3 != undefined) ? pageItem.popupThermoMode3.join('?') : '';
|
||||||
|
|
||||||
let payloadParameters1 = '~~~~'
|
let payloadParameters1 = '~~~~'
|
||||||
if (pageItem.popupThermoMode1 != undefined) {
|
if (isPageThermoItem(pageItem) && pageItem.popupThermoMode1 != undefined) {
|
||||||
RegisterDetailEntityWatcher(pageItem.id + "." + pageItem.setThermoAlias![0], pageItem, type, placeId);
|
RegisterDetailEntityWatcher(pageItem.id + "." + pageItem.setThermoAlias![0], pageItem, type, placeId);
|
||||||
payloadParameters1 = pageItem.popUpThermoName![0] + '~' //{heading}~ Mode 1
|
payloadParameters1 = pageItem.popUpThermoName![0] + '~' //{heading}~ Mode 1
|
||||||
+ 'modus1' + '~' //{id}~ Mode 1
|
+ 'modus1' + '~' //{id}~ Mode 1
|
||||||
@@ -7754,7 +7735,7 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
}
|
}
|
||||||
|
|
||||||
let payloadParameters2 = '~~~~'
|
let payloadParameters2 = '~~~~'
|
||||||
if (pageItem.popupThermoMode2 != undefined) {
|
if (isPageThermoItem(pageItem) && pageItem.popupThermoMode2 != undefined) {
|
||||||
RegisterDetailEntityWatcher(pageItem.id + "." + pageItem.setThermoAlias![1], pageItem, type, placeId);
|
RegisterDetailEntityWatcher(pageItem.id + "." + pageItem.setThermoAlias![1], pageItem, type, placeId);
|
||||||
payloadParameters2 = pageItem.popUpThermoName![1] + '~' //{heading}~ Mode 2
|
payloadParameters2 = pageItem.popUpThermoName![1] + '~' //{heading}~ Mode 2
|
||||||
+ 'modus2' + '~' //{id}~ Mode 2
|
+ 'modus2' + '~' //{id}~ Mode 2
|
||||||
@@ -7763,7 +7744,7 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
}
|
}
|
||||||
|
|
||||||
let payloadParameters3 = '~~~~'
|
let payloadParameters3 = '~~~~'
|
||||||
if (pageItem.popupThermoMode3 != undefined) {
|
if (isPageThermoItem(pageItem) && pageItem.popupThermoMode3 != undefined) {
|
||||||
RegisterDetailEntityWatcher(pageItem.id + "." + pageItem.setThermoAlias![2], pageItem, type, placeId);
|
RegisterDetailEntityWatcher(pageItem.id + "." + pageItem.setThermoAlias![2], pageItem, type, placeId);
|
||||||
payloadParameters3 = pageItem.popUpThermoName![2] + '~' //{heading}~ Mode 3
|
payloadParameters3 = pageItem.popUpThermoName![2] + '~' //{heading}~ Mode 3
|
||||||
+ 'modus3' + '~' //{id}~ Mode 3
|
+ 'modus3' + '~' //{id}~ Mode 3
|
||||||
@@ -7805,8 +7786,7 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
let min_remaining = 0;
|
let min_remaining = 0;
|
||||||
let sec_remaining = 0;
|
let sec_remaining = 0;
|
||||||
if (existsState(id + '.STATE')) {
|
if (existsState(id + '.STATE')) {
|
||||||
|
if (role == 'value.time') {
|
||||||
if (o.common.role == 'value.time') {
|
|
||||||
if (getState(id + '.STATE').val == 'idle' || getState(id + '.STATE').val == 'paused') {
|
if (getState(id + '.STATE').val == 'idle' || getState(id + '.STATE').val == 'paused') {
|
||||||
min_remaining = Math.floor(timer_actual / 60);
|
min_remaining = Math.floor(timer_actual / 60);
|
||||||
sec_remaining = timer_actual % 60;
|
sec_remaining = timer_actual % 60;
|
||||||
@@ -7816,7 +7796,7 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
sec_remaining = timer_actual % 60;
|
sec_remaining = timer_actual % 60;
|
||||||
editable = 1;
|
editable = 1;
|
||||||
}
|
}
|
||||||
} else if (o.common.role == 'level.timer') {
|
} else if (role == 'level.timer') {
|
||||||
if (getState(id + '.STATE').val == 'idle' || getState(id + '.STATE').val == 'paused') {
|
if (getState(id + '.STATE').val == 'idle' || getState(id + '.STATE').val == 'paused') {
|
||||||
min_remaining = Math.floor(timer_actual / 60);
|
min_remaining = Math.floor(timer_actual / 60);
|
||||||
sec_remaining = timer_actual % 60;
|
sec_remaining = timer_actual % 60;
|
||||||
@@ -7834,7 +7814,7 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
label2 = findLocale('timer', 'cancel');
|
label2 = findLocale('timer', 'cancel');
|
||||||
label3 = findLocale('timer', 'finish');
|
label3 = findLocale('timer', 'finish');
|
||||||
}
|
}
|
||||||
} else if (o.common.role == 'value.alarmtime') {
|
} else if (role == 'value.alarmtime') {
|
||||||
if (getState(id + '.STATE').val == 'paused') {
|
if (getState(id + '.STATE').val == 'paused') {
|
||||||
min_remaining = Math.floor(timer_actual / 60);
|
min_remaining = Math.floor(timer_actual / 60);
|
||||||
sec_remaining = timer_actual % 60;
|
sec_remaining = timer_actual % 60;
|
||||||
@@ -7873,7 +7853,7 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
if (type == 'popupFan') {
|
if (type == 'popupFan') {
|
||||||
|
|
||||||
let switchVal = '0';
|
let switchVal = '0';
|
||||||
if (o.common.role == 'level.mode.fan') {
|
if (role == 'level.mode.fan') {
|
||||||
if (existsState(id + '.SET')) {
|
if (existsState(id + '.SET')) {
|
||||||
val = getState(id + '.SET').val;
|
val = getState(id + '.SET').val;
|
||||||
RegisterDetailEntityWatcher(id + '.SET', pageItem, type, placeId);
|
RegisterDetailEntityWatcher(id + '.SET', pageItem, type, placeId);
|
||||||
@@ -7915,7 +7895,7 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (type == 'popupInSel') {
|
if (type == 'popupInSel') {
|
||||||
if (o.common.role == 'media') {
|
if (role == 'media') {
|
||||||
let actualState: any = '';
|
let actualState: any = '';
|
||||||
let optionalString: string = 'Kein Eintrag';
|
let optionalString: string = 'Kein Eintrag';
|
||||||
let mode: string = '';
|
let mode: string = '';
|
||||||
@@ -8142,7 +8122,7 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
});
|
});
|
||||||
GeneratePage(activePage!);
|
GeneratePage(activePage!);
|
||||||
}
|
}
|
||||||
} else if (o.common.role == 'buttonSensor') {
|
} else if (role == 'buttonSensor') {
|
||||||
|
|
||||||
let actualValue: string = '';
|
let actualValue: string = '';
|
||||||
|
|
||||||
@@ -8169,12 +8149,12 @@ function GenerateDetailPage(type: string, optional: mediaOptional | undefined, p
|
|||||||
+ actualValue + '~'
|
+ actualValue + '~'
|
||||||
+ valueList
|
+ valueList
|
||||||
});
|
});
|
||||||
} else if (o.common.role == 'light' ||
|
} else if (role == 'light' ||
|
||||||
o.common.role == 'dimmer' ||
|
role == 'dimmer' ||
|
||||||
o.common.role == 'hue' ||
|
role == 'hue' ||
|
||||||
o.common.role == 'rgb' ||
|
role == 'rgb' ||
|
||||||
o.common.role == 'rgbSingle' ||
|
role == 'rgbSingle' ||
|
||||||
o.common.role == 'ct') {
|
role == 'ct') {
|
||||||
|
|
||||||
//log(pageItem.id, 'info');
|
//log(pageItem.id, 'info');
|
||||||
if (pageItem.modeList != undefined) {
|
if (pageItem.modeList != undefined) {
|
||||||
@@ -8306,52 +8286,53 @@ function HandleScreensaverUpdate(): void {
|
|||||||
if (screensaverAdvanced) {
|
if (screensaverAdvanced) {
|
||||||
let checkpoint = true;
|
let checkpoint = true;
|
||||||
let i = 0;
|
let i = 0;
|
||||||
|
if (config.leftScreensaverEntity && Array.isArray(config.leftScreensaverEntity)) {
|
||||||
for (i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
|
const leftScreensaverEntity = config.leftScreensaverEntity[i]
|
||||||
if (config.leftScreensaverEntity[i] == null || config.leftScreensaverEntity[i] == undefined) {
|
if (leftScreensaverEntity === null || leftScreensaverEntity === undefined) {
|
||||||
checkpoint = false;
|
checkpoint = false;
|
||||||
break;
|
break;;
|
||||||
}
|
}
|
||||||
RegisterScreensaverEntityWatcher(config.leftScreensaverEntity[i].ScreensaverEntity)
|
RegisterScreensaverEntityWatcher(leftScreensaverEntity.ScreensaverEntity)
|
||||||
|
|
||||||
let val = getState(config.leftScreensaverEntity[i].ScreensaverEntity).val;
|
let val = getState(leftScreensaverEntity.ScreensaverEntity).val;
|
||||||
let iconColor = rgb_dec565(White);
|
let iconColor = rgb_dec565(White);
|
||||||
let icon;
|
let icon;
|
||||||
if (typeof config.leftScreensaverEntity[i].ScreensaverEntityIconOn == 'string' && existsObject(config.leftScreensaverEntity[i].ScreensaverEntityIconOn as string)) {
|
if (typeof leftScreensaverEntity.ScreensaverEntityIconOn == 'string' && existsObject(leftScreensaverEntity.ScreensaverEntityIconOn as string)) {
|
||||||
let iconName = getState(config.leftScreensaverEntity[i].ScreensaverEntityIconOn!).val;
|
let iconName = getState(leftScreensaverEntity.ScreensaverEntityIconOn!).val;
|
||||||
icon = Icons.GetIcon(iconName);
|
icon = Icons.GetIcon(iconName);
|
||||||
} else {
|
} else {
|
||||||
icon = Icons.GetIcon(config.leftScreensaverEntity[i].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 * (config.leftScreensaverEntity[i].ScreensaverEntityFactor ? config.leftScreensaverEntity[i].ScreensaverEntityFactor! : 0)).toFixed(config.leftScreensaverEntity[i].ScreensaverEntityDecimalPlaces) + config.leftScreensaverEntity[i].ScreensaverEntityUnitText;
|
val = (val * (leftScreensaverEntity.ScreensaverEntityFactor ? leftScreensaverEntity.ScreensaverEntityFactor! : 0)).toFixed(leftScreensaverEntity.ScreensaverEntityDecimalPlaces) + leftScreensaverEntity.ScreensaverEntityUnitText;
|
||||||
iconColor = GetScreenSaverEntityColor(config.leftScreensaverEntity[i]);
|
iconColor = GetScreenSaverEntityColor(leftScreensaverEntity);
|
||||||
}
|
}
|
||||||
else if (typeof(val) == 'boolean') {
|
else if (typeof (val) == 'boolean') {
|
||||||
iconColor = GetScreenSaverEntityColor(config.leftScreensaverEntity[i]);
|
iconColor = GetScreenSaverEntityColor(leftScreensaverEntity);
|
||||||
if (!val && config.leftScreensaverEntity[i].ScreensaverEntityIconOff != null) {
|
if (!val && leftScreensaverEntity.ScreensaverEntityIconOff != null) {
|
||||||
icon = Icons.GetIcon(config.leftScreensaverEntity[i].ScreensaverEntityIconOff)
|
icon = Icons.GetIcon(leftScreensaverEntity.ScreensaverEntityIconOff)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (typeof(val) == 'string') {
|
else if (typeof (val) == 'string') {
|
||||||
iconColor = GetScreenSaverEntityColor(config.leftScreensaverEntity[i]);
|
iconColor = GetScreenSaverEntityColor(leftScreensaverEntity);
|
||||||
let pformat = parseFormat(val);
|
let pformat = parseFormat(val);
|
||||||
if (Debug) log('moments.js --> Datum ' + val + ' valid?: ' + moment(val, pformat, true).isValid(), 'info');
|
if (Debug) log('moments.js --> Datum ' + val + ' valid?: ' + moment(val, pformat, true).isValid(), 'info');
|
||||||
if (moment(val, pformat, true).isValid()) {
|
if (moment(val, pformat, true).isValid()) {
|
||||||
let DatumZeit = moment(val, pformat).unix(); // Umwandlung in Unix Time-Stamp
|
let DatumZeit = moment(val, pformat).unix(); // Umwandlung in Unix Time-Stamp
|
||||||
if (config.leftScreensaverEntity[i].ScreensaverEntityDateFormat !== undefined) {
|
if (leftScreensaverEntity.ScreensaverEntityDateFormat !== undefined) {
|
||||||
val = new Date(DatumZeit * 1000).toLocaleString(getState(NSPanel_Path + 'Config.locale').val, config.leftScreensaverEntity[i].ScreensaverEntityDateFormat);
|
val = new Date(DatumZeit * 1000).toLocaleString(getState(NSPanel_Path + 'Config.locale').val, leftScreensaverEntity.ScreensaverEntityDateFormat);
|
||||||
} else {
|
} else {
|
||||||
val = new Date(DatumZeit * 1000).toLocaleString(getState(NSPanel_Path + 'Config.locale').val);
|
val = new Date(DatumZeit * 1000).toLocaleString(getState(NSPanel_Path + 'Config.locale').val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const temp = config.leftScreensaverEntity[i].ScreensaverEntityIconColor;
|
const temp = leftScreensaverEntity.ScreensaverEntityIconColor;
|
||||||
if (temp && typeof temp == 'string' && existsObject(temp)) {
|
if (temp && typeof temp == 'string' && existsObject(temp)) {
|
||||||
iconColor = getState(temp).val;
|
iconColor = getState(temp).val;
|
||||||
}
|
}
|
||||||
@@ -8360,9 +8341,10 @@ function HandleScreensaverUpdate(): void {
|
|||||||
'~' +
|
'~' +
|
||||||
icon + '~' +
|
icon + '~' +
|
||||||
iconColor + '~' +
|
iconColor + '~' +
|
||||||
config.leftScreensaverEntity[i].ScreensaverEntityText + '~' +
|
leftScreensaverEntity.ScreensaverEntityText + '~' +
|
||||||
val + '~';
|
val + '~';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (checkpoint == false) {
|
if (checkpoint == false) {
|
||||||
for (let j = i; j < 3; j++) {
|
for (let j = i; j < 3; j++) {
|
||||||
payloadString += '~~~~~~';
|
payloadString += '~~~~~~';
|
||||||
@@ -8469,7 +8451,7 @@ function HandleScreensaverUpdate(): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Alternativ Layout bekommt zusätzlichen Status
|
//Alternativ Layout bekommt zusätzlichen Status
|
||||||
if (getState(NSPanel_Path + 'Config.Screensaver.alternativeScreensaverLayout').val) {
|
if (config.bottomScreensaverEntity[4] && getState(NSPanel_Path + 'Config.Screensaver.alternativeScreensaverLayout').val) {
|
||||||
let val = getState(config.bottomScreensaverEntity[4].ScreensaverEntity).val;
|
let val = getState(config.bottomScreensaverEntity[4].ScreensaverEntity).val;
|
||||||
if (parseFloat(val+"") == val) {
|
if (parseFloat(val+"") == val) {
|
||||||
val = parseFloat(val);
|
val = parseFloat(val);
|
||||||
@@ -8588,37 +8570,38 @@ function HandleScreensaverUpdate(): void {
|
|||||||
// 5 indicatorScreensaverEntities
|
// 5 indicatorScreensaverEntities
|
||||||
for (let i = 0; i < 5; i++) {
|
for (let i = 0; i < 5; i++) {
|
||||||
let checkpoint = true;
|
let checkpoint = true;
|
||||||
if (config.indicatorScreensaverEntity[i] == null) {
|
const indicatorScreensaverEntity:ScreenSaverElementWithUndefined = config.indicatorScreensaverEntity[i];
|
||||||
|
if (indicatorScreensaverEntity == null) {
|
||||||
checkpoint = false;
|
checkpoint = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
RegisterScreensaverEntityWatcher(config.indicatorScreensaverEntity[i].ScreensaverEntity)
|
RegisterScreensaverEntityWatcher(indicatorScreensaverEntity.ScreensaverEntity)
|
||||||
|
|
||||||
let val = getState(config.indicatorScreensaverEntity[i].ScreensaverEntity).val;
|
let val = getState(indicatorScreensaverEntity.ScreensaverEntity).val;
|
||||||
if (parseFloat(val+"") == val) {
|
if (parseFloat(val+"") == val) {
|
||||||
val = parseFloat(val);
|
val = parseFloat(val);
|
||||||
}
|
}
|
||||||
let iconColor = rgb_dec565(White);
|
let iconColor = rgb_dec565(White);
|
||||||
|
|
||||||
let icon;
|
let icon;
|
||||||
if (config.indicatorScreensaverEntity[i].ScreensaverEntityIconOn && existsObject(config.indicatorScreensaverEntity[i].ScreensaverEntityIconOn!)) {
|
if (indicatorScreensaverEntity.ScreensaverEntityIconOn && existsObject(indicatorScreensaverEntity.ScreensaverEntityIconOn!)) {
|
||||||
let iconName = getState(config.indicatorScreensaverEntity[i].ScreensaverEntityIconOn!).val;
|
let iconName = getState(indicatorScreensaverEntity.ScreensaverEntityIconOn!).val;
|
||||||
icon = Icons.GetIcon(iconName);
|
icon = Icons.GetIcon(iconName);
|
||||||
} else {
|
} else {
|
||||||
icon = Icons.GetIcon(config.indicatorScreensaverEntity[i].ScreensaverEntityIconOn);
|
icon = Icons.GetIcon(indicatorScreensaverEntity.ScreensaverEntityIconOn);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof(val) == 'number') {
|
if (typeof(val) == 'number') {
|
||||||
val = (val * (config.indicatorScreensaverEntity[i].ScreensaverEntityFactor ? config.indicatorScreensaverEntity[i].ScreensaverEntityFactor! : 0)).toFixed(config.indicatorScreensaverEntity[i].ScreensaverEntityDecimalPlaces) + config.indicatorScreensaverEntity[i].ScreensaverEntityUnitText;
|
val = (val * (indicatorScreensaverEntity.ScreensaverEntityFactor ? indicatorScreensaverEntity.ScreensaverEntityFactor! : 0)).toFixed(indicatorScreensaverEntity.ScreensaverEntityDecimalPlaces) + indicatorScreensaverEntity.ScreensaverEntityUnitText;
|
||||||
iconColor = GetScreenSaverEntityColor(config.indicatorScreensaverEntity[i]);
|
iconColor = GetScreenSaverEntityColor(indicatorScreensaverEntity);
|
||||||
}
|
}
|
||||||
else if (typeof(val) == 'boolean') {
|
else if (typeof(val) == 'boolean') {
|
||||||
iconColor = GetScreenSaverEntityColor(config.indicatorScreensaverEntity[i]);
|
iconColor = GetScreenSaverEntityColor(indicatorScreensaverEntity);
|
||||||
if (!val && config.indicatorScreensaverEntity[i].ScreensaverEntityIconOff != null) {
|
if (!val && indicatorScreensaverEntity.ScreensaverEntityIconOff != null) {
|
||||||
icon = Icons.GetIcon(config.indicatorScreensaverEntity[i].ScreensaverEntityIconOff)
|
icon = Icons.GetIcon(indicatorScreensaverEntity.ScreensaverEntityIconOff)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const temp = config.indicatorScreensaverEntity[4].ScreensaverEntityIconColor
|
const temp = indicatorScreensaverEntity.ScreensaverEntityIconColor
|
||||||
if (temp && typeof temp == 'string' && existsObject(temp)) {
|
if (temp && typeof temp == 'string' && existsObject(temp)) {
|
||||||
iconColor = getState(temp).val;
|
iconColor = getState(temp).val;
|
||||||
}
|
}
|
||||||
@@ -8626,7 +8609,7 @@ function HandleScreensaverUpdate(): void {
|
|||||||
'~' +
|
'~' +
|
||||||
icon + '~' +
|
icon + '~' +
|
||||||
iconColor + '~' +
|
iconColor + '~' +
|
||||||
config.indicatorScreensaverEntity[i].ScreensaverEntityText + '~' +
|
indicatorScreensaverEntity.ScreensaverEntityText + '~' +
|
||||||
val + '~';
|
val + '~';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9278,6 +9261,7 @@ function GetDasWetterIconColor(icon: number): number {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//------------------Begin Read Internal Sensor Data
|
//------------------Begin Read Internal Sensor Data
|
||||||
|
//mqttCallback (topic: string, message: string): Promise<void> {
|
||||||
on({ id: config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 'RESULT'.length) + 'SENSOR' }, async (obj) => {
|
on({ id: config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 'RESULT'.length) + 'SENSOR' }, async (obj) => {
|
||||||
try {
|
try {
|
||||||
const Tasmota_Sensor = JSON.parse(obj.state.val);
|
const Tasmota_Sensor = JSON.parse(obj.state.val);
|
||||||
@@ -9491,6 +9475,22 @@ function spotifyGetDeviceID(vDeviceString: string): string {
|
|||||||
return strDevID;
|
return strDevID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
type roles = 'light' |'socket'|'dimmer'| 'hue' | 'rgb' | 'rgbSingle' | 'cd' | 'blind' | 'door' | 'window' | 'volumeGroup' | 'volume'
|
||||||
|
| 'info' | 'humidity' | 'temperature' | 'value.temperature' | 'value.humidity' | 'sensor.door' | 'sensor.window' | 'thermostat' | 'warning' | 'ct'
|
||||||
|
| 'cie' | 'gate' | 'motion' | 'buttonSensor' | 'button' | 'value.time' | 'level.timer' | 'value.alarmtime' | 'level.mode.fan' | 'lock' | 'slider'
|
||||||
|
| 'switch.mode.wlan' | 'media' | 'timeTable' | 'airCondition'
|
||||||
|
|
||||||
|
type ButtonActionType = 'bExit' | 'bUp' | 'bNext' | 'bSubNext' | 'bPrev' | 'bSubPrev' | 'bHome' | 'notifyAction' | 'OnOff' | 'button' | 'up' | 'stop' | 'down'
|
||||||
|
| 'positionSlider' | 'tiltOpen' | 'tiltStop' | 'tiltSlider' | 'tiltClose' | 'brightnessSlider' | 'colorTempSlider' | 'colorWheel' | 'tempUpd' | 'tempUpdHighLow' | 'media-back'
|
||||||
|
| 'media-pause' | 'media-next' | 'media-shuffle' | 'volumeSlider' | 'mode-speakerlist' | 'mode-playlist' | 'mode-tracklist' | 'mode-repeat' | 'mode-equalizer' | 'mode-seek' | 'mode-crossfade'
|
||||||
|
| 'mode-favorites' | 'mode-insel' | 'media-OnOff' | 'timer-start' | 'timer-pause' | 'timer-cancle' | 'timer-finish' | 'hvac_action' | 'mode-modus1' | 'mode-modus2' | 'mode-modus3' | 'number-set'
|
||||||
|
| 'mode-preset_modes' | 'A1' | 'A2' | 'A3' | 'A4' | 'D1' | 'U1'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
type RGB = {
|
type RGB = {
|
||||||
red: number,
|
red: number,
|
||||||
green: number,
|
green: number,
|
||||||
@@ -9547,7 +9547,8 @@ type PageGrid2 = {
|
|||||||
|
|
||||||
type PageThermo = {
|
type PageThermo = {
|
||||||
type: 'cardThermo',
|
type: 'cardThermo',
|
||||||
items: PageItem[],
|
items: PageThermoItem[],
|
||||||
|
|
||||||
} & Omit<PageBaseType, 'useColor'>
|
} & Omit<PageBaseType, 'useColor'>
|
||||||
|
|
||||||
type PageMedia = {
|
type PageMedia = {
|
||||||
@@ -9580,13 +9581,36 @@ type PageChart = {
|
|||||||
items: PageItem[],
|
items: PageItem[],
|
||||||
} & Omit<PageBaseType, 'useColor'>
|
} & Omit<PageBaseType, 'useColor'>
|
||||||
|
|
||||||
type PageItem = PageBaseItem | PageMediaItem
|
type PageItem = PageBaseItem | PageMediaItem | PageThermoItem
|
||||||
|
|
||||||
function isPageMediaItem(F: PageItem | PageMediaItem):F is PageMediaItem {
|
function isPageMediaItem(F: PageItem | PageMediaItem):F is PageMediaItem {
|
||||||
return (F as PageMediaItem).adapterPlayerInstance !== undefined
|
return 'adapterPlayerInstance' in F
|
||||||
|
}
|
||||||
|
|
||||||
|
function isPageThermoItem(F: PageItem | PageThermoItem):F is PageThermoItem {
|
||||||
|
return 'popupThermoMode1' in F;
|
||||||
}
|
}
|
||||||
type PageMediaItem = {
|
type PageMediaItem = {
|
||||||
adapterPlayerInstance: adapterPlayerInstanceType,
|
adapterPlayerInstance: adapterPlayerInstanceType,
|
||||||
|
mediaDevice?: string,
|
||||||
|
colorMediaIcon?: RGB,
|
||||||
|
colorMediaArtist?: RGB,
|
||||||
|
colorMediaTitle?: RGB,
|
||||||
|
speakerList?: string[],
|
||||||
|
playList?: string[],
|
||||||
|
equalizerList?: string[],
|
||||||
|
repeatList?: string[],
|
||||||
|
globalTracklist?: string[],
|
||||||
|
crossfade?: boolean,
|
||||||
|
} & PageBaseItem
|
||||||
|
|
||||||
|
type PageThermoItem = {
|
||||||
|
popupThermoMode1?: string[],
|
||||||
|
popupThermoMode2?: string[],
|
||||||
|
popupThermoMode3?: string[],
|
||||||
|
popUpThermoName?: string[],
|
||||||
|
setThermoAlias?: string[],
|
||||||
|
setThermoDestTemp2?: string,
|
||||||
} & PageBaseItem
|
} & PageBaseItem
|
||||||
|
|
||||||
type PageBaseItem = {
|
type PageBaseItem = {
|
||||||
@@ -9616,45 +9640,22 @@ type PageBaseItem = {
|
|||||||
unit?: string,
|
unit?: string,
|
||||||
navigate?: boolean,
|
navigate?: boolean,
|
||||||
colormode?: string,
|
colormode?: string,
|
||||||
colorScale?: any,
|
colorScale?: IconScaleElement,
|
||||||
//adapterPlayerInstance?: adapterPlayerInstanceType,
|
//adapterPlayerInstance?: adapterPlayerInstanceType,
|
||||||
mediaDevice?: string,
|
|
||||||
targetPage?: string,
|
targetPage?: string,
|
||||||
speakerList?: string[],
|
|
||||||
playList?: string[],
|
|
||||||
equalizerList?: string[],
|
|
||||||
repeatList?: string[],
|
|
||||||
globalTracklist?: string[],
|
|
||||||
modeList?: string[],
|
modeList?: string[],
|
||||||
hidePassword?: boolean,
|
hidePassword?: boolean,
|
||||||
autoCreateALias?: boolean
|
autoCreateALias?: boolean
|
||||||
colorMediaIcon?: RGB,
|
|
||||||
colorMediaArtist?: RGB,
|
|
||||||
colorMediaTitle?: RGB,
|
|
||||||
popupThermoMode1?: string[],
|
|
||||||
popupThermoMode2?: string[],
|
|
||||||
popupThermoMode3?: string[],
|
|
||||||
popUpThermoName?: string[],
|
|
||||||
popupMediaMode1?: string[],
|
|
||||||
popupMediaMode2?: string[],
|
|
||||||
popupMediaMode3?: string[],
|
|
||||||
popUpMediaName?: string[],
|
|
||||||
setThermoAlias?: string[],
|
|
||||||
setThermoDestTemp2?: string,
|
|
||||||
yAxis?: string,
|
yAxis?: string,
|
||||||
yAxisTicks?: number[] | string,
|
yAxisTicks?: number[] | string,
|
||||||
xAxisDecorationId?: string,
|
xAxisDecorationId?: string,
|
||||||
popupType?: string,
|
|
||||||
popupOptions?: string[],
|
|
||||||
useValue?: boolean,
|
useValue?: boolean,
|
||||||
monobutton?: boolean,
|
monobutton?: boolean,
|
||||||
inSel_ChoiceState?: boolean,
|
inSel_ChoiceState?: boolean,
|
||||||
iconArray?: string[],
|
iconArray?: string[],
|
||||||
fontSize?: number,
|
fontSize?: number,
|
||||||
actionStringArray?: string[],
|
actionStringArray?: string[],
|
||||||
popupTimerType?: string,
|
|
||||||
alwaysOnDisplay?: boolean,
|
alwaysOnDisplay?: boolean,
|
||||||
crossfade?: boolean,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type DimMode = {
|
type DimMode = {
|
||||||
@@ -9676,9 +9677,9 @@ type Config = {
|
|||||||
panelRecvTopic: string,
|
panelRecvTopic: string,
|
||||||
panelSendTopic: string,
|
panelSendTopic: string,
|
||||||
weatherEntity: string,
|
weatherEntity: string,
|
||||||
leftScreensaverEntity: ScreenSaverElement[],
|
leftScreensaverEntity: leftScreensaverEntityType
|
||||||
bottomScreensaverEntity: ScreenSaverElement[],
|
bottomScreensaverEntity: ScreenSaverElement[],
|
||||||
indicatorScreensaverEntity: ScreenSaverElement[],
|
indicatorScreensaverEntity: indicatorScreensaverEntityType
|
||||||
mrIcon1ScreensaverEntity: ScreenSaverMRElement,
|
mrIcon1ScreensaverEntity: ScreenSaverMRElement,
|
||||||
mrIcon2ScreensaverEntity: ScreenSaverMRElement,
|
mrIcon2ScreensaverEntity: ScreenSaverMRElement,
|
||||||
defaultColor: RGB,
|
defaultColor: RGB,
|
||||||
@@ -9690,16 +9691,18 @@ type Config = {
|
|||||||
button1: ConfigButtonFunction,
|
button1: ConfigButtonFunction,
|
||||||
button2: ConfigButtonFunction
|
button2: ConfigButtonFunction
|
||||||
}
|
}
|
||||||
|
type leftScreensaverEntityType = [ScreenSaverElementWithUndefined, ScreenSaverElementWithUndefined, ScreenSaverElementWithUndefined] | [];
|
||||||
|
type indicatorScreensaverEntityType = [ScreenSaverElementWithUndefined, ScreenSaverElementWithUndefined, ScreenSaverElementWithUndefined, ScreenSaverElementWithUndefined, ScreenSaverElementWithUndefined] | [];
|
||||||
|
type ScreenSaverElementWithUndefined = null | undefined | ScreenSaverElement
|
||||||
type ScreenSaverElement = {
|
type ScreenSaverElement = {
|
||||||
ScreensaverEntity: string,
|
ScreensaverEntity: string,
|
||||||
|
ScreensaverEntityText: string,
|
||||||
ScreensaverEntityFactor?: number,
|
ScreensaverEntityFactor?: number,
|
||||||
ScreensaverEntityDecimalPlaces?: number,
|
ScreensaverEntityDecimalPlaces?: number,
|
||||||
ScreensaverEntityDateFormat?: any | null,
|
ScreensaverEntityDateFormat?: Intl.DateTimeFormatOptions,
|
||||||
ScreensaverEntityIconOn?: string | null,
|
ScreensaverEntityIconOn?: string | null,
|
||||||
ScreensaverEntityIconOff?: string | null,
|
ScreensaverEntityIconOff?: string | null,
|
||||||
ScreensaverEntityText: string,
|
ScreensaverEntityUnitText?: string,
|
||||||
ScreensaverEntityUnitText?: string | null,
|
|
||||||
ScreensaverEntityIconColor?: RGB | IconScaleElement | string
|
ScreensaverEntityIconColor?: RGB | IconScaleElement | string
|
||||||
ScreensaverEntityOnColor?: RGB
|
ScreensaverEntityOnColor?: RGB
|
||||||
ScreensaverEntityOffColor?: RGB
|
ScreensaverEntityOffColor?: RGB
|
||||||
@@ -9732,7 +9735,16 @@ type adapterPlayerInstanceType =
|
|||||||
| 'squeezeboxrpc.0.' | 'squeezeboxrpc.1.' | 'squeezeboxrpc.2.' | 'squeezeboxrpc.3.' | 'squeezeboxrpc.4.' | 'squeezeboxrpc.5.' | 'squeezeboxrpc.6.' | 'squeezeboxrpc.7.' | 'squeezeboxrpc.8.' | 'squeezeboxrpc.9.'
|
| 'squeezeboxrpc.0.' | 'squeezeboxrpc.1.' | 'squeezeboxrpc.2.' | 'squeezeboxrpc.3.' | 'squeezeboxrpc.4.' | 'squeezeboxrpc.5.' | 'squeezeboxrpc.6.' | 'squeezeboxrpc.7.' | 'squeezeboxrpc.8.' | 'squeezeboxrpc.9.'
|
||||||
| 'bosesoundtouch.0.' | 'bosesoundtouch.1.' | 'bosesoundtouch.2.' | 'bosesoundtouch.3.' |'bosesoundtouch.4.' | 'bosesoundtouch.5.' | 'bosesoundtouch.6.' | 'bosesoundtouch.7.' | 'bosesoundtouch.8.' | 'bosesoundtouch.9.'
|
| 'bosesoundtouch.0.' | 'bosesoundtouch.1.' | 'bosesoundtouch.2.' | 'bosesoundtouch.3.' |'bosesoundtouch.4.' | 'bosesoundtouch.5.' | 'bosesoundtouch.6.' | 'bosesoundtouch.7.' | 'bosesoundtouch.8.' | 'bosesoundtouch.9.'
|
||||||
|
|
||||||
type PlayerType = 'alexa2' | 'sonos' | 'spotify-premium' | 'volumio' | 'squeezeboxrpc' | 'bosesoundtouch'
|
type PlayerType = _PlayerTypeWithMediaDevice | _PlayerTypeWithOutMediaDevice;
|
||||||
|
|
||||||
|
const ArrayPlayerTypeWithMediaDevice = ['alexa2', 'sonos', 'squeezeboxrpc'] as const
|
||||||
|
const ArrayPlayerTypeWithOutMediaDevice = ['spotify-premium', 'volumio', 'bosesoundtouch'] as const
|
||||||
|
type _PlayerTypeWithOutMediaDevice = typeof ArrayPlayerTypeWithOutMediaDevice[number]
|
||||||
|
type _PlayerTypeWithMediaDevice = typeof ArrayPlayerTypeWithMediaDevice[number]
|
||||||
|
|
||||||
|
function isPlayerWithMediaDevice (F: string | _PlayerTypeWithMediaDevice): F is _PlayerTypeWithMediaDevice {
|
||||||
|
return ArrayPlayerTypeWithMediaDevice.indexOf(F as _PlayerTypeWithMediaDevice) != -1;
|
||||||
|
}
|
||||||
|
|
||||||
type notSortedPlayerType = `${PlayerType}.0.` | `${PlayerType}.1.` | `${PlayerType}.2.` | `${PlayerType}.3.` | `${PlayerType}.4.` | `${PlayerType}.5.` | `${PlayerType}.6.` | `${PlayerType}.7.` | `${PlayerType}.8.` | `${PlayerType}.9.`
|
type notSortedPlayerType = `${PlayerType}.0.` | `${PlayerType}.1.` | `${PlayerType}.2.` | `${PlayerType}.3.` | `${PlayerType}.4.` | `${PlayerType}.5.` | `${PlayerType}.6.` | `${PlayerType}.7.` | `${PlayerType}.8.` | `${PlayerType}.9.`
|
||||||
|
|
||||||
@@ -9743,6 +9755,7 @@ function checkSortedPlayerType(F: notSortedPlayerType) {
|
|||||||
|
|
||||||
type mediaOptional = 'seek' | 'crossfade' | 'speakerlist' | 'playlist' | 'tracklist' | 'equalizer' | 'repeat' | 'favorites'
|
type mediaOptional = 'seek' | 'crossfade' | 'speakerlist' | 'playlist' | 'tracklist' | 'equalizer' | 'repeat' | 'favorites'
|
||||||
|
|
||||||
|
|
||||||
function isMediaOptional(F: string | mediaOptional): F is mediaOptional {
|
function isMediaOptional(F: string | mediaOptional): F is mediaOptional {
|
||||||
switch(F as mediaOptional) {
|
switch(F as mediaOptional) {
|
||||||
case "seek":
|
case "seek":
|
||||||
|
|||||||
Reference in New Issue
Block a user