Nibe uplink binding

:slight_smile:

Dear Alex, just committed in dev for your check. Note that while editing iā€™ve noticed that configs vvm310 and vvm320 are still not up to date wrt using quantities for some channels. While iā€™m at it i could give it a go if it can help. please let me know

Hi Olivier,

thanks for your contribution. I made two minor corrections and ā€œsigned-offā€ your commit as this is a requirement to get it merged into the openhab master. I also rebased on latest master and squashed some commits. So in case you are going to contribute further please make sure to have a new checkout first. Otherwise you will get lost in conflicts.

Could you please give me an example regarding those quantity channels? Indeed there are still a lot of ā€œplain numberā€ channels but those should be channels where either

  • no unit exists at all
  • the unit is currently not supported by UoM
  • no reasonable conversion is possible

E.g. percent is such a unit. Percent is just percent and it also does not make sense to use metric prefixes there. In a earlier version I abused the metric prefixes to do the scaling this is why the percent channels actualy use the quantity type implementation.

Dear Alex, OK sure iā€™ll get a new checkout in case.
A quick question, is there now a build available so that i can test it? Iā€™ve tried installing eclipse with everything to make a dev environment for myself and test but did not succeed at the end.

Concerning the channels not using the quantity, in fact i see i could have been mistaken as i did only look in the ā€¦-channel-types.xml file where there are still lotā€™s of fixed units e.g. temperature channels defined with pattern="%.1f Ā°C", instead of pattern="%.1f %unit%" however iā€™m not sure this is a problem. Iā€™ve rechecked in the corresponding java and indeed the QuantityChannel object is used so i guess it is all fine, sorry for the wrong alert. I let you judge whether the default translation pattern defined in the xml should indeed be corrected with ā€œ%.1f %unit%ā€ or if it is ok as is, knowing that the channels are defaulting to Ā°C quantities anyway.

Now i may have spotted another discrepancy. Having looked again in the vm320 and vm310 configs i see now that there are a number of channel definitions that do not have their corresponding object defined in the java. For instance you will see that channels numbers 40004, 40008, 40012, 40013, 40014 are defined in both vvm320 and vvm310 xmls but are not instantiated in their java. May be it is a left-over after you have put these channels in the base part and should now be simply deleted from these two specific xmls.

Hi Olivier,

setting up your DEV environment is quite easy if you use this manual: https://www.openhab.org/docs/developer/development/ide.html Nevertheless there is a build available at http://friese-de.eu/openhab2/

Regarding the fixed unit, I found only three occurences of ā€œĀ°Cā€ on a quick walkthrough:

  • 47374
  • 47375
  • 47376

These channels are writeable which means values can be sent to Nibe. As Nibe cannot handle units other than Celsius, QuantiyType makes no sense here.

Regarding the channels 40004, 40008, 40012, 40013, 40014: I could not find them in vvm310/210. Maybe your checkout is messed up?

Dear Alex
thank you for the link, iā€™ll follow next time so iā€™ll be able to test before.

And finally sorry for all the confusion concerning quantities and these ghost channel configs. i try to explain. i had an old checkout on my computer dating from May that was not in my github local space, and the vvm320 config (vvm320-channel-types.xml) i have edited has been wrongly picked up from there (i really donā€™t know why,since all my other edits where based in the right tree, just that vvm320-channel-types.xml was picked up in that other old tree). So obviously the commit i provided you back on github was without the edits i had performed on this specific config (thankfully), and that explains your later commit of 5th December to remove channel 43437 since it was obviously not carried inside my own commit. thankfully otherwise that would probably have created a big mess.
All the discrepancies i had found and reported to you were indeed based on this old config of Mayā€¦ So you can ignore all, and big sorry again for all that confusion.

Iā€™m currently testing the new 2.4 bundle, iā€™ll report back as soon as iā€™ve verified everything (so far so good!)

@oliviercommelarbre I have F1255 and Iā€™ve made workaround for some channels that you requested. Should be working with custom channels.

things/nibe.things

nibeuplink:f1155:nibe [ user="...", password="...", nibeId="...",
customChannel01=40016, //Nibe_1255_Brine_Out_Temp
customChannel02=40015, //Nibe_1255_Brine_In_Temp
customChannel03=43439, //Nibe_1255_Brine_Pump_Speed
customChannel04=43437 //Nibe_1255_Floor_Pump_Speed
]

items/nibe.items

...
// CUSTOM CHANNELS

Number:Temperature Nibe_1255_Brine_Out_Temp_Channel "Brine out [%.1f Ā°C]" <temperature> (gHeatpump) {
channel="nibeuplink:f1155:nibe:custom#CH01" [profile="transform:JS", function="divide10.js"], // 40016 defined in nibe.things
expire = "10m"
}

Number:Temperature Nibe_1255_Brine_In_Temp_Channel "Brine in [%.1f Ā°C]" <temperature> (gHeatpump) {
channel="nibeuplink:f1155:nibe:custom#CH02" [profile="transform:JS", function="divide10.js"], // 40015 defined in nibe.things
expire = "10m"
}

Number Nibe_1255_Brine_Pump_Speed "Brine pump speed [%.0f %%]" <pump> (gHeatpump) {
channel="nibeuplink:f1155:nibe:custom#CH03", // 43439 defined in nibe.things
expire = "10m"
}

Number Nibe_1255_Floor_Pump_Speed "Heating pump speed [%.1f %%]" <pump> (gHeatpump) {
channel="nibeuplink:f1155:nibe:custom#CH04", // 43437 defined in nibe.things
expire = "10m"
}

transform/divide10.js

(function(i) {
    return parseFloat(i)/10.0;
})(input)

@AlexF What I am really missing is Current Priority. Is it doing hot water or is it heating or idle.
Is this possible to add?

@yozik04:
There is some data which is visible in the diplay of NIBE such as the current priority but it is not available via uplink.

There is a special channel I mentioned it a while ago which can be decoded (it is a bitset) and thus you can see if the heatpump is currently idle or cooling or heating or doing hotwater (I believe it has also registers for pool but I do not have one).

See here: Nibe uplink binding

I can decode a bitset in javascript. Do you know an address?

19 Š“ŠµŠŗ. 2018 Š³., Š² 18:01, Alexander F bot@community.openhab.org Š½Š°ŠæŠøсŠ°Š»(Š°):

thanks @yozik04 for the tip,
now iā€™m using the new DEV bundle recently compiled by Alex so i get these channels directly, however i didnā€™t know about the generic ā€œprofile/functionā€ thing or capability to link to expire. Very helpful, thank you!

For some reason this profile function does not work as expectedā€¦ Looks like a bug.

Hi all,

Iā€™m making the fist steps with the Nibe uplink binding, reading values is working fine already. But actually i have a problem with writing values, e.g. changing the state of ā€œTemporary Luxā€. Iā€™ve created the following:

Item:
Number TemporaryLuxMode ā€œTemporary Lux Mode [MAP(TemporaryLuxMode.map):%s]ā€ { channel=ā€œnibeuplink:f1155:F1155:hotwater#48132ā€}

Sitemap:
Switch item=TemporaryLuxMode mappings=[0=ā€œOffā€, 1=ā€œ3hā€, 4=ā€œonceā€]

Problem is, that i can set the mode from 0 to 1 using BasicUI, but after a short time the mode changes automatically back to 0:

If i set the corresponding parameter on the heatpump itself, i can see in the OH log (and also in the BasicUI) that the value changes from 0 to 1 and remains.

Can somebody give me a hint where is my problem?

Thank you in advance!

`

Hi all and Merry Christmas,
Hopefully someone her can help me with tracking, why some values, which my openHAB receives from NIBE uplink, look weird?

I have a fresh VVM325 /F2040-8 installation and could implement the machine into OpenHAB quite easily - thanks to @AlexF !

This set of items from the NIBEuplink binding show unexpected results or behaviours:

1) compressor#44073
The results for the operating time for the Hotwater shift constantly between the value, which is as well shown online (3 hrs), and the Degreminutes of the NIBE system. The log looks like this:

2018-12-25 19:38:37.195 [vent.ItemStateChangedEvent] - NIBE_OPT_HW changed from 3.0 h to -437.6 h
2018-12-25 19:38:37.275 [vent.ItemStateChangedEvent] - NIBE_DEG_MIN changed from -434.40000000000003 Ā°Ā·min to -437.6 Ā°Ā·min

The item is defined like this

Number:Time             NIBE_OPT_HW         "Total HW op.time compr [%d h]"     (gHeating)      { channel="nibeuplink:vvm320:mynibe:compressor#44073" }

The other counters for two other operating hours (Total and Compressor) do not show this behaviour.
For the Hotwater counter I have made a workaround and read only the max value for this item,as teh Degree Minutes are always negative (so far). However a way to stop this double reading would be better.

2) airsupply#40025, airsupply#40026, airsupply#40075
All these values are reported as -3277 Kw. I would expect some temperature values.

the items are defined in this way:

Number:Temperature      NIBE_AIR_EX         "Exhaust air temp. 1 [%.2f Ā°C]"     (gHeating)      { channel="nibeuplink:vvm320:mynibe:airsupply#40025" }
Number:Temperature      NIBE_AIR_VENT       "Vented air temp. 1 [%.2f Ā°C]"      (gHeating)      { channel="nibeuplink:vvm320:mynibe:airsupply#40026" }
Number:Temperature      NIBE_AIR_SUPP       "Supply air temp. 1 [%.2f Ā°C]"      (gHeating)      { channel="nibeuplink:vvm320:mynibe:airsupply#40075" }

Thanks for helping out.

Well, this is indeed weird. Did you define any rules which update the items?
Did you configure via paperui or via files? If you configured via files please post all your nibe related config.

Hi @Bertl,

do you have a paid subscription for write access at NibeUplink?
If you have such subscription you should be able to update the values via the official Nibe Uplink app or via web site.
If you do not have such subscription the binding is not able to set the values.

Hello @AlexF , thanks for quick reply.

all configuration is done via files. Thanks for having a look

Things:

nibeuplink:vvm320:mynibe [ user="user@gmail.com", password="pass", nibeId="ID"] 

Items

//NIBE Uplink binding - documentation: https://www.openhab.org/addons/bindings/nibeuplink/ 

Number:Temperature      NIBE_OUT_TEMP       "NIBE Outdoor Temp [%.2f Ā°C]"       (gHeating, gTemperatureOut)      { channel="nibeuplink:vvm320:mynibe:base#40004" }

Number:Time             NIBE_OPT            "Tot. op.time [%d h]"               (gHeating)      { channel="nibeuplink:vvm320:mynibe:base#44081" }

//Heatmeter
Number:Energy           NIBE_HEAT_CPR       "Heat Meter - Heat Cpr"             (gHeating)      { channel="nibeuplink:vvm320:mynibe:base#44308" }
Number:Energy           NIBE_HEAT_CPRADD    "Heat Meter - Heat Cpr and Add "    (gHeating)      { channel="nibeuplink:vvm320:mynibe:base#44300" }
Number:Energy           NIBE_HW_CPR         "Heat Meter - HW Cpr"               (gHeating)        { channel="nibeuplink:vvm320:mynibe:hotwater#44306" }
Number:Energy           NIBE_HW_CPRADD      "Heat Meter - HW Cpr and Add"       (gHeating)        { channel="nibeuplink:vvm320:mynibe:hotwater#44298" }

Number:Power            NIBE_ADD_PWR        "Int. el.add. Power [%d]"           (gHeating)      { channel="nibeuplink:vvm320:mynibe:base#43084" }


//Parameters for compressor 
Number:Dimensionless	NIBE_DEG_MIN        "Degree Minutes"                    (gHeating)      { channel="nibeuplink:vvm320:mynibe:base#43005" }
Number:Dimensionless	NIBE_FLOW           "Flow"                              (gHeating)      { channel="nibeuplink:vvm320:mynibe:base#40072" }

Number:Temperature      NIBE_SUPPLY_CALC    "Supply Temp Calculated [%.2f Ā°C]"  (gHeating)      { channel="nibeuplink:vvm320:mynibe:base#43009" }


//Warmwater
Number:Time             NIBE_OPT_HW         "Total HW op.time compr [%d h]"     (gHeating)      { channel="nibeuplink:vvm320:mynibe:compressor#44073" }
Number:Temperature      NIBE_HW_TOP         "Hot Water Top [%.2f Ā°C]"           (gHeating)      { channel="nibeuplink:vvm320:mynibe:hotwater#40013" }
Number:Temperature      NIBE_HW_LOAD        "Hot Water Load [%.2f Ā°C]"          (gHeating)      { channel="nibeuplink:vvm320:mynibe:hotwater#40014" }

//Heating
Number                  NIBE_Heat_OFFSET    "Heating Offset"                    (gHeating)      { channel="nibeuplink:vvm320:mynibe:general#47011" }
Number:Dimensionless    NIBE_SPEED_CP       "Cpr Speed Charge Pump"             (gHeating)      { channel="nibeuplink:vvm320:mynibe:compressor#44396" }
Number:Temperature      NIBE_SUPPLY_S1      "Supply Temp S1 [%.2f Ā°C]"          (gHeating)      { channel="nibeuplink:vvm320:mynibe:base#40008" }
Number:Temperature      NIBE_RETURN         "Return Temp [%.2f Ā°C]"             (gHeating)      { channel="nibeuplink:vvm320:mynibe:base#40012" }

//Outdoor Unit
Number:Time             NIBE_OPT_CPR        "Tot. op.time compr [%d h]"         (gHeating)      { channel="nibeuplink:vvm320:mynibe:compressor#44071" }
Number                  NIBE_STARTS         "Compressor starts"                 (gHeating)      { channel="nibeuplink:vvm320:mynibe:compressor#44069" }

Number                  NIBE_DEFROST        "Defrosting Outdoor Unit"           (gHeating)      { channel="nibeuplink:vvm320:mynibe:compressor#44703" } //0=No, 1=Active, 2=Passive
Number:Frequency        NIBE_FREQ_DESIRED   "Cpr Frequency Desired F2040"       (gHeating)      { channel="nibeuplink:vvm320:mynibe:compressor#40782" }
Number:Frequency        NIBE_FREQ           "Actual Cpr Frequency Outdoor Unit" (gHeating)      { channel="nibeuplink:vvm320:mynibe:compressor#44701" }

Number:Temperature      NIBE_AIR_EX         "Exhaust air temp. 1 [%.2f Ā°C]"     (gHeating)      { channel="nibeuplink:vvm320:mynibe:airsupply#40025" }
Number:Temperature      NIBE_AIR_VENT       "Vented air temp. 1 [%.2f Ā°C]"      (gHeating)      { channel="nibeuplink:vvm320:mynibe:airsupply#40026" }
Number:Temperature      NIBE_AIR_SUPP       "Supply air temp. 1 [%.2f Ā°C]"      (gHeating)      { channel="nibeuplink:vvm320:mynibe:airsupply#40075" }

Hi @mdnx,

I cannot find any issue in your configuration. I have checked my setup, I have a VVM320+F2040-8, so this is a very similar setup. I cannot reproduce your issues.

The airsupply channels require a air ventilation unit (ERS-XXX). Do you have such installed? But even if there was none installed it should not display wrong values/units.

BR
Alex

Hi @AlexF,

thanks for this information, i didnā€™t know that a paid subscription is necessary, so this was the reason for the problemā€¦

Hello @AlexF
Thanks for quick reply.
I have indeed no air exchanger installed, so I took these items out now.
I was originally assuming that the device had some sensors in the outdoor unit. Itā€™s a pity, that the documentation on the machines parameters from side of NIBE is kind of sparse. Have all values been reverse engineered?

I rebooted the OpenHab device now and both problems disappeared. The ondulating values in the Operating time vanished and NIBEuplink doesnā€™t respond to requests for the non existing air sensors.
1000 Tak

For F1255 Channel 40892 does not change. It seems to be always equal 512. At least when my pump has started to heat water nothing changed.