As it turns out, I can't set the fan or system modes using the calls in the Web Service docs either, I get Method Not Allowed. Can someone give examples of working URI's?
Thanks.
Thermostat fan and system modes
- 336 Views
- Last Post 09 October 2014
As it turns out, I can't set the fan or system modes using the calls in the Web Service docs either, I get Method Not Allowed. Can someone give examples of working URI's?
Thanks.
As it turns out, I can't set the fan or system modes using the calls in the Web Service docs either, I get Method Not Allowed. Can someone give examples of working URI's?
Thanks.
Usually if you get a Method Not Allowed it means you used a "GET" when you should have used a "PUT" (or vice versa).
Here's a reference to the scripting methods that can query the device; this isn't the actual URLs, but it gives you an idea of which properties will come back in a t-stat device. You can get a list of devices back by hitting http://localhost:1178/zwave/devices; your t-stat properties will be in there.
here are some URL's you can use for setting values on your t-stat. You'll see things like {nodeId}, which you'll substitute for the actual value. In the case of nodeId, you'll enter the device id (be sure to remove the {}'s)
PUT /thermoSetPoint?nodeId={nodeId}&setPointName={setPointName}&temperatureValue={temperatureValue}&password={password}
PUT /thermoSetFanMode?nodeId={nodeId}&fanMode={fanMode}&password={password}
PUT /thermoSetSystemMode?nodeId={nodeId}&systemMode={systemMode}&password={password}
Ah, yes, I was thinking it meant object method instead of request method. Thanks for the quick response!
I am now using the PUT method (using CURL) with thermoSetPoint. I don't get any errors back, and if I misspell the command, I do get an error so I know the command is correct. I am sending it 'setPointName' => 'Heating1','temperatureValue' => '65' and 'password' => '
Thanks!
I get a server error for thermoSetFanMode :
The server encountered an error processing the request. The exception message is 'Value cannot be null.
Parameter name: value'. See server logs for more details. The exception stack trace is:
at System.Enum.EnumResult.SetFailure(ParseFailureKind failure, String failureParameter)
at System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult)
at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)
at System.ServiceModel.Dispatcher.QueryStringConverter.ConvertStringToValue(String parameter, Type parameterType)
at System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)
at System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
I managed to get them all to work. I had to play around with CURL options, but I can now successfully set levels, and fan mode.
Everything works perfectly now, except I still can not get the current fan mode or system mode and they are not in the device data as far as I can tell. Any suggestions?
Everything works perfectly now, except I still can not get the current fan mode or system mode and they are not in the device data as far as I can tell. Any suggestions?
If its set as a thermostat within InControl, your list at http://localhost:1178/zwave/devices should come back with a device that looks like this GIST. In there, you should have a state and mode property for both system and fan. What "type" does InControl show as your t-stat (in my GIST, it shows that mine is "__type": "Thermostat:#MLS.HA.DeviceController.Common.Device.ZWave")?
Interesting - mine is "ZWaveHaDevice:#MLS.HA.DeviceController.Common.Device.ZWave"
I don't get any of the thermostat attributes that yours shows except the Temperature, Heating1 and Cooling1 setpoints in the sr array. As you would probably expect, these attributes don't show accurately in the standard inControl interface either.
It is a Honeywell TH8320ZW.
Interesting - mine is "ZWaveHaDevice:#MLS.HA.DeviceController.Common.Device.ZWave"
I don't get any of the thermostat attributes that yours shows except the Temperature, Heating1 and Cooling1 setpoints in the sr array. As you would probably expect, these attributes don't show accurately in the standard inControl interface either.
It is a Honeywell TH8320ZW.
That's indeed interesting... inside your UI, what do you see? Here's a picture of mine - note that it shows up as a Thermostat and has system mode/fan mode, and a temperature:
http://snag.gy/6P6in.jpg
Different!
System Mode is Heat right now by the way. It shows as 'Off'.
Ok, how's this for strange. I added a new device (a BinarySwitch) and noticed that the thermostat was now reading. The type changed to the same as yours, and all the values are there now. Does that make any sense at all?