I have a particle photon that I’m using to detect when my boiler is heating. The boiler has an LED indicator to signify when it is heating so I’m using the photon with a light dependent resistor to send that information to smartthings. I have grovestreams setup and it is working for everything I have so far (i.e. temp, power, etc) but when I add this boiler indicator it does not get logged it never shows up in the grovestream web app.
below is my device handler based very much on @baconface, so thanks!
/*
* Boiler Status
*
* Copyright 2018 by Shane Rock
*
* This SmartThings device handler integrates a Particle (Photon in my case) to monitor boiler status.
*
* A WebCoRE piston calls the refresh() function to update the door statuses in SmartThings when a state
change
* is published from the Particle Sketch.
*/
metadata {
definition (name: "Boiler Status", namespace: "shanerock", author: "Shane Rock") {
//capability "Boiler Status"
// capability "actuator"
//capability "contact sensor"
capability "Switch"
capability "Polling"
capability "Sensor"
capability "Refresh"
attribute "boilerStatus", "string" // Defines a container to hold the state of your boiler
}
preferences {
input name: "deviceId", type: "text", title: "Device ID", required: true // Photon device ID from build.particle.io (you'll put this in the settings)
input name: "token", type: "password", title: "Access Token", required: true // Photon super secret access token you get from build.particle.io
input name: "boilerStatus", type: "text", title: "Boiler Status Variable Name", required: false, defaultValue: "boilerStatus" // These three lines define the name of the variable
}
tiles(scale: 2) {
// Defines tiles that will appear on the device page
standardTile("boilerStatus", "device.boilerStatus", width: 6, height: 2, inactiveLabel: false, decoration: "flat") {
state "false", label: "Idle", icon: "st.thermostat.heating-cooling-off", backgroundColor: "#83ED5B"
state "true", label: "Heating", icon: "st.thermostat.heating", backgroundColor: "#FF5733"
}
standardTile("refresh", "device.refresh", inactiveLabel: false, decoration: "flat", width: 2, height: 2) {
state "default", action:"refresh.refresh", icon:"st.secondary.refresh"
}
main (["boilerStatus"]) // This is the tile that will show up on the device's preview.
}
}
def poll() { // Polls for the status of the garage doors
log.debug "Executing 'poll'"
getStatus()
}
def refresh() { // Calls the garage status functions to refresh them upon refresh button press
log.debug "Executing 'refresh'"
getStatus()
}
// no clue what this does or if its needed
def parse(String description) {
def pair = description.split(":")
createEvent(name: pair[0].trim(), value: pair[1].trim())
}
// How we pull the status from Particle
private getStatus() {
def closure = { response ->
log.debug "request was successful, $response.data"
sendEvent(name: "boilerStatus", value: response.data.result)
}
httpGet("https://api.particle.io/v1/devices/${deviceId}/${boilerStatus}?access_token=${token}", closure)
}