mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-19 22:24:15 +01:00
Create Countdown_Timer.ts
This commit is contained in:
46
ioBroker/Blockly/Countdown_Timer.ts
Normal file
46
ioBroker/Blockly/Countdown_Timer.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
const dp_userdata: string = '0_userdata.0.NSPanel';
|
||||
const dp_alias: string = 'alias.0.NSPanel';
|
||||
|
||||
// Der nachfolgende Datenpunkt muss manuell angelegt werden
|
||||
const dpAction: string = '0_userdata.0.example_boolean'; // anpassen
|
||||
|
||||
const Debug = false;
|
||||
|
||||
let intervallCounter: any;
|
||||
|
||||
let sec_timer = getState(dp_userdata + '.Countdown.Time').val;
|
||||
on({ id: dp_userdata + '.Countdown.State', change: 'ne' }, async (obj) => {
|
||||
|
||||
switch (obj.state.val) {
|
||||
case 'active':
|
||||
if (intervallCounter) { clearInterval(intervallCounter); intervallCounter = null; };
|
||||
intervallCounter = setInterval(async () => {
|
||||
if (getState(dp_userdata + '.Countdown.Time').val > 0) {
|
||||
sec_timer = getState(dp_userdata + '.Countdown.Time').val;
|
||||
setState(dp_userdata + '.Countdown.Time', (sec_timer - 1), false);
|
||||
} else {
|
||||
setState(dp_userdata + '.Countdown.Time', 0, false);
|
||||
setState(dp_userdata + '.Countdown.State', 'idle', false);
|
||||
// An dieser Stelle kann auch noch eine Meldung an Alexa oder Telegram, etc. erfolgen
|
||||
}
|
||||
}, 1000);
|
||||
|
||||
break;
|
||||
default:
|
||||
if (intervallCounter) { clearInterval(intervallCounter); intervallCounter = null; };
|
||||
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
async function Init_Datenpunkte() {
|
||||
if (existsState(dp_alias + '.Countdown.ACTUAL') == false) {
|
||||
await createStateAsync(dp_userdata + '.Countdown.Time', '0', { type: 'number'});
|
||||
await createStateAsync(dp_userdata + '.Countdown.State', 'paused', { type: 'string' });
|
||||
setObject(dp_alias + '.Countown', { type: 'channel', common: { role: 'level.timer', name: 'Countdown' }, native: {} });
|
||||
await createAliasAsync(dp_alias + '.Countdown.ACTUAL', dp_userdata + '.Countdown.Time', true, <iobJS.StateCommon>{ type: 'number', role: 'state', name: 'ACTUAL' });
|
||||
await createAliasAsync(dp_alias + '.Countdown.STATE', dp_userdata + '.Countdown.State', true, <iobJS.StateCommon>{ type: 'string', role: 'state', name: 'STATE' });
|
||||
log("<PageItem>{id: '"+ dp_alias + ".Countdown', name: 'Timer'}", 'info');
|
||||
}
|
||||
}
|
||||
Init_Datenpunkte();
|
||||
Reference in New Issue
Block a user