NIBE F1145 GSHP Migration from NIBE Uplink to myUplink Platform

Historically, NIBE’s F-series of heat pumps (like my F1145 GSHP) used the “NIBE Uplink” Cloud-hosted monitoring platform and the newer S-series heat pumps used the newer “myUplink” instead. The S-series models have more capable control system hardware and touch-screen displays and benefit from some of the more advanced features of the myUplink platform. The network protocols used to link the heat pump to the Cloud platform are also different – rather more ‘dynamic’ so setting changes made via the myUplink app take effect more quickly. Another important change is that firmware updates are downloaded automatically and only need confirmation from the control panel, rather than having to be installed via a slightly temperamental procedure using a USB drive.

About a year ago, NIBE decided to retire NIBE Uplink and move the F-series units across to the myUplink platform and they’ve been gradually making firmware updates available which, when installed, point an F-series heat pump at myUplink instead of NIBE Uplink. They started with the more common models such as the standalone SMO 20 controller (used with various F-series ASHP models) and have been working their way through their model range. The SMO 20 update was made available in late 2023 whereas the firmware update for my F1145 only became available in mid 2024.

I had been running Version 9478(R1) of the F1145 firmware, dated 2021-07-09 (the latest available until mid 2024) and I upgraded to Version 9699(R5), dated 2024-07-03. The update was applied without any issues and after logging into the myUplink platform using my NIBE Uplink login credentials, my heat pump appeared in the myUplink dashboard. My installer’s account, which was granted the ‘Manager’ role for my system. migrated too – maintaining their access.

Observations on NIBE Uplink Network Communications

Roughly every 30 seconds, the unit issued a DNS ‘A’ record query for control.nibeuplink.com which resolves to a CNAME record pointing at an azure.com address. It then proceeded to connect to that address using the HTTPS protocol and exchange about 11 packets of data before closing the HTTPS connection. Periodically there were NTPv4 queries to ntp.nibeuplink.com which maps to CNAME time.google.com (although I have been substituting the address of a local NTP server instead).

Observations on myUplink Network Communications

Looking at the network communications following the migration, there are many more server addresses in play; ones I spotted include:

  • iotstatic.myuplink.com
  • api.myuplink.com
  • internalapi.myuplink.com
  • auth-emmy.myuplink.com
  • ipv4.myuplink.com
  • ntp.myuplink.com

It looks like the main data flow is now on TCP port 8883, which implies MQTT-over-TLS, on a persistent TCP connection. By default there seem to be updates every minute and, interestingly, whenever the myUplink smartphone App is accessed there’s a lot more activity that gets triggered.

ntp.myuplink.com is mapped to a CNAME of se.pool.ntp.org – i.e. one of the servers in the public NTP pool for Sweden.

Implications for Heat Pump Monitoring

I had been calling the NIBE Uplink API every 2 minutes from an automated script, to retrieve operational parameter values such as temperatures and circulation pump speeds, and storing those in a local database for display using the Grafana graphing dashboard. Some of these parameters were also being uploaded (via a separate automated script) to emoncms.org for display on the heatpumpmonitor.org dashboard.

While there is also a good API for myUplink, it’s structured differently – actually a bit ‘better’ in that fewer API calls are required to retrieve more parameter data. I now need to update the scripts so as to reinstate the data download to my local database. Since the API is looking more efficient I’m minded to increase the frequency to every minute.

New Technical Article: NIBE Heat Pump Monitoring via myUplink API

NIBE are in the process of closing down the old NIBE Uplink API used by their F-series heat pumps. Customers are being invited to migrate to the newer myUplink API service instead, which has always been used by the S-series heat pumps.

Both APIs are broadly comparable, but different. In particular, they both require OAuth2 API Authentication which can be problematic for people not familiar with it. (The myUplink API adds a further, simpler ‘flavour’ of OAuth2 which holds the prospect of being easier to use – but also risks adding confusion.)

I have adapted the earlier Technical Article on calling the NIBE Uplink API from Python scripts into a new Technical Article: NIBE Heat Pump Monitoring via myUplink API (also from Python scripts).