Maybe this channel is only used by models which have a outdoor unit, basically all “VVM XXX” models. Maybe there is a equal channel for your model. I have written a tool that logs all possible channels (basically 10000-10500 + 40000-49999) to an excel file once per minute. You could then filter for changes. And of course you could trigger some changes on the Nibe while the logger is active.
I could share my code on github but it is really only a dirty tool.
Hi there, I have Nibe F470 heat pump and trying to bind it to Openhab via Nibe Uplink binding. I can see from the binding documentation this specific model is not supported. However I’m trying to use thing type F750 as it is same kind of product. Let see what happens.
So far it seems to work well with F470 as well. I can get various temperature values and also write fan speed setting.
Dear Alex, hope all is good for you your great project and wishing you a fantastic 2019 with continued successes!
little things to say really, first to finally report back that the DEV bundle you compiled for me after my contrib of mid-december has worked like a charm since then, so great, and thanks again.
then i guess you have received this warning from the nibeuplink API webmaster about this forthcoming upgrade end of Jan concerning this upgrade of the Transport Layer Security (TLS). Do you reckon we should do anything on our side to keep all working or it will be transparent?
Hi Olivier,
thanks for positive feedback regarding the new channels. I will wait a little bit more if there is any feedback on the other extensions and if no issues occur I will open a pull request to get these changes into the next openhab release.
The TLS change should be transparent to the binding as openhab and the binding both use http-client implementations which are stae of the art and thus support modern cipher suites.
thank you Alex for the quick answer concerningn TLS. thanks also for already considering merging soon into the official release. no rush for me but good to know, have a good day!
Trying to get this going.
Did some HTML tricks to pull everything from the status page of Nibe Uplink for my F1255-16
Here’s the output.
Initially, I thought I could do this and just simply map it as custom, but the binding unfortunately only supports 8 custom channels according to the documentation…
Name | ID |
---|---|
brine in | 40015 |
brine out | 40016 |
floor drying function | 47276 |
fuse size | 47214 |
status | 41191 |
average current | 41190 |
current | 41189 |
collector in | 40028 |
collector out | 40029 |
heating | 44896 |
hot water | 44897 |
status | 44908 |
price of electricity | 10069 |
AUX1 | 47411 |
AUX2 | 47410 |
AUX3 | 47409 |
AUX4 | 47408 |
AUX5 | 47407 |
X7 | 47412 |
country | 48745 |
product/sn/V | 0 |
Edit: Updated the complete list only including the missing ones.
Creating a new post to adress my issue.
openhab> bundle:list | grep Nibe
39 │ Active │ 80 │ 2.5.0.201901021609 │ NibeUplink Binding
2019-01-17 22:49:08.586 [DEBUG] [org.openhab.binding.nibeuplink ] - BundleEvent STARTING - org.openhab.binding.nibeuplink
2019-01-17 22:49:08.655 [DEBUG] [nk.internal.NibeUplinkHandlerFactory] - setHttpClientFactory
2019-01-17 22:49:08.669 [DEBUG] [org.openhab.binding.nibeuplink ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory}={service.id=472, service.bundleid=39, service.scope=bundle, component.name=org.openhab.binding.nibeuplink.internal.NibeUplinkHandlerFactory, component.id=309} - org.openhab.binding.nibeuplink
2019-01-17 22:49:08.687 [DEBUG] [org.openhab.binding.nibeuplink ] - BundleEvent STARTED - org.openhab.binding.nibeuplink
nibe.things
nibeuplink:Nibe:F125516 [ user="email", password="password", nibeId="12345", customChannel01=40015, customChannel02=40016, customChannel03=47276, customChannel04=40028, customChannel05=40029, customChannel06=44896, customChannel07=44897, customChannel09=44908 ]
nibe.items
Number:Temperature NIBE_STATUS_Avg_OT "avg. outdoor temp <BT1> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#40067" }
Number:Temperature NIBE_STATUS_HW_Charge "hot water charging <BT6> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:hotwater#40014" }
Number:Temperature NIBE_STATUS_HW_Top "hot water top <BT7> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:hotwater#40013" }
Number:Temperature NIBE_STATUS_OT "outdoor temp. <BT1> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#40004" }
Number:Dimensionless NIBE_STATUS_DegreeMinutes "degree minutes" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#43005" }
Switch NIBE_COMPRESSOR_MODULE_Blocked "blocked" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#10012" }
Number NIBE_COMPRESSOR_MODULE_Starts "compressor starts <EB100-EP14>" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#43416" }
Number:Dimensionless NIBE_COMPRESSOR_MODULE_Brine_Pump_Speed "brine pump speed <EP14-GP2> [%d %%]" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#43439" }
Number:Dimensionless NIBE_COMPRESSOR_MODULE_Heating_Medium_Pump_Speed "pump speed heating medium <EP14> [%d %%]" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#43437" }
Number:Temperature NIBE_COMPRESSOR_MODULE_Brine_In "brine in <EB100-EP14-BT10> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:custom#CH01" }
Number:Temperature NIBE_COMPRESSOR_MODULE_Brine_Out "brine out <EB100-EP14-BT11> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:custom#CH02" }
Number:Temperature NIBE_COMPRESSOR_MODULE_Condenser_Our "condenser out <EB100-EP14-BT12> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#40017" }
Number:Temperature NIBE_COMPRESSOR_MODULE_Heat_Medium_Flow "heat medium flow <BT2> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#40008" }
Number:Temperature NIBE_COMPRESSOR_MODULE_Hot_Gas "hot gas <EB100-EP14-BT14> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#40018" }
Number:Temperature NIBE_COMPRESSOR_MODULE_Liquid_Line "liquid line <EB100-EP14-BT15> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#40019" }
Number:Temperature NIBE_COMPRESSOR_MODULE_Return_Temp "return temp. <EB100-EP14-BT3> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#40012" }
Number:Temperature NIBE_COMPRESSOR_MODULE_Suction_Gas "suction gas <EB100-EP14-BT17> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#40022" }
Number:Time NIBE_COMPRESSOR_MODULE_Operating_Time "compressor operating time <EB100-EP14>" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#43420" }
Number:Time NIBE_COMPRESSOR_MODULE_Operating_Time_HW "compressor operating time hot water <EB100-EP14>" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#43424" }
Number:Frequency NIBE_COMPRESSOR_MODULE_Min_Freq "allowed compr. freq. min" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#43122" }
Number:Frequency NIBE_COMPRESSOR_MODULE_Max_Freq "allowed compr. freq. max" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#43123" }
Number:Frequency NIBE_COMPRESSOR_MODULE_Current_Freq "current compr. frequency" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:compressor#43136" }
Switch NIBE_CLIMATE_SYS_1_External_Adj "external adjustment <S1>" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#43161" }
Switch NIBE_CLIMATE_SYS_1_Floor_Drying "floor drying function" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:custom#CH03" }
Number:Temperature NIBE_CLIMATE_SYS_1_Calculated_Flow_Temp "calculated flow temp. <S1> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#43009" }
Number:Temperature NIBE_CLIMATE_SYS_1_Heat_Medium_Flow_Temp "heat medium flow <BT2> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#40008" }
Number:Temperature NIBE_CLIMATE_SYS_1_Return_Temp "return temp. <EB100-EP14-BT3> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#40012" }
Number:Temperature NIBE_CLIMATE_SYS_1_Room_Temp "room temperature <BT50> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#40033" }
Switch NIBE_ADDITION_Blocked "blocked" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#10033" }
Number:Time NIBE_ADDITION_Operating_Time "time factor" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#43081" }
Number:Power NIBE_ADDITION_Operating_Power "electrical addition power" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#43084" }
Number:Power NIBE_ADDITION_Operating_Max_Power "set max electrical add." (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#47212" }
Number:Dimensionless NIBE_FLM_Fan_Speed "fan speed [%d %%]" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:airsupply#10001" }
Number:Temperature NIBE_FLM_Collector_In "collector in <AZ1-BT26> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:custom#CH04" }
Number:Temperature NIBE_FLM_Collector_Out "collector out <AZ1-BT27> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:custom#CH05" }
Number:Temperature NIBE_FLM_Exhaust_Air "exhaust air <BT20> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:airsupply#40025" }
Number:Temperature NIBE_FLM_Extract_Air "extract air <BT21> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:airsupply#40026" }
Number NIBE_SPA_Heating "heating" { channel="nibeuplink:Nibe:F125516:custom#CH06" }
String NIBE_SPA_HW "hot water" { channel="nibeuplink:Nibe:F125516:custom#CH07" }
Switch NIBE_SPA_status "status" { channel="nibeuplink:Nibe:F125516:custom#CH08" }
Switch NIBE_OP_Vacation_Mode "Vacation mode" { channel="nibeuplink:Nibe:F125516:base#48043" }
Switch NIBE_OP_Addition "Addition Blocked" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:base#10033" }
Number NIBE_OP_Lux "Temporary luxury mode" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:hotwater#48123" }
Number NIBE_OP_HWMode "Hot water mode" (Nibe, PersistChange) { channel="nibeuplink:Nibe:F125516:hotwater#47041" }
Yet I don’t see that anything is happening, no errors, nothing when refreshing things-file or items-file. It seems like the thing is not being registered correctly through nibe.things…
Any ideas?
Solved:
OK!
It was picky about the nibeuplink:Nibe:F125516 which needed to actually be specified as f1155.
i.e. nibeuplink:f1155:16-CU RTFM
Hi @Lockzi,
thanks for your feedback.
These channels have recently been added to the DEV version.
Most of the other channels you mentioned are channels which will most likely never change like fuse size, AUX1-5, X7, country, product/sn. Thus it does not make any sense to include them in openhab.
In a very early version of this binding each and every channel was included which means there were more than 1000 channels per model. People were lost and stuff was completely unmaintainable.
So it was decided to focus on a reduced set of very common channels which provide relevant information. If you could give me more information on those channels I could perhaps add a few of them.
I will need:
- a brief description what is the purpose of this channel
- a unit which is used by the channel (in case of a numeric value)
- a mapping of numer values to textual representations in case of textual status channels
- a scaling factor (will be either 1, 10 or 100)
For those which will not be added you will have the chance to use it as custom channel.
Thanks for your reply and all work with this binding Alex!
I’ve never been accustomed to a binding with UoM before. Great learning, and also I do now recognize why it’s beeing limited in readable values in order to keep the maintenance of variables down. I how ever am more used to formatting my own values.
I am unable to get brine in/out working using custom channels (they are not loading for some reason? Even though I see them in the JSON response)
|brine in|40015|
|brine out|40016|
Is there a DEV version built available for download or do I need to build it myself?
Update: A suggestion would be to just include a channel for the RAW json output. The users would then be able to extract whatever items they would like. I do that on multiple parts through out my system.
Many thanks!
Here you go: http://friese-de.eu/openhab2/
The 2.5.0-SNAPSHOT version should be compatible with openhab 2.4.0 as of now.
I am planning to extend the amount of custom channels and also include an option to apply a custom scaling factor to those custom channels. This should address your needs and this should also be much more convenient than processing raw json data. Thus it is a feature which will be used by more people.
Many thanks Alex, I was already using that 2.5.0 snapshot.
I’ve updated to OpenHAB 2.4 release.
Yet I am unable to get the correct values for FLM Collector In and Out. The purpose of that variable is that the ventilation heat exchanger pre-heats the incoming brine line (by roughly 1 degree C). So, logically the FLM Collector In should be roughly the same as Brine In.
I also have the same problem with the FAN speed. The rest of my custom channels are static, so I don’t really know if they work or not at this point or is showing a previously saved value.
Things
nibeuplink:f1155:16-CU [ user="email", password="pass", nibeId="12345",
customChannel01=47260, //FanSpeed
customChannel02=40028, //NIBE_FLM_Collector_In
customChannel03=40029, //NIBE_FLM_Collector_Out
customChannel04=47276, //NIBE_CLIMATE_SYS_1_Floor_Drying
customChannel05=44896, //NIBE_SPA_Heating
customChannel06=44897, //NIBE_SPA_HW
customChannel07=44908 //NIBE_SPA_Status
]
Items
Number NIBE_FLM_Fan_Speed "fan speed[MAP(nibeFan.map):%s]" <fan> (Nibe, PersistChange) { channel="nibeuplink:f1150:16-CU:custom#CH01", expire="1m" }
Number:Temperature NIBE_FLM_Collector_In "collector in <AZ1-BT26> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:f1155:16-CU:custom#CH02"[profile="transform:JS", function="divide10.js"], expire = "1m" } // 40028 defined in nibe.things
Number:Temperature NIBE_FLM_Collector_Out "collector out <AZ1-BT27> [%.1f °C]" <temperature> (Nibe, PersistChange) { channel="nibeuplink:f1155:16-CU:custom#CH03"[profile="transform:JS", function="divide10.js"], expire = "1m" } // 40029 defined in nibe.things
divide10.js
(function(i) {
return i*0.1;
})(input)
Hi,
I found a small bug when adjusting the degree minutes to a negative number.
The allowed value should range from -30000 to 30000 for base#43005 and the allowed write value is ‘any integer’, but the validation seems to mis the minus sign (-)
2019-01-28 20:07:59.460 [INFO ] [llback.AbstractUplinkCommandCallback] - channel 'base#43005' does not allow value '-150' - validation rule '[0-9]+'
2019-01-28 20:07:59.462 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
org.openhab.binding.nibeuplink.internal.model.ValidationException: channel (base#43005) could not be updated due to a validation error
at org.openhab.binding.nibeuplink.internal.command.UpdateSetting.prepareRequest(UpdateSetting.java:93) ~[?:?]
at org.openhab.binding.nibeuplink.internal.callback.AbstractUplinkCommandCallback.performAction(AbstractUplinkCommandCallback.java:130) ~[?:?]
at org.openhab.binding.nibeuplink.internal.connector.UplinkWebInterface$WebRequestExecutor.run(UplinkWebInterface.java:159) ~[?:?]
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) [?:?]
I think in the org.openhab.binding.nibeuplink.internal.model.BaseChannels class on line 92 (on current Master branch) should be:
public static final Channel CH_43005 = INSTANCE.addChannel(new ScaledChannel("43005", "Degree Minutes (16 bit)",
ChannelGroup.BASE, ScaleFactor.DIV_10, "/Manage/4.9.3", "-?[0-9]+"));
Can you change this to allow negative degree minutes to be set?
Hi @AlexF ,
is it a known issue that after updating a thing of the NibeUplink binding the connection does not build up properly again?
When I e.g. change my password of the Nibe Uplink account and change this setting in the thing via PaperUI, the status changes from “Online” to “UNKNOWN - waiting for web api login” and remains there until a restart of the openhab system/service.
I also encountered this problem when changing the custom channels as well.
Going a bit deeper I found the following in the log, wondering about the third log entry (update of the item outdoor temperature):
2019-01-30 22:14:43.544 [me.event.ThingUpdatedEvent] - Thing 'nibeuplink:f730:0c39773a' has been updated.
2019-01-30 22:14:43.547 [hingStatusInfoChangedEvent] - 'nibeuplink:f730:0c39773a' changed from ONLINE: logged in to UNKNOWN: waiting for web api login
2019-01-30 22:21:14.767 [vent.ItemStateChangedEvent] - NibeF730_Base_BT1OutdoorTemperature changed from 1.4000000000000001 °C to 0.9 °C
So there is some connection availabe as the Nibe Uplink web site shows this correctly changed temperature value of 0.9°C:
But the PaperUI stays on the old value:
The HABPanel also shows the correct value:
Thanks for your assistance.
Regards
Jonathan
Hi @AlexF,
just to give you an update on my last post:
It seems to have healed itself after a while. I had a look into the settings today morning and the status is now “online”.
Now I recognized another thing which I find “interesting”:
I cleared the custom channels from the thing settings:
But they still show up in the PaperUI Control Section:
Has this something to do with caching of openHAB or even PaperUI?
Thanks!
Regards
Jonathan
The PaperUI shows “Items”. To remove those you also need to delete the items. If persistence is activated those items still show old values even if openhab is restarted because last value from persistence is used.
Hi @AlexF,
sorry, that was my fault - I thought I have already deleted these items…
Next time I have to double check that.
Regards
Jonathan
is now merged into openhab master. Next milestone version should then contain all changes which are currently available in my DEV version.
Hi @AlexF,
I just found out, that channel general#47011
is also available for the F730 models:
My heating offset is set to 1 at the display unit of my heat pump - this value is not visible in the online monitoring (maybe in the paid part…).
Edit: channel airsupply#47260
is also available on F730 with the same values given for F750.
Regards
Jonathan
Hello all,
I receive a communication error since a day.
When I update the binding in paperui or restart in console The log says
2019-05-04 09:51:48.535 [hingStatusInfoChangedEvent] - ‘nibeuplink:vvm320:mynibe’ changed from OFFLINE (COMMUNICATION_ERROR): Total timeout 120000 ms elapsed to OFFLINE (COMMUNICATION_ERROR): Max requests queued per destination 1024 exceeded for HttpDestination[https://www.nibeuplink.com]@1a98073,queue=1024,pool=DuplexConnectionPool@bb2a7e[c=2/2,a=2,i=0]
this is the log after i restart the binding from the console:
2019-05-04 12:05:32.461 [hingStatusInfoChangedEvent] - ‘nibeuplink:vvm320:mynibe’ changed from UNKNOWN: waiting for web api login to UNINITIALIZED
2019-05-04 12:05:32.486 [hingStatusInfoChangedEvent] - ‘nibeuplink:vvm320:mynibe’ changed from UNINITIALIZED to UNINITIALIZED (HANDLER_MISSING_ERROR)
2019-05-04 12:05:35.793 [me.event.ThingUpdatedEvent] - Thing ‘nibeuplink:vvm320:mynibe’ has been updated.
2019-05-04 12:05:35.827 [hingStatusInfoChangedEvent] - ‘nibeuplink:vvm320:mynibe’ changed from UNINITIALIZED (HANDLER_MISSING_ERROR) to INITIALIZING
2019-05-04 12:05:35.845 [hingStatusInfoChangedEvent] - ‘nibeuplink:vvm320:mynibe’ changed from INITIALIZING to UNKNOWN: waiting for web api login
I can log in to the NIBE uplink webpage and see, that my NIBE systems sends regularly data.
An idea how to resolve this, or where to start looking for the cause? Thanks
SOLVED: A reboot of the rasPi openhab is running on resolved the issue. A restart of the openhab service did unfortunately not solve the problem. (Annoying that services and rules stop suddenly working on an openHAB system and require restarts)