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.