Merge pull request #817 from tt-tom17/GeneratePowerPage

Funktion GeneratePowerPage angepasst, Fix Issue 801
This commit is contained in:
Armilar
2023-03-13 10:30:41 +01:00
committed by GitHub
2 changed files with 66 additions and 65 deletions

View File

@@ -1,5 +1,5 @@
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
TypeScript v4.0.4.2 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @Sternmiere / @Britzelpuf / @ravenS0ne / @TT-Tom TypeScript v4.0.4.3 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @Sternmiere / @Britzelpuf / @ravenS0ne / @TT-Tom
- abgestimmt auf TFT 50 / v4.0.4 / BerryDriver 8 / Tasmota 12.4.0 - abgestimmt auf TFT 50 / v4.0.4 / BerryDriver 8 / Tasmota 12.4.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
@@ -118,6 +118,7 @@ ReleaseNotes:
- 04.03.2023 - v4.0.4 Fix bExit with popupLight, popup.... - 04.03.2023 - v4.0.4 Fix bExit with popupLight, popup....
- 07.03.2023 - v4.0.4.1 Extend Configuration Options for Physical Buttons to enable direct state manipulation - by bembelstemmer - 07.03.2023 - v4.0.4.1 Extend Configuration Options for Physical Buttons to enable direct state manipulation - by bembelstemmer
- 10.03.2023 - v4.0.4.2 Fix iconColor by 100% Brightness - 10.03.2023 - v4.0.4.2 Fix iconColor by 100% Brightness
- 13.03.2023 - v4.0.4.3 Fix Funktion GeneratePowerPage inkl. DemoModus
*********************************************************************************************************** ***********************************************************************************************************
* Für die Erstellung der Aliase durch das Skript, muss in der JavaScript Instanz "setObect" gesetzt sein! * * Für die Erstellung der Aliase durch das Skript, muss in der JavaScript Instanz "setObect" gesetzt sein! *
@@ -126,7 +127,7 @@ ReleaseNotes:
Wenn Rule definiert, dann können die Hardware-Tasten ebenfalls für Seitensteuerung (dann nicht mehr als Relais) genutzt werden Wenn Rule definiert, dann können die Hardware-Tasten ebenfalls für Seitensteuerung (dann nicht mehr als Relais) genutzt werden
Tasmota Konsole: Tasmota Konsole:
Rule2 on Button1#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button2"} endon Rule2 on Button1#state do Publish %topic%/tele/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish %topic%/tele/RESULT {"CustomRecv":"event,button2"} endon
Rule2 1 (Rule aktivieren) Rule2 1 (Rule aktivieren)
Rule2 0 (Rule deaktivieren) Rule2 0 (Rule deaktivieren)
@@ -369,6 +370,7 @@ let CardPowerExample = <PagePower>
'useColor': true, 'useColor': true,
'items': [ 'items': [
<PageItem>{ id: 'alias.0.NSPanel_1.Power.PowerCard' }, <PageItem>{ id: 'alias.0.NSPanel_1.Power.PowerCard' },
// <PageItem>{ } // aktivieren für Demomodus der PowerCard, dafür ersten PageItem auskommentieren
] ]
}; };
@@ -1106,7 +1108,7 @@ export const config = <Config> {
}, },
// bottomScreensaverEntity 4 // bottomScreensaverEntity 4
{ {
ScreensaverEntity: '0_userdata.0.wetter.Windrichtung', ScreensaverEntity: 'accuweather.0.Current.WindDirection',
ScreensaverEntityFactor: 0, ScreensaverEntityFactor: 0,
ScreensaverEntityDecimalPlaces: 0, ScreensaverEntityDecimalPlaces: 0,
ScreensaverEntityIconOn: 'windsock', ScreensaverEntityIconOn: 'windsock',
@@ -1277,13 +1279,13 @@ export const config = <Config> {
], ],
button1: { button1: {
mode: null, // Mögliche Werte wenn Rule2 definiert: page, toggle, set - Wenn nicht definiert --> mode: null mode: null, // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
page: null, // Zielpage - Verwendet wenn mode = page (bisher button1Page) page: null, // Zielpage - Verwendet wenn mode = page (bisher button1Page)
entity: null, // Zielentity - Verwendet wenn mode = set oder toggle entity: null, // Zielentity - Verwendet wenn mode = set oder toggle
setValue: null // Zielwert - Verwendet wenn mode = set setValue: null // Zielwert - Verwendet wenn mode = set
}, },
button2: { button2: {
mode: null, // Mögliche Werte wenn Rule2 definiert: page, toggle, set - Wenn nicht definiert --> mode: null mode: null, // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
page: null, // Zielpage - Verwendet wenn mode = page (bisher button2Page) page: null, // Zielpage - Verwendet wenn mode = page (bisher button2Page)
entity: null, // Zielentity - Verwendet wenn mode = set oder toggle entity: null, // Zielentity - Verwendet wenn mode = set oder toggle
setValue: null // Zielwert - Verwendet wenn mode = set setValue: null // Zielwert - Verwendet wenn mode = set
@@ -3741,7 +3743,7 @@ function GetIconColor(pageItem: PageItem, value: (boolean | number), useColors:
Interpolate( Interpolate(
pageItem.offColor !== undefined ? pageItem.offColor : config.defaultOffColor, pageItem.offColor !== undefined ? pageItem.offColor : config.defaultOffColor,
pageItem.onColor !== undefined ? pageItem.onColor : config.defaultOnColor, pageItem.onColor !== undefined ? pageItem.onColor : config.defaultOnColor,
scale(value, minValue, maxValue, 0, 1) scale(100 - value, minValue, maxValue, 0, 1)
) )
); );
} }
@@ -4953,33 +4955,30 @@ function subscribePowerSubscriptions(id: string): void {
function GeneratePowerPage(page: PagePower): Payload[] { function GeneratePowerPage(page: PagePower): Payload[] {
try { try {
activePage = page; let obj:object;
let id = page.items[0].id;
if (Debug) {
console.log(page.items[0].id);
}
unsubscribePowerSubscriptions();
subscribePowerSubscriptions(id);
let demoMode = false; let demoMode = false;
if (page.items[0].id == undefined){
try {
id = page.items[0].id
} catch (err) {
console.log("Kein PageItem definiert - cardPower Demo-Modus aktiv"); console.log("Kein PageItem definiert - cardPower Demo-Modus aktiv");
demoMode = true; demoMode = true;
} }
let heading = 'cardPower Example'; activePage = page;
if (demoMode != true) { if (Debug) {
let o = getObject(id); console.log('GeneratePowerPage PageItem.id = ' + page.items[0].id);
heading = page.heading !== undefined ? page.heading : o.common.name.de;
} }
const obj = JSON.parse((getState(page.items[0].id + '.ACTUAL').val));
let heading = 'cardPower Example';
if (demoMode != true) {
let id = page.items[0].id
unsubscribePowerSubscriptions();
subscribePowerSubscriptions(id);
let o = getObject(id);
heading = page.heading !== undefined ? page.heading : o.common.name.de;
obj = JSON.parse((getState(page.items[0].id + '.ACTUAL').val));
}
let out_msgs: Array<Payload> = []; let out_msgs: Array<Payload> = [];
out_msgs.push({ payload: 'pageType~cardPower' }); out_msgs.push({ payload: 'pageType~cardPower' });
@@ -4995,7 +4994,7 @@ function GeneratePowerPage(page: PagePower): Payload[] {
let homeIconColor = 0; let homeIconColor = 0;
if (!demoMode) { if (!demoMode) {
for (let obji = 0; obji < 7; obji++) { for (let obji = 0; obji < 7; obji++) {
array_icon_color[obji + 1] = arrayColorScale[obj[obji].iconColor]; array_icon_color[obji + 1] = arrayColorScale[obj[obji].iconColor !== '' ? obj[obji].iconColor : 0];
array_icon[obji + 1] = obj[obji].icon; array_icon[obji + 1] = obj[obji].icon;
array_powerspeed[obji + 1] = obj[obji].speed; array_powerspeed[obji + 1] = obj[obji].speed;
array_powerstate[obji + 1] = obj[obji].value + ' ' + obj[obji].unit ; array_powerstate[obji + 1] = obj[obji].value + ' ' + obj[obji].unit ;
@@ -5007,7 +5006,7 @@ function GeneratePowerPage(page: PagePower): Payload[] {
let power_string : any = ''; let power_string : any = '';
for (let i = 1; i < 7; i++ ) { for (let i = 0; i < 6; i++ ) {
power_string = power_string + '~'; // type (ignored) power_string = power_string + '~'; // type (ignored)
power_string = power_string + '~'; // intNameEntity (ignored) power_string = power_string + '~'; // intNameEntity (ignored)
power_string = power_string + Icons.GetIcon(array_icon[i+1]) + '~'; // icon~ power_string = power_string + Icons.GetIcon(array_icon[i+1]) + '~'; // icon~
@@ -5015,6 +5014,8 @@ function GeneratePowerPage(page: PagePower): Payload[] {
power_string = power_string + '~'; // display (ignored in TS) power_string = power_string + '~'; // display (ignored in TS)
power_string = power_string + array_powerstate[i+1] + '~'; // optionalValue~ power_string = power_string + array_powerstate[i+1] + '~'; // optionalValue~
power_string = power_string + array_powerspeed[i+1] + '~'; // speed~ power_string = power_string + array_powerspeed[i+1] + '~'; // speed~
if (Debug) console.log(power_string);
} }
power_string = power_string.substring(0, power_string.length - 1); power_string = power_string.substring(0, power_string.length - 1);
@@ -5042,13 +5043,13 @@ function GeneratePowerPage(page: PagePower): Payload[] {
// 1st to 6th Item // 1st to 6th Item
power_string power_string
}); });
if (Debug) console.log(out_msgs);
return out_msgs; return out_msgs;
} catch (err) { } catch (err) {
console.warn('function GeneratePowerPage: ' + err.message); console.warn('function GeneratePowerPage: ' + err.message);
} }
} };
function GenerateChartPage(page: PageChart): Payload[] { function GenerateChartPage(page: PageChart): Payload[] {
try { try {
@@ -6867,8 +6868,8 @@ function HandleScreensaverUpdate(): void {
} }
else if (typeof(val) == 'boolean') { else if (typeof(val) == 'boolean') {
iconColor = GetScreenSaverEntityColor(config.leftScreensaverEntity[i]); iconColor = GetScreenSaverEntityColor(config.leftScreensaverEntity[i]);
if (!val && config.bottomScreensaverEntity[i].ScreensaverEntityIconOff != null) { if (!val && config.leftScreensaverEntity[i].ScreensaverEntityIconOff != null) {
icon = Icons.GetIcon(config.bottomScreensaverEntity[i].ScreensaverEntityIconOff) icon = Icons.GetIcon(config.leftScreensaverEntity[i].ScreensaverEntityIconOff)
} }
} }
else if (typeof(val) == 'string') { else if (typeof(val) == 'string') {

View File

@@ -1,5 +1,5 @@
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
TypeScript v4.0.4.2 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @Sternmiere / @Britzelpuf / @ravenS0ne / @TT-Tom TypeScript v4.0.4.3 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @Sternmiere / @Britzelpuf / @ravenS0ne / @TT-Tom
- abgestimmt auf TFT 50 / v4.0.4 / BerryDriver 8 / Tasmota 12.4.0 - abgestimmt auf TFT 50 / v4.0.4 / BerryDriver 8 / Tasmota 12.4.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
@@ -118,6 +118,7 @@ ReleaseNotes:
- 04.03.2023 - v4.0.4 Fix bExit with popupLight, popup.... - 04.03.2023 - v4.0.4 Fix bExit with popupLight, popup....
- 07.03.2023 - v4.0.4.1 Extend Configuration Options for Physical Buttons to enable direct state manipulation - by bembelstemmer - 07.03.2023 - v4.0.4.1 Extend Configuration Options for Physical Buttons to enable direct state manipulation - by bembelstemmer
- 10.03.2023 - v4.0.4.2 Fix iconColor by 100% Brightness - 10.03.2023 - v4.0.4.2 Fix iconColor by 100% Brightness
- 13.03.2023 - v4.0.4.3 Fix Funktion GeneratePowerPage inkl. DemoModus
*********************************************************************************************************** ***********************************************************************************************************
* Für die Erstellung der Aliase durch das Skript, muss in der JavaScript Instanz "setObect" gesetzt sein! * * Für die Erstellung der Aliase durch das Skript, muss in der JavaScript Instanz "setObect" gesetzt sein! *
@@ -126,7 +127,7 @@ ReleaseNotes:
Wenn Rule definiert, dann können die Hardware-Tasten ebenfalls für Seitensteuerung (dann nicht mehr als Relais) genutzt werden Wenn Rule definiert, dann können die Hardware-Tasten ebenfalls für Seitensteuerung (dann nicht mehr als Relais) genutzt werden
Tasmota Konsole: Tasmota Konsole:
Rule2 on Button1#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button2"} endon Rule2 on Button1#state do Publish %topic%/tele/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish %topic%/tele/RESULT {"CustomRecv":"event,button2"} endon
Rule2 1 (Rule aktivieren) Rule2 1 (Rule aktivieren)
Rule2 0 (Rule deaktivieren) Rule2 0 (Rule deaktivieren)
@@ -694,7 +695,7 @@ export const config = <Config> {
}, },
// bottomScreensaverEntity 4 // bottomScreensaverEntity 4
{ {
ScreensaverEntity: '0_userdata.0.wetter.Windrichtung', ScreensaverEntity: 'accuweather.0.Current.WindDirection',
ScreensaverEntityFactor: 0, ScreensaverEntityFactor: 0,
ScreensaverEntityDecimalPlaces: 0, ScreensaverEntityDecimalPlaces: 0,
ScreensaverEntityIconOn: 'windsock', ScreensaverEntityIconOn: 'windsock',
@@ -765,13 +766,13 @@ export const config = <Config> {
NSPanel_FirmwareNextion, //Auto-Alias Service Page NSPanel_FirmwareNextion, //Auto-Alias Service Page
], ],
button1: { button1: {
mode: null, // Mögliche Werte wenn Rule2 definiert: page, toggle, set - Wenn nicht definiert --> mode: null mode: null, // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
page: null, // Zielpage - Verwendet wenn mode = page (bisher button1Page) page: null, // Zielpage - Verwendet wenn mode = page (bisher button1Page)
entity: null, // Zielentity - Verwendet wenn mode = set oder toggle entity: null, // Zielentity - Verwendet wenn mode = set oder toggle
setValue: null // Zielwert - Verwendet wenn mode = set setValue: null // Zielwert - Verwendet wenn mode = set
}, },
button2: { button2: {
mode: null, // Mögliche Werte wenn Rule2 definiert: page, toggle, set - Wenn nicht definiert --> mode: null mode: null, // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
page: null, // Zielpage - Verwendet wenn mode = page (bisher button2Page) page: null, // Zielpage - Verwendet wenn mode = page (bisher button2Page)
entity: null, // Zielentity - Verwendet wenn mode = set oder toggle entity: null, // Zielentity - Verwendet wenn mode = set oder toggle
setValue: null // Zielwert - Verwendet wenn mode = set setValue: null // Zielwert - Verwendet wenn mode = set
@@ -3229,7 +3230,7 @@ function GetIconColor(pageItem: PageItem, value: (boolean | number), useColors:
Interpolate( Interpolate(
pageItem.offColor !== undefined ? pageItem.offColor : config.defaultOffColor, pageItem.offColor !== undefined ? pageItem.offColor : config.defaultOffColor,
pageItem.onColor !== undefined ? pageItem.onColor : config.defaultOnColor, pageItem.onColor !== undefined ? pageItem.onColor : config.defaultOnColor,
scale(value, minValue, maxValue, 0, 1) scale(100 - value, minValue, maxValue, 0, 1)
) )
); );
} }
@@ -4441,33 +4442,30 @@ function subscribePowerSubscriptions(id: string): void {
function GeneratePowerPage(page: PagePower): Payload[] { function GeneratePowerPage(page: PagePower): Payload[] {
try { try {
activePage = page; let obj:object;
let id = page.items[0].id;
if (Debug) {
console.log(page.items[0].id);
}
unsubscribePowerSubscriptions();
subscribePowerSubscriptions(id);
let demoMode = false; let demoMode = false;
if (page.items[0].id == undefined){
try {
id = page.items[0].id
} catch (err) {
console.log("Kein PageItem definiert - cardPower Demo-Modus aktiv"); console.log("Kein PageItem definiert - cardPower Demo-Modus aktiv");
demoMode = true; demoMode = true;
} }
let heading = 'cardPower Example'; activePage = page;
if (demoMode != true) { if (Debug) {
let o = getObject(id); console.log('GeneratePowerPage PageItem.id = ' + page.items[0].id);
heading = page.heading !== undefined ? page.heading : o.common.name.de;
} }
const obj = JSON.parse((getState(page.items[0].id + '.ACTUAL').val));
let heading = 'cardPower Example';
if (demoMode != true) {
let id = page.items[0].id
unsubscribePowerSubscriptions();
subscribePowerSubscriptions(id);
let o = getObject(id);
heading = page.heading !== undefined ? page.heading : o.common.name.de;
obj = JSON.parse((getState(page.items[0].id + '.ACTUAL').val));
}
let out_msgs: Array<Payload> = []; let out_msgs: Array<Payload> = [];
out_msgs.push({ payload: 'pageType~cardPower' }); out_msgs.push({ payload: 'pageType~cardPower' });
@@ -4483,7 +4481,7 @@ function GeneratePowerPage(page: PagePower): Payload[] {
let homeIconColor = 0; let homeIconColor = 0;
if (!demoMode) { if (!demoMode) {
for (let obji = 0; obji < 7; obji++) { for (let obji = 0; obji < 7; obji++) {
array_icon_color[obji + 1] = arrayColorScale[obj[obji].iconColor]; array_icon_color[obji + 1] = arrayColorScale[obj[obji].iconColor !== '' ? obj[obji].iconColor : 0];
array_icon[obji + 1] = obj[obji].icon; array_icon[obji + 1] = obj[obji].icon;
array_powerspeed[obji + 1] = obj[obji].speed; array_powerspeed[obji + 1] = obj[obji].speed;
array_powerstate[obji + 1] = obj[obji].value + ' ' + obj[obji].unit ; array_powerstate[obji + 1] = obj[obji].value + ' ' + obj[obji].unit ;
@@ -4495,7 +4493,7 @@ function GeneratePowerPage(page: PagePower): Payload[] {
let power_string : any = ''; let power_string : any = '';
for (let i = 1; i < 7; i++ ) { for (let i = 0; i < 6; i++ ) {
power_string = power_string + '~'; // type (ignored) power_string = power_string + '~'; // type (ignored)
power_string = power_string + '~'; // intNameEntity (ignored) power_string = power_string + '~'; // intNameEntity (ignored)
power_string = power_string + Icons.GetIcon(array_icon[i+1]) + '~'; // icon~ power_string = power_string + Icons.GetIcon(array_icon[i+1]) + '~'; // icon~
@@ -4503,6 +4501,8 @@ function GeneratePowerPage(page: PagePower): Payload[] {
power_string = power_string + '~'; // display (ignored in TS) power_string = power_string + '~'; // display (ignored in TS)
power_string = power_string + array_powerstate[i+1] + '~'; // optionalValue~ power_string = power_string + array_powerstate[i+1] + '~'; // optionalValue~
power_string = power_string + array_powerspeed[i+1] + '~'; // speed~ power_string = power_string + array_powerspeed[i+1] + '~'; // speed~
if (Debug) console.log(power_string);
} }
power_string = power_string.substring(0, power_string.length - 1); power_string = power_string.substring(0, power_string.length - 1);
@@ -4530,13 +4530,13 @@ function GeneratePowerPage(page: PagePower): Payload[] {
// 1st to 6th Item // 1st to 6th Item
power_string power_string
}); });
if (Debug) console.log(out_msgs);
return out_msgs; return out_msgs;
} catch (err) { } catch (err) {
console.warn('function GeneratePowerPage: ' + err.message); console.warn('function GeneratePowerPage: ' + err.message);
} }
} };
function GenerateChartPage(page: PageChart): Payload[] { function GenerateChartPage(page: PageChart): Payload[] {
try { try {
@@ -6355,8 +6355,8 @@ function HandleScreensaverUpdate(): void {
} }
else if (typeof(val) == 'boolean') { else if (typeof(val) == 'boolean') {
iconColor = GetScreenSaverEntityColor(config.leftScreensaverEntity[i]); iconColor = GetScreenSaverEntityColor(config.leftScreensaverEntity[i]);
if (!val && config.bottomScreensaverEntity[i].ScreensaverEntityIconOff != null) { if (!val && config.leftScreensaverEntity[i].ScreensaverEntityIconOff != null) {
icon = Icons.GetIcon(config.bottomScreensaverEntity[i].ScreensaverEntityIconOff) icon = Icons.GetIcon(config.leftScreensaverEntity[i].ScreensaverEntityIconOff)
} }
} }
else if (typeof(val) == 'string') { else if (typeof(val) == 'string') {