mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-19 22:24:15 +01:00
some more types
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*-----------------------------------------------------------------------
|
/*-----------------------------------------------------------------------
|
||||||
TypeScript v4.3.3.30 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Sternmiere / @Britzelpuf / @ravenS0ne
|
TypeScript v4.3.3.31 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Sternmiere / @Britzelpuf / @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
|
||||||
@@ -91,6 +91,9 @@ ReleaseNotes:
|
|||||||
- 02.01.2024 - v4.3.3.29 Add Tasmota Buzzer for NotifyPage
|
- 02.01.2024 - v4.3.3.29 Add Tasmota Buzzer for NotifyPage
|
||||||
- 02.02.2024 - v4.3.3.29 Fix ThermoPage -> UnSubScribsWatcher
|
- 02.02.2024 - v4.3.3.29 Fix ThermoPage -> UnSubScribsWatcher
|
||||||
- 02.02.2024 - v4.3.3.30 Add stronger config type checks
|
- 02.02.2024 - v4.3.3.30 Add stronger config type checks
|
||||||
|
- 03.02.2024 - v4.3.3.31 Remove: autoCreateAlias from cardMedia
|
||||||
|
- 03.02.2024 - v4.3.3.31 Remove: adapterPlayerInstance from every card except cardMedia
|
||||||
|
- 03.02.2024 - v4.3.3.31 [dev]: optional with type - cardMedia has adapterPlayerInstance all other not
|
||||||
|
|
||||||
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
|
||||||
@@ -953,7 +956,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.30';
|
const scriptVersion: string = 'v4.3.3.31';
|
||||||
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;
|
||||||
@@ -3022,7 +3025,9 @@ function HandleMessage(typ: string, method: string, page: number | undefined, wo
|
|||||||
}
|
}
|
||||||
let pageItem: PageItem = findPageItem(tempId);
|
let pageItem: PageItem = findPageItem(tempId);
|
||||||
if (pageItem !== undefined) {
|
if (pageItem !== undefined) {
|
||||||
SendToPanel(GenerateDetailPage(words[2], tempPageItem[1], pageItem, placeId));
|
let temp: string | mediaOptional | undefined = tempPageItem[1]
|
||||||
|
if (isMediaOptional(temp)) SendToPanel(GenerateDetailPage(words[2], temp, pageItem, placeId));
|
||||||
|
else SendToPanel(GenerateDetailPage(words[2], undefined, pageItem, placeId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -4286,8 +4291,8 @@ 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) {
|
||||||
if (o.common.role == 'thermostat') {
|
case 'thermostat': {
|
||||||
|
|
||||||
if (existsState(id + '.AUTOMATIC') && getState(id + '.AUTOMATIC').val != null) {
|
if (existsState(id + '.AUTOMATIC') && getState(id + '.AUTOMATIC').val != null) {
|
||||||
if (getState(id + '.AUTOMATIC').val) {
|
if (getState(id + '.AUTOMATIC').val) {
|
||||||
@@ -4429,8 +4434,8 @@ function GenerateThermoPage(page: PageThermo): Payload[] {
|
|||||||
bt[j] = '~~~~';
|
bt[j] = '~~~~';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
if (o.common.role == 'airCondition') {
|
case 'airCondition': {
|
||||||
if (existsState(id + '.MODE') && getState(id + '.MODE').val != null) {
|
if (existsState(id + '.MODE') && getState(id + '.MODE').val != null) {
|
||||||
let Mode = getState(id + '.MODE').val
|
let Mode = getState(id + '.MODE').val
|
||||||
let States = getObject(id + '.MODE').common.states;
|
let States = getObject(id + '.MODE').common.states;
|
||||||
@@ -4569,6 +4574,8 @@ function GenerateThermoPage(page: PageThermo): Payload[] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let destTemp2 = '';
|
let destTemp2 = '';
|
||||||
@@ -4887,10 +4894,9 @@ function GenerateMediaPage(page: PageMedia): Payload[] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (page.items[0].autoCreateALias) {
|
|
||||||
let vMediaDevice = (page.items[0].mediaDevice != undefined) ? page.items[0].mediaDevice : '';
|
let vMediaDevice = (page.items[0].mediaDevice != undefined) ? page.items[0].mediaDevice : '';
|
||||||
|
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!);
|
||||||
}
|
|
||||||
|
|
||||||
// Leave the display on if the alwaysOnDisplay parameter is specified (true)
|
// Leave the display on if the alwaysOnDisplay parameter is specified (true)
|
||||||
if (page.type == 'cardMedia' && pageCounter == 0 && page.items[0].alwaysOnDisplay != undefined) {
|
if (page.type == 'cardMedia' && pageCounter == 0 && page.items[0].alwaysOnDisplay != undefined) {
|
||||||
@@ -6253,12 +6259,18 @@ function HandleButtonEvent(words: any): void {
|
|||||||
case 'hue':
|
case 'hue':
|
||||||
toggleState(id + '.ON_ACTUAL');
|
toggleState(id + '.ON_ACTUAL');
|
||||||
case 'media':
|
case 'media':
|
||||||
|
if (!activePage || activePage.type != 'cardMedia') {
|
||||||
|
if (activePage) throw new Error(`Found channel role media for card: ${activePage.type} not allowed`)
|
||||||
|
else throw new Error(`Something went wrong! Active Page is empty!`);
|
||||||
|
}
|
||||||
if (tempid[1] == undefined) {
|
if (tempid[1] == undefined) {
|
||||||
if (Debug) log('Logo click', 'info');
|
if (Debug) log('Logo click', 'info');
|
||||||
GeneratePage(activePage!);
|
GeneratePage(activePage!);
|
||||||
} else if (tempid[1] == 'repeat') {
|
} else if (tempid[1] == 'repeat') {
|
||||||
|
|
||||||
let pageItemRepeat = findPageItem(id);
|
let pageItemRepeat = findPageItem(id);
|
||||||
let adapterInstanceRepeat = pageItemRepeat.adapterPlayerInstance!;
|
if (isPageMediaItem(pageItemRepeat)) {
|
||||||
|
let adapterInstanceRepeat = pageItemRepeat.adapterPlayerInstance;
|
||||||
let adapterRepeat = adapterInstanceRepeat.split('.');
|
let adapterRepeat = adapterInstanceRepeat.split('.');
|
||||||
let deviceAdapterRP = adapterRepeat[0];
|
let deviceAdapterRP = adapterRepeat[0];
|
||||||
|
|
||||||
@@ -6334,6 +6346,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'up':
|
case 'up':
|
||||||
setIfExists(id + '.OPEN', true);
|
setIfExists(id + '.OPEN', true);
|
||||||
@@ -6478,6 +6491,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
break;
|
break;
|
||||||
case 'media-pause':
|
case 'media-pause':
|
||||||
let pageItemTemp = findPageItem(id);
|
let pageItemTemp = findPageItem(id);
|
||||||
|
if (isPageMediaItem(pageItemTemp)) {
|
||||||
let adaInstanceSplit = pageItemTemp.adapterPlayerInstance!.split('.');
|
let adaInstanceSplit = pageItemTemp.adapterPlayerInstance!.split('.');
|
||||||
if (adaInstanceSplit[0] == 'squeezeboxrpc') {
|
if (adaInstanceSplit[0] == 'squeezeboxrpc') {
|
||||||
let adapterPlayerInstanceStateSeceltor: string = [pageItemTemp.adapterPlayerInstance, 'Players', pageItemTemp.mediaDevice, 'state'].join('.');
|
let adapterPlayerInstanceStateSeceltor: string = [pageItemTemp.adapterPlayerInstance, 'Players', pageItemTemp.mediaDevice, 'state'].join('.');
|
||||||
@@ -6499,30 +6513,33 @@ function HandleButtonEvent(words: any): void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
GeneratePage(activePage!);
|
GeneratePage(activePage!);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'media-next':
|
case 'media-next':
|
||||||
setIfExists(id + '.NEXT', true);
|
setIfExists(id + '.NEXT', true);
|
||||||
GeneratePage(activePage!);
|
GeneratePage(activePage!);
|
||||||
break;
|
break;
|
||||||
case 'media-shuffle':
|
case 'media-shuffle':
|
||||||
if ((findPageItem(id).adapterPlayerInstance!).startsWith("volumio")) {
|
const tempPage = findPageItem(id);
|
||||||
|
if (isPageMediaItem(tempPage)) {
|
||||||
|
if (tempPage.adapterPlayerInstance.startsWith("volumio")) {
|
||||||
findPageItem(id).playList = []; break;
|
findPageItem(id).playList = []; break;
|
||||||
} //Volumio: empty playlist $uha-20230103
|
} //Volumio: empty playlist $uha-20230103
|
||||||
if ((findPageItem(id).adapterPlayerInstance!).startsWith("spotify")) {
|
if ((tempPage.adapterPlayerInstance).startsWith("spotify")) {
|
||||||
if (getState(id + '.SHUFFLE').val == 'off') {
|
if (getState(id + '.SHUFFLE').val == 'off') {
|
||||||
setIfExists(id + '.SHUFFLE', 'on');
|
setIfExists(id + '.SHUFFLE', 'on');
|
||||||
} else {
|
} else {
|
||||||
setIfExists(id + '.SHUFFLE', 'off');
|
setIfExists(id + '.SHUFFLE', 'off');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((findPageItem(id).adapterPlayerInstance!).startsWith("alexa")) {
|
if ((tempPage.adapterPlayerInstance).startsWith("alexa")) {
|
||||||
if (getState(id + '.SHUFFLE').val == false) {
|
if (getState(id + '.SHUFFLE').val == false) {
|
||||||
setIfExists(id + '.SHUFFLE', true);
|
setIfExists(id + '.SHUFFLE', true);
|
||||||
} else {
|
} else {
|
||||||
setIfExists(id + '.SHUFFLE', false);
|
setIfExists(id + '.SHUFFLE', false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((findPageItem(id).adapterPlayerInstance!).startsWith("sonos")) {
|
if ((tempPage.adapterPlayerInstance).startsWith("sonos")) {
|
||||||
if (getState(id + '.SHUFFLE').val == false) {
|
if (getState(id + '.SHUFFLE').val == false) {
|
||||||
setIfExists(id + '.SHUFFLE', true);
|
setIfExists(id + '.SHUFFLE', true);
|
||||||
} else {
|
} else {
|
||||||
@@ -6530,6 +6547,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
GeneratePage(activePage!);
|
GeneratePage(activePage!);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'volumeSlider':
|
case 'volumeSlider':
|
||||||
pageCounter = -1;
|
pageCounter = -1;
|
||||||
@@ -6544,6 +6562,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
break;
|
break;
|
||||||
case 'mode-speakerlist':
|
case 'mode-speakerlist':
|
||||||
let pageItem = findPageItem(id);
|
let pageItem = findPageItem(id);
|
||||||
|
if (isPageMediaItem(pageItem)) {
|
||||||
let adapterInstance = pageItem.adapterPlayerInstance!;
|
let adapterInstance = pageItem.adapterPlayerInstance!;
|
||||||
let adapter = adapterInstance!.split('.');
|
let adapter = adapterInstance!.split('.');
|
||||||
let deviceAdapter = adapter[0];
|
let deviceAdapter = adapter[0];
|
||||||
@@ -6574,6 +6593,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
case 'squeezeboxrpc':
|
case 'squeezeboxrpc':
|
||||||
pageItem.mediaDevice = pageItem.speakerList![words[4]];
|
pageItem.mediaDevice = pageItem.speakerList![words[4]];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
pageCounter = 0;
|
pageCounter = 0;
|
||||||
GeneratePage(activePage!);
|
GeneratePage(activePage!);
|
||||||
@@ -6581,9 +6601,11 @@ function HandleButtonEvent(words: any): void {
|
|||||||
pageCounter = 1;
|
pageCounter = 1;
|
||||||
GeneratePage(activePage!);
|
GeneratePage(activePage!);
|
||||||
}, 3000);
|
}, 3000);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'mode-playlist':
|
case 'mode-playlist':
|
||||||
let pageItemPL = findPageItem(id);
|
let pageItemPL = findPageItem(id);
|
||||||
|
if (!isPageMediaItem(pageItemPL)) break;
|
||||||
let adapterInstancePL = pageItemPL.adapterPlayerInstance!;
|
let adapterInstancePL = pageItemPL.adapterPlayerInstance!;
|
||||||
let adapterPL = adapterInstancePL.split('.');
|
let adapterPL = adapterInstancePL.split('.');
|
||||||
let deviceAdapterPL = adapterPL[0];
|
let deviceAdapterPL = adapterPL[0];
|
||||||
@@ -6639,6 +6661,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
break;
|
break;
|
||||||
case 'mode-tracklist':
|
case 'mode-tracklist':
|
||||||
let pageItemTL = findPageItem(id);
|
let pageItemTL = findPageItem(id);
|
||||||
|
if (!isPageMediaItem(pageItemTL)) break;
|
||||||
let adapterInstanceTL = pageItemTL.adapterPlayerInstance!;
|
let adapterInstanceTL = pageItemTL.adapterPlayerInstance!;
|
||||||
let adapterTL = adapterInstanceTL.split('.');
|
let adapterTL = adapterInstanceTL.split('.');
|
||||||
let deviceAdapterTL = adapterTL[0];
|
let deviceAdapterTL = adapterTL[0];
|
||||||
@@ -6683,6 +6706,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
break;
|
break;
|
||||||
case 'mode-repeat':
|
case 'mode-repeat':
|
||||||
let pageItemRP = findPageItem(id);
|
let pageItemRP = findPageItem(id);
|
||||||
|
if (!isPageMediaItem(pageItemRP)) break;
|
||||||
let adapterInstanceRP = pageItemRP.adapterPlayerInstance!;
|
let adapterInstanceRP = pageItemRP.adapterPlayerInstance!;
|
||||||
let adapterRP = adapterInstanceRP.split('.');
|
let adapterRP = adapterInstanceRP.split('.');
|
||||||
let deviceAdapterRP = adapterRP[0];
|
let deviceAdapterRP = adapterRP[0];
|
||||||
@@ -6712,6 +6736,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
break;
|
break;
|
||||||
case 'mode-seek':
|
case 'mode-seek':
|
||||||
let pageItemSeek = findPageItem(id);
|
let pageItemSeek = findPageItem(id);
|
||||||
|
if (!isPageMediaItem(pageItemSeek)) break;
|
||||||
let adapterInstanceSK = pageItemSeek.adapterPlayerInstance!;
|
let adapterInstanceSK = pageItemSeek.adapterPlayerInstance!;
|
||||||
let adapterSK = adapterInstanceSK.split('.');
|
let adapterSK = adapterInstanceSK.split('.');
|
||||||
let deviceAdapterSK = adapterSK[0];
|
let deviceAdapterSK = adapterSK[0];
|
||||||
@@ -6732,6 +6757,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
break;
|
break;
|
||||||
case 'mode-crossfade':
|
case 'mode-crossfade':
|
||||||
let pageItemCrossfade = findPageItem(id);
|
let pageItemCrossfade = findPageItem(id);
|
||||||
|
if (!isPageMediaItem(pageItemCrossfade)) break;
|
||||||
let adapterInstanceCF = pageItemCrossfade.adapterPlayerInstance!;
|
let adapterInstanceCF = pageItemCrossfade.adapterPlayerInstance!;
|
||||||
let adapterCF = adapterInstanceCF.split('.');
|
let adapterCF = adapterInstanceCF.split('.');
|
||||||
let deviceAdapterCF = adapterCF[0];
|
let deviceAdapterCF = adapterCF[0];
|
||||||
@@ -6756,6 +6782,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
break;
|
break;
|
||||||
case 'mode-favorites':
|
case 'mode-favorites':
|
||||||
let pageItemFav = findPageItem(id);
|
let pageItemFav = findPageItem(id);
|
||||||
|
if (!isPageMediaItem(pageItemFav)) break;
|
||||||
if (Debug) log(getState(pageItemFav.adapterPlayerInstance + 'root.' + pageItemFav.mediaDevice + '.favorites_set').val, 'info');
|
if (Debug) log(getState(pageItemFav.adapterPlayerInstance + 'root.' + pageItemFav.mediaDevice + '.favorites_set').val, 'info');
|
||||||
let favListArray = getState(pageItemFav.adapterPlayerInstance + 'root.' + pageItemFav.mediaDevice + '.favorites_list_array').val;
|
let favListArray = getState(pageItemFav.adapterPlayerInstance + 'root.' + pageItemFav.mediaDevice + '.favorites_list_array').val;
|
||||||
setState(pageItemFav.adapterPlayerInstance + 'root.' + pageItemFav.mediaDevice + '.favorites_set', favListArray[words[4]]);
|
setState(pageItemFav.adapterPlayerInstance + 'root.' + pageItemFav.mediaDevice + '.favorites_set', favListArray[words[4]]);
|
||||||
@@ -6771,6 +6798,7 @@ function HandleButtonEvent(words: any): void {
|
|||||||
break;
|
break;
|
||||||
case 'media-OnOff':
|
case 'media-OnOff':
|
||||||
let pageItemTem = findPageItem(id);
|
let pageItemTem = findPageItem(id);
|
||||||
|
if (!isPageMediaItem(pageItemTem)) break;
|
||||||
let adaInstanceSpli = pageItemTem.adapterPlayerInstance!.split('.');
|
let adaInstanceSpli = pageItemTem.adapterPlayerInstance!.split('.');
|
||||||
if (adaInstanceSpli[0] == 'squeezeboxrpc') {
|
if (adaInstanceSpli[0] == 'squeezeboxrpc') {
|
||||||
let adapterPlayerInstancePowerSelector: string = [pageItemTem.adapterPlayerInstance, 'Players', pageItemTem.mediaDevice, 'Power'].join('.');
|
let adapterPlayerInstancePowerSelector: string = [pageItemTem.adapterPlayerInstance, 'Players', pageItemTem.mediaDevice, 'Power'].join('.');
|
||||||
@@ -7089,7 +7117,7 @@ function GetNavigationString(pageId: number): string {
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function GenerateDetailPage(type: string, optional: string | 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 {
|
||||||
let out_msgs: Array<Payload> = [];
|
let out_msgs: Array<Payload> = [];
|
||||||
@@ -7106,7 +7134,9 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
|
|||||||
|
|
||||||
let switchVal = '0';
|
let switchVal = '0';
|
||||||
let brightness = 0;
|
let brightness = 0;
|
||||||
if (o.common.role == 'light' || o.common.role == 'socket') {
|
switch (o.common.role) {
|
||||||
|
case 'light':
|
||||||
|
case 'socket': {
|
||||||
if (existsState(id + '.GET')) {
|
if (existsState(id + '.GET')) {
|
||||||
val = getState(id + '.GET').val;
|
val = getState(id + '.GET').val;
|
||||||
RegisterDetailEntityWatcher(id + '.GET', pageItem, type, placeId);
|
RegisterDetailEntityWatcher(id + '.GET', pageItem, type, placeId);
|
||||||
@@ -7152,9 +7182,9 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
|
|||||||
+ effect_supported
|
+ effect_supported
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
// Dimmer
|
// Dimmer
|
||||||
if (o.common.role == 'dimmer') {
|
case 'dimmer': {
|
||||||
if (existsState(id + '.ON_ACTUAL')) {
|
if (existsState(id + '.ON_ACTUAL')) {
|
||||||
val = getState(id + '.ON_ACTUAL').val;
|
val = getState(id + '.ON_ACTUAL').val;
|
||||||
RegisterDetailEntityWatcher(id + '.ON_ACTUAL', pageItem, type, placeId);
|
RegisterDetailEntityWatcher(id + '.ON_ACTUAL', pageItem, type, placeId);
|
||||||
@@ -7209,9 +7239,9 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
|
|||||||
+ effect_supported
|
+ effect_supported
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
// HUE-Licht
|
// HUE-Licht
|
||||||
if (o.common.role == 'hue') {
|
case 'hue': {
|
||||||
|
|
||||||
if (existsState(id + '.ON_ACTUAL')) {
|
if (existsState(id + '.ON_ACTUAL')) {
|
||||||
val = getState(id + '.ON_ACTUAL').val;
|
val = getState(id + '.ON_ACTUAL').val;
|
||||||
@@ -7281,9 +7311,9 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
|
|||||||
+ effect_supported
|
+ effect_supported
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
// RGB-Licht
|
// RGB-Licht
|
||||||
if (o.common.role == 'rgb') {
|
case 'rgb': {
|
||||||
|
|
||||||
if (existsState(id + '.ON_ACTUAL')) {
|
if (existsState(id + '.ON_ACTUAL')) {
|
||||||
val = getState(id + '.ON_ACTUAL').val;
|
val = getState(id + '.ON_ACTUAL').val;
|
||||||
@@ -7352,9 +7382,9 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
|
|||||||
+ effect_supported
|
+ effect_supported
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
// RGB-Licht-einzeln (HEX)
|
// RGB-Licht-einzeln (HEX)
|
||||||
if (o.common.role == 'rgbSingle') {
|
case 'rgbSingle': {
|
||||||
|
|
||||||
if (existsState(id + '.ON_ACTUAL')) {
|
if (existsState(id + '.ON_ACTUAL')) {
|
||||||
val = getState(id + '.ON_ACTUAL').val;
|
val = getState(id + '.ON_ACTUAL').val;
|
||||||
@@ -7428,9 +7458,9 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
|
|||||||
+ effect_supported
|
+ effect_supported
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
// Farbtemperatur (CT)
|
// Farbtemperatur (CT)
|
||||||
if (o.common.role == 'ct') {
|
case 'ct': {
|
||||||
|
|
||||||
if (existsState(id + '.ON')) {
|
if (existsState(id + '.ON')) {
|
||||||
val = getState(id + '.ON').val;
|
val = getState(id + '.ON').val;
|
||||||
@@ -7492,6 +7522,8 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
|
|||||||
+ effect_supported
|
+ effect_supported
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == 'popupShutter') {
|
if (type == 'popupShutter') {
|
||||||
@@ -7774,7 +7806,7 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
|
|||||||
let actualState: any = '';
|
let actualState: any = '';
|
||||||
let optionalString: string = 'Kein Eintrag';
|
let optionalString: string = 'Kein Eintrag';
|
||||||
let mode: string = '';
|
let mode: string = '';
|
||||||
|
if (isPageMediaItem(pageItem)) {
|
||||||
let vTempAdapter = (pageItem.adapterPlayerInstance!).split('.');
|
let vTempAdapter = (pageItem.adapterPlayerInstance!).split('.');
|
||||||
let vAdapter = vTempAdapter[0];
|
let vAdapter = vTempAdapter[0];
|
||||||
if (optional == 'seek') {
|
if (optional == 'seek') {
|
||||||
@@ -7996,6 +8028,7 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
|
|||||||
+ optionalString
|
+ optionalString
|
||||||
});
|
});
|
||||||
GeneratePage(activePage!);
|
GeneratePage(activePage!);
|
||||||
|
}
|
||||||
} else if (o.common.role == 'buttonSensor') {
|
} else if (o.common.role == 'buttonSensor') {
|
||||||
|
|
||||||
let actualValue: string = '';
|
let actualValue: string = '';
|
||||||
@@ -9406,8 +9439,8 @@ type PageThermo = {
|
|||||||
|
|
||||||
type PageMedia = {
|
type PageMedia = {
|
||||||
type: 'cardMedia',
|
type: 'cardMedia',
|
||||||
items: PageItem[],
|
items: PageMediaItem[],
|
||||||
} & Omit<PageBaseType, 'useColor'>
|
} & Omit<PageBaseType, 'useColor' | 'autoCreateAlias'>
|
||||||
|
|
||||||
type PageAlarm = {
|
type PageAlarm = {
|
||||||
type: 'cardAlarm',
|
type: 'cardAlarm',
|
||||||
@@ -9434,7 +9467,16 @@ type PageChart = {
|
|||||||
items: PageItem[],
|
items: PageItem[],
|
||||||
} & Omit<PageBaseType, 'useColor'>
|
} & Omit<PageBaseType, 'useColor'>
|
||||||
|
|
||||||
type PageItem = {
|
type PageItem = PageBaseItem | PageMediaItem
|
||||||
|
|
||||||
|
function isPageMediaItem(F: PageItem | PageMediaItem):F is PageMediaItem {
|
||||||
|
return (F as PageMediaItem).adapterPlayerInstance !== undefined
|
||||||
|
}
|
||||||
|
type PageMediaItem = {
|
||||||
|
adapterPlayerInstance: adapterPlayerInstanceType,
|
||||||
|
} & PageBaseItem
|
||||||
|
|
||||||
|
type PageBaseItem = {
|
||||||
id?: string | null,
|
id?: string | null,
|
||||||
icon?: string,
|
icon?: string,
|
||||||
icon2?: string,
|
icon2?: string,
|
||||||
@@ -9462,7 +9504,7 @@ type PageItem = {
|
|||||||
navigate?: boolean,
|
navigate?: boolean,
|
||||||
colormode?: string,
|
colormode?: string,
|
||||||
colorScale?: any,
|
colorScale?: any,
|
||||||
adapterPlayerInstance?: string,
|
//adapterPlayerInstance?: adapterPlayerInstanceType,
|
||||||
mediaDevice?: string,
|
mediaDevice?: string,
|
||||||
targetPage?: string,
|
targetPage?: string,
|
||||||
speakerList?: string[],
|
speakerList?: string[],
|
||||||
@@ -9568,3 +9610,36 @@ type IconScaleElement = {
|
|||||||
val_max:number,
|
val_max:number,
|
||||||
val_best?: number
|
val_best?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type adapterPlayerInstanceType =
|
||||||
|
'alexa2.1.' | 'sonos.1.' | 'spotify-premium.1.' | 'volumio.1.' | 'squeezebox-rpc.1.'
|
||||||
|
| 'alexa2.2.' | 'sonos.2.' | 'spotify-premium.2.' | 'volumio.2.' | 'squeezebox-rpc.2.'
|
||||||
|
| 'alexa2.0.' | 'sonos.0.' | 'spotify-premium.0.' | 'volumio.0.' | 'squeezebox-rpc.0.'
|
||||||
|
| 'alexa2.3.' | 'sonos.3.' | 'spotify-premium.3.' | 'volumio.3.' | 'squeezebox-rpc.3.'
|
||||||
|
| 'alexa2.4.' | 'sonos.4.' | 'spotify-premium.4.' | 'volumio.4.' | 'squeezebox-rpc.4.'
|
||||||
|
| 'alexa2.5.' | 'sonos.5.' | 'spotify-premium.5.' | 'volumio.5.' | 'squeezebox-rpc.5.'
|
||||||
|
| 'alexa2.6.' | 'sonos.6.' | 'spotify-premium.6.' | 'volumio.6.' | 'squeezebox-rpc.6.'
|
||||||
|
| 'alexa2.7.' | 'sonos.7.' | 'spotify-premium.7.' | 'volumio.7.' | 'squeezebox-rpc.7.'
|
||||||
|
| 'alexa2.8.' | 'sonos.8.' | 'spotify-premium.8.' | 'volumio.8.' | 'squeezebox-rpc.8.'
|
||||||
|
| 'alexa2.9.' | 'sonos.9.' | 'spotify-premium.9.' | 'volumio.9.' | 'squeezebox-rpc.9.'
|
||||||
|
| 'alexa2.10.' | 'sonos.10.' | 'spotify-premium.10.' | 'volumio.10.' | 'squeezebox-rpc.10'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
type mediaOptional = 'seek' | 'crossfade' | 'speakerlist' | 'playlist' | 'tracklist' | 'equalizer' | 'repeat' | 'favorites'
|
||||||
|
|
||||||
|
function isMediaOptional(F: string | mediaOptional): F is mediaOptional {
|
||||||
|
switch(F as mediaOptional) {
|
||||||
|
case "seek":
|
||||||
|
case "crossfade":
|
||||||
|
case "speakerlist":
|
||||||
|
case "playlist":
|
||||||
|
case "tracklist":
|
||||||
|
case "equalizer":
|
||||||
|
case "repeat":
|
||||||
|
case "favorites":
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user