From 1f8db79324ad2935d143a43b9d4f23a786c89a9a Mon Sep 17 00:00:00 2001 From: stipus Date: Tue, 13 Oct 2015 00:53:19 +0200 Subject: [PATCH] Added support for humidity sensors, battery level sensors, low battery flag for all sensors, and ability to run HomeSeer events - Added Humidity sensor support - Added Battery support - Added low battery support for all sensors - Added HomeSeer event support (using HomeKit switches...) --- platforms/HomeSeer.js | 214 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 193 insertions(+), 21 deletions(-) diff --git a/platforms/HomeSeer.js b/platforms/HomeSeer.js index e3c289b..e0c5c79 100644 --- a/platforms/HomeSeer.js +++ b/platforms/HomeSeer.js @@ -11,6 +11,12 @@ // - Added negative temperature support to temperature sensors // V0.4 - Jean-Michel Joudrier (stipus at stipus dot com) - 2015/10/12 // - Added thermostat support +// V0.5 - Jean-Michel Joudrier (stipus at stipus dot com) - 2015/10/12 +// - Added Humidity sensor support +// V0.6 - Jean-Michel Joudrier (stipus at stipus dot com) - 2015/10/12 +// - Added Battery support +// - Added low battery support for all sensors +// - Added HomeSeer event support (using HomeKit switches...) // // // Remember to add platform to config.json. @@ -24,7 +30,16 @@ // "platform": "HomeSeer", // Required // "name": "HomeSeer", // Required // "host": "http://192.168.3.4:81", // Required - If you did setup HomeSeer authentication, use "http://user:password@ip_address:port" -// "accessories":[ +// +// "events":[ // Optional - List of Events - Currently they are imported into HomeKit as switches +// { +// "eventGroup":"My Group", // Required - The HomeSeer event group +// "eventName":"My Event", // Required - The HomeSeer event name +// "name":"Test" // Optional - HomeSeer event name is the default +// } +// ], +// +// "accessories":[ // Required - List of Accessories // { // "ref":8, // Required - HomeSeer Device Reference (To get it, select the HS Device - then Advanced Tab) // "type":"Lightbulb", // Optional - Lightbulb is the default @@ -37,14 +52,16 @@ // "ref":9 // This is a dimmable Lightbulb by default // }, // { -// "ref":58, // This is an controllable outlet +// "ref":58, // This is a controllable outlet // "type":"Outlet" // }, // { -// "ref":111, +// "ref":111, // Required - HomeSeer Device Reference for your sensor // "type":"TemperatureSensor", // Required for a temperature sensor // "temperatureUnit":"F", // Optional - C is the default -// "name":"Bedroom temp" // Optional - HomeSeer device name is the default +// "name":"Bedroom temp", // Optional - HomeSeer device name is the default +// "batteryRef":112, // Optional - HomeSeer device reference for the sensor battery level +// "batteryThreshold":15 // Optional - If sensor battery level is below this value, the HomeKit LowBattery characteristic is set to 1. Default is 10 // }, // { // "ref":113, // Required - HomeSeer Device Reference of the Current Temperature Device @@ -65,6 +82,12 @@ // "controlAutoValue":3, // Required - Value for AUTO // "coolingThresholdRef":169, // Optional - Not-implemented-yet - HomeSeer device reference for your thermostat cooling threshold // "heatingThresholdRef":170 // Optional - Not-implemented-yet - HomeSeer device reference for your thermostat heating threshold +// }, +// { +// "ref":115, // Required - HomeSeer Device Reference for a device holding battery level (0-100) +// "type":"Battery", // Required for a Battery +// "name":"Roomba battery", // Optional - HomeSeer device name is the default +// "batteryThreshold":15 // Optional - If the level is below this value, the HomeKit LowBattery characteristic is set to 1. Default is 10 // } // ] // } @@ -72,18 +95,20 @@ // // // SUPORTED TYPES: -// - Lightbulb (can_dim, onValue, offValue options) -// - Fan (onValue, offValue options) -// - Switch (onValue, offValue options) -// - Outlet (onValue, offValue options) +// - Lightbulb (can_dim, onValue, offValue options) +// - Fan (onValue, offValue options) +// - Switch (onValue, offValue options) +// - Outlet (onValue, offValue options) +// - Thermostat (temperatureUnit, setPoint, state, control options) // - TemperatureSensor (temperatureUnit=C|F) -// - Thermostat (temperatureUnit, setPoint, state, control options) -// - ContactSensor -// - MotionSensor -// - LeakSensor -// - LightSensor -// - OccupancySensor -// - SmokeSensor +// - ContactSensor (0=no contact, 1=contact - batteryRef, batteryThreshold option) +// - MotionSensor (0=no motion, 1=motion - batteryRef, batteryThreshold option) +// - LeakSensor (0=no leak, 1=leak - batteryRef, batteryThreshold option) +// - LightSensor (HomeSeer device value in Lux - batteryRef, batteryThreshold option) +// - HumiditySensor (HomeSeer device value in % - batteryRef, batteryThreshold option) +// - OccupancySensor (0=no occupancy, 1=occupancy - batteryRef, batteryThreshold option) +// - SmokeSensor (0=no smoke, 1=smoke - batteryRef, batteryThreshold option) +// - Battery (batteryThreshold option) // - Door @@ -111,19 +136,25 @@ function HomeSeerPlatform(log, config){ HomeSeerPlatform.prototype = { accessories: function(callback) { - this.log("Fetching HomeSeer devices."); + var that = this; + var foundAccessories = []; + if( this.config.events ) { + this.log("Creating HomeSeer events."); + for( var i=0; i