[APP][Pro] Nibe Live -- Local Nibe control, split into the devices you actually automate

Hey all,

Nibe Live 1.0 is out — and out of test. Everything up to now was on the test channel; this is the first version on the Homey App Store proper.

It began as a fork of @Jan_Sparud 's app to add cumulative energy consumption, and grew into something that no longer fitted his app.

What it is: a local app for Nibe S-series heat pumps. Modbus TCP on your own network — no myUplink account, no cloud, readings in seconds rather than minutes.

One Homey device per function

Your pump does several jobs, and you rarely want to automate them together — “boost hot water when power is cheap” has nothing to do with your heating curve. So each function pairs as its own Homey device:

Function What it carries Thermostat Energy + COP Price adaption
Main Operating priority and mode, alarms, diagnostics, runtime stats Standby draw + Total COP master switch
Heating Room temp + setpoint, heat curve, supply temps, outdoor cut-offs, ventilation :white_check_mark: :white_check_mark: :white_check_mark: 1–10
Hot Water Demand mode + its temperatures, “More hot water” boost, periodic charge :white_check_mark: :white_check_mark: 1–4
Pool Pool temp + target, start/stop band (POOL 40) :white_check_mark: :white_check_mark: * follows master
Cooling Cooling permit, night cooling, start/stop outdoor temps :white_check_mark: * :white_check_mark: 0–10
Solar Generation now + total (EME 20) production only
  • Each one’s on/off is real — it’s that function’s Allow register on the pump. (Nibe doesn’t expose “Allow hot water” over Modbus on S2125, S320/S325, S330/S332 or S735.)
  • Energy + COP: the pump reports one total power draw and the app splits it by what the pump was doing, so each function gets its own meter in Homey’s Energy tab. Delivered heat comes from the pump’s own counters, so COP is a real number, over a rolling 30-day window. * those two counters are missing on some models — no COP there, everything else works.
  • You pick which ones to add during pairing, and can change your mind later with Repair.

Also in there

  • Alarms in plain language“438: Lost connection to wireless device”, not 438. All 467 S-series codes, with a Flow trigger that carries the description.
  • A trigger that explains itself when the pump switches what it’s producing — in a sentence, with the numbers behind it.
  • Everything writable works from a Flow.

What you need

  • A Nibe S-series pump on the same network as your Homey Pro
  • Modbus TCP switched on at the pump: menu 7.5.9
  • That’s it — pairing sweeps your network and finds it

Already running the test version?

  • Same app, out of test. Your devices and selections carry over.
  • No Repair needed — but I’d run it anyway (device menu → Repair) to be safe.
  • No more “run Repair after this update” releases. From 1.0, a rename carries a proper migration instead of breaking your Flows.

Links

Credits

  • Jan Sparud — the original app.
  • Henrik Aldermo (halderex) — the alternate-address mechanism that lets a register sit at a different address per model, and working out how the pump wants a 32-bit value written, which is why you can set your indoor temperature from Homey at all.
  • yozik04/nibe — register definitions cross-checked against it. Alarm text from NIBE’s own published list.

Not affiliated with NIBE. Feedback very welcome — especially from anyone on a model that isn’t an S1155.

Hiya,

I have installed it and it looks great! Are all the modbus registers available, though, and will they be upgraded when more are made available through firmware updates? I have been looking for the used and produced energy per hour registers and saw them in the csv but couldn’t find them in the app, only total energy.

I’ve got an S2125 with a VVMS320, by the way.

Hey!

Should be no problem to add them. Out of curiosity, what do you use them for?

My goal is to calculate COP values, which I did before in Home Assistant.

Got it. Makes sense. A bit curious on the actual calculations, can you pass that along? I might be able to give you COP directly as an insight actually?

I haven’t made them yet, but it comes down to produced energy/used energy. The Nibe provides these two values via Modbus for every hour for heating and hot water separately. The trick is to create the formulas to calculate the COP per day/week/month/year/all-time using these Modbus registers. With Home Assistant you can achieve this relatively simply and then show the values in Homey using the Community app, but it would be very interesting if I could do it in Homey.

Yeah, the challenge is those registers reset every hour I think, so I’d need to store the last value before it resets, but should be doable.

@Aziraphale Ive got a proposed solution but it’s a bit stuck in the Athom approval process at the moment.

Will revert back as soon as I have a plan.

@Aziraphale You can give it a go now. There’s consumption and production per device as well as a rolling 30 day COP value.

Wow, that’s absolutely brilliant! I’ll give it a try and get back to you with feedback!

Forgot to add you may need to delete and re-pair since there’s quite a lot of under the hood changes too :sweat_smile:

Hi @hyper!
This sounds like a very good initiative!
I have an F730 and would be very interested in not having to go through the Nibe MyUpLink cloud. It always feels safer to have control over things locally.
Today I use several Nibe apps in Homey to be able to read certain parameters and set certain parameters. However, all of them require access to the cloud.
So if you have the opportunity to add the F730 to your app, I am clearly interested in implementing and testing. Please, take your time - I’m not in a hurry.
Thnx!

EDIT: Sorry, I was too quick and eager. After reading further I realize that the F730 has no Modbus TCP. Only after installing the MODBUS 40 accessory - at a not entirely reasonable cost - and installing a general RS485 to Ethernet hardware. Then possibly there may be Modbus TCP…
So I get to keep the cloud and my current solution.

@Krisstenswe I’ve got a new version, but it’s stuck with homey pending the full final review of the app. Sometime next week I’d hope :rocket:

EDIT: I know saw your edit. Bummer! Hopefully someone else with F-series will get some value from it.

Nice work @hyper ! Out of intrest, is the source code available somewhere? I’d love to help out with testing and maybe contribute if needed. I live in Sweden and have an S735-4.

Sweet! Have a look here: GitHub - lovethyresson/com.nibe.local: Nibe S-series Homey App · GitHub

I’ve watched the COP for some time now but heating, hot water and cooling all report that they haven’t got any data yet. This is the same for other entities, like used energy. Is there anything I can do to get this working?

@Aziraphale Hm.. a couple of things that would help me narrow it down:
My suspicion is that current power is not being allocated correctly, if so everything else will fail. Having studied this a bit more I think S2125 uses a different register for current power which would explain more or less everything.

To help me confirm:

  • If you look at current power on the devices, does it show anything?
  • If you look at Energy used on the devices, does it show anything?
  • Which model type does it specify for you in advanced settings?

Then, after you’ve noted those things down, I’ve got a hunch 0.9.9 should fix this, so:

  1. Install 0.9.9
  2. Remove your devices
  3. Pair your devices again
  4. Go into debug logging and turn it on
  5. Restart the Nibe Live app
  6. Wait for an hour
  7. Send me a diagnostic report

Thanks!

Great app @hyper ! I’ve started running it on my Homey Self Hosted instance connected to a Nibe S735. Had Claude compare the code with the work I did on device-splitting and MyUplink. Ran a couple of longer tests to validate the energy algorithm with S735 as an additional device (found your “todo”) and have posted the result as a PR: S735 verification of the per-function energy log (2283–2303) by halderex · Pull Request #2 · lovethyresson/com.nibe.local · GitHub
Just let me know if there are other things you want me to test on the S735.

Hey,

yeah I’ve been working back and fort on the S2125/320 models. They different quite substantially in register setups unfortunately. Key difference is that the instantaneous power values are so slow that my trapezoid integration just produces gibberish.

I’m currently testing a version that uses the native registers for used/produced per function, the downside instead is that they are one hour behind which ruins real time attribution which in turn means quarterly energy prices don’t work too well:/

What I’m trying now is using real time allocation based on 2305 (my S1155 uses 2166), which is slower and then reconciling that based on the full per function used/produced values. An issue being that homey does not allow correcting past values, so the only option is to try to adjust for the error in future hours.

Good catch on Smart Price Adaption btw, had not considered that.

Needless to say, none of these options are great, Happy to discuss alternatives :folded_hands:

Will look at the results in more detail tomorrow.

@Aziraphale Phew .. lots of hours now, but there’s a 0.9.13 just released to test. It changes a whole bunch of things, including energy allocation logic and COP calculations (more details in release notes).

I’d love for you to give this a spin, if all works well, I’ll release this as 1.0 next week :tada: