Add setOn / setOff

This commit is contained in:
ticaki
2024-01-23 16:55:07 +01:00
parent 1faa540a70
commit f7f853f05e

View File

@@ -1,5 +1,5 @@
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
TypeScript v4.3.3.38 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne TypeScript v4.3.3.39 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne
- abgestimmt auf TFT 53 / v4.3.3 / BerryDriver 9 / Tasmota 13.3.0 - abgestimmt auf TFT 53 / v4.3.3 / BerryDriver 9 / Tasmota 13.3.0
@joBr99 Projekt: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker @joBr99 Projekt: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
NsPanelTs.ts (dieses TypeScript in ioBroker) Stable: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts NsPanelTs.ts (dieses TypeScript in ioBroker) Stable: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
@@ -105,6 +105,7 @@ ReleaseNotes:
- 17.01.2024 - v4.3.3.38 Add: Changing the ScreensaverEntityValue value updates the screensaver. - 17.01.2024 - v4.3.3.38 Add: Changing the ScreensaverEntityValue value updates the screensaver.
- 19.01.2024 - v4.3.3.38 Change: yAxisTicks parameter is not required in cardLChart PageItem - 19.01.2024 - v4.3.3.38 Change: yAxisTicks parameter is not required in cardLChart PageItem
- 20.01.2024 - v4.3.3.38 Add: click on indicatorIcon navigate to Page - 20.01.2024 - v4.3.3.38 Add: click on indicatorIcon navigate to Page
- 23.01.2024 - v4.3.3.39 Add: Optional setOn & setOff for HW button with mode 'set'
Todo: Todo:
@@ -972,7 +973,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.38'; const scriptVersion: string = 'v4.3.3.39';
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;
@@ -986,6 +987,8 @@ let weatherForecast: boolean;
let pageCounter: number = 0; let pageCounter: number = 0;
let alwaysOn: boolean = false; let alwaysOn: boolean = false;
let buttonToggleState: {[key: string]: boolean} = {};
const axios = require('axios'); const axios = require('axios');
const dayjs = require('dayjs'); const dayjs = require('dayjs');
const moment = require('moment'); const moment = require('moment');
@@ -3242,7 +3245,13 @@ function HandleHardwareButton(method: NSPanel.EventMethod): void {
break; break;
case 'set': case 'set':
if (Debug) log('HandleHardwareButton -> Mode Set', 'info'); if (Debug) log('HandleHardwareButton -> Mode Set', 'info');
if (buttonConfig.entity) { if (buttonConfig.setOn && existsState(buttonConfig.setOn.dp) && !buttonToggleState[method]) {
setState(buttonConfig.setOn.dp, buttonConfig.setOn.val);
buttonToggleState[method] = true;
} else if (buttonConfig.setOff && existsState(buttonConfig.setOff.dp) && buttonToggleState[method]) {
setState(buttonConfig.setOff.dp, buttonConfig.setOff.val);
buttonToggleState[method] = false;
} else if (buttonConfig.entity && existsState(buttonConfig.entity)) {
setState(buttonConfig.entity, buttonConfig.setValue); setState(buttonConfig.entity, buttonConfig.setValue);
} }
screensaverEnabled = true; screensaverEnabled = true;
@@ -10061,6 +10070,8 @@ namespace NSPanel {
page: (PageThermo | PageMedia | PageAlarm | PageQR | PageEntities | PageGrid | PageGrid2 | PagePower | PageChart | PageUnlock | null), page: (PageThermo | PageMedia | PageAlarm | PageQR | PageEntities | PageGrid | PageGrid2 | PagePower | PageChart | PageUnlock | null),
entity: string | null, entity: string | null,
setValue: string | number | boolean | null setValue: string | number | boolean | null
setOn?: {dp:string, val:iobJS.StateValue}
setOff?: {dp:string, val:iobJS.StateValue};
} }
export type Config = { export type Config = {