updated magic-home to new version 2.0

This commit is contained in:
jangxx 2019-02-15 14:58:18 +01:00
parent c56caf3de8
commit c650a60703
3 changed files with 92 additions and 84 deletions

View File

@ -72,10 +72,16 @@ class HCMagicHome extends HCColorLamp {
futureState.on = true; futureState.on = true;
let suid = this._sumanager.registerUpdate(futureState); let suid = this._sumanager.registerUpdate(futureState);
return new Promise((resolve, reject) => { return this._control.setPower(true).then(success => {
this._control.turnOn((err) => { this._sumanager.confirmUpdate(suid);
updateHelper(this, err, suid, resolve, reject);
}); if (this._sumanager.highestConfirmedId == suid) {
this.emit("state change", this.state);
}
return success;
}).catch(err => {
this._sumanager.rejectUpdate(suid);
throw err;
}); });
} }
@ -84,10 +90,16 @@ class HCMagicHome extends HCColorLamp {
futureState.on = false; futureState.on = false;
let suid = this._sumanager.registerUpdate(futureState); let suid = this._sumanager.registerUpdate(futureState);
return new Promise((resolve, reject) => { return this._control.setPower(false).then(success => {
this._control.turnOff((err) => { this._sumanager.confirmUpdate(suid);
updateHelper(this, err, suid, resolve, reject);
}); if (this._sumanager.highestConfirmedId == suid) {
this.emit("state change", this.state);
}
return success;
}).catch(err => {
this._sumanager.rejectUpdate(suid);
throw err;
}); });
} }
@ -104,12 +116,18 @@ class HCMagicHome extends HCColorLamp {
futureState.brightness = brightness; futureState.brightness = brightness;
let suid = this._sumanager.registerUpdate(futureState); let suid = this._sumanager.registerUpdate(futureState);
let rgbColor = HSL_to_RGB(futureState.color); let { red, green, blue } = HSL_to_RGB(futureState.color);
return new Promise((resolve, reject) => { return this._control.setColorWithBrightness(red, green, blue, futureState.brightness).then(success => {
this._control.setColorWithBrightness(rgbColor.red, rgbColor.green, rgbColor.blue, futureState.brightness, (err, success) => { this._sumanager.confirmUpdate(suid);
updateHelper(this, err, suid, resolve, reject, success);
}); if (this._sumanager.highestConfirmedId == suid) {
this.emit("state change", this.state);
}
return success;
}).catch(err => {
this._sumanager.rejectUpdate(suid);
throw err;
}); });
} }
@ -118,12 +136,18 @@ class HCMagicHome extends HCColorLamp {
futureState.color = fillPartialHSL(color, futureState.color); futureState.color = fillPartialHSL(color, futureState.color);
let suid = this._sumanager.registerUpdate(futureState); let suid = this._sumanager.registerUpdate(futureState);
let rgbColor = HSL_to_RGB(futureState.color); let { red, green, blue } = HSL_to_RGB(futureState.color);
return new Promise((resolve, reject) => { return this._control.setColorWithBrightness(red, green, blue, futureState.brightness).then(success => {
this._control.setColorWithBrightness(rgbColor.red, rgbColor.green, rgbColor.blue, futureState.brightness, (err, success) => { this._sumanager.confirmUpdate(suid);
updateHelper(this, err, suid, resolve, reject, success);
}); if (this._sumanager.highestConfirmedId == suid) {
this.emit("state change", this.state);
}
return success;
}).catch(err => {
this._sumanager.rejectUpdate(suid);
throw err;
}); });
} }
@ -149,35 +173,37 @@ class HCMagicHome extends HCColorLamp {
} }
let futureState = this.state; let futureState = this.state;
let promise;
if(effect == 'none') { if(effect == 'none') {
futureState.effect = "none"; futureState.effect = "none";
let suid = this._sumanager.registerUpdate(futureState);
let rgbColor = HSL_to_RGB(futureState.color); let { red, green, blue } = HSL_to_RGB(futureState.color);
return new Promise((resolve, reject) => { promise = this._control.setColorWithBrightness(red, green, blue, futureState.brightness);
this._control.setColorWithBrightness(rgbColor.red, rgbColor.green, rgbColor.blue, futureState.brightness, (err, success) => {
updateHelper(this, err, suid, resolve, reject, success);
});
});
} else { } else {
futureState.effect = id; // id is "valid" / can be parsed futureState.effect = id; // id is "valid" / can be parsed
promise = this._control.setPattern(effect, speed);
}
let suid = this._sumanager.registerUpdate(futureState); let suid = this._sumanager.registerUpdate(futureState);
return new Promise((resolve, reject) => { return promise.then(success => {
this._control.setPattern(effect, speed, (err, success) => { this._sumanager.confirmUpdate(suid);
updateHelper(this, err, suid, resolve, reject, success);
}); if (this._sumanager.highestConfirmedId == suid) {
}); this.emit("state change", this.state);
} }
return success;
}).catch(err => {
this._sumanager.rejectUpdate(suid);
throw err;
});
} }
pullState() { pullState() {
return new Promise((resolve, reject) => { return this._control.queryState().then(status => {
this._control.queryState((err, status) => {
if(err) return reject(err);
let currentState = this.state; let currentState = this.state;
let futureState = currentState.clone(); let futureState = currentState.clone();
@ -203,30 +229,12 @@ class HCMagicHome extends HCColorLamp {
this._sumanager.insertConfirmedState(futureState); this._sumanager.insertConfirmedState(futureState);
this.emit("state change", this.state); this.emit("state change", this.state);
} }
return resolve();
});
}); });
} }
} }
module.exports = HCMagicHome; module.exports = HCMagicHome;
function updateHelper(self, err, suid, resolve, reject, resolveVal) {
if (err) {
self._sumanager.rejectUpdate(suid);
return reject(err);
}
self._sumanager.confirmUpdate(suid);
if (self._sumanager.highestConfirmedId == suid) {
self.emit("state change", self.state);
}
return resolve(resolveVal);
}
function HSL_to_RGB(hsl) { function HSL_to_RGB(hsl) {
var h = hsl.hue / 360; var h = hsl.hue / 360;
var s = hsl.sat / 100; var s = hsl.sat / 100;

16
package-lock.json generated
View File

@ -1,11 +1,11 @@
{ {
"name": "hc-magichome", "name": "hc-magichome",
"version": "1.0.0", "version": "1.0.1",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"homecontrol-control-base": { "homecontrol-control-base": {
"version": "git+https://git.literalchaos.de/jan/homecontrol-control-base.git#96b0c33583b893e236567e11082b1d093382a79e", "version": "git+https://git.literalchaos.de/jan/homecontrol-control-base.git#b7ed807affe888d61efd9dbff3d55bcc128215b7",
"from": "git+https://git.literalchaos.de/jan/homecontrol-control-base.git", "from": "git+https://git.literalchaos.de/jan/homecontrol-control-base.git",
"requires": { "requires": {
"merge-options": "^1.0.1", "merge-options": "^1.0.1",
@ -18,9 +18,9 @@
"integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
}, },
"magic-home": { "magic-home": {
"version": "1.4.0", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/magic-home/-/magic-home-1.4.0.tgz", "resolved": "https://registry.npmjs.org/magic-home/-/magic-home-2.0.1.tgz",
"integrity": "sha512-hSq3C/9rbEH3RB2t2rG/LsSb2vpalzIGh/mLKJyjaki3Wbvt9ss+2OUJ1JsAOAjjgkvxDEfbQ044yFsHZUS75A==" "integrity": "sha512-nC2XB9ENZf4afGJFvTnKKqxx+xuFOE1TjKVYiSY9B5aSkE88Z4Q5bYeVihoTEG8r8pOEZSYHnuLIi2tPXwsCwg=="
}, },
"merge-options": { "merge-options": {
"version": "1.0.1", "version": "1.0.1",
@ -31,9 +31,9 @@
} }
}, },
"node-object-hash": { "node-object-hash": {
"version": "1.4.1", "version": "1.4.2",
"resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-1.4.1.tgz", "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-1.4.2.tgz",
"integrity": "sha512-JQVqSM5/mOaUoUhCYR0t1vgm8RFo7qpJtPvnoFCLeqQh1xrfmr3BCD3nGBnACzpIEF7F7EVgqGD3O4lao/BY/A==" "integrity": "sha512-UdS4swXs85fCGWWf6t6DMGgpN/vnlKeSGEQ7hJcrs7PBFoxoKLmibc3QRb7fwiYsjdL7PX8iI/TMSlZ90dgHhQ=="
} }
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"name": "hc-magichome", "name": "hc-magichome",
"version": "1.0.1", "version": "1.0.2",
"description": "Magic Home Plugin for Homecontrol", "description": "Magic Home Plugin for Homecontrol",
"main": "HCMagicHome.js", "main": "HCMagicHome.js",
"scripts": { "scripts": {
@ -14,7 +14,7 @@
"license": "UNLICENSED", "license": "UNLICENSED",
"dependencies": { "dependencies": {
"homecontrol-control-base": "git+https://git.literalchaos.de/jan/homecontrol-control-base.git", "homecontrol-control-base": "git+https://git.literalchaos.de/jan/homecontrol-control-base.git",
"magic-home": "^1.4.0", "magic-home": "^2.0.1",
"merge-options": "^1.0.1" "merge-options": "^1.0.1"
} }
} }