From 9b45a0f829a6f31c470d953aecd24279a0bfc41e Mon Sep 17 00:00:00 2001 From: Andreas Pardeike Date: Fri, 21 Dec 2018 16:29:13 +0100 Subject: [PATCH] Make it triggerable in Homekit; add heating symbol on mobile --- app.json | 459 +++++++++++++++++++++++------------------ drivers/mill/device.js | 4 +- 2 files changed, 260 insertions(+), 203 deletions(-) diff --git a/app.json b/app.json index a800f70..34dc6ef 100644 --- a/app.json +++ b/app.json @@ -31,18 +31,69 @@ "small": "/assets/images/small.png" }, "capabilities": { + "thermostat_mode": { + "type": "enum", + "title": { + "en": "Thermostat mode", + "nl": "Thermostaat modus" + }, + "desc": { + "en": "Mode of the thermostat", + "nl": "Modus van de thermostaat" + }, + "values": [ + { + "id": "auto", + "title": { + "en": "Automatic" + } + }, + { + "id": "heat", + "title": { + "en": "Heat" + } + }, + { + "id": "cool", + "title": { + "en": "Cool" + } + }, + { + "id": "off", + "title": { + "en": "Off" + } + } + ], + "getable": true, + "setable": false + }, + "onoff": { + "type": "boolean", + "title": { + "en": "State" + }, + "desc": { + "en": "State of the thermostat" + }, + "getable": true, + "setable": false, + "greyout": false + }, "mill_onoff": { - "type": "boolean", - "title": { - "en": "State" - }, - "desc": { - "en": "State of the thermostat" - }, - "getable": true, - "setable": false, - "greyout": true - }, + "type": "boolean", + "title": { + "en": "State" + }, + "desc": { + "en": "State of the thermostat" + }, + "getable": true, + "setable": false, + "greyout": true + }, "mill_mode": { "type": "enum", "title": { @@ -92,141 +143,141 @@ "flow": { "triggers": [ { - "id": "mill_mode_changed", - "title": { - "en": "Thermostat mode has changed" - }, - "args": [ - { - "name": "device", - "type": "device", - "filter": "driver_id=mill" - } - ], - "tokens": [ - { - "name": "mill_mode", - "type": "string", - "title": { - "en": "Mode" - }, - "example": "Comfort" - } - ] + "id": "mill_mode_changed", + "title": { + "en": "Thermostat mode has changed" + }, + "args": [ + { + "name": "device", + "type": "device", + "filter": "driver_id=mill" + } + ], + "tokens": [ + { + "name": "mill_mode", + "type": "string", + "title": { + "en": "Mode" + }, + "example": "Comfort" + } + ] }, { - "id": "mill_mode_changed_to", - "title": { - "en": "Thermostat mode has changed to" + "id": "mill_mode_changed_to", + "title": { + "en": "Thermostat mode has changed to" + }, + "args": [ + { + "type": "dropdown", + "name": "mill_mode", + "values": [ + { + "id": "Comfort", + "label": { + "en": "Comfort" + } + }, + { + "id": "Sleep", + "label": { + "en": "Sleep" + } + }, + { + "id": "Away", + "label": { + "en": "Away" + } + }, + { + "id": "Off", + "label": { + "en": "Off" + } + } + ] }, - "args": [ - { - "type": "dropdown", - "name": "mill_mode", - "values": [ - { - "id": "Comfort", - "label": { - "en": "Comfort" - } - }, - { - "id": "Sleep", - "label": { - "en": "Sleep" - } - }, - { - "id": "Away", - "label": { - "en": "Away" - } - }, - { - "id": "Off", - "label": { - "en": "Off" - } - } - ] - }, - { - "name": "device", - "type": "device", - "filter": "driver_id=mill" - } - ] + { + "name": "device", + "type": "device", + "filter": "driver_id=mill" + } + ] } ], "conditions": [ { - "id": "mill_is_heating", - "title": { - "en": "!{{Is|Isn't}} heating" - }, - "args": [ - { - "name": "device", - "type": "device", - "filter": "driver_id=mill" - } - ] + "id": "mill_is_heating", + "title": { + "en": "!{{Is|Isn't}} heating" + }, + "args": [ + { + "name": "device", + "type": "device", + "filter": "driver_id=mill" + } + ] }, { - "id": "mill_mode_matching", - "title": { - "en": "Thermostat mode !{{is|isn't}}" + "id": "mill_mode_matching", + "title": { + "en": "Thermostat mode !{{is|isn't}}" + }, + "args": [ + { + "type": "dropdown", + "name": "mill_mode", + "values": [ + { + "id": "Program", + "label": { + "en": "Program" + } + }, + { + "id": "Comfort", + "label": { + "en": "Comfort" + } + }, + { + "id": "Sleep", + "label": { + "en": "Sleep" + } + }, + { + "id": "Away", + "label": { + "en": "Away" + } + }, + { + "id": "Off", + "label": { + "en": "Off" + } + } + ] }, - "args": [ - { - "type": "dropdown", - "name": "mill_mode", - "values": [ - { - "id": "Program", - "label": { - "en": "Program" - } - }, - { - "id": "Comfort", - "label": { - "en": "Comfort" - } - }, - { - "id": "Sleep", - "label": { - "en": "Sleep" - } - }, - { - "id": "Away", - "label": { - "en": "Away" - } - }, - { - "id": "Off", - "label": { - "en": "Off" - } - } - ] - }, - { - "name": "device", - "type": "device", - "filter": "driver_id=mill" - } - ] + { + "name": "device", + "type": "device", + "filter": "driver_id=mill" + } + ] } ], "actions": [ { "id": "mill_set_mode", "title": { - "en": "Set thermostat mode" + "en": "Set thermostat mode" }, "args": [ { @@ -239,35 +290,35 @@ "name": "mill_mode", "values": [ { - "id": "Program", - "label": { - "en": "Program" - } - }, - { - "id": "Comfort", - "label": { - "en": "Comfort" - } - }, - { - "id": "Sleep", - "label": { - "en": "Sleep" - } - }, - { - "id": "Away", - "label": { - "en": "Away" - } - }, - { - "id": "Off", - "label": { - "en": "Off" - } - } + "id": "Program", + "label": { + "en": "Program" + } + }, + { + "id": "Comfort", + "label": { + "en": "Comfort" + } + }, + { + "id": "Sleep", + "label": { + "en": "Sleep" + } + }, + { + "id": "Away", + "label": { + "en": "Away" + } + }, + { + "id": "Off", + "label": { + "en": "Off" + } + } ] } ] @@ -284,7 +335,9 @@ "capabilities": [ "measure_temperature", "target_temperature", + "onoff", "mill_onoff", + "thermostat_mode", "mill_mode" ], "images": { @@ -305,49 +358,51 @@ } ], "mobile": { - "components": [ - { - "id": "icon", - "capabilities": [] - }, - { - "id": "sensor", - "capabilities": [ - "measure_temperature", - "mill_onoff" - ], - "options": { - "icons": { - "mill_onoff": "/drivers/mill/assets/mill_onoff.svg" - }, - "mill_onoff": { - "noblink": false, - "greyout": true, - "label": { - "true": { - "en": "Active" - }, - "false": { - "en": "Idle" - } - } - } - } - }, - { - "id": "picker", - "capabilities": [ - "mill_mode" - ] - }, - { - "id": "thermostat", - "capabilities": [ - "target_temperature" - ] - } - ] - } + "components": [ + { + "id": "icon", + "capabilities": [] + }, + { + "id": "sensor", + "capabilities": [ + "measure_temperature", + "onoff", + "mill_onoff", + "thermostat_mode" + ], + "options": { + "icons": { + "mill_onoff": "/drivers/mill/assets/mill_onoff.svg" + }, + "mill_onoff": { + "noblink": false, + "greyout": true, + "label": { + "true": { + "en": "Active" + }, + "false": { + "en": "Idle" + } + } + } + } + }, + { + "id": "picker", + "capabilities": [ + "mill_mode" + ] + }, + { + "id": "thermostat", + "capabilities": [ + "target_temperature" + ] + } + ] + } } ] } diff --git a/drivers/mill/device.js b/drivers/mill/device.js index 5dbe782..99f2ec3 100644 --- a/drivers/mill/device.js +++ b/drivers/mill/device.js @@ -111,7 +111,9 @@ class MillDevice extends Homey.Device { this.setCapabilityValue('measure_temperature', room.avgTemp), this.setCapabilityValue('target_temperature', room.targetTemp), this.setCapabilityValue('mill_mode', room.modeName), - this.setCapabilityValue('mill_onoff', room.isHeating) + this.setCapabilityValue('mill_onoff', room.isHeating), + this.setCapabilityValue('onoff', room.isHeating), + this.setCapabilityValue('thermostat_mode', room.isHeating ? 'heat' : 'off') ]).catch((err) => { Log.captureException(err); });