Niko Home Control


(Yannic VH) #180

@Mherwege

Found the logs, says I don’t have any thermostats?

2018-06-12 14:09:50.485 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"cmd":"listthermostat"} from thread 317016
2018-06-12 14:09:50.504 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"listthermostat","data":[]} on thread 317016
2018-06-12 14:09:50.506 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"cmd":"listthermostat","data":[]}
2018-06-12 14:09:50.508 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"cmd":"listthermostatHVAC"} from thread 317016
2018-06-12 14:09:50.552 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"listthermostatHVAC","data":[]} on thread 317016
2018-06-12 14:09:50.553 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"cmd":"listthermostatHVAC","data":[]}

(Mark Herwege) #181

@YannicVH
Can you control your thermostats from the Niko app? If you can, I made the wrong assumption thinking that info passed through the messages above.
We would then need to do a capture of the communication with the app, as described, to find out what the exact messages are.
Edit: Actually, thinking about it, if the thermostat actions are modeled as actions in NHC and visible in the app, you should see a message in the log when you change the thermostat settings through the app, some form of a event listactions message with the id of the actions linked to the thermostat. The debug log will show you all actions at startup of the binding. The ones the binding cannot handle will be ignored, but can still be found under the cmd listactions log entry at startup.


(Yannic VH) #182

@Mherwege

Turns out I can’t control them from the app.
Don’t know why, but clearly an issue on my part…


(Mark Herwege) #183

@YannicVH
So back to the Niko Programming software to link your thermostat actions to the app. As far as I can see, you need to define specific actions for each program mode you want to allow. I don’t immediately see a way to just set a temperature. I am hoping that the temperature will come back in the info received though.


(Yannic VH) #184

@Mherwege

I implemented 3 of my thermostats now.
This results in the following logs:

2018-06-12 19:09:53.654 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"listthermostat","data":[ {"id":0,"name":"Thermostaat1","location":13, "measured":234, "setpoint":500, "mode":7, "overrule":0, "overruletime":"00:00", "ecosave":0},{"id":1,"name":"Thermostaat2","location":7, "measured":224, "setpoint":240, "mode":4, "overrule":0, "overruletime":"00:00", "ecosave":0},{"id":6,"name":"Thermostaat3","location":10, "measured":214, "setpoint":240, "mode":4, "overrule":0, "overruletime":"00:00", "ecosave":0}]} on thread 322201
2018-06-12 19:09:53.662 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"cmd":"listthermostat","data":[ {"id":0,"name":"Thermostaat1","location":13, "measured":234, "setpoint":500, "mode":7, "overrule":0, "overruletime":"00:00", "ecosave":0},{"id":1,"name":"Thermostaat2","location":7, "measured":224, "setpoint":240, "mode":4, "overrule":0, "overruletime":"00:00", "ecosave":0},{"id":6,"name":"Thermostaat3","location":10, "measured":214, "setpoint":240, "mode":4, "overrule":0, "overruletime":"00:00", "ecosave":0}]}

It’s able to get the temperature out of every room ( measured value / 10 )
Setpoints are the target temperature.
Don’t pay attention to my setpoints, I didn’t properly set them yet since my valves aren’t connected yet.

When setting the thermostat to a certain mode it does 2 things:

A: set the value of the ‘mode’ property:
0 = day
1 = night
2 = eco
3 = off
4 = cool
5 = prog 1
6 = prog 2
7 = prog 3

B: set the corresponding target temperature: ( these are my personalized settings )
0 = day => 21
1 = night => 16
2 = eco => 18
3 = off => 7
4 = cool => 14
5 = prog 1 => 21
6 = prog 2 => 21
7 = prog 3 => 24

When temperatures change only the ‘measured’ parameter is updated:

2018-06-12 19:10:09.766 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":225,"setpoint":240,"mode":4,"overrule":0,"overruletime":"00:00","ecosave":0}]} on thread 327212
2018-06-12 19:10:09.771 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"event":"listthermostat","data":[ {"id":1,"measured":225,"setpoint":240,"mode":4,"overrule":0,"overruletime":"00:00","ecosave":0}]}
2018-06-12 19:10:14.781 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":224,"setpoint":240,"mode":4,"overrule":0,"overruletime":"00:00","ecosave":0}]} on thread 327212
2018-06-12 19:10:14.784 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"event":"listthermostat","data":[ {"id":1,"measured":224,"setpoint":240,"mode":4,"overrule":0,"overruletime":"00:00","ecosave":0}]}

Overruling temperature to 20°C for 1 hour gives the following result:
( don’t know why it temporarily sets it to 50°C :confused:
It changed both the setpoint, the overrule and overruletime

2018-06-12 19:14:18.572 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":0,"measured":234,"setpoint":500,"mode":7,"overrule":200,"overruletime":"01:00","ecosave":0}]} on thread 327212
2018-06-12 19:14:18.574 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"event":"listthermostat","data":[ {"id":0,"measured":234,"setpoint":500,"mode":7,"overrule":200,"overruletime":"01:00","ecosave":0}]}
2018-06-12 19:14:18.634 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":0,"measured":234,"setpoint":200,"mode":7,"overrule":200,"overruletime":"01:00","ecosave":0}]} on thread 327212
2018-06-12 19:14:18.636 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"event":"listthermostat","data":[ {"id":0,"measured":234,"setpoint":200,"mode":7,"overrule":200,"overruletime":"01:00","ecosave":0}]}

I don’t know what ecosave does? even in eco mode it seems to stay 0?

I hope this is somewhat helpful.
Let me know if there’s anything else I can help with. ( ps: I also have motion detectors if you need any help in that area )


(Mark Herwege) #185

@YannicVH
That looks a lot better. With this I can definitely make the termostats visible, if not control them yet. Did you try setting the thermostat from the Niko app, or from the Niko controls? I am curious about what can be done from the app. Can you select the mode on the app? Can you set an override? Or is the only thing you can do trigger a specific action that will set a mode?


(Yannic VH) #186

@Mherwege

I can control them both from the App and the Niko controls.

In the App I can do the following things:

  • Get the current temperature
  • Set the setpoint temperature
  • Set the mode ( day / night / eco / off / cool / prog 1 / prog 2 / prog 3)

Setting the setpoint manually creates an overrule just as with the Niko controls.
The difference is that the App automatically sets the overrule time to 24h ( 23:59 ) since it doesn’t provide the option to specify the overrule time, while the Niko controls do provide this option in their UI.

Example op changing the setpoint from the App:

2018-06-13 11:45:40.282 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":224,"setpoint":160,"mode":1,"overrule":180,"overruletime":"23:59","ecosave":0}]} on thread 337894
2018-06-13 11:45:40.285 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"event":"listthermostat","data":[ {"id":1,"measured":224,"setpoint":160,"mode":1,"overrule":180,"overruletime":"23:59","ecosave":0}]}
2018-06-13 11:45:40.343 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":224,"setpoint":180,"mode":1,"overrule":180,"overruletime":"23:59","ecosave":0}]} on thread 337894
2018-06-13 11:45:40.347 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"event":"listthermostat","data":[ {"id":1,"measured":224,"setpoint":180,"mode":1,"overrule":180,"overruletime":"23:59","ecosave":0}]}

Also noticed the overrule time parameter doesn’t update.
So in case you set it to 1hour on the Niko controls every event contains overruletime=“01:00” for 1 hour, after that hour it’s back to “00:00”. I assume it will be the same for the overrule time in the App, but I’ll have to wait 23 more hours to be sure :slight_smile: ( might also be a persistent/permanent overrule ? )

Let me know if you need any additional input.


(Mark Herwege) #187

@YannicVH
I had a go at it and have a binding version for testing. You can find it here.
It should properly discover and show you the thermostats and show current temperature, setpoint and mode.
I have implemented something to try to change the mode and setpoint, but do expect this will not work. I am missing the exact command structure. For all other actions so far, the structure was something like:

{"cmd":"executeactions","id":9,"value1":0}

and the reply on that was:

{"cmd":"executeactions", "data":{"error":0}}
{"event":"listactions","data":[{"id":9,"value1":0}]}

I have now implemented:

{"cmd":"executethermostats","id":0,"mode":1}

and:

{"cmd":"executethermostats","id":0,"overrule":220}

This is a wild guess. If that does not do it, I will need a Wireshark when doing it from the app after all. Anyway, have a try and see if your thermostats are recognized and the values are shown correctly. Try a command and let me know what the outcome is.

Referring back to the motion sensors, I don’t think there is much I can do. If you cannot see the status of a motion sensor in the app, I cannot get it. The only way is to play with actions defined in the programming software as I suggested earlier.

EDIT: Did a slight update, commands should read listthermostat and executethermostat. Make sure to take the .jar after 18:00.


(Yannic VH) #188

I’ve tested with the new thermostat type in the binding.

My findings:

  • Discovery went very well, found all thermostats instantly
  • Changing measured/setpoint/mode in the app or on the Niko controls is instantly picked up in paperUI
  • When creating an item there is no such thing as a thermostat type? So the way to get it working is to make an item for each property ( measured/setpoint/mode)
  • The display values are the actual values *100 ( ex. 2220.0 °C instead of 22.2 °C )image
  • I’ve added my thermostats 1 by 1 and I’ve seen that each time the last one I added is offline ( Status: OFFLINE - COMMUNICATION_ERROR Niko Home Control: channel unknown measured )

*>This was resolved on its own a few minutes later?

  • The increment of the setpoint value is now 1, should be 0,5 when the above issue is fixed. 0,5 is the accuracy used in the App and Niko controlsimage
  • Changing the setpoint in PaperUI does not work
  • Changing the mode in PaperUI does not work
  • After editing the setpoint for a first time and applying it’s no longer possible to change the setpoint
    *> work around: switch to any other page in PaperUI and then go back to ‘Control’>‘location’

(Mark Herwege) #189

@YannicVH
Many thanks. Can you provide me debug logs for everything you do when testing this? I wnat to see if I get any errors back.
The 10x factor is a stupid mistake of mine. I will correct.
The update of the paper UI mode setting may just be a UI refresh issue. I have seen that with other bindings when using option values.
You do indeed need to create one item per channel. I have extended the binding doc, so will get you a link when I push it to Github.

EDIT: A corrected version is loaded at the same place. It should:

  • correct the multiplication factor mistake
  • correct the thing staying offline problem
  • sets the setpoint step value to 0.5
  • add an overrule time channel

You will need to remove and add the thermostat things again after loading the new binding.
Test with this and get me the debug log. I want to see if any of the commands make it to the Niko controller and are understood.


(Yannic VH) #190

@Mherwege

Thanks for the fixes, I’ve installed the new version of the binding.

  • The display values are OK now

  • Things came online instantly

  • The increment for the setpoint is now 1 instead of 0,5 ?

  • The overrule time is an integer and can even be negative?

  • Changing the mode doesn’t seem to have the desired effect. The executethermostats command throws error 201?

13:43:38.328 [DEBUG] [dler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 6 for nikohomecontrol:thermostat:440e00ee006a:0:mode
13:43:38.346 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'nikohomecontrol_thermostat_440e00ee006a_0_mode' received command 6
13:43:38.355 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat overrule 0 for 0
13:43:38.373 [INFO ] [smarthome.event.ItemStateChangedEvent] - nikohomecontrol_thermostat_440e00ee006a_0_mode changed from 7 to 6
13:43:38.379 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":0,"overruletime":"00:00","cmd":"executethermostat"} from thread 6911
13:43:38.406 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat mode 6 for 0
13:43:38.408 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":111}} on thread 6398
13:43:38.419 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":0,"mode":6,"cmd":"executethermostats"} from thread 6911
13:43:38.430 [WARN ] [protocol.NikoHomeControlCommunication] - Niko Home Control: error code 111 returned on command execution
13:43:38.446 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostats", "data":{"error":201}} on thread 6398
13:43:38.457 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"cmd":"executethermostats", "data":{"error":201}}
13:43:55.272 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'nikohomecontrol_thermostat_440e00ee006a_0_mode' received command 3
13:43:55.300 [DEBUG] [dler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 3 for nikohomecontrol:thermostat:440e00ee006a:0:mode
13:43:55.301 [INFO ] [smarthome.event.ItemStateChangedEvent] - nikohomecontrol_thermostat_440e00ee006a_0_mode changed from 6 to 3
13:43:55.318 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat overrule 0 for 0
13:43:55.327 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":0,"overruletime":"00:00","cmd":"executethermostat"} from thread 6915
13:43:55.335 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat mode 3 for 0
13:43:55.337 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":111}} on thread 6398
13:43:55.351 [WARN ] [protocol.NikoHomeControlCommunication] - Niko Home Control: error code 111 returned on command execution
13:43:55.351 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":0,"mode":3,"cmd":"executethermostats"} from thread 6915
13:43:55.369 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostats", "data":{"error":201}} on thread 6398
13:43:55.379 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: not acted on json {"cmd":"executethermostats", "data":{"error":201}}

  • When I change the setpoint I get an error that a Quantity can’t be casted to a decimal.
13:51:47.623 [DEBUG] [dler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 20 ℃ for nikohomecontrol:thermostat:440e00ee006a:0:setpoint
13:51:47.625 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'nikohomecontrol_thermostat_440e00ee006a_0_setpoint' received command 20 ℃
13:51:47.653 [ERROR] [rnal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.openhab.binding.nikohomecontrol.handler.NikoHomeControlThermostatHandler@5fba59': org.eclipse.smarthome.core.library.types.QuantityType cannot be cast to org.eclipse.smarthome.core.library.types.DecimalType
java.lang.ClassCastException: org.eclipse.smarthome.core.library.types.QuantityType cannot be cast to org.eclipse.smarthome.core.library.types.DecimalType
        at org.openhab.binding.nikohomecontrol.handler.NikoHomeControlThermostatHandler.handleCommandSelection(NikoHomeControlThermostatHandler.java:120) [196:org.openhab.binding.nikohomecontrol:2.4.0.201806140841]
        at org.openhab.binding.nikohomecontrol.handler.NikoHomeControlThermostatHandler.handleCommand(NikoHomeControlThermostatHandler.java:81) [196:org.openhab.binding.nikohomecontrol:2.4.0.201806140841]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [101:org.eclipse.smarthome.core:0.10.0.oh230]
        at org.eclipse.smarthome.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [101:org.eclipse.smarthome.core:0.10.0.oh230]
        at com.sun.proxy.$Proxy155.handleCommand(Unknown Source) [196:org.openhab.binding.nikohomecontrol:2.4.0.201806140841]
        at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:75) [108:org.eclipse.smarthome.core.thing:0.10.0.oh230]
        at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49) [108:org.eclipse.smarthome.core.thing:0.10.0.oh230]
        at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [101:org.eclipse.smarthome.core:0.10.0.oh230]
        at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [101:org.eclipse.smarthome.core:0.10.0.oh230]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]

  • When changing the overrule values I get the following logs:
13:56:59.591 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'nikohomecontrol_thermostat_440e00ee006a_1_overruletime' received command 8
13:56:59.601 [DEBUG] [dler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 8 for nikohomecontrol:thermostat:440e00ee006a:1:overruletime
13:56:59.618 [INFO ] [smarthome.event.ItemStateChangedEvent] - nikohomecontrol_thermostat_440e00ee006a_1_overruletime changed from 0 to 8
13:56:59.619 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat overrule 0 for 1
13:56:59.631 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":1,"overruletime":"00:08","cmd":"executethermostat"} from thread 7008
13:56:59.644 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":111}} on thread 6398
13:56:59.653 [WARN ] [protocol.NikoHomeControlCommunication] - Niko Home Control: error code 111 returned on command execution

  • When the measured temperatue changed I get the following logs:
13:49:04.671 [INFO ] [smarthome.event.ItemStateChangedEvent] - nikohomecontrol_thermostat_440e00ee006a_6_measured changed from 22.5 ℃ to 22.4 ℃
13:49:04.680 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 6 with 2
13:49:04.749 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 6 with 2
13:49:04.820 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 6 with 180
13:49:04.870 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 6 with 1439
13:49:04.936 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 6 with 0
13:49:05.745 [DEBUG] [NikoHomeControlBridgeDiscoveryService] - Niko Home Control: discovery broadcast on 192.168.0.255
13:49:05.758 [DEBUG] [rnal.protocol.NikoHomeControlDiscover] - Niko Home Control: IP address is /192.168.0.2, unique ID is 440e00ee006a
13:49:05.766 [DEBUG] [NikoHomeControlBridgeDiscoveryService] - Niko Home Control: bridge found at /192.168.0.2
13:49:09.610 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":6,"measured":225,"setpoint":180,"mode":2,"overrule":180,"overruletime":"23:59","ecosave":0}]} on thread 6398
13:49:09.625 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 6 with measured 225, setpoint 180, mode 2, overrule 180, overruletime 1439, ecosave 0
13:49:09.634 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 6 with 2
13:49:09.675 [INFO ] [smarthome.event.ItemStateChangedEvent] - nikohomecontrol_thermostat_440e00ee006a_6_measured changed from 22.4 ℃ to 22.5 ℃
13:49:09.681 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 6 with 2
13:49:09.776 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 6 with 2
13:49:09.837 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 6 with 180
13:49:09.870 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 6 with 1439
13:49:09.907 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 6 with 0
13:49:14.609 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":6,"measured":224,"setpoint":180,"mode":2,"overrule":180,"overruletime":"23:59","ecosave":0}]} on thread 6398
13:49:14.623 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 6 with measured 224, setpoint 180, mode 2, overrule 180, overruletime 1439, ecosave 0
13:49:14.629 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 6 with 2
13:49:14.656 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 6 with 2
13:49:14.690 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 6 with 2
13:49:14.689 [INFO ] [smarthome.event.ItemStateChangedEvent] - nikohomecontrol_thermostat_440e00ee006a_6_measured changed from 22.5 ℃ to 22.4 ℃
13:49:14.783 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 6 with 180
13:49:14.843 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 6 with 1439
13:49:14.877 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 6 with 0
13:49:24.609 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":6,"measured":225,"setpoint":180,"mode":2,"overrule":180,"overruletime":"23:59","ecosave":0}]} on thread 6398
13:49:24.617 [DEBUG] [protocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 6 with measured 225, setpoint 180, mode 2, overrule 180, overruletime 1439, ecosave 0
13:49:24.624 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 6 with 2
13:49:24.650 [INFO ] [smarthome.event.ItemStateChangedEvent] - nikohomecontrol_thermostat_440e00ee006a_6_measured changed from 22.4 ℃ to 22.5 ℃
13:49:24.689 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 6 with 2
13:49:24.779 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 6 with 2
13:49:24.815 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 6 with 180
13:49:24.872 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 6 with 1439
13:49:24.921 [DEBUG] [ntrol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 6 with 0

(Mark Herwege) #191

@YannicVH
OK, a new version.

  • The class cast exception should be fixed.
  • The mode setting has been changed to call executethermostat instead of executethermostats, error on my side.
  • Some logging contained the wrong message, that should now be fixed.
  • overruletime value is in minutes. I now limited the value to min = 0 and max = 1440 (24h).
  • PaperUI may not respect all restrictions put on the parameters. I put in the following restrictions:
    • setpoint: between 0 and 50, step 0.5
    • overruletime: between 0 and 1440, step 5
    • mode: option values 0 to 7, rendered as strings

Thinking about it, the setpoint range should probably be set differently if one would work in °F (maybe I should set max to 100). You can always override this in a sitemap though.

The big question now is if we can get Niko to listen to what we send. I see 2 error replies.

  • 201 = not understood because I used the wrong command (executethermostats iso executethermostat)
  • 111 = some error in interpreting what I send

Let’s see if my fixes make mode and setpoint setting work. Overrule time is clearly not understood yet.


(Yannic VH) #192

@Mherwege

  • The cast is indeed fixed
  • Setting a value outside of the parameter restrictions results in a ERROR 400 - BAD REQUEST in PaperUI
  • Changing the mode now works
  • Also sets the correct corresponding temperature setpoint
    However this still returns some errors:
2018-06-14 16:35:16.948 [DEBUG] [ler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 0 for nikohomecontrol:thermostat:440e00ee006a:1:mode
2018-06-14 16:35:17.172 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat overruletime 0 for 1
2018-06-14 16:35:17.325 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":1,"overruletime":"00:00","cmd":"executethermostat"} from thread 8184
2018-06-14 16:35:17.432 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat mode 0 for 1
2018-06-14 16:35:17.440 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":111}} on thread 7988
2018-06-14 16:35:17.507 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":1,"mode":0,"overruletime":"00:00","cmd":"executethermostat"} from thread 8184
2018-06-14 16:35:17.585 [WARN ] [rotocol.NikoHomeControlCommunication] - Niko Home Control: error code 111 returned on command execution
2018-06-14 16:35:17.760 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":0}} on thread 7988
2018-06-14 16:35:17.837 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: execute thermostats success
2018-06-14 16:35:17.893 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":216,"setpoint":240,"mode":0,"overrule":0,"overruletime":"00:00","ecosave":0}]} on thread 7988
2018-06-14 16:35:18.006 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 1 with measured 216, setpoint 240, mode 0, overrule 0, overruletime 0, ecosave 0
2018-06-14 16:35:18.136 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 1 with 216
2018-06-14 16:35:18.240 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 1 with 240
2018-06-14 16:35:18.330 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 1 with 0
2018-06-14 16:35:18.480 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 1 with 0
2018-06-14 16:35:18.587 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 1 with 0
2018-06-14 16:35:18.745 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 1 with 0
2018-06-14 16:35:18.832 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":216,"setpoint":210,"mode":0,"overrule":0,"overruletime":"00:00","ecosave":0}]} on thread 7988
2018-06-14 16:35:18.953 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 1 with measured 216, setpoint 210, mode 0, overrule 0, overruletime 0, ecosave 0
2018-06-14 16:35:19.046 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 1 with 216
2018-06-14 16:35:19.147 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 1 with 210
2018-06-14 16:35:19.250 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 1 with 0
2018-06-14 16:35:19.375 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 1 with 0
2018-06-14 16:35:19.568 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 1 with 0
2018-06-14 16:35:19.654 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 1 with 0
  • Manually changing the setpoint correctly sets the overrule parameter ( see logging ) but isn’t functional without the overrule time parameter.
2018-06-14 16:40:41.149 [DEBUG] [ler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 17 ℃ for nikohomecontrol:thermostat:440e00ee006a:1:setpoint
2018-06-14 16:40:41.355 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat overrule 170 for 1
2018-06-14 16:40:41.518 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":1,"overrule":170,"overruletime":"00:00","cmd":"executethermostat"} from thread 8218
2018-06-14 16:40:41.642 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":0}} on thread 7988
2018-06-14 16:40:41.727 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: execute thermostats success
2018-06-14 16:40:41.786 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":216,"setpoint":210,"mode":0,"overrule":170,"overruletime":"00:00","ecosave":0}]} on thread 7988
2018-06-14 16:40:41.899 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 1 with measured 216, setpoint 210, mode 0, overrule 170, overruletime 0, ecosave 0
2018-06-14 16:40:42.004 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 1 with 216
2018-06-14 16:40:42.124 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 1 with 210
2018-06-14 16:40:42.232 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 1 with 0
2018-06-14 16:40:42.417 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 1 with 170
2018-06-14 16:40:42.501 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 1 with 0
2018-06-14 16:40:42.590 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 1 with 0
2018-06-14 16:40:56.450 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":217,"setpoint":210,"mode":0,"overrule":170,"overruletime":"00:00","ecosave":0}]} on thread 7988
2018-06-14 16:40:56.569 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 1 with measured 217, setpoint 210, mode 0, overrule 170, overruletime 0, ecosave 0
2018-06-14 16:40:56.662 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 1 with 217
2018-06-14 16:40:56.763 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 1 with 210
2018-06-14 16:40:56.939 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 1 with 0
2018-06-14 16:40:57.064 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 1 with 170
2018-06-14 16:40:57.155 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 1 with 0
2018-06-14 16:40:57.243 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 1 with 0
  • Setting the overrule time doesn’t seem to work:
2018-06-14 16:48:56.068 [WARN ] [rest.core.internal.item.ItemResource] - Received HTTP POST request at 'items/nikohomecontrol_thermostat_440e00ee006a_1_overruletime' with an invalid status value ''.
2018-06-14 16:49:02.353 [DEBUG] [ikoHomeControlBridgeDiscoveryService] - Niko Home Control: discovery broadcast on 192.168.0.255
2018-06-14 16:49:02.432 [DEBUG] [nal.protocol.NikoHomeControlDiscover] - Niko Home Control: IP address is /192.168.0.2, unique ID is 440e00ee006a
2018-06-14 16:49:02.516 [DEBUG] [ikoHomeControlBridgeDiscoveryService] - Niko Home Control: bridge found at /192.168.0.2
2018-06-14 16:49:22.736 [WARN ] [rest.core.internal.item.ItemResource] - Received HTTP POST request at 'items/nikohomecontrol_thermostat_440e00ee006a_1_overruletime' with an invalid status value ''.
2018-06-14 16:49:38.668 [DEBUG] [ler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 1440 for nikohomecontrol:thermostat:440e00ee006a:1:overruletime
2018-06-14 16:49:38.878 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat overruletime 1440 for 1
2018-06-14 16:49:39.032 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":1,"overruletime":"24:00","cmd":"executethermostat"} from thread 8292
2018-06-14 16:49:39.154 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":111}} on thread 7988
2018-06-14 16:49:39.237 [WARN ] [rotocol.NikoHomeControlCommunication] - Niko Home Control: error code 111 returned on command execution
2018-06-14 16:49:45.119 [DEBUG] [ler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 1440 for nikohomecontrol:thermostat:440e00ee006a:1:overruletime
2018-06-14 16:49:45.334 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat overruletime 1440 for 1
2018-06-14 16:49:45.423 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":1,"overruletime":"24:00","cmd":"executethermostat"} from thread 8289
2018-06-14 16:49:45.545 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":111}} on thread 7988
2018-06-14 16:49:45.633 [WARN ] [rotocol.NikoHomeControlCommunication] - Niko Home Control: error code 111 returned on command execution
  • Setting the temp setpoint to for example 3.5°C seems to be processed correctly:
    ( You have to type the .5 tho, since the up/down arrows in-/decrement with 1.
2018-06-14 16:56:52.610 [DEBUG] [ler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 3.5 ℃ for nikohomecontrol:thermostat:440e00ee006a:1:setpoint
2018-06-14 16:56:52.808 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat overrule 35 for 1
2018-06-14 16:56:52.970 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":1,"overrule":35,"overruletime":"00:00","cmd":"executethermostat"} from thread 8354
2018-06-14 16:56:53.097 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":0}} on thread 7988
2018-06-14 16:56:53.183 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: execute thermostats success

(Mark Herwege) #193

@YannicVH
Up for another test? I temporarily removed the overruletime channel. As you wrote before, it is set by default to 23:59 if you change the overrule setpoint from the app. I want to see what it does if I don’t send anything, just an overrule setpoint.
Second question: what happens if you set an overrule in the Niko controls (or app) and then change the mode. Does it remove the overrule? Or do I need to do that explicitly?
Revised documentation is here.
Thanks,
Mark


(Yannic VH) #194

Answer to first question: When I just set a setpoint nothing changed

2018-06-14 19:32:46.550 [DEBUG] [ler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 19 ℃ for nikohomecontrol:thermostat:440e00ee006a:1:setpoint
2018-06-14 19:32:46.754 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat overrule 190 for 1
2018-06-14 19:32:46.905 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":1,"overrule":190,"cmd":"executethermostat"} from thread 9402
2018-06-14 19:32:47.011 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":111}} on thread 9269
2018-06-14 19:32:47.093 [WARN ] [rotocol.NikoHomeControlCommunication] - Niko Home Control: error code 111 returned on command execution

Answer to second question:
I first manually set overrule time to 2 hours on the Niko control

2018-06-14 19:25:52.717 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":219,"setpoint":205,"mode":0,"overrule":205,"overruletime":"02:00","ecosave":0}]} on thread 9269
2018-06-14 19:25:52.840 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 1 with measured 219, setpoint 205, mode 0, overrule 205, overruletime 120, ecosave 0

Afterwards I changed the setpoint in PaperUI.
This didn’t have the desired effect.
Setpoint wasn’t updated ( overrule time was still 2 hours. )

2018-06-14 19:27:26.476 [DEBUG] [ler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 17 ℃ for nikohomecontrol:thermostat:440e00ee006a:1:setpoint
2018-06-14 19:27:26.674 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat overrule 170 for 1
2018-06-14 19:27:26.826 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":1,"overrule":170,"cmd":"executethermostat"} from thread 9337
2018-06-14 19:27:26.937 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":111}} on thread 9269
2018-06-14 19:27:27.018 [WARN ] [rotocol.NikoHomeControlCommunication] - Niko Home Control: error code 111 returned on command execution

Ps: related to the overrule time: on the Niko control it does count down the minutes, while the command still communicates the initial value.


(Mark Herwege) #195

@YannicVH Can you repeat the second scenario, not setting the setpoint on OH, but the mode? I want to see if changing the mode resets the overrule.
It looks like we always need to send an overrule toghether with an overruletime.


(Yannic VH) #196

@Mherwege

Changing the mode after an overrule + overruletime was set resets both of these parameters:

2018-06-14 20:02:45.799 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listactions","data":[{"id":47,"value1":100}]} on thread 9269
2018-06-14 20:02:45.883 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute action 47 with state 100
2018-06-14 20:02:57.391 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":219,"setpoint":205,"mode":0,"overrule":200,"overruletime":"03:30","ecosave":0}]} on thread 9269
2018-06-14 20:02:57.509 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 1 with measured 219, setpoint 205, mode 0, overrule 200, overruletime 210, ecosave 0
2018-06-14 20:02:57.601 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 1 with 219
2018-06-14 20:02:57.681 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 1 with 205
2018-06-14 20:02:57.785 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 1 with 0
2018-06-14 20:02:57.868 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 1 with 200
2018-06-14 20:02:57.991 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 1 with 210
2018-06-14 20:02:58.143 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 1 with 0
2018-06-14 20:02:58.310 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":219,"setpoint":200,"mode":0,"overrule":200,"overruletime":"03:30","ecosave":0}]} on thread 9269
2018-06-14 20:02:58.465 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 1 with measured 219, setpoint 200, mode 0, overrule 200, overruletime 210, ecosave 0
2018-06-14 20:02:58.566 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 1 with 219
2018-06-14 20:02:58.669 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 1 with 200
2018-06-14 20:02:58.769 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 1 with 0
2018-06-14 20:02:58.868 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 1 with 200
2018-06-14 20:02:58.976 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 1 with 210
2018-06-14 20:02:59.077 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 1 with 0
2018-06-14 20:03:06.133 [DEBUG] [ikoHomeControlBridgeDiscoveryService] - Niko Home Control: discovery broadcast on 192.168.0.255
2018-06-14 20:03:06.209 [DEBUG] [nal.protocol.NikoHomeControlDiscover] - Niko Home Control: IP address is /192.168.0.2, unique ID is 440e00ee006a
2018-06-14 20:03:06.293 [DEBUG] [ikoHomeControlBridgeDiscoveryService] - Niko Home Control: bridge found at /192.168.0.2
2018-06-14 20:03:34.974 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listactions","data":[{"id":47,"value1":0}]} on thread 9269
2018-06-14 20:03:35.060 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute action 47 with state 0
2018-06-14 20:03:51.450 [DEBUG] [ler.NikoHomeControlThermostatHandler] - Niko Home Control: handle command 2 for nikohomecontrol:thermostat:440e00ee006a:1:mode
2018-06-14 20:03:51.663 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: execute thermostat mode 2 for 1
2018-06-14 20:03:51.804 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: send json {"id":1,"mode":2,"cmd":"executethermostat"} from thread 9603
2018-06-14 20:03:51.921 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"cmd":"executethermostat", "data":{"error":0}} on thread 9269
2018-06-14 20:03:52.004 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: execute thermostats success
2018-06-14 20:03:52.066 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":219,"setpoint":200,"mode":2,"overrule":0,"overruletime":"00:00","ecosave":0}]} on thread 9269
2018-06-14 20:03:52.186 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 1 with measured 219, setpoint 200, mode 2, overrule 0, overruletime 0, ecosave 0
2018-06-14 20:03:52.284 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 1 with 219
2018-06-14 20:03:52.379 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 1 with 200
2018-06-14 20:03:52.557 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 1 with 2
2018-06-14 20:03:52.690 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 1 with 0
2018-06-14 20:03:52.800 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 1 with 0
2018-06-14 20:03:52.978 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 1 with 0
2018-06-14 20:03:53.169 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: received json {"event":"listthermostat","data":[ {"id":1,"measured":219,"setpoint":180,"mode":2,"overrule":0,"overruletime":"00:00","ecosave":0}]} on thread 9269
2018-06-14 20:03:53.328 [DEBUG] [rotocol.NikoHomeControlCommunication] - Niko Home Control: event execute thermostat 1 with measured 219, setpoint 180, mode 2, overrule 0, overruletime 0, ecosave 0
2018-06-14 20:03:53.422 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel measured for 1 with 219
2018-06-14 20:03:53.520 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel setpoint for 1 with 180
2018-06-14 20:03:53.631 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel mode for 1 with 2
2018-06-14 20:03:53.835 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overrule for 1 with 0
2018-06-14 20:03:53.928 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel overruletime for 1 with 0
2018-06-14 20:03:54.044 [DEBUG] [trol.internal.protocol.NhcThermostat] - Niko Home Control: update channel ecosave for 1 with 0


(Mark Herwege) #197

@YannicVH
The next version hopefully now allows setting the setpoint and overrule time.
I have also tried to make the overrule time count down. I am not sure if that fully works yet.


(Yannic VH) #198

@Mherwege

Very nice work!
Works like a charm :slight_smile:
Overrule, setpoint and mode all work! Great job!
Setting a setpoint when no overruletime is defined sets the overruletime to 1 hour
Anything else I can help with?


(Mark Herwege) #199

@YannicVH
Great to hear. Thank you for testing.
The 1h is because I need to send some time when no overruletime is set. I will make that a configurable parameter and submit a PR in the next few days.
Please keep on testing. If you find edge cases behaving strangely, get me the log.
Good luck with controlling your thermostats.