More nonsense from me again!
I’m slowly testing OH3, and I think I’m going to control and monitor my Vera using the HTTP Binding, rather than the complicated setup I had previously.
I’m sticking with configuration files, so below are the Things and Items configurations that form a working concept for my small heating setup.
Things
//VERA
Thing http:url:vera "Vera" [
baseURL = "http://192.168.1.91:3480/data_request?DeviceNum=1&serviceId=urn:micasaverde-com:serviceId:ZWaveNetwork1&output_format=text",
refresh = "300",
ignoreSSLErrors = "true"
]
{
Channels:
Type string: NetStatusText "Network Status" [
mode = "READONLY",
stateExtension = "&id=variableget&Variable=NetStatusText"
]
Type string: VersionInfo "Version Info" [
mode = "READONLY",
stateExtension = "&id=variableget&Variable=VersionInfo"
]
Type datetime: LastUpdate "Last Update" [
mode = "READONLY",
stateExtension = "&id=variableget&Variable=LastUpdate"
]
}
//THERMOSTAT
Thing http:url:thermostat "Thermostat" [
baseURL = "http://192.168.1.91:3480/data_request?DeviceNum=4&output_format=text",
refresh = "60",
ignoreSSLErrors = "true"
]
{
Channels:
Type number: CurrentSetpoint "Current Setpoint" [
mode = "READONLY",
stateExtension = "&serviceId=urn:upnp-org:serviceId:TemperatureSetpoint1_Heat&id=variableget&Variable=CurrentSetpoint"
]
Type number: SetpointTarget "Setpoint Target" [
mode = "READWRITE",
stateExtension = "&serviceId=urn:upnp-org:serviceId:TemperatureSetpoint1_Heat&id=variableget&Variable=SetpointTarget",
commandExtension = "&serviceId=urn:upnp-org:serviceId:TemperatureSetpoint1_Heat&id=action&action=SetCurrentSetpoint&NewCurrentSetpoint=%2$s"
]
Type number: CurrentTemperature "Current Temperature" [
mode = "READONLY",
stateExtension = "&serviceId=urn:upnp-org:serviceId:TemperatureSensor1&id=variableget&Variable=CurrentTemperature"
]
Type number: BatteryLevel "Battery Level" [
mode = "READONLY",
stateExtension = "&serviceId=urn:micasaverde-com:serviceId:HaDevice1&id=variableget&Variable=BatteryLevel"
]
Type datetime: BatteryDate "Battery Date" [
mode = "READONLY",
stateExtension = "&serviceId=urn:micasaverde-com:serviceId:HaDevice1&id=variableget&Variable=BatteryDate"
]
Type datetime: LastUpdate "Last Update" [
mode = "READONLY",
stateExtension = "&serviceId=urn:micasaverde-com:serviceId:HaDevice1&id=variableget&Variable=LastUpdate"
]
Type string: ModeStatus "Mode Status" [
mode = "READONLY",
stateExtension = "&serviceId=urn:upnp-org:serviceId:HVAC_UserOperatingMode1&id=variableget&Variable=ModeStatus"
]
Type string: CommFailure "Comm Failure" [
mode = "READONLY",
stateExtension = "&serviceId=urn:micasaverde-com:serviceId:HaDevice1&id=variableget&Variable=CommFailure",
stateTransformation = "MAP:vera2online.map"
]
}
//RELAY
Thing http:url:relay "Relay" [
baseURL = "http://192.168.1.91:3480/data_request?DeviceNum=6&output_format=text",
refresh = "120",
ignoreSSLErrors = "true"
]
{
Channels:
Type switch: Status "Relay Status" [
mode = "READWRITE",
stateExtension = "&serviceId=urn:upnp-org:serviceId:SwitchPower1&id=variableget&Variable=Status",
commandExtension = "&serviceId=urn:upnp-org:serviceId:SwitchPower1&id=action&action=SetTarget&newTargetValue=%2$s",
onValue = "1",
offValue = "0"
]
Type string: CommFailure "Comm Failure" [
mode = "READONLY",
stateExtension = "&serviceId=urn:micasaverde-com:serviceId:HaDevice1&id=variableget&Variable=CommFailure",
stateTransformation = "MAP:vera2online.map"
]
Type string: ModeStatus "Mode Status" [
mode = "READONLY",
stateExtension = "&serviceId=urn:upnp-org:serviceId:HVAC_UserOperatingMode1&id=variableget&Variable=ModeStatus"
]
Type string: ModeState "Mode State" [
mode = "READONLY",
stateExtension = "&serviceId=urn:micasaverde-com:serviceId:HVAC_OperatingState1&id=variableget&Variable=ModeState"
]
Type datetime: LastUpdate "Last Update" [
mode = "READONLY",
stateExtension = "&serviceId=urn:micasaverde-com:serviceId:HaDevice1&id=variableget&Variable=LastUpdate"
]
}
Items
//VERA
String strNetStatusText "Z-Wave Network Status" <status> ["Status"] { channel="http:url:vera:NetStatusText" }
String strVersionInfo "Z-Wave Version Info" <status> ["Status"] { channel="http:url:vera:VersionInfo" }
DateTime dtVeraLastUpdate "Vera Last Update" <calendar> ["Status"] { channel="http:url:vera:LastUpdate" }
//THERMOSTAT
Group gThermostat (gGroundHallway) ["HVAC"]
Number nCurrentSetpoint "Thermostat Setpoint" <temperature> ["Setpoint","Temperature"] { channel="http:url:thermostat:CurrentSetpoint"}
Number nSetpointTarget "Thermostat Setpoint Target" <temperature> (gThermostat) ["Setpoint","Temperature"] { channel="http:url:thermostat:SetpointTarget", stateDescription=""[min="15", max="21", pattern="%.0f"], widget="oh-slider-card"[min=15, max=21, step=1, scale=true], listWidget="oh-slider-item"[min=15, max=21, step=1, scale=true] }
Number nCurrentTemperature "Thermostat Current Temperature" <temperature> (gThermostat) ["Measurement","Temperature"] { channel="http:url:thermostat:CurrentTemperature" }
Number nBatteryLevel "Thermostat Battery Level" <battery> (gThermostat) ["LowBattery"] { channel="http:url:thermostat:BatteryLevel" }
DateTime dtBatteryDate "Thermostat Battery Date" <calendar> ["Status"] { channel="http:url:thermostat:BatteryDate" }
DateTime dtThermostatLastUpdate "Thermostat Last Update" <calendar> ["Status"] { channel="http:url:thermostat:LastUpdate" }
String strThermostatModeStatus "Thermostat Mode Status" <mode> ["Status"] { channel="http:url:thermostat:ModeStatus" }
String strThermostatCommFailure "Thermostat Comm Failure" <mode> ["Status"] { channel="http:url:thermostat:CommFailure" }
//RELAY
Switch sRelayStatus "Relay Status" <switch> ["Switch"] { channel="http:url:relay:Status" }
String strRelayCommFailure "Relay Comm Failure" <mode> ["Status"] { channel="http:url:relay:CommFailure" }
String strRelayModeStatus "Relay Mode Status" <mode> ["Status"] { channel="http:url:relay:ModeStatus" }
String strRelayModeState "Relay Mode State" <mode> ["Status"] { channel="http:url:relay:ModeState" }
DateTime dtRelayLastUpdate "Thermostat Last Update" <calendar> ["Status"] { channel="http:url:relay:LastUpdate" }
vera2online.map
0=Online
1=Offline
2=Offline