How to connect to Nibe heat pump without the cloud

Hi Jevgeni,

I am trying to add your repository to the add in store but keep getting an error.

I am using “https://github.com/yozik04/nibe-mqtt” as the link but it keeps saying Invalid Add-on repository!

Any help would be appreciated.

You may want to use this repo https://github.com/rtitmuss/hassio-nibe-mqtt

1 Like

the other repo by Jevgeni has modbus tcp.

I guess model: is important, since I wrote F2120 pump and got an error in log.

This is my log in Nibe Add-on:

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/nibe/heatpump.py", line 78, in get_coil_by_name
    return self._name_to_coil[str(name)]
KeyError: 'compressor-frequency-actual-43136'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/bin/nibe-mqtt", line 8, in <module>
    sys.exit(main())
  File "/usr/lib/python3.10/site-packages/nibe_mqtt/console_scripts/nibe_mqtt_service.py", line 26, in main
    service = Service(conf)
  File "/usr/lib/python3.10/site-packages/nibe_mqtt/service.py", line 40, in __init__
    self.poller = PollService(self, poll_config)
  File "/usr/lib/python3.10/site-packages/nibe_mqtt/service.py", line 147, in __init__
    self._coils = [self._get_coil(key) for key in conf["coils"]]
  File "/usr/lib/python3.10/site-packages/nibe_mqtt/service.py", line 147, in <listcomp>
    self._coils = [self._get_coil(key) for key in conf["coils"]]
  File "/usr/lib/python3.10/site-packages/nibe_mqtt/service.py", line 151, in _get_coil
    return self._heatpump.get_coil_by_name(name_or_address)
  File "/usr/lib/python3.10/site-packages/nibe/heatpump.py", line 80, in get_coil_by_name
    raise CoilNotFoundException(f"Coil with name '{name}' not found")
nibe.exceptions.CoilNotFoundException: Coil with name 'compressor-frequency-actual-43136' not found
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

same here F730:

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/nibe/heatpump.py", line 78, in get_coil_by_name
    return self._name_to_coil[str(name)]
KeyError: 'passive-cool-shunt-44753'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/bin/nibe-mqtt", line 8, in <module>
    sys.exit(main())
  File "/usr/lib/python3.10/site-packages/nibe_mqtt/console_scripts/nibe_mqtt_service.py", line 26, in main
    service = Service(conf)
  File "/usr/lib/python3.10/site-packages/nibe_mqtt/service.py", line 40, in __init__
    self.poller = PollService(self, poll_config)
  File "/usr/lib/python3.10/site-packages/nibe_mqtt/service.py", line 147, in __init__
    self._coils = [self._get_coil(key) for key in conf["coils"]]
  File "/usr/lib/python3.10/site-packages/nibe_mqtt/service.py", line 147, in <listcomp>
    self._coils = [self._get_coil(key) for key in conf["coils"]]
  File "/usr/lib/python3.10/site-packages/nibe_mqtt/service.py", line 151, in _get_coil
    return self._heatpump.get_coil_by_name(name_or_address)
  File "/usr/lib/python3.10/site-packages/nibe/heatpump.py", line 80, in get_coil_by_name
    raise CoilNotFoundException(f"Coil with name '{name}' not found")
nibe.exceptions.CoilNotFoundException: Coil with name 'passive-cool-shunt-44753' not found
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Write to the heatpump works thru Modbus.

More here: How do I config modbus tcp for Nibe S1255? - #23 by OlaSBG

Thank you for this great nibe lib @yozik04. Has someone got the nibegw Arduino code working stable on a PRODINo MKR Zero Ethernet V1?

Can you guys dump the register set of the SMO40 from the pump gui and post here? Looking to get modbus support into the native ha integration.

Ps. You can also run with an esp32 with a rs485 adapter board instead of the prodino: GitHub - elupus/esphome-nibe: Esphome components for nibe heat pumps

2 Likes

Where can we dump it? Is this a joined effort with @yozik04? It would be great to have just one integration. Will the integration just catch the UDP traffic from nibegw without the need for MQTT? And will write commands be possible?

Its joint effort yes. Its the same lib as @yozik04 uses for the mqtt solution. And yes it support write. And yes it grabs the udp trafic directly for F-series pump with nibegw, but uses tcp modbus for S-series pumps.

See export registers in: https://www.nibe.eu/download/18.3db69dc1795e0d992c5722/1622634529178/Modbus%20S-series%20EN%20M12676EN-1.pdf

2 Likes

Sounds perfect.

I got my PRODINo MKR Zero Ethernet V1 now running perfectly on the F1255 with adjusted nibegw arduino firmware.

And I see you just need the registers from the S-series machines so unfortunately I can’t help.

So I’m looking forward testing the modbus/nibegw support in the native integration. If you need help testing I would love helping.

Well that seems absolutely amazing. Everything localIy connected and not relying on the cloud.
I do have a F1145-10 PC heatpump.
I have a couple of esp32 boards. I suppose with this MAX485 module, I’m ready to go?

Do you have any examples how to connect it?
If you need a tester, would love to help.

Goal for me is to optimize the use of my Nibe heatpump when my solar panels are in production mode. It seems Nibe has a separate EME 20 module for this. When we know the algoritm they use for it, it can be perfectly done throught NibeGW, as I understood you’re able to write.

As far as I understand the EME 20 will adjust the heat curve and boost hot water mode, when there is solar energy. Would be great to have Nibe’s algoritm, so we can manage this from HA.

BTW: Great work. Your work is amazing. Atm I use the Nibe uplink HACS integration.

Have you guys seen this???

This is a new integration with the latest core update.

Supported devices:

  • F1145
  • F1155
  • F1245
  • F1255
  • F1345
  • F1355
  • F370
  • F470
  • F730
  • F750
  • SMO20
  • SMO40
  • VVM225
  • VVM310
  • VVM320
  • VVM325
  • VVM500

Sadly no S series!!! :cry:

Yeah congrats to @elupus for getting this natively into the HA core. That is pretty awesome.

@wgumaa:

@elupus is trying to get the S series onboard as well. So just be patient it will happen. :grinning:

3 Likes

@wgumaa I need register exports for S series pumps (in english). Checkout this manual on how to export: https://www.nibe.eu/download/18.3db69dc1795e0d992c5722/1622634529178/Modbus%20S-series%20EN%20M12676EN-1.pdf

Thanks, I am aware of the register manual

I have an S series, so if you like I can dump the registers in a file and send to you.

I can also send you my yaml file as I am able to read the most common registers.

@elupus Is it possible to read/write any registers via the NibeGW integration or only the pre defined ones from the LOG.SET file?

Any pre known register. It must be in the database of registers at the moment. LOG.SET is not needed though.

1 Like

So if i read this, i need an esp with an RS485 device and install esphome with the config from:

The target and source ip address i need to set in this config, is this the ip of home assistant? thats not clear for me?