diff --git a/README.md b/README.md index a9a63f0..4ae9ed0 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,6 @@ Change Volume (triggered by changing '.control.volume') ### **WORK IN PROGRESS** -- (Uwe Nagel) state roles set according to standard - (Uwe Nagel) subscribeState calls eliminated - (Uwe Nagel) Instance prefixes in ObjectIds are omitted when calling setState() - (Uwe Nagel) State change now honors ack flag diff --git a/main.js b/main.js index 99d5eba..e6bc7de 100644 --- a/main.js +++ b/main.js @@ -73,7 +73,9 @@ class Bluesound extends utils.Adapter { // set Info let sNameTag = 'info.name'; + this.subscribeStates(sNameTag); const sModelNameTag = 'info.modelname'; + this.subscribeStates(sModelNameTag); try { const response = await apiClient.get('/SyncStatus'); if (response.status === 200) { @@ -96,15 +98,19 @@ class Bluesound extends utils.Adapter { // stop = false sNameTag = 'control.stop'; + this.subscribeStates(sNameTag); this.setState(sNameTag, false, true); // pause = false sNameTag = 'control.pause'; + this.subscribeStates(sNameTag); this.setState(sNameTag, false, true); // play = false sNameTag = 'control.play'; + this.subscribeStates(sNameTag); this.setState(sNameTag, false, true); // state = "" sNameTag = 'control.state'; + this.subscribeStates(sNameTag); this.setState(sNameTag, '', true); // volume from player @@ -118,9 +124,11 @@ class Bluesound extends utils.Adapter { return; } sNameTag = 'control.volume'; + this.subscribeStates(sNameTag); this.setState(sNameTag, parseInt(result.volume._), true); sNameTag = 'info.volume'; + this.subscribeStates(sNameTag); this.setState(sNameTag, parseInt(result.volume._), true); }); } else { @@ -159,6 +167,7 @@ class Bluesound extends utils.Adapter { const sTag = `presets.preset${sPresetID}.${obj.common.name}`; for (const x in data1) { if (x == obj.common.name) { + this.subscribeStates(sTag); if (obj.common.type == 'number') { this.setState(sTag, parseInt(data1[x]), true); } else { @@ -245,6 +254,7 @@ class Bluesound extends utils.Adapter { return; } const sStateTag = 'control.state'; + this.subscribeStates(sStateTag); this.setState(sStateTag, result.state, true); this.log.info(`${this.namespace} Preset${preset} Start`); }); @@ -269,6 +279,7 @@ class Bluesound extends utils.Adapter { return; } const sStateTag = 'control.state'; + this.subscribeStates(sStateTag); this.setState(sStateTag, result.state, true); this.log.info(`${this.namespace} Pause`); }); @@ -290,6 +301,7 @@ class Bluesound extends utils.Adapter { return; } const sStateTag = 'control.state'; + this.subscribeStates(sStateTag); this.setState(sStateTag, result.state, true); this.log.info(`${this.namespace} Stop`); }); @@ -312,6 +324,7 @@ class Bluesound extends utils.Adapter { return; } const sStateTag = 'control.state'; + this.subscribeStates(sStateTag); this.setState(sStateTag, result.state, true); this.log.info(`${this.namespace} Play`); }); @@ -373,6 +386,7 @@ class Bluesound extends utils.Adapter { async clearPlayerStatus() { let i; + this.subscribeStates('info.title*'); for (i = 1; i < 4; i++) { const sStateTag = `info.title${i}`; await this.setStateAsync(sStateTag, { val: '', ack: true }); @@ -450,10 +464,13 @@ class Bluesound extends utils.Adapter { if (pState != pStateOld.val) { const sStateTag = 'control.state'; + this.subscribeStates(sStateTag); await this.setStateAsync(sStateTag, { val: pState, ack: true }); } if (pState == 'stream' || pState == 'play') { + this.subscribeStates('info.title*'); + for (i = 1; i < 4; i++) { const sStateTag = `info.title${i}`; const valOld = await this.getStateAsync(sStateTag); @@ -464,18 +481,23 @@ class Bluesound extends utils.Adapter { } let sStateTag = 'info.secs'; + this.subscribeStates(sStateTag); await this.setStateAsync(sStateTag, { val: parseInt(varSecs), ack: true }); sStateTag = 'info.totlen'; + this.subscribeStates(sStateTag); await this.setStateAsync(sStateTag, { val: parseInt(varTotLen), ack: true }); sStateTag = 'info.str_secs'; + this.subscribeStates(sStateTag); await this.setStateAsync(sStateTag, { val: strSecs, ack: true }); sStateTag = 'info.str_totlen'; + this.subscribeStates(sStateTag); await this.setStateAsync(sStateTag, { val: strTotLen, ack: true }); sStateTag = 'info.image'; + this.subscribeStates(sStateTag); let valOld = await this.getStateAsync(sStateTag); if (valOld.val != imageUrl) { @@ -484,6 +506,7 @@ class Bluesound extends utils.Adapter { } sStateTag = 'info.volume'; + this.subscribeStates(sStateTag); valOld = await this.getStateAsync(sStateTag); if (valOld.val != varVolume) { await this.setStateAsync(sStateTag, { val: parseInt(varVolume), ack: true }); @@ -496,12 +519,15 @@ class Bluesound extends utils.Adapter { } let sStateTag = 'info.secs'; + this.subscribeStates(sStateTag); await this.setStateAsync(sStateTag, { val: 0, ack: true }); sStateTag = 'info.totlen'; + this.subscribeStates(sStateTag); await this.setStateAsync(sStateTag, { val: 0, ack: true }); sStateTag = 'info.image'; + this.subscribeStates(sStateTag); await this.setStateAsync(sStateTag, { val: '', ack: true }); } } else {