From 786af030733447b1b45423b31283d13b56135a2c Mon Sep 17 00:00:00 2001 From: David Sulpy Date: Mon, 10 Aug 2015 19:22:53 -0500 Subject: [PATCH 1/3] rolled back changes to previous version --- .../initial-state-event-streamer.groovy | 114 ++++++++---------- 1 file changed, 52 insertions(+), 62 deletions(-) diff --git a/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy b/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy index 4f2b8c7292e..566f8e1e860 100644 --- a/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy +++ b/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy @@ -28,32 +28,32 @@ import groovy.json.JsonSlurper preferences { section("Choose which devices to monitor...") { - input "accelerometers", "capability.accelerationSensor", title: "Accelerometers", multiple: true, required: false + //input "accelerometers", "capability.accelerationSensor", title: "Accelerometers", multiple: true, required: false input "alarms", "capability.alarm", title: "Alarms", multiple: true, required: false - input "batteries", "capability.battery", title: "Batteries", multiple: true, required: false - input "beacons", "capability.beacon", title: "Beacons", multiple: true, required: false - input "buttons", "capability.button", title: "Buttons", multiple: true, required: false - input "cos", "capability.carbonMonoxideDetector", title: "Carbon Monoxide Detectors", multiple: true, required: false - input "colors", "capability.colorControl", title: "Color Controllers", multiple: true, required: false + //input "batteries", "capability.battery", title: "Batteries", multiple: true, required: false + //input "beacons", "capability.beacon", title: "Beacons", multiple: true, required: false + //input "buttons", "capability.button", title: "Buttons", multiple: true, required: false + //input "cos", "capability.carbonMonoxideDetector", title: "Carbon Monoxide Detectors", multiple: true, required: false + //input "colors", "capability.colorControl", title: "Color Controllers", multiple: true, required: false input "contacts", "capability.contactSensor", title: "Contact Sensors", multiple: true, required: false - input "doorsControllers", "capability.doorControl", title: "Door Controllers", multiple: true, required: false - input "energyMeters", "capability.energyMeter", title: "Energy Meters", multiple: true, required: false - input "illuminances", "capability.illuminanceMeasurement", title: "Illuminance Meters", multiple: true, required: false + //input "doorsControllers", "capability.doorControl", title: "Door Controllers", multiple: true, required: false + //input "energyMeters", "capability.energyMeter", title: "Energy Meters", multiple: true, required: false + //input "illuminances", "capability.illuminanceMeasurement", title: "Illuminance Meters", multiple: true, required: false input "locks", "capability.lock", title: "Locks", multiple: true, required: false input "motions", "capability.motionSensor", title: "Motion Sensors", multiple: true, required: false - input "musicPlayers", "capability.musicPlayer", title: "Music Players", multiple: true, required: false - input "powerMeters", "capability.powerMeter", title: "Power Meters", multiple: true, required: false + //input "musicPlayers", "capability.musicPlayer", title: "Music Players", multiple: true, required: false + //input "powerMeters", "capability.powerMeter", title: "Power Meters", multiple: true, required: false input "presences", "capability.presenceSensor", title: "Presence Sensors", multiple: true, required: false input "humidities", "capability.relativeHumidityMeasurement", title: "Humidity Meters", multiple: true, required: false - input "relaySwitches", "capability.relaySwitch", title: "Relay Switches", multiple: true, required: false - input "sleepSensors", "capability.sleepSensor", title: "Sleep Sensors", multiple: true, required: false - input "smokeDetectors", "capability.smokeDetector", title: "Smoke Detectors", multiple: true, required: false - input "peds", "capability.stepSensor", title: "Pedometers", multiple: true, required: false + //input "relaySwitches", "capability.relaySwitch", title: "Relay Switches", multiple: true, required: false + //input "sleepSensors", "capability.sleepSensor", title: "Sleep Sensors", multiple: true, required: false + //input "smokeDetectors", "capability.smokeDetector", title: "Smoke Detectors", multiple: true, required: false + //input "peds", "capability.stepSensor", title: "Pedometers", multiple: true, required: false input "switches", "capability.switch", title: "Switches", multiple: true, required: false input "switchLevels", "capability.switchLevel", title: "Switch Levels", multiple: true, required: false input "temperatures", "capability.temperatureMeasurement", title: "Temperature Sensors", multiple: true, required: false input "thermostats", "capability.thermostat", title: "Thermostats", multiple: true, required: false - input "valves", "capability.valve", title: "Valves", multiple: true, required: false + //input "valves", "capability.valve", title: "Valves", multiple: true, required: false input "waterSensors", "capability.waterSensor", title: "Water Sensors", multiple: true, required: false } } @@ -74,77 +74,77 @@ mappings { } def subscribeToEvents() { - if (accelerometers != null) { + /*if (accelerometers != null) { subscribe(accelerometers, "acceleration", genericHandler) - } + }*/ if (alarms != null) { subscribe(alarms, "alarm", genericHandler) } - if (batteries != null) { + /*if (batteries != null) { subscribe(batteries, "battery", genericHandler) - } - if (beacons != null) { + }*/ + /*if (beacons != null) { subscribe(beacons, "presence", genericHandler) - } - + }*/ + /* if (buttons != null) { subscribe(buttons, "button", genericHandler) - } - if (cos != null) { + }*/ + /*if (cos != null) { subscribe(cos, "carbonMonoxide", genericHandler) - } - if (colors != null) { + }*/ + /*if (colors != null) { subscribe(colors, "hue", genericHandler) subscribe(colors, "saturation", genericHandler) subscribe(colors, "color", genericHandler) - } + }*/ if (contacts != null) { subscribe(contacts, "contact", genericHandler) } - if (doorsControllers != null) { + /*if (doorsControllers != null) { subscribe(doorsControllers, "door", genericHandler) - } - if (energyMeters != null) { + }*/ + /*if (energyMeters != null) { subscribe(energyMeters, "energy", genericHandler) - } - if (illuminances != null) { + }*/ + /*if (illuminances != null) { subscribe(illuminances, "illuminance", genericHandler) - } + }*/ if (locks != null) { subscribe(locks, "lock", genericHandler) } if (motions != null) { subscribe(motions, "motion", genericHandler) } - if (musicPlayers != null) { + /*if (musicPlayers != null) { subscribe(musicPlayers, "status", genericHandler) subscribe(musicPlayers, "level", genericHandler) subscribe(musicPlayers, "trackDescription", genericHandler) subscribe(musicPlayers, "trackData", genericHandler) subscribe(musicPlayers, "mute", genericHandler) - } - if (powerMeters != null) { + }*/ + /*if (powerMeters != null) { subscribe(powerMeters, "power", genericHandler) - } + }*/ if (presences != null) { subscribe(presences, "presence", genericHandler) } if (humidities != null) { subscribe(humidities, "humidity", genericHandler) } - if (relaySwitches != null) { + /*if (relaySwitches != null) { subscribe(relaySwitches, "switch", genericHandler) - } - if (sleepSensors != null) { + }*/ + /*if (sleepSensors != null) { subscribe(sleepSensors, "sleeping", genericHandler) - } - if (smokeDetectors != null) { + }*/ + /*if (smokeDetectors != null) { subscribe(smokeDetectors, "smoke", genericHandler) - } - if (peds != null) { + }*/ + /*if (peds != null) { subscribe(peds, "steps", genericHandler) subscribe(peds, "goal", genericHandler) - } + }*/ if (switches != null) { subscribe(switches, "switch", genericHandler) } @@ -163,9 +163,9 @@ def subscribeToEvents() { subscribe(thermostats, "thermostatFanMode", genericHandler) subscribe(thermostats, "thermostatOperatingState", genericHandler) } - if (valves != null) { + /*if (valves != null) { subscribe(valves, "contact", genericHandler) - } + }*/ if (waterSensors != null) { subscribe(waterSensors, "water", genericHandler) } @@ -177,7 +177,6 @@ def getAccessKey() { httpError(404, "Access Key Not Found") } else { [ - grokerRootUrl: state.grokerRootUrl, accessKey: state.accessKey ] } @@ -213,12 +212,6 @@ def setBucketKey() { def setAccessKey() { log.trace "set access key" def newAccessKey = request.JSON?.accessKey - def newGrokerRootUrl = request.JSON?.grokerRootUrl - - if (newGrokerRootUrl && newGrokerRootUrl != "" && newGrokerRootUrl != state.grokerRootUrl) { - state.grokerRootUrl = "$newGrokerRootUrl" - state.isBucketCreated = false - } if (newAccessKey && newAccessKey != state.accessKey) { state.accessKey = "$newAccessKey" @@ -231,7 +224,6 @@ def installed() { subscribeToEvents() state.isBucketCreated = false - state.grookerRootUrl = "https://groker.initialstate.com" } def updated() { @@ -256,11 +248,10 @@ def createBucket() { def bucketCreateBody = new JsonSlurper().parseText("{\"bucketKey\": \"$bucketKey\", \"bucketName\": \"$bucketName\"}") def bucketCreatePost = [ - uri: '${state.grokerRootUrl}/api/buckets', + uri: 'https://groker.initialstate.com/api/buckets', headers: [ "Content-Type": "application/json", - "X-IS-AccessKey": accessKey, - "Accept-Version": "0.0.1" + "X-IS-AccessKey": accessKey ], body: bucketCreateBody ] @@ -297,12 +288,11 @@ def eventHandler(name, value) { def eventBody = new JsonSlurper().parseText("[{\"key\": \"$name\", \"value\": \"$value\"}]") def eventPost = [ - uri: '${state.grokerRootUrl}/api/events', + uri: 'https://groker.initialstate.com/api/events', headers: [ "Content-Type": "application/json", "X-IS-BucketKey": "${state.bucketKey}", - "X-IS-AccessKey": "${state.accessKey}", - "Accept-Version": "0.0.2" + "X-IS-AccessKey": "${state.accessKey}" ], body: eventBody ] From 0fcff53eba9e9fed33fce1660fc6586817f560ac Mon Sep 17 00:00:00 2001 From: David Sulpy Date: Fri, 14 Aug 2015 14:41:27 -0500 Subject: [PATCH 2/3] Removed door controllers from comments and further implementation to see if that fixes ST 403 error on authentication --- .../initial-state-event-streamer.groovy | 4 ---- 1 file changed, 4 deletions(-) diff --git a/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy b/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy index 566f8e1e860..27b935173a2 100644 --- a/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy +++ b/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy @@ -36,7 +36,6 @@ preferences { //input "cos", "capability.carbonMonoxideDetector", title: "Carbon Monoxide Detectors", multiple: true, required: false //input "colors", "capability.colorControl", title: "Color Controllers", multiple: true, required: false input "contacts", "capability.contactSensor", title: "Contact Sensors", multiple: true, required: false - //input "doorsControllers", "capability.doorControl", title: "Door Controllers", multiple: true, required: false //input "energyMeters", "capability.energyMeter", title: "Energy Meters", multiple: true, required: false //input "illuminances", "capability.illuminanceMeasurement", title: "Illuminance Meters", multiple: true, required: false input "locks", "capability.lock", title: "Locks", multiple: true, required: false @@ -101,9 +100,6 @@ def subscribeToEvents() { if (contacts != null) { subscribe(contacts, "contact", genericHandler) } - /*if (doorsControllers != null) { - subscribe(doorsControllers, "door", genericHandler) - }*/ /*if (energyMeters != null) { subscribe(energyMeters, "energy", genericHandler) }*/ From 8d07e81b80c38091f7f74f7f29687a4c6bb4c0f4 Mon Sep 17 00:00:00 2001 From: David Sulpy Date: Tue, 25 Aug 2015 12:23:05 -0500 Subject: [PATCH 3/3] Added all capabilities possible sans door controllers and buttons. --- .../initial-state-event-streamer.groovy | 99 ++++++++++--------- 1 file changed, 53 insertions(+), 46 deletions(-) diff --git a/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy b/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy index 27b935173a2..5aaeeaccfe3 100644 --- a/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy +++ b/smartapps/initialstate-events/initial-state-event-streamer.src/initial-state-event-streamer.groovy @@ -28,31 +28,31 @@ import groovy.json.JsonSlurper preferences { section("Choose which devices to monitor...") { - //input "accelerometers", "capability.accelerationSensor", title: "Accelerometers", multiple: true, required: false + input "accelerometers", "capability.accelerationSensor", title: "Accelerometers", multiple: true, required: false input "alarms", "capability.alarm", title: "Alarms", multiple: true, required: false - //input "batteries", "capability.battery", title: "Batteries", multiple: true, required: false - //input "beacons", "capability.beacon", title: "Beacons", multiple: true, required: false + input "batteries", "capability.battery", title: "Batteries", multiple: true, required: false + input "beacons", "capability.beacon", title: "Beacons", multiple: true, required: false //input "buttons", "capability.button", title: "Buttons", multiple: true, required: false - //input "cos", "capability.carbonMonoxideDetector", title: "Carbon Monoxide Detectors", multiple: true, required: false - //input "colors", "capability.colorControl", title: "Color Controllers", multiple: true, required: false + input "cos", "capability.carbonMonoxideDetector", title: "Carbon Monoxide Detectors", multiple: true, required: false + input "colors", "capability.colorControl", title: "Color Controllers", multiple: true, required: false input "contacts", "capability.contactSensor", title: "Contact Sensors", multiple: true, required: false - //input "energyMeters", "capability.energyMeter", title: "Energy Meters", multiple: true, required: false - //input "illuminances", "capability.illuminanceMeasurement", title: "Illuminance Meters", multiple: true, required: false + input "energyMeters", "capability.energyMeter", title: "Energy Meters", multiple: true, required: false + input "illuminances", "capability.illuminanceMeasurement", title: "Illuminance Meters", multiple: true, required: false input "locks", "capability.lock", title: "Locks", multiple: true, required: false input "motions", "capability.motionSensor", title: "Motion Sensors", multiple: true, required: false - //input "musicPlayers", "capability.musicPlayer", title: "Music Players", multiple: true, required: false - //input "powerMeters", "capability.powerMeter", title: "Power Meters", multiple: true, required: false + input "musicPlayers", "capability.musicPlayer", title: "Music Players", multiple: true, required: false + input "powerMeters", "capability.powerMeter", title: "Power Meters", multiple: true, required: false input "presences", "capability.presenceSensor", title: "Presence Sensors", multiple: true, required: false input "humidities", "capability.relativeHumidityMeasurement", title: "Humidity Meters", multiple: true, required: false - //input "relaySwitches", "capability.relaySwitch", title: "Relay Switches", multiple: true, required: false - //input "sleepSensors", "capability.sleepSensor", title: "Sleep Sensors", multiple: true, required: false - //input "smokeDetectors", "capability.smokeDetector", title: "Smoke Detectors", multiple: true, required: false - //input "peds", "capability.stepSensor", title: "Pedometers", multiple: true, required: false + input "relaySwitches", "capability.relaySwitch", title: "Relay Switches", multiple: true, required: false + input "sleepSensors", "capability.sleepSensor", title: "Sleep Sensors", multiple: true, required: false + input "smokeDetectors", "capability.smokeDetector", title: "Smoke Detectors", multiple: true, required: false + input "peds", "capability.stepSensor", title: "Pedometers", multiple: true, required: false input "switches", "capability.switch", title: "Switches", multiple: true, required: false input "switchLevels", "capability.switchLevel", title: "Switch Levels", multiple: true, required: false input "temperatures", "capability.temperatureMeasurement", title: "Temperature Sensors", multiple: true, required: false input "thermostats", "capability.thermostat", title: "Thermostats", multiple: true, required: false - //input "valves", "capability.valve", title: "Valves", multiple: true, required: false + input "valves", "capability.valve", title: "Valves", multiple: true, required: false input "waterSensors", "capability.waterSensor", title: "Water Sensors", multiple: true, required: false } } @@ -73,74 +73,74 @@ mappings { } def subscribeToEvents() { - /*if (accelerometers != null) { + if (accelerometers != null) { subscribe(accelerometers, "acceleration", genericHandler) - }*/ + } if (alarms != null) { subscribe(alarms, "alarm", genericHandler) } - /*if (batteries != null) { + if (batteries != null) { subscribe(batteries, "battery", genericHandler) - }*/ - /*if (beacons != null) { + } + if (beacons != null) { subscribe(beacons, "presence", genericHandler) - }*/ - /* - if (buttons != null) { + } + + /*if (buttons != null) { subscribe(buttons, "button", genericHandler) }*/ - /*if (cos != null) { + if (cos != null) { subscribe(cos, "carbonMonoxide", genericHandler) - }*/ - /*if (colors != null) { + } + if (colors != null) { subscribe(colors, "hue", genericHandler) subscribe(colors, "saturation", genericHandler) subscribe(colors, "color", genericHandler) - }*/ + } if (contacts != null) { subscribe(contacts, "contact", genericHandler) } - /*if (energyMeters != null) { + if (energyMeters != null) { subscribe(energyMeters, "energy", genericHandler) - }*/ - /*if (illuminances != null) { + } + if (illuminances != null) { subscribe(illuminances, "illuminance", genericHandler) - }*/ + } if (locks != null) { subscribe(locks, "lock", genericHandler) } if (motions != null) { subscribe(motions, "motion", genericHandler) } - /*if (musicPlayers != null) { + if (musicPlayers != null) { subscribe(musicPlayers, "status", genericHandler) subscribe(musicPlayers, "level", genericHandler) subscribe(musicPlayers, "trackDescription", genericHandler) subscribe(musicPlayers, "trackData", genericHandler) subscribe(musicPlayers, "mute", genericHandler) - }*/ - /*if (powerMeters != null) { + } + if (powerMeters != null) { subscribe(powerMeters, "power", genericHandler) - }*/ + } if (presences != null) { subscribe(presences, "presence", genericHandler) } if (humidities != null) { subscribe(humidities, "humidity", genericHandler) } - /*if (relaySwitches != null) { + if (relaySwitches != null) { subscribe(relaySwitches, "switch", genericHandler) - }*/ - /*if (sleepSensors != null) { + } + if (sleepSensors != null) { subscribe(sleepSensors, "sleeping", genericHandler) - }*/ - /*if (smokeDetectors != null) { + } + if (smokeDetectors != null) { subscribe(smokeDetectors, "smoke", genericHandler) - }*/ - /*if (peds != null) { + } + if (peds != null) { subscribe(peds, "steps", genericHandler) subscribe(peds, "goal", genericHandler) - }*/ + } if (switches != null) { subscribe(switches, "switch", genericHandler) } @@ -159,9 +159,9 @@ def subscribeToEvents() { subscribe(thermostats, "thermostatFanMode", genericHandler) subscribe(thermostats, "thermostatOperatingState", genericHandler) } - /*if (valves != null) { + if (valves != null) { subscribe(valves, "contact", genericHandler) - }*/ + } if (waterSensors != null) { subscribe(waterSensors, "water", genericHandler) } @@ -208,7 +208,13 @@ def setBucketKey() { def setAccessKey() { log.trace "set access key" def newAccessKey = request.JSON?.accessKey + def newGrokerSubdomain = request.JSON?.grokerSubdomain + if (newGrokerSubdomain && newGrokerSubdomain != "" && newGrokerSubdomain != state.grokerSubdomain) { + state.grokerSubdomain = "$newGrokerSubdomain" + state.isBucketCreated = false + } + if (newAccessKey && newAccessKey != state.accessKey) { state.accessKey = "$newAccessKey" state.isBucketCreated = false @@ -220,6 +226,7 @@ def installed() { subscribeToEvents() state.isBucketCreated = false + state.grokerSubdomain = "groker" } def updated() { @@ -244,7 +251,7 @@ def createBucket() { def bucketCreateBody = new JsonSlurper().parseText("{\"bucketKey\": \"$bucketKey\", \"bucketName\": \"$bucketName\"}") def bucketCreatePost = [ - uri: 'https://groker.initialstate.com/api/buckets', + uri: "https://${state.grokerSubdomain}.initialstate.com/api/buckets", headers: [ "Content-Type": "application/json", "X-IS-AccessKey": accessKey @@ -284,7 +291,7 @@ def eventHandler(name, value) { def eventBody = new JsonSlurper().parseText("[{\"key\": \"$name\", \"value\": \"$value\"}]") def eventPost = [ - uri: 'https://groker.initialstate.com/api/events', + uri: "https://${state.grokerSubdomain}.initialstate.com/api/events", headers: [ "Content-Type": "application/json", "X-IS-BucketKey": "${state.bucketKey}",