Validation of Passivhaus-Level Heating Performance

The main criterion for Passivhaus-level performance is achieving a space heating requirement better than 15 kWh per m2 of floor area per year (see e.g. this page from the Passivhaus Institut) when heating to an internal temperature of 20C.

One benefit of having a heating system listed on the Heatpump Monitor website is the Heatpump + Fabric dashboard, which orders systems by kWh/m2 and thus provides a direct view of whether buildings are performing at this level.

Screenshot of the “Heatpump + Fabric” dashboard on Heatpumpmonitor.org

A few points to note:

  • By default, this list is sorted by Electricity Input (Elec kWh/m2) rather than Heat Output (Heat kWh/m2) but that’s easy to change.
  • It’s not obvious but the Elec and Heat figures relate to the Combined performance of the heat pump, when delivering Space Heating and also when heating Domestic Hot Water.
  • There is no indication of the internal temperature achieved, so some buildings might be hotter (or cooler) than the nominal 20C used for the Passivhaus assessment.

The second point tends to increase the consumption figure – potentially quite significantly, because high-performance buildings can use just as much DHW as low-performance buildings, and the higher temperatures required for stored hot water (compared with space heating) results in lower efficiency from a heat pump.

Some systems listed on heatpumpmonitor.org provide additional data on whether they are delivering Space Heating or Hot Water at a particular point in time. If this is accurate, it allows the Hot Water heating periods to be filtered out from the results, providing a more representative view of the heat required for Space Heating. However, it’s clear that many systems don’t accurately report Space Heating mode – so the overall list is unrepresentative. It can be useful to filter out Hot Water production for a single system where the data is known to be accurate.

In my case, looking only at Space Heating drops the kWh / m2 from 13.8 to 13.1, demonstrating that this is even more compliant with the 15.0 kWh / m2 Passivhaus limit (even though the target indoor temperature is 21C, rather than 20C).

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.