[APP][PRO] Nibe MyUplink

Really appreciate your efforts!

Log one after save: 138dd194-987e-410e-be7c-018d036f3577
All values refreshed.

Log two after 10min: 030061cb-c4b1-441f-b0d7-d63dbe94fbc0
Value stuck for 10 mins

According to the logs you shared, the value of the data-point “VV min kapacitet” was not changed:
From the log you sent right after setting the capabilities:

"category": "Varmvatten",
"parameterId": "61653",
"parameterName": "VV min kapacitet",
"parameterUnit": "%",
"writable": true,
"timestamp": "2024-01-04T22:47:48+00:00",
**"value": 49,**
**"strVal": "49%",**
"smartHomeCategories": [],
"minValue": 490,
"maxValue": 900,
"stepValue": 10,
"enumValues": [{
"value": "490",
"text": "FrÄn",
"icon": ""
}
],
"scaleValue": "0.1",
"zoneId": null
}

From the log you sent AFTER you waited 10 minutes:
{
"category": "Varmvatten",
"parameterId": "61653",
"parameterName": "VV min kapacitet",
"parameterUnit": "%",
"writable": true,
"timestamp": "2024-01-04T22:47:48+00:00",
**"value": 49,**
**"strVal": "49%",**
"smartHomeCategories": [],
"minValue": 490,
"maxValue": 900,
"stepValue": 10,
"enumValues": [{
"value": "490",
"text": "FrÄn",
"icon": ""
}
],
"scaleValue": "0.1",
"zoneId": null
}

Are you sure that the value of this item was supposed to change within those 10 minutes?
Where do you see a different value? On the Phone-app of the device?

Nothing has changed for 4h now but now you making me wonder. All those values are quite static.
ATM i have same values on myuplink. I did change the “Tid till filterbyte, d” param to “Tid till” on my last config change suspecting the , would crash the api call. Maybee it helped I will give it some time and report back the results. By tomorrow I defiantly know due to the filter change param.

Thank you - looking forward to your answer tomorrow.

@Sigurdur_Birgisson - I did not hear back from you: regarding the hang you had - does it reprodece every time you do this operation? Or did it happen only once?

Guys - I am trying to help someone with a NIBE-F730 pump to activate the app. No luck so far.
Does anyone has an F-series heat pump and is willing to share with me privately a Client-ID and a Client-Secret, so I can compare between the two?

Actually looks like the values in myuplink.com are stuck to so it seems like a heater → my uplink com issue. Will re add it when I get home from work today. Sorry for taking your time I should have checked that first.

That’s perfectly OK. Thank you for updating.
Feel free to approach if needed anytime.

Sorry, I tried only once, and have not had any time to try again. I disabled the app to not have any issues with it.

One thought I had though, where are you getting all the strings for values to add as capabilities? I mean, I just took 10 that looked interesting, but in hindsight I am thinking one or more maybe is not available for my specific heat pump? if so, it would be plausible that this causes an issue when adding illegal capabilities? So before I try again, maybe shed some light if you populate the list from my specific heat pump, or from a generic list from myuplink?

The way it works is as follows:

  1. Every minute, I query for all datapoints available on the device
  2. I go over the datapoints and for each datapoint,
    a. if there’s a capability pointing to it - I updated the capability value.
    b. if there has been a change in the value of that datapoint, I trigger a datapoint-changed event so flowcards will trigger

The names of the datapoints are coming from the device itself. I don’t have any name that is hard-coded in the app itself. Keep in mind that names can be localized, so even if your device work in other language, the logic will work.
The only exception is for the power-meter - I do have the name of the power-meter datapoint hard coded (in many languages), but this is only on a “best effort” manner: if I don’t find any datapoint that fits that name - no problem, I just don’t update the energy consumption capability.
The user has also a way to set the name of the energy datapoint if I couldn’t find it automatically.
(Notice that Energy is still not supported in the version you are using, it will be released in the next version)

So - on any case, this is not the reason for the hang you were observing.
If you have an option to test again and see if the issue reproduces, it would be great.

All,

Today I published a new (hopefully final) version of the app.
This version includes fixes and enhancements based on the feedback of all of you:

  1. Added support to Energy meter - the app will automatically select the appropriate datapoint for measuring energy. The user can override the system’s decision by changing the name of the energy consumption datapoint on the device settings page
  2. Added an error when trying to pair with unsupported devices. Currently, it looks like the F-Series devices are not properly supported, so when you try to add an F-series device the app will refuse. If the user wants to override this check and connect that device, he can check “Override device check” on the app settings page (at his own risk
)
  3. Change the name of the application to “NIBE through MyUplink” so it will be clear to users that it uses the MyUplink API
  4. Zone settings - fixed the “Set zone settings” flow card to include only the settings that can be changed on a zone, instead of all of the zone settings
  5. Several minor bugfixes


The app is now being reviewed by Homey, hopefully they will be quick.
Till the app is approved, the test-app link is not available (Homey’s rules).

I would like to thank everyone who sent feedback so far, as you can see - it affected my app a lot.
Please feel free to test the new version once its published on the test-link. I will drop another message once it happens.

Ok, so I wanted to re-create my issues, but it seems my app has been updated as well =) When looking at the device with the updated app, I had different capability names in the actual status and the settings that I had set. Not sure of that was due to the earlier issue or not, so I decided to remove the device to try again.

So I got the unsupported message here is the log ID, eeb88cf2-8f50-454c-b8ff-5fe03ba774e8

Will override and add now.

Ok, so I have re-added my heat pump now. And looking at the 3 places of 1. All options given for capabilities and 2. What I inserted and 3. What is used, well its a mess. Please have a look at the attached image of what gets there with what I have chosen.

  1. There are two names Status. I added one, and got both
  2. I added RPS to get the actual currently running RPS, but instead I got both other RPS related for Max RPS and Min RPS hot water
  3. I chose Degree minute, I got the Start at Degree minute

I would say a deal-breaker to get right =) Im sure you understand =)
Log here: 4cce963f-bb24-4027-ad1c-bd5f66ab702b

I will get to my computer soon and will explain tbe algorithm and the way it works.
But before we both call it a night, one important question: did you reproduce the hang of the device as it happened on tbe6 first time you used it?

I had just gone to bed after it all looking ok. But the heat pump direct UI was unavailable. After disabling the Homey app again it is now working again.
It sure looks like there is some issue. Not being able to monitor the heat pump with my phone at home will also make it hard for me to get this app running


Looking at the network traffic, it sure looks like spikes, but it is not very much really. Might be worth reaching out to the myUplink team. I may consider it

Going to bed now though


So - let me explain how the algorithm works, and then I will explain each behaviour you have seen.
I am very much open to suggestions on how to change it so it will be more clear.
The algorithm is going over the names you placed on the config window, one by one.
For each item you have, I am going over all the datapoints your device has. Each datapoint that contains the string you put, will be added.
So - if, for example, you type “hot” in one of the options, I will go over the list of datapoints and will insert “Hot water mode” and then I will insert “Hot water set point” and then “Hot water minimum capacity” and so on. So one config item will add 3 datapoints to the capabilities window (or maybe even more).

Now - let me explain the behaviour you have seen one by one:

  1. Typed “status” and see two “status” that were added - this is simply because your device (from some reason), has two different datapoints with the name “status” as you circled it in red. So I went over the list, found the first one, added it, and then found the second one, and added it two. Notice that their values is different, so its actually two different datapoints with the same name (maybe you can look at the documentation of your device to understand the difference between them)
  2. Added “RPS” and got “MaX RPS” and “Min RPS” - going over the list of datapoint, you would see that the first item that contains the word RPS is - indeed - “Max RPS”, and then “Min RPS”, and then “RPS”. I guess I hit the first one and added it, and then when I got to the second one (Min RPS) I had no more places left (we are limited to 10 capabilities) so it was not added, Same for RPS itself.
  3. I chose Degree minute, I got the Start at Degree minute - Same: looking at the list from top to bottom, the first item you find which contains the words “Degree minute” is “Start degree minute” and then, when I got to “Degree minute” in the list, there wan’t a place left anymore


I guess that the only way to solve this confusion is to be more strict: I can look only for exact matches of the names you put in the configuration. Not checking if the string is contained in the dapatpoint name, but only if it’s exactly similar (I can maybe be flexible of the case - be agnostic to uppercase/lowercase).
So if you put RPS for example, I will only look for a datapoint with the exact name of RPS. “Min RPS” and “Max RPS” will not be added.
This will require the user to work harder - he will have to specify EXACTLY the name of the datapoint. Not only part of it.
On the other hand, the results will be much more clear.

What do you think? Will it be better?

Maybe I don’t understand the problem, but the app was designed for Nibes my uplink and if I understand it works exactly like the modbus version. You just extract the values from Nibe put them inte Homey for display. And use some action cards for controlling the Nibe like warm water production etc.

If your heatpump can be controlled through MyUplink, my app will work.
My app is communicating through MyUplink API, so it doesn’t care which pump is behind it as longas it can be controlled by MyUplink.

What you call strict checking is definitely what I would expect. I mean, as a user, I have already gotten served all the keys available for 10 capabilities. If I define the 10 capabilities I want, I am not expecting the app to choose any other at random, and leaving out the ones I have chosen With the RPS example, the two I get are settings that will never change, where “RPS” is the ever changing value that I really want to monitor. Same with Degree minute.

Users will not be guessing these capability names, but will be copy-pasting from the provided list for sure.

ON the flip side, what is the reason you choose to limit the capabilities to 10? is it a Homey thing? Comparing to the Home assistant integration that I just got working as well, that automatically takes in just all values as sensors and controls. =)

If you just take in all values available, you would also remove that extra steps from all users installing.

Another question, how often do you poll the myUplink API? does that change depending on the capabilities?

Another question for you. I dont see the capabilities show up when looking at the insights screen (only power) for the device. This would be hugely beneficial, and would be a big reason for me to add the device in the first place.