Hi!
I have been using this binding in Openhab 2.2 but lately it stopped working.
I updated Openhab to 2.3 today and deleted, then added binding and thing + items.
I use Husdata interface. But I only see the following errors in the openhab log. Any idea how to solve this? :
java.io.IOException: Underlying input stream returned zero bytes
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) ~[?:?]
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[?:?]
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[?:?]
at java.io.InputStreamReader.read(InputStreamReader.java:184) ~[?:?]
at java.io.BufferedReader.fill(BufferedReader.java:161) ~[?:?]
at java.io.BufferedReader.readLine(BufferedReader.java:324) ~[?:?]
at java.io.BufferedReader.readLine(BufferedReader.java:389) ~[?:?]
at org.openhab.binding.regoheatpump.handler.HusdataHandler.handleDataFromHusdataInterface(HusdataHandler.java:112) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
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) [?:?]
java.io.IOException: Underlying input stream returned zero bytes
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) ~[?:?]
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[?:?]
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[?:?]
at java.io.InputStreamReader.read(InputStreamReader.java:184) ~[?:?]
at java.io.BufferedReader.fill(BufferedReader.java:161) ~[?:?]
at java.io.BufferedReader.readLine(BufferedReader.java:324) ~[?:?]
at java.io.BufferedReader.readLine(BufferedReader.java:389) ~[?:?]
at org.openhab.binding.regoheatpump.handler.HusdataHandler.handleDataFromHusdataInterface(HusdataHandler.java:112) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
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) [?:?]
java.io.IOException: Underlying input stream returned zero bytes
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) ~[?:?]
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[?:?]
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[?:?]
at java.io.InputStreamReader.read(InputStreamReader.java:184) ~[?:?]
at java.io.BufferedReader.fill(BufferedReader.java:161) ~[?:?]
at java.io.BufferedReader.readLine(BufferedReader.java:324) ~[?:?]
at java.io.BufferedReader.readLine(BufferedReader.java:389) ~[?:?]
at org.openhab.binding.regoheatpump.handler.HusdataHandler.handleDataFromHusdataInterface(HusdataHandler.java:112) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
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) [?:?]
While UoM was added for all supported things, new channels and write support is available only for rego 6xx thing(s).
New channels:
heatPumpInOperationDHW - heat pump in operation while heating DHW - number of hours,
heatPumpInOperationRAD - heat pump in operation while heating radiators - number of hours,
addHeatInOperationDHW - additional heat in operation heating DHW - number of hours,
addHeatInOperationRAD - additional heat in operation heating radiators - number of hours,
summerDisconnection - the function means the heat pump only produces hot water when the outdoor temperature rises above the set value.
heatCurve2 - mix valve curve,
heatCurve2FineAdj - mix valve fine tune.
@cgrill75 - as far as I tested, 0x048 and 0x04A both belong to heat pump operation time (without additional heating) - summed together, they give the value in section 7.1 (0x048 = time used for heating radiators, 0x04A = time used to heat DHW).
Please note mapping is done using error and trial since there is no documentation available (known to me) so there is no guarantee values are actually correctly mapped - any feedback greatly appreciated.
Write support - channels:
hotWaterTarget
heatCurve
heatCurveFineAdj
indoorTempSetting
curveInflByInTemp
adjCurveAt20
adjCurveAt15
adjCurveAt10
adjCurveAt5
adjCurveAt0
adjCurveAtMinus5
adjCurveAtMinus10
adjCurveAtMinus15
adjCurveAtMinus20
adjCurveAtMinus25
adjCurveAtMinus30
adjCurveAtMinus35
heatCurveCouplingDiff
heatCurve2
heatCurve2FineAdj
summerDisconnection
If somebody want to give it a spin, please download from here - looking forward to your feedback!
Hi, great job. Many thanks.
I tested briefly on my test environment (so far I don’t have OH2 in operation) and I have tested these NEW functions sucessfully on my Rego637 in an IVT heatpump (using the LAN functionality):
heatPumpInOperationRAD: Works correctly and shows same value as on the display.
Write support:
summerDisconnection, indoorTempSetting
In addition to what I had previously used (various channels on deviceValues and controlValues, the front panel values powerLamp and heatPumpLamp and the status values LastErrorDate and LastErrorType) all worked like a charm.
The only thing that seems a bit odd is that in PaperUI, indoorTempSetting seems to be accepting integer values only through the up/down buttons, however, it is possible to key in e.g. 23.5 and it will accept the new value). summerDisconnection works as a decimal as it should. Both Items have Number.Temperature as type so I would assume they should both behave identically.
As mentioned before, I am not using the hot water function on my heatpump nor the additional electrical heater, so I can’t test that part of the new functions.
Did some more testing.
It seems that other settings, such as HeatCurveCouplingDiff, have the same integer issues.
I also looked into the AdjustHeatCurveAtxxx settings. It seems they are non-functional at all. Although all of them produce actual values, they are usually in the range between -1 to +1°, showing a nice curve distribution. However, on the heatpump itself, they are expressed as actual temperatures (e.g. 24.5° for 0° outside temperature).
I had first assumed that the AdjustHeatCurveAtxxx are offsetting the values that are created through HeatCurve and HeatCurveFineTune. However, changing an adjustment value on the heatpump display did not change any of the values in OpenHAB and vice versa.
Quite frankly, I would not invest too much time in making the AdjustHeatCurveAtxxx settings work as usually you fine tune them over the first/second year of operation (if at all) over the span of days or weeks and then never touch them again, so few of us will expose these values through OpenHAB. However, if you want to further work on them, I am happy to help through testing.
I haven’t got the indoor sensor so was not able to test. I will add step=0.1 to the indoorTempSetting channel and I guess that will enable you to use 1/10 values within the PaperUI too.
within the .sitemap and was able to step between all values, supported by the HP.
Regarding the AdjustHeatCurveAtxxx - I added those based on the mappings available from here but never actually used/tested them - will try to check if they are mapped correctly, but again - it’s error and trial so feedback greatly appreciated
Created a PR. Please give it a spin, download from here.
NOTE:hotWaterTarget channel was moved from controlData to the setting group so all writable channels are within the setting group.
@alillebakk - based on provided info it seems as there is something wrong with your connection and not with the binding itself, were you able to make and progress?
@crnjan - Still no progress for me. The binding do work, but it seems like it misses 2 of 4 value updates. So the OpenHAB dont always know when a valve has gone from open to closed etc. Some values just stop to do updates, and only send those errors posted above. But other values from same interface keeps updating. see graph example below where two temp sensors has stopped working. In a couple of hours they normally is back on track, but we lose data from them until then.
Just as an update, the PR with write support, UoM and some other improvements got merged so you can use the official binding now in latest OH snapshots.
Still looking into issue reported above for Husdata interface.
Just updated openHAB to latest snapshot and started testing with my Ivt greenline / Rego 600:
2019-01-15 22:42:44.360 [vent.ItemStateChangedEvent] - ivtAdjustHeatCurve20 changed from NULL to 2.5 °C
2019-01-15 22:42:44.580 [vent.ItemStateChangedEvent] - ivtAdjustHeatCurve15 changed from NULL to 2.3000000000000003 °C
That long row of zeros should not be there. Could this be a problem with UoM?
BasicUI and HABDroid displays everything correctly with only one decimal.
Can’t debug it more right now but I’ll continue later. Please tell me what info you need.
Edit #1:
Hot water target shows still under control data and not settings. Hot water target hysteresis is missing.
Hi! Thanks for the feedback - regarding the zeros thing - this was there before in previous version of binding that did not have UoM support and I guess it is related to OH type conversion - so you should be fine ignoring the zeros .
I had to remove the “rego thing” from PaperUI and re-add it in order for new channels to take affect, but not sure if this was needed because I did replace the binding quite some times during development … maybe worth a try, but it should be under settings group, I use something like:
Hmm. After updating to the latest version I didn’t see any of those…
I don’t mind them in the logs but when I create a setpoint for an writable channel and view the sitemap with HABDroid they haunt me there also.
Sorry I wrote in a hurry. I mean the channel “hotWaterTargetHysteresis” is not visible in my system. I’ll try and re-add “rego thing” as you suggested above. Hopefully it’s caching problem.