[somfytahoma] Added support for the thermostatic valve (#9122)
Signed-off-by: Ondrej Pecta <opecta@gmail.com>
This commit is contained in:
parent
a138748ff3
commit
219d370439
@ -31,6 +31,7 @@ home automation systems.
|
|||||||
- electricity sensors (get energy consumption)
|
- electricity sensors (get energy consumption)
|
||||||
- door locks (LOCK/UNLOCK, OPEN/CLOSE commands)
|
- door locks (LOCK/UNLOCK, OPEN/CLOSE commands)
|
||||||
- heating systems (control temperature, set heating level)
|
- heating systems (control temperature, set heating level)
|
||||||
|
- valve heating systems (control temperature, derogation mode and temperature)
|
||||||
- exterior heating systems (set heating level)
|
- exterior heating systems (set heating level)
|
||||||
- alarms (both interior/external)
|
- alarms (both interior/external)
|
||||||
- pods
|
- pods
|
||||||
@ -62,63 +63,67 @@ Please see the example below.
|
|||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
| Thing | Channel | Note |
|
| Thing | Channel | Note |
|
||||||
|-------------------------------------------------------------------------------|:---------------------:|-------------------------------------------------------------------------------------------------------------------------------|
|
|-------------------------------------------------------------------------------|------------------------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||||
| bridge | N.A | bridge does not expose any channel |
|
| bridge | N.A | bridge does not expose any channel |
|
||||||
| gateway | status | status of your Tahoma gateway |
|
| gateway | status | status of your Tahoma gateway |
|
||||||
| gate | gate_command | used for controlling your gate (open, close, stop, pedestrian) |
|
| gate | gate_command | used for controlling your gate (open, close, stop, pedestrian) |
|
||||||
| gate | gate_state | get state of your gate |
|
| gate | gate_state | get state of your gate (open, closed, pedestrian) |
|
||||||
| roller shutter, screen, venetian blind, garage door, awning, pergola, curtain | control | device controller which reacts to commands UP/DOWN/ON/OFF/OPEN/CLOSE/MY/STOP + closure 0-100 |
|
| gate | gate_position | get position (0-100%) of your gate (where supported) |
|
||||||
| window | control | device controller which reacts to commands UP/DOWN/ON/OFF/OPEN/CLOSE/STOP + closure 0-100 |
|
| roller shutter, screen, venetian blind, garage door, awning, pergola, curtain | control | device controller which reacts to commands UP/DOWN/ON/OFF/OPEN/CLOSE/MY/STOP + closure 0-100 |
|
||||||
| silent roller shutter | silent_control | similar to control channel but in silent mode |
|
| window | control | device controller which reacts to commands UP/DOWN/ON/OFF/OPEN/CLOSE/STOP + closure 0-100 |
|
||||||
| venetian blind, adjustable slats roller shutter | orientation | percentual orientation of the blind's slats, it can have value 0-100. For IO Homecontrol devices only (non RTS) |
|
| silent roller shutter | silent_control | similar to control channel but in silent mode |
|
||||||
| venetian blind, adjustable slats roller shutter | closure_orientation | percentual closure and orientation of the blind's slats, it can have value 0-100. For IO Homecontrol devices only (non RTS) |
|
| venetian blind, adjustable slats roller shutter | orientation | percentual orientation of the blind's slats, it can have value 0-100. For IO Homecontrol devices only (non RTS) |
|
||||||
| adjustable slats roller shutter | rocker | used for setting the rocker position of the roller shutter, the only position allowing the slats control |
|
| venetian blind, adjustable slats roller shutter | closure_orientation | percentual closure and orientation of the blind's slats, it can have value 0-100. For IO Homecontrol devices only (non RTS) |
|
||||||
| action group | execute_action | switch which reacts to ON command and triggers the predefined Tahoma action |
|
| adjustable slats roller shutter | rocker | used for setting the rocker position of the roller shutter, the only position allowing the slats control |
|
||||||
| onoff, light | switch | reacts to standard ON/OFF commands |
|
| action group | execute_action | switch which reacts to ON command and triggers the predefined Tahoma action |
|
||||||
| dimmer light | light_intensity | sets/gets intensity of the dimmer light or ON/OFF |
|
| onoff, light | switch | reacts to standard ON/OFF commands |
|
||||||
| smoke sensor, occupancy sensor, contact sensor & water sensor | contact | normal value is CLOSE, changes to OPEN when detection triggered |
|
| dimmer light | light_intensity | sets/gets intensity of the dimmer light or ON/OFF |
|
||||||
| smoke sensor, occupancy sensor, contact sensor & water sensor | sensor_defect | indicates the health of the sensor (dead, lowBatter, maintenanceRequired, noDefect) |
|
| smoke sensor, occupancy sensor, contact sensor & water sensor | contact | normal value is CLOSE, changes to OPEN when detection triggered |
|
||||||
| smoke sensor | radio_battery | maintenance radio part battery state (low, normal) |
|
| smoke sensor, occupancy sensor, contact sensor & water sensor | sensor_defect | indicates the health of the sensor (dead, lowBatter, maintenanceRequired, noDefect) |
|
||||||
| smoke sensor | sensor_battery | maintenance sensor part battery state (absence, low, normal) |
|
| smoke sensor | radio_battery | maintenance radio part battery state (low, normal) |
|
||||||
| smoke sensor | short_check | triggering the smoke sensor's short check |
|
| smoke sensor | sensor_battery | maintenance sensor part battery state (absence, low, normal) |
|
||||||
| smoke sensor | long_check | triggering the smoke sensor's long check |
|
| smoke sensor | short_check | triggering the smoke sensor's short check |
|
||||||
| light sensor | luminance | light luminance value in luxes |
|
| smoke sensor | long_check | triggering the smoke sensor's long check |
|
||||||
| electricity sensor | energy_consumption | energy consumption value in watts |
|
| light sensor | luminance | light luminance value in luxes |
|
||||||
| humidity sensor | humidity | current relative humidity |
|
| electricity sensor | energy_consumption | energy consumption value in watts |
|
||||||
| dock | battery_status | indicates running on battery (yes/no) |
|
| humidity sensor | humidity | current relative humidity |
|
||||||
| dock | battery_level | remaining battery percentage |
|
| dock | battery_status | indicates running on battery (yes/no) |
|
||||||
| dock | siren_status | used for controlling and getting siren state (on, off, cyclic) |
|
| dock | battery_level | remaining battery percentage |
|
||||||
| dock | short_beep | testing of dock's siren - short beep |
|
| dock | siren_status | used for controlling and getting siren state (on, off, cyclic) |
|
||||||
| dock | long_beep | testing of dock's siren - long beep |
|
| dock | short_beep | testing of dock's siren - short beep |
|
||||||
| siren | battery | battery level full/low/normal/verylow |
|
| dock | long_beep | testing of dock's siren - long beep |
|
||||||
| siren | onoff | controlling siren status ON/OFF |
|
| siren | battery | battery level full/low/normal/verylow |
|
||||||
| siren | memorized_volume | setting memorized volume (normal/highest) |
|
| siren | onoff | controlling siren status ON/OFF |
|
||||||
| pod | cyclic_button | pod cyclic button state |
|
| siren | memorized_volume | setting memorized volume (normal/highest) |
|
||||||
| pod | battery_status | pod battery status state |
|
| pod | cyclic_button | pod cyclic button state |
|
||||||
| pod | lighting_led_pod_mode | lighting LED pod mod state |
|
| pod | battery_status | pod battery status state |
|
||||||
| interior alarm | alarm_command | used for sending commands to Somfy alarm device |
|
| pod | lighting_led_pod_mode | lighting LED pod mod state |
|
||||||
| interior alarm | intrusion_control | used for alarm external intrusion controlling |
|
| interior alarm | alarm_command | used for sending commands to Somfy alarm device |
|
||||||
| interior alarm, myfox alarm | alarm_state | state of the Somfy alarm |
|
| interior alarm | intrusion_control | used for alarm external intrusion controlling |
|
||||||
| interior alarm | target_alarm_state | target state of the Somfy alarm |
|
| interior alarm, myfox alarm | alarm_state | state of the Somfy alarm |
|
||||||
| interior alarm, myfox alarm | intrusion_state | intrusion state of the Somfy alarm |
|
| interior alarm | target_alarm_state | target state of the Somfy alarm |
|
||||||
| external alarm | active_zones_state | state of external alarm active zones |
|
| interior alarm, myfox alarm | intrusion_state | intrusion state of the Somfy alarm |
|
||||||
| door lock | lock | switch representing unlocked/locked state |
|
| external alarm | active_zones_state | state of external alarm active zones |
|
||||||
| door lock | open | switch representing open/close state |
|
| door lock | lock | switch representing unlocked/locked state |
|
||||||
| on/off heating system | target_heating_level | target heating level (off, eco, comfort, frostprotection) |
|
| door lock | open | switch representing open/close state |
|
||||||
| heating system | current_temperature | current temperature of the heating system |
|
| on/off heating system | target_heating_level | target heating level (off, eco, comfort, frostprotection) |
|
||||||
| heating system | current_state | current state of the heating system |
|
| heating system | current_temperature | current temperature of the heating system |
|
||||||
| heating system, thermostat | target_temperature | target temperature of the heating system |
|
| heating system | current_state | current state of the heating system |
|
||||||
| heating system, thermostat | battery_level | battery level of the heating system |
|
| heating system, valve heating system, thermostat | target_temperature | target temperature of the heating system |
|
||||||
| exterior heating system | heating_level | heating level of the exterior heating system or ON/OFF |
|
| heating system, valve heating system, thermostat | battery_level | battery level of the heating system |
|
||||||
| thermostat | heating_mode | standard heating mode of the thermostat (away, freeze, manual, ...) |
|
| valve heating system, thermostat | derogation_heating_mode | derogation heating mode of the thermostat (away, freeze, manual, ...) |
|
||||||
| thermostat | derogation_heating_mode | derogation heating mode of the thermostat (away, freeze, manual, ...) |
|
| valve heating system, thermostat | derogated_target_temperature | target temperature of the heating system |
|
||||||
| thermostat | derogation_activation | derogation activation state (inactive, active) |
|
| valve heating system | current_heating_mode | current heating mode of the thermostatic valve |
|
||||||
| temperature sensor | temperature | temperature reported by the sensor |
|
| valve heating system | open_closed_valve | current open/closed state of the thermostatic valve |
|
||||||
| myfox camera, myfox alarm | cloud_status | cloud connection status |
|
| valve heating system | operating mode | operating mode of the thermostatic valve |
|
||||||
| myfox camera | shutter | controlling of the camera shutter |
|
| thermostat | heating_mode | standard heating mode of the thermostat (away, freeze, manual, ...) |
|
||||||
| myfox alarm | myfox_alarm_command | used for sending commands to Somfy Myfox alarm device |
|
| thermostat | derogation_activation | derogation activation state (inactive, active) |
|
||||||
|
| exterior heating system | heating_level | heating level of the exterior heating system or ON/OFF |
|
||||||
|
| temperature sensor | temperature | temperature reported by the sensor |
|
||||||
|
| myfox camera, myfox alarm | cloud_status | cloud connection status |
|
||||||
|
| myfox camera | shutter | controlling of the camera shutter |
|
||||||
|
| myfox alarm | myfox_alarm_command | used for sending commands to Somfy Myfox alarm device |
|
||||||
|
|
||||||
### Remarks
|
### Remarks
|
||||||
|
|
||||||
|
|||||||
@ -106,7 +106,9 @@ public class SomfyTahomaBindingConstants {
|
|||||||
public static final ThingTypeUID THING_TYPE_POD = new ThingTypeUID(BINDING_ID, "pod");
|
public static final ThingTypeUID THING_TYPE_POD = new ThingTypeUID(BINDING_ID, "pod");
|
||||||
|
|
||||||
// Heating system
|
// Heating system
|
||||||
public static final ThingTypeUID THING_TYPE_HEATING_SYSTEM = new ThingTypeUID(BINDING_ID, "heatingsystem");
|
public static final ThingTypeUID THING_TYPE_VALVE_HEATING_SYSTEM = new ThingTypeUID(BINDING_ID,
|
||||||
|
"valveheatingsystem");
|
||||||
|
public static final ThingTypeUID THING_TYPE_ZWAVE_HEATING_SYSTEM = new ThingTypeUID(BINDING_ID, "heatingsystem");
|
||||||
public static final ThingTypeUID THING_TYPE_ONOFF_HEATING_SYSTEM = new ThingTypeUID(BINDING_ID,
|
public static final ThingTypeUID THING_TYPE_ONOFF_HEATING_SYSTEM = new ThingTypeUID(BINDING_ID,
|
||||||
"onoffheatingsystem");
|
"onoffheatingsystem");
|
||||||
public static final ThingTypeUID THING_TYPE_EXTERIOR_HEATING_SYSTEM = new ThingTypeUID(BINDING_ID,
|
public static final ThingTypeUID THING_TYPE_EXTERIOR_HEATING_SYSTEM = new ThingTypeUID(BINDING_ID,
|
||||||
@ -220,15 +222,24 @@ public class SomfyTahomaBindingConstants {
|
|||||||
|
|
||||||
// Thermostat
|
// Thermostat
|
||||||
public static final String HEATING_MODE = "heating_mode";
|
public static final String HEATING_MODE = "heating_mode";
|
||||||
public static final String DEROGATION_HEATING_MODE = "derogation_heating_mode";
|
|
||||||
public static final String DEROGATION_ACTIVATION = "derogation_activation";
|
public static final String DEROGATION_ACTIVATION = "derogation_activation";
|
||||||
|
|
||||||
|
// Thermostat & Valve Heating system
|
||||||
|
public static final String DEROGATED_TARGET_TEMPERATURE = "derogated_target_temperature";
|
||||||
|
public static final String DEROGATION_HEATING_MODE = "derogation_heating_mode";
|
||||||
|
|
||||||
|
// Valve heating system
|
||||||
|
public static final String CURRENT_HEATING_MODE = "current_heating_mode";
|
||||||
|
public static final String OPEN_CLOSED_VALVE = "open_closed_valve";
|
||||||
|
public static final String OPERATING_MODE = "operating_mode";
|
||||||
|
|
||||||
// Window handle
|
// Window handle
|
||||||
public static final String HANDLE_STATE = "handle_state";
|
public static final String HANDLE_STATE = "handle_state";
|
||||||
|
|
||||||
// Gate
|
// Gate
|
||||||
public static final String GATE_STATE = "gate_state";
|
public static final String GATE_STATE = "gate_state";
|
||||||
public static final String GATE_COMMAND = "gate_command";
|
public static final String GATE_COMMAND = "gate_command";
|
||||||
|
public static final String GATE_POSITION = "gate_position";
|
||||||
|
|
||||||
// ElectricitySensor
|
// ElectricitySensor
|
||||||
public static final String ENERGY_CONSUMPTION = "energy_consumption";
|
public static final String ENERGY_CONSUMPTION = "energy_consumption";
|
||||||
@ -285,6 +296,7 @@ public class SomfyTahomaBindingConstants {
|
|||||||
public static final String COMMAND_SET_HEATINGLEVEL = "setHeatingLevel";
|
public static final String COMMAND_SET_HEATINGLEVEL = "setHeatingLevel";
|
||||||
public static final String COMMAND_SET_PEDESTRIANPOSITION = "setPedestrianPosition";
|
public static final String COMMAND_SET_PEDESTRIANPOSITION = "setPedestrianPosition";
|
||||||
public static final String COMMAND_SET_ROCKERPOSITION = "setRockerPosition";
|
public static final String COMMAND_SET_ROCKERPOSITION = "setRockerPosition";
|
||||||
|
public static final String COMMAND_SET_DEROGATION = "setDerogation";
|
||||||
public static final String COMMAND_UP = "up";
|
public static final String COMMAND_UP = "up";
|
||||||
public static final String COMMAND_DOWN = "down";
|
public static final String COMMAND_DOWN = "down";
|
||||||
public static final String COMMAND_OPEN = "open";
|
public static final String COMMAND_OPEN = "open";
|
||||||
@ -309,10 +321,12 @@ public class SomfyTahomaBindingConstants {
|
|||||||
public static final String BATTERY_LEVEL_STATE = "core:BatteryLevelState";
|
public static final String BATTERY_LEVEL_STATE = "core:BatteryLevelState";
|
||||||
public static final String SIREN_STATUS_STATE = "internal:SirenStatusState";
|
public static final String SIREN_STATUS_STATE = "internal:SirenStatusState";
|
||||||
public static final String TARGET_TEMPERATURE_STATE = "core:TargetTemperatureState";
|
public static final String TARGET_TEMPERATURE_STATE = "core:TargetTemperatureState";
|
||||||
|
public static final String TARGET_ROOM_TEMPERATURE_STATE = "core:TargetRoomTemperatureState";
|
||||||
public static final String SMOKE_STATE = "core:SmokeState";
|
public static final String SMOKE_STATE = "core:SmokeState";
|
||||||
public static final String SENSOR_DEFECT_STATE = "core:SensorDefectState";
|
public static final String SENSOR_DEFECT_STATE = "core:SensorDefectState";
|
||||||
public static final String RADIO_PART_BATTERY_STATE = "io:MaintenanceRadioPartBatteryState";
|
public static final String RADIO_PART_BATTERY_STATE = "io:MaintenanceRadioPartBatteryState";
|
||||||
public static final String SENSOR_PART_BATTERY_STATE = "io:MaintenanceSensorPartBatteryState";
|
public static final String SENSOR_PART_BATTERY_STATE = "io:MaintenanceSensorPartBatteryState";
|
||||||
|
public static final String ZWAVE_SET_POINT_TYPE_STATE = "zwave:SetPointTypeState";
|
||||||
|
|
||||||
// supported uiClasses
|
// supported uiClasses
|
||||||
public static final String CLASS_ROLLER_SHUTTER = "RollerShutter";
|
public static final String CLASS_ROLLER_SHUTTER = "RollerShutter";
|
||||||
@ -361,12 +375,12 @@ public class SomfyTahomaBindingConstants {
|
|||||||
THING_TYPE_EXTERIORSCREEN, THING_TYPE_EXTERIORVENETIANBLIND, THING_TYPE_GARAGEDOOR, THING_TYPE_AWNING,
|
THING_TYPE_EXTERIORSCREEN, THING_TYPE_EXTERIORVENETIANBLIND, THING_TYPE_GARAGEDOOR, THING_TYPE_AWNING,
|
||||||
THING_TYPE_ACTIONGROUP, THING_TYPE_ONOFF, THING_TYPE_LIGHT, THING_TYPE_LIGHTSENSOR, THING_TYPE_SMOKESENSOR,
|
THING_TYPE_ACTIONGROUP, THING_TYPE_ONOFF, THING_TYPE_LIGHT, THING_TYPE_LIGHTSENSOR, THING_TYPE_SMOKESENSOR,
|
||||||
THING_TYPE_CONTACTSENSOR, THING_TYPE_OCCUPANCYSENSOR, THING_TYPE_WINDOW, THING_TYPE_INTERNAL_ALARM,
|
THING_TYPE_CONTACTSENSOR, THING_TYPE_OCCUPANCYSENSOR, THING_TYPE_WINDOW, THING_TYPE_INTERNAL_ALARM,
|
||||||
THING_TYPE_EXTERNAL_ALARM, THING_TYPE_POD, THING_TYPE_HEATING_SYSTEM, THING_TYPE_ONOFF_HEATING_SYSTEM,
|
THING_TYPE_EXTERNAL_ALARM, THING_TYPE_POD, THING_TYPE_ZWAVE_HEATING_SYSTEM, THING_TYPE_ONOFF_HEATING_SYSTEM,
|
||||||
THING_TYPE_DOOR_LOCK, THING_TYPE_PERGOLA, THING_TYPE_WINDOW_HANDLE, THING_TYPE_TEMPERATURESENSOR,
|
THING_TYPE_DOOR_LOCK, THING_TYPE_PERGOLA, THING_TYPE_WINDOW_HANDLE, THING_TYPE_TEMPERATURESENSOR,
|
||||||
THING_TYPE_GATE, THING_TYPE_CURTAIN, THING_TYPE_ELECTRICITYSENSOR, THING_TYPE_DOCK, THING_TYPE_SIREN,
|
THING_TYPE_GATE, THING_TYPE_CURTAIN, THING_TYPE_ELECTRICITYSENSOR, THING_TYPE_DOCK, THING_TYPE_SIREN,
|
||||||
THING_TYPE_ADJUSTABLE_SLATS_ROLLERSHUTTER, THING_TYPE_MYFOX_CAMERA, THING_TYPE_ROLLERSHUTTER_UNO,
|
THING_TYPE_ADJUSTABLE_SLATS_ROLLERSHUTTER, THING_TYPE_MYFOX_CAMERA, THING_TYPE_ROLLERSHUTTER_UNO,
|
||||||
THING_TYPE_WATERSENSOR, THING_TYPE_HUMIDITYSENSOR, THING_TYPE_MYFOX_ALARM, THING_TYPE_THERMOSTAT,
|
THING_TYPE_WATERSENSOR, THING_TYPE_HUMIDITYSENSOR, THING_TYPE_MYFOX_ALARM, THING_TYPE_THERMOSTAT,
|
||||||
THING_TYPE_DIMMER_LIGHT, THING_TYPE_EXTERIOR_HEATING_SYSTEM));
|
THING_TYPE_DIMMER_LIGHT, THING_TYPE_EXTERIOR_HEATING_SYSTEM, THING_TYPE_VALVE_HEATING_SYSTEM));
|
||||||
|
|
||||||
// somfy gateways
|
// somfy gateways
|
||||||
public static Map<Integer, String> gatewayTypes = new HashMap<Integer, String>() {
|
public static Map<Integer, String> gatewayTypes = new HashMap<Integer, String>() {
|
||||||
|
|||||||
@ -1,39 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2010-2020 Contributors to the openHAB project
|
|
||||||
*
|
|
||||||
* See the NOTICE file(s) distributed with this work for additional
|
|
||||||
* information.
|
|
||||||
*
|
|
||||||
* This program and the accompanying materials are made available under the
|
|
||||||
* terms of the Eclipse Public License 2.0 which is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-2.0
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: EPL-2.0
|
|
||||||
*/
|
|
||||||
package org.openhab.binding.somfytahoma.internal;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The {@link SomfyTahomaException} represents an exception in the response of
|
|
||||||
* the TahomaLink cloud service.
|
|
||||||
*
|
|
||||||
* @author Ondrej Pecta - Initial contribution
|
|
||||||
*/
|
|
||||||
@NonNullByDefault
|
|
||||||
public class SomfyTahomaException extends RuntimeException {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
public SomfyTahomaException(String message) {
|
|
||||||
super(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SomfyTahomaException(final Throwable cause) {
|
|
||||||
super(cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SomfyTahomaException(final String message, final Throwable cause) {
|
|
||||||
super(message, cause);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -108,8 +108,10 @@ public class SomfyTahomaHandlerFactory extends BaseThingHandlerFactory {
|
|||||||
return new SomfyTahomaExternalAlarmHandler(thing);
|
return new SomfyTahomaExternalAlarmHandler(thing);
|
||||||
} else if (thingTypeUID.equals(THING_TYPE_POD)) {
|
} else if (thingTypeUID.equals(THING_TYPE_POD)) {
|
||||||
return new SomfyTahomaPodHandler(thing);
|
return new SomfyTahomaPodHandler(thing);
|
||||||
} else if (thingTypeUID.equals(THING_TYPE_HEATING_SYSTEM)) {
|
} else if (thingTypeUID.equals(THING_TYPE_VALVE_HEATING_SYSTEM)) {
|
||||||
return new SomfyTahomaHeatingSystemHandler(thing);
|
return new SomfyTahomaValveHeatingSystemHandler(thing);
|
||||||
|
} else if (thingTypeUID.equals(THING_TYPE_ZWAVE_HEATING_SYSTEM)) {
|
||||||
|
return new SomfyTahomaZwaveHeatingSystemHandler(thing);
|
||||||
} else if (thingTypeUID.equals(THING_TYPE_ONOFF_HEATING_SYSTEM)) {
|
} else if (thingTypeUID.equals(THING_TYPE_ONOFF_HEATING_SYSTEM)) {
|
||||||
return new SomfyTahomaOnOffHeatingSystemHandler(thing);
|
return new SomfyTahomaOnOffHeatingSystemHandler(thing);
|
||||||
} else if (thingTypeUID.equals(THING_TYPE_EXTERIOR_HEATING_SYSTEM)) {
|
} else if (thingTypeUID.equals(THING_TYPE_EXTERIOR_HEATING_SYSTEM)) {
|
||||||
|
|||||||
@ -237,10 +237,14 @@ public class SomfyTahomaItemDiscoveryService extends AbstractDiscoveryService
|
|||||||
case CLASS_HEATING_SYSTEM:
|
case CLASS_HEATING_SYSTEM:
|
||||||
if ("SomfyThermostat".equals(device.getWidget())) {
|
if ("SomfyThermostat".equals(device.getWidget())) {
|
||||||
deviceDiscovered(device, THING_TYPE_THERMOSTAT);
|
deviceDiscovered(device, THING_TYPE_THERMOSTAT);
|
||||||
|
} else if ("ValveHeatingTemperatureInterface".equals(device.getWidget())) {
|
||||||
|
deviceDiscovered(device, THING_TYPE_VALVE_HEATING_SYSTEM);
|
||||||
} else if (isOnOffHeatingSystem(device)) {
|
} else if (isOnOffHeatingSystem(device)) {
|
||||||
deviceDiscovered(device, THING_TYPE_ONOFF_HEATING_SYSTEM);
|
deviceDiscovered(device, THING_TYPE_ONOFF_HEATING_SYSTEM);
|
||||||
|
} else if (isZwaveHeatingSystem(device)) {
|
||||||
|
deviceDiscovered(device, THING_TYPE_ZWAVE_HEATING_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
deviceDiscovered(device, THING_TYPE_HEATING_SYSTEM);
|
logUnsupportedDevice(device);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CLASS_EXTERIOR_HEATING_SYSTEM:
|
case CLASS_EXTERIOR_HEATING_SYSTEM:
|
||||||
@ -354,6 +358,10 @@ public class SomfyTahomaItemDiscoveryService extends AbstractDiscoveryService
|
|||||||
return hasCommmand(device, COMMAND_SET_HEATINGLEVEL);
|
return hasCommmand(device, COMMAND_SET_HEATINGLEVEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isZwaveHeatingSystem(SomfyTahomaDevice device) {
|
||||||
|
return hasState(device, ZWAVE_SET_POINT_TYPE_STATE);
|
||||||
|
}
|
||||||
|
|
||||||
private boolean hasCommmand(SomfyTahomaDevice device, String command) {
|
private boolean hasCommmand(SomfyTahomaDevice device, String command) {
|
||||||
return device.getDefinition().getCommands().stream().anyMatch(cmd -> command.equals(cmd.getCommandName()));
|
return device.getDefinition().getCommands().stream().anyMatch(cmd -> command.equals(cmd.getCommandName()));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,7 +54,7 @@ public abstract class SomfyTahomaBaseThingHandler extends BaseThingHandler {
|
|||||||
return stateNames;
|
return stateNames;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String url = "";
|
protected String url = "";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
@ -124,7 +124,7 @@ public abstract class SomfyTahomaBaseThingHandler extends BaseThingHandler {
|
|||||||
protected void sendCommand(String cmd, String param) {
|
protected void sendCommand(String cmd, String param) {
|
||||||
SomfyTahomaBridgeHandler handler = getBridgeHandler();
|
SomfyTahomaBridgeHandler handler = getBridgeHandler();
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
handler.sendCommand(url, cmd, param);
|
handler.sendCommand(url, cmd, param, EXEC_URL + "apply");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -556,23 +556,23 @@ public class SomfyTahomaBridgeHandler extends BaseBridgeHandler {
|
|||||||
.timeout(TAHOMA_TIMEOUT, TimeUnit.SECONDS).agent(TAHOMA_AGENT);
|
.timeout(TAHOMA_TIMEOUT, TimeUnit.SECONDS).agent(TAHOMA_AGENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendCommand(String io, String command, String params) {
|
public void sendCommand(String io, String command, String params, String url) {
|
||||||
if (ThingStatus.OFFLINE == thing.getStatus() && !reLogin()) {
|
if (ThingStatus.OFFLINE == thing.getStatus() && !reLogin()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Boolean result = sendCommandInternal(io, command, params);
|
Boolean result = sendCommandInternal(io, command, params, url);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
sendCommandInternal(io, command, params);
|
sendCommandInternal(io, command, params, url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Boolean sendCommandInternal(String io, String command, String params) {
|
private Boolean sendCommandInternal(String io, String command, String params, String url) {
|
||||||
String value = params.equals("[]") ? command : params.replace("\"", "");
|
String value = params.equals("[]") ? command : params.replace("\"", "");
|
||||||
String urlParameters = "{\"label\":\"" + getThingLabelByURL(io) + " - " + value
|
String urlParameters = "{\"label\":\"" + getThingLabelByURL(io) + " - " + value
|
||||||
+ " - OH2\",\"actions\":[{\"deviceURL\":\"" + io + "\",\"commands\":[{\"name\":\"" + command
|
+ " - OH2\",\"actions\":[{\"deviceURL\":\"" + io + "\",\"commands\":[{\"name\":\"" + command
|
||||||
+ "\",\"parameters\":" + params + "}]}]}";
|
+ "\",\"parameters\":" + params + "}]}]}";
|
||||||
SomfyTahomaApplyResponse response = invokeCallToURL(EXEC_URL + "apply", urlParameters, HttpMethod.POST,
|
SomfyTahomaApplyResponse response = invokeCallToURL(url, urlParameters, HttpMethod.POST,
|
||||||
SomfyTahomaApplyResponse.class);
|
SomfyTahomaApplyResponse.class);
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
if (!response.getExecId().isEmpty()) {
|
if (!response.getExecId().isEmpty()) {
|
||||||
@ -699,6 +699,7 @@ public class SomfyTahomaBridgeHandler extends BaseBridgeHandler {
|
|||||||
break;
|
break;
|
||||||
case DELETE:
|
case DELETE:
|
||||||
response = sendDeleteToTahomaWithCookie(url);
|
response = sendDeleteToTahomaWithCookie(url);
|
||||||
|
default:
|
||||||
}
|
}
|
||||||
return classOfT != null ? gson.fromJson(response, classOfT) : null;
|
return classOfT != null ? gson.fromJson(response, classOfT) : null;
|
||||||
} catch (JsonSyntaxException e) {
|
} catch (JsonSyntaxException e) {
|
||||||
|
|||||||
@ -32,6 +32,7 @@ public class SomfyTahomaGateHandler extends SomfyTahomaBaseThingHandler {
|
|||||||
public SomfyTahomaGateHandler(Thing thing) {
|
public SomfyTahomaGateHandler(Thing thing) {
|
||||||
super(thing);
|
super(thing);
|
||||||
stateNames.put(GATE_STATE, "core:OpenClosedPedestrianState");
|
stateNames.put(GATE_STATE, "core:OpenClosedPedestrianState");
|
||||||
|
stateNames.put(GATE_POSITION, "core:ClosureState");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -42,6 +43,8 @@ public class SomfyTahomaGateHandler extends SomfyTahomaBaseThingHandler {
|
|||||||
} else {
|
} else {
|
||||||
if (GATE_COMMAND.equals(channelUID.getId())) {
|
if (GATE_COMMAND.equals(channelUID.getId())) {
|
||||||
sendCommand(getGateCommand(command.toString().toLowerCase()));
|
sendCommand(getGateCommand(command.toString().toLowerCase()));
|
||||||
|
} else if (GATE_POSITION.equals(channelUID.getId())) {
|
||||||
|
sendCommand(COMMAND_SET_CLOSURE, "[" + toInteger(command) + "]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,10 @@ package org.openhab.binding.somfytahoma.internal.handler;
|
|||||||
import static org.openhab.binding.somfytahoma.internal.SomfyTahomaBindingConstants.*;
|
import static org.openhab.binding.somfytahoma.internal.SomfyTahomaBindingConstants.*;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
import org.openhab.core.thing.ChannelUID;
|
||||||
import org.openhab.core.thing.Thing;
|
import org.openhab.core.thing.Thing;
|
||||||
|
import org.openhab.core.types.Command;
|
||||||
|
import org.openhab.core.types.RefreshType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link SomfyTahomaPodHandler} is responsible for handling commands,
|
* The {@link SomfyTahomaPodHandler} is responsible for handling commands,
|
||||||
@ -32,4 +35,25 @@ public class SomfyTahomaPodHandler extends SomfyTahomaBaseThingHandler {
|
|||||||
stateNames.put(BATTERY_STATUS, BATTERY_STATUS_STATE);
|
stateNames.put(BATTERY_STATUS, BATTERY_STATUS_STATE);
|
||||||
stateNames.put(LIGHTING_LED_POD_MODE, "internal:LightingLedPodModeState");
|
stateNames.put(LIGHTING_LED_POD_MODE, "internal:LightingLedPodModeState");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleCommand(ChannelUID channelUID, Command command) {
|
||||||
|
super.handleCommand(channelUID, command);
|
||||||
|
if (!LIGHTING_LED_POD_MODE.equals(channelUID.getId())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (command instanceof RefreshType) {
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
sendPodCommand("setLightingLedPodMode", "[" + command + "]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendPodCommand(String cmd, String param) {
|
||||||
|
SomfyTahomaBridgeHandler handler = getBridgeHandler();
|
||||||
|
if (handler != null) {
|
||||||
|
handler.sendCommand(url, cmd, param, EXEC_URL + "apply/internal");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,5 +33,6 @@ public class SomfyTahomaThermostatHandler extends SomfyTahomaBaseThingHandler {
|
|||||||
stateNames.put(HEATING_MODE, "somfythermostat:HeatingModeState");
|
stateNames.put(HEATING_MODE, "somfythermostat:HeatingModeState");
|
||||||
stateNames.put(DEROGATION_HEATING_MODE, "somfythermostat:DerogationHeatingModeState");
|
stateNames.put(DEROGATION_HEATING_MODE, "somfythermostat:DerogationHeatingModeState");
|
||||||
stateNames.put(DEROGATION_ACTIVATION, "core:DerogationActivationState");
|
stateNames.put(DEROGATION_ACTIVATION, "core:DerogationActivationState");
|
||||||
|
stateNames.put(DEROGATED_TARGET_TEMPERATURE, "core:DerogatedTargetTemperatureState");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,72 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2010-2020 Contributors to the openHAB project
|
||||||
|
*
|
||||||
|
* See the NOTICE file(s) distributed with this work for additional
|
||||||
|
* information.
|
||||||
|
*
|
||||||
|
* This program and the accompanying materials are made available under the
|
||||||
|
* terms of the Eclipse Public License 2.0 which is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-2.0
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: EPL-2.0
|
||||||
|
*/
|
||||||
|
package org.openhab.binding.somfytahoma.internal.handler;
|
||||||
|
|
||||||
|
import static org.openhab.binding.somfytahoma.internal.SomfyTahomaBindingConstants.*;
|
||||||
|
|
||||||
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
import org.openhab.core.library.types.QuantityType;
|
||||||
|
import org.openhab.core.thing.ChannelUID;
|
||||||
|
import org.openhab.core.thing.Thing;
|
||||||
|
import org.openhab.core.types.Command;
|
||||||
|
import org.openhab.core.types.RefreshType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link SomfyTahomaValveHeatingSystemHandler} is responsible for handling commands,
|
||||||
|
* which are sent to one of the channels of the valve heating system thing.
|
||||||
|
*
|
||||||
|
* @author Ondrej Pecta - Initial contribution
|
||||||
|
*/
|
||||||
|
@NonNullByDefault
|
||||||
|
public class SomfyTahomaValveHeatingSystemHandler extends SomfyTahomaBaseThingHandler {
|
||||||
|
|
||||||
|
public SomfyTahomaValveHeatingSystemHandler(Thing thing) {
|
||||||
|
super(thing);
|
||||||
|
stateNames.put(TARGET_TEMPERATURE, TARGET_ROOM_TEMPERATURE_STATE);
|
||||||
|
stateNames.put(BATTERY_LEVEL, BATTERY_LEVEL_STATE);
|
||||||
|
stateNames.put(DEROGATION_HEATING_MODE, "io:DerogationHeatingModeState");
|
||||||
|
stateNames.put(DEROGATED_TARGET_TEMPERATURE, "core:DerogatedTargetTemperatureState");
|
||||||
|
stateNames.put(CURRENT_HEATING_MODE, "io:CurrentHeatingModeState");
|
||||||
|
stateNames.put(OPEN_CLOSED_VALVE, "core:OpenClosedValveState");
|
||||||
|
stateNames.put(OPERATING_MODE, "core:OperatingModeState");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleCommand(ChannelUID channelUID, Command command) {
|
||||||
|
super.handleCommand(channelUID, command);
|
||||||
|
if (command instanceof RefreshType) {
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
if (DEROGATED_TARGET_TEMPERATURE.equals(channelUID.getId()) && command instanceof QuantityType) {
|
||||||
|
QuantityType type = (QuantityType) command;
|
||||||
|
String param = "[" + type.doubleValue() + ", \"next_mode\"]";
|
||||||
|
sendCommand(COMMAND_SET_DEROGATION, param);
|
||||||
|
} else if (DEROGATION_HEATING_MODE.equals(channelUID.getId())) {
|
||||||
|
switch (command.toString()) {
|
||||||
|
case "auto":
|
||||||
|
sendCommand("exitDerogation");
|
||||||
|
break;
|
||||||
|
case "away":
|
||||||
|
case "comfort":
|
||||||
|
case "eco":
|
||||||
|
case "frostprotection":
|
||||||
|
String param = "[\"" + command.toString() + "\", \"next_mode\"]";
|
||||||
|
sendCommand(COMMAND_SET_DEROGATION, param);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -21,20 +21,20 @@ import org.openhab.core.types.Command;
|
|||||||
import org.openhab.core.types.RefreshType;
|
import org.openhab.core.types.RefreshType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link SomfyTahomaHeatingSystemHandler} is responsible for handling commands,
|
* The {@link SomfyTahomaZwaveHeatingSystemHandler} is responsible for handling commands,
|
||||||
* which are sent to one of the channels of the heating system thing.
|
* which are sent to one of the channels of the z-wave heating system thing.
|
||||||
*
|
*
|
||||||
* @author Ondrej Pecta - Initial contribution
|
* @author Ondrej Pecta - Initial contribution
|
||||||
*/
|
*/
|
||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class SomfyTahomaHeatingSystemHandler extends SomfyTahomaBaseThingHandler {
|
public class SomfyTahomaZwaveHeatingSystemHandler extends SomfyTahomaBaseThingHandler {
|
||||||
|
|
||||||
public SomfyTahomaHeatingSystemHandler(Thing thing) {
|
public SomfyTahomaZwaveHeatingSystemHandler(Thing thing) {
|
||||||
super(thing);
|
super(thing);
|
||||||
stateNames.put(TARGET_TEMPERATURE, TARGET_TEMPERATURE_STATE);
|
stateNames.put(TARGET_TEMPERATURE, TARGET_TEMPERATURE_STATE);
|
||||||
stateNames.put(CURRENT_TEMPERATURE, "zwave:SetPointHeatingValueState");
|
stateNames.put(CURRENT_TEMPERATURE, "zwave:SetPointHeatingValueState");
|
||||||
stateNames.put(BATTERY_LEVEL, BATTERY_LEVEL_STATE);
|
stateNames.put(BATTERY_LEVEL, BATTERY_LEVEL_STATE);
|
||||||
stateNames.put(CURRENT_STATE, "zwave:SetPointTypeState");
|
stateNames.put(CURRENT_STATE, ZWAVE_SET_POINT_TYPE_STATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -190,6 +190,13 @@
|
|||||||
<state readOnly="true"/>
|
<state readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="gate_position">
|
||||||
|
<item-type>Dimmer</item-type>
|
||||||
|
<label>Position</label>
|
||||||
|
<description>Position of the gate</description>
|
||||||
|
<state max="100" min="0" step="1" pattern="%d %%" readOnly="false"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="open">
|
<channel-type id="open">
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Open/Close</label>
|
<label>Open/Close</label>
|
||||||
@ -301,8 +308,17 @@
|
|||||||
<channel-type id="derogation_heating_mode">
|
<channel-type id="derogation_heating_mode">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Derogation Heating Mode</label>
|
<label>Derogation Heating Mode</label>
|
||||||
<description>Derogation heating mode of the Somfy thermostat</description>
|
<description>Derogation heating mode of the Somfy thermostat/valve</description>
|
||||||
<state readOnly="true"/>
|
<command>
|
||||||
|
<options>
|
||||||
|
<option value="auto">Program</option>
|
||||||
|
<option value="away">Away</option>
|
||||||
|
<option value="comfort">Home</option>
|
||||||
|
<option value="frost protection">Frost protection</option>
|
||||||
|
<option value="manual">Manual</option>
|
||||||
|
<option value="eco">Night</option>
|
||||||
|
</options>
|
||||||
|
</command>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="derogation_activation">
|
<channel-type id="derogation_activation">
|
||||||
@ -352,4 +368,25 @@
|
|||||||
<description>The level of the heating</description>
|
<description>The level of the heating</description>
|
||||||
<state max="100" min="0" step="1" pattern="%d %%"/>
|
<state max="100" min="0" step="1" pattern="%d %%"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="current_heating_mode">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Current Heating Mode</label>
|
||||||
|
<description>Current heating mode of the Somfy thermostatic valve</description>
|
||||||
|
<state readOnly="true"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="open_closed_valve">
|
||||||
|
<item-type>Contact</item-type>
|
||||||
|
<label>Valve Open/Closed state</label>
|
||||||
|
<description>Current open/closed state of the Somfy thermostatic valve</description>
|
||||||
|
<state readOnly="true"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="operating_mode">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Operating mode</label>
|
||||||
|
<description>Operating mode of the Somfy thermostatic valve</description>
|
||||||
|
<state readOnly="true"/>
|
||||||
|
</channel-type>
|
||||||
</thing:thing-descriptions>
|
</thing:thing-descriptions>
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
<channels>
|
<channels>
|
||||||
<channel id="gate_state" typeId="gate_state"></channel>
|
<channel id="gate_state" typeId="gate_state"></channel>
|
||||||
<channel id="gate_command" typeId="gate_command"></channel>
|
<channel id="gate_command" typeId="gate_command"></channel>
|
||||||
|
<channel id="gate_position" typeId="gate_position"></channel>
|
||||||
</channels>
|
</channels>
|
||||||
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
||||||
</thing-type>
|
</thing-type>
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
<supported-bridge-type-refs>
|
<supported-bridge-type-refs>
|
||||||
<bridge-type-ref id="bridge"/>
|
<bridge-type-ref id="bridge"/>
|
||||||
</supported-bridge-type-refs>
|
</supported-bridge-type-refs>
|
||||||
<label>Somfy Heating System</label>
|
<label>Z-Wave Heating System</label>
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="current_temperature" typeId="current_temperature"></channel>
|
<channel id="current_temperature" typeId="current_temperature"></channel>
|
||||||
<channel id="current_state" typeId="current_state"></channel>
|
<channel id="current_state" typeId="current_state"></channel>
|
||||||
|
|||||||
@ -10,11 +10,12 @@
|
|||||||
</supported-bridge-type-refs>
|
</supported-bridge-type-refs>
|
||||||
<label>Somfy Thermostat</label>
|
<label>Somfy Thermostat</label>
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="target_temperature" typeId="target_temperature"></channel>
|
<channel id="target_temperature" typeId="temperature"></channel>
|
||||||
<channel id="battery_level" typeId="system.battery-level"></channel>
|
<channel id="battery_level" typeId="system.battery-level"></channel>
|
||||||
<channel id="heating_mode" typeId="heating_mode"></channel>
|
<channel id="heating_mode" typeId="heating_mode"></channel>
|
||||||
<channel id="derogation_heating_mode" typeId="derogation_heating_mode"></channel>
|
<channel id="derogation_heating_mode" typeId="derogation_heating_mode"></channel>
|
||||||
<channel id="derogation_activation" typeId="derogation_activation"></channel>
|
<channel id="derogation_activation" typeId="derogation_activation"></channel>
|
||||||
|
<channel id="derogated_target_temperature" typeId="target_temperature"></channel>
|
||||||
</channels>
|
</channels>
|
||||||
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
||||||
</thing-type>
|
</thing-type>
|
||||||
|
|||||||
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<thing:thing-descriptions bindingId="somfytahoma"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||||
|
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||||
|
|
||||||
|
<thing-type id="valveheatingsystem">
|
||||||
|
<supported-bridge-type-refs>
|
||||||
|
<bridge-type-ref id="bridge"/>
|
||||||
|
</supported-bridge-type-refs>
|
||||||
|
<label>Somfy Thermostatic Valve</label>
|
||||||
|
<channels>
|
||||||
|
<channel id="target_temperature" typeId="temperature"></channel>
|
||||||
|
<channel id="battery_level" typeId="system.battery-level"></channel>
|
||||||
|
<channel id="derogation_heating_mode" typeId="derogation_heating_mode"></channel>
|
||||||
|
<channel id="derogated_target_temperature" typeId="target_temperature"></channel>
|
||||||
|
<channel id="current_heating_mode" typeId="current_heating_mode"></channel>
|
||||||
|
<channel id="open_closed_valve" typeId="open_closed_valve"></channel>
|
||||||
|
<channel id="operating_mode" typeId="operating_mode"></channel>
|
||||||
|
</channels>
|
||||||
|
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
||||||
|
</thing-type>
|
||||||
|
|
||||||
|
</thing:thing-descriptions>
|
||||||
Loading…
x
Reference in New Issue
Block a user