From b170e81059bf17721ee09793c957d753b3517763 Mon Sep 17 00:00:00 2001 From: EddyK69 Date: Wed, 26 Aug 2015 23:20:42 +0200 Subject: [PATCH] Implemented: config.json parameter loadscenes & fixed dimmer-bug Added parameter in config.json: 'loadscenes' for enabling/disabling loading scenes Fixed issue with dimmer-range; was 0-100, should be 0-16 --- config-sample.json | 4 +++- platforms/Domoticz.js | 51 ++++++++++++++++++++++++++++--------------- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/config-sample.json b/config-sample.json index ccad7dc..c9ba829 100644 --- a/config-sample.json +++ b/config-sample.json @@ -41,7 +41,9 @@ "platform": "Domoticz", "name": "Domoticz", "server": "127.0.0.1", - "port": "8005" + "port": "8080", + "roomid": 0, + "loadscenes": 1 }, { "platform": "PhilipsHue", diff --git a/platforms/Domoticz.js b/platforms/Domoticz.js index d80e6d6..5bb6910 100644 --- a/platforms/Domoticz.js +++ b/platforms/Domoticz.js @@ -8,6 +8,11 @@ // - Added support for Scenes // - Sorting device names // +// 26 August 2015 [EddyK69] +// - Added parameter in config.json: 'loadscenes' for enabling/disabling loading scenes +// - Fixed issue with dimmer-range; was 0-100, should be 0-16 +// +// // Domoticz JSON API required // https://www.domoticz.com/wiki/Domoticz_API/JSON_URL's#Lights_and_switches // @@ -18,7 +23,8 @@ // "name": "Domoticz", // "server": "127.0.0.1", // "port": "8080", -// "roomid": 123 (0=no roomplan) +// "roomid": 123, (0=no roomplan) +// "loadscenes": 1 (0=disable scenes) // } // ], // @@ -47,6 +53,10 @@ function DomoticzPlatform(log, config){ if (typeof config["roomid"] != 'undefined') { this.roomid = config["roomid"]; } + this.loadscenes = 1; + if (typeof config["loadscenes"] != 'undefined') { + this.loadscenes = config["loadscenes"]; + } } function sortByKey(array, key) { @@ -120,24 +130,26 @@ DomoticzPlatform.prototype = { }); } //Get Scenes - asyncCalls++; - request.get({ - url: this.urlForQuery("type=scenes"), - json: true - }, function(err, response, json) { - if (!err && response.statusCode == 200) { - if (json['result'] != undefined) { - var sArray=sortByKey(json['result'],"Name"); - sArray.map(function(s) { - accessory = new DomoticzAccessory(that.log, that, true, s.idx, s.Name, false, 0, false); - foundAccessories.push(accessory); - }) + if (this.loadscenes == 1) { + asyncCalls++; + request.get({ + url: this.urlForQuery("type=scenes"), + json: true + }, function(err, response, json) { + if (!err && response.statusCode == 200) { + if (json['result'] != undefined) { + var sArray=sortByKey(json['result'],"Name"); + sArray.map(function(s) { + accessory = new DomoticzAccessory(that.log, that, true, s.idx, s.Name, false, 0, false); + foundAccessories.push(accessory); + }) + } + callbackLater(); + } else { + that.log("There was a problem connecting to Domoticz."); } - callbackLater(); - } else { - that.log("There was a problem connecting to Domoticz."); - } - }); + }); + } } } @@ -165,6 +177,9 @@ DomoticzAccessory.prototype = { url = this.platform.urlForQuery("type=command¶m=setcolbrightnessvalue&idx=" + this.idx + "&hue=" + value + "&brightness=100" + "&iswhite=false"); } else if (c == "setLevel") { + //Range should be 0-16 instead of 0-100 + //See http://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s#Set_a_dimmable_light_to_a_certain_level + value = Math.round((value / 100) * 16) url = this.platform.urlForQuery("type=command¶m=switchlight&idx=" + this.idx + "&switchcmd=Set%20Level&level=" + value); } else if (value != undefined) {