New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NIBE myUplink API #81
Comments
Probably. But not with my plugin. Since I don't have such system i won't write that. |
Hello, I have started to create a new module for MyUplink and I have implemented the most of the myUplink Public API v2. |
@andjom How have you got along with the MyUplink module? |
@andjom Just got a S1255 installed with the new MyUplink API. Pls let me know if you need any test/debug help with the implementation! |
@andjom I have S1255 and would love to have it added to HA so let me know if you need help with testing. |
Oh the new ones expose modbus over tcp?!? That would have been awesome. |
Hello, i have a CTC GSI 608 that uses the MyUplink and i am very interested in getting it into homeassistant. |
Easiest way would be to enable the modbus TCP/IP from the settings of your heatpump and then add following to the configuration.yaml with your own settings. Homeassistant supports modbus from the scratch and more info can be found from https://www.home-assistant.io/integrations/modbus/ modbus:
|
I guess that in a soon future nibeuplink.com will be shut and connected units will be moved to myuplink (you can manuall change to f series in myuplink but not yet connect any units to it. myuplink can handle all connected manufactures in the nibe organisation like ctc, alpha innotec etc.. |
Did you work it out with success? |
Hello, no i havent been able to connect to the modbus interface. Not realy shure why it not working. regards |
Hi! I want to follow the modbus path as well, but so far I'm not able to connect the my S1155. I think I have enabled Modbus in the pump via the installer menu but I do not see any configuration parameters while enabling ModBus and a port scan in the pump gives no access. Anyone giving a quick update on how to enable ModBus/TCP on the pump itself? |
Just enable it in the menu and its on. port 502 and you can find registers on nibes supportpage. also check that you have latest firmware and it works fast and stable. |
Modbus list from CTC support. /Micke |
cant answer for ctc as i cant try it myself. i can only test on nibe s series as i have an demo unit to try on ;) |
I have a s1255 that I've connected to Home assistant through Modbus. Many of the functions available in MyUplink is present through Modbus but not all. Currently I'm mostly using "read input registers". Also depending on your accessories you'll have different Modbus functions available. A good reference (in Swedish) is https://proffs.nibe.se/upload/NEW/Support/Kommunikation/M12676SV.pdf My current setup in configuration.yaml: modbus: - type: tcp host:: port: 502 name: Nibe delay: 10 #close_comm_on_error: true retry_on_empty: true retries: 3 timeout: 14 message_wait_milliseconds: 500 sensors: # # Specifika register för Nibe S1155/S1255 # - name: "Nibe - Utetemperatur (BT1)" unique_id: Nibe.BT1 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 1 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Framledningstemperatur (BT2)" unique_id: Nibe.BT2 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 5 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Returledningstemperatur (BT3)" unique_id: Nibe.BT3 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 7 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Varmvatten topp (BT7)" unique_id: Nibe.BT7 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 8 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Varmvatten laddning (BT6)" unique_id: Nibe.BT6 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 9 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Köldbärare in (BT10)" unique_id: Nibe.BT10 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 10 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Köldbärare ut (BT11)" unique_id: Nibe.BT11 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 11 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Kondensor fram (BT12)" unique_id: Nibe.BT12 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 12 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Hetgas (BT14)" unique_id: Nibe.BT14 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 13 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Vätskeledning (BT15)" unique_id: Nibe.BT5 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 14 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Suggas (BT17)" unique_id: Nibe.BT17 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 16 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 # - name: "Nibe - Rumstemperatur 1 (BT50)" # unique_id: Nibe.BT50 # unit_of_measurement: "°C" # data_type: int16 # device_class: temperature # address: 26 # input_type: input # scale: 0.1 # precision: 1 # state_class: measurement # slave: 1 #- name: "Nibe - Extern Framledning (BT25)" # unique_id: Nibe.BT25 # unit_of_measurement: "°C" # data_type: int16 # device_class: temperature # address: 39 # input_type: input # scale: 0.1 # precision: 1 # state_class: measurement # slave: 1 - name: "Nibe - Kompressorgivare (EB100-BT29)" unique_id: Nibe.EB100-BT29 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 86 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Driftläge köldbärarpump variant" unique_id: Nibe.adress.96 unit_of_measurement: "intermittent(10)/kontinuerlig(20)/10 dagar kont.(30)" data_type: int16 address: 96 input_type: input scale: 1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Värmebärarpumphastighet (GP1)" unique_id: Nibe.GP1 unit_of_measurement: "%" data_type: int16 device_class: power_factor address: 1102 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Driftläge värmebärarpump" unique_id: Nibe.address.853 unit_of_measurement: "Manuellt" data_type: int16 address: 853 input_type: input scale: 1 precision: 0 state_class: measurement slave: 1 - name: "Nibe - Värmebärarpumphastighet Manuell (GP1)" unique_id: Nibe.GP1.manual unit_of_measurement: "%" data_type: int16 device_class: power_factor address: 218 input_type: input scale: 1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Aktuell kompressorfrekvens" unique_id: Nibe.address.1046 unit_of_measurement: "Hz" data_type: uint16 device_class: frequency address: 1046 input_type: input scale: 1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Kompressorstatus" unique_id: Nibe.address.1100 unit_of_measurement: "På" address: 1100 data_type: uint16 input_type: input scale: 1 precision: 0 state_class: measurement slave: 1 - name: "Nibe - Köldbärarpumphastighet (GP2)" unique_id: Nibe.GP2 unit_of_measurement: "%" data_type: uint16 device_class: power_factor address: 1104 input_type: input scale: 1 precision: 1 state_class: measurement slave: 1 # - name: "Nibe - Driftläge köldbärarpump" # unique_id: Nibe.address.1319 # unit_of_measurement: "Manuellt" # data_type: uint16 # address: 1319 # input_type: input # scale: 1 # precision: 0 # state_class: measurement # slave: 1 - name: "Nibe - Köldbärarpumphastighet Manuell (GP2)" unique_id: Nibe.GP2.manual unit_of_measurement: "%" data_type: uint16 device_class: power_factor address: 222 input_type: input scale: 1 precision: 1 state_class: measurement slave: 1 # # Gemenssamma register alla Nibe-modeller # - name: "Nibe - Flödesgivare (BF1)" unique_id: Nibe.BF1 unit_of_measurement: "l/m" data_type: int16 device_class: power_factor address: 40 input_type: input scale: 1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Ström (BE3)" unique_id: Nibe.BE3 unit_of_measurement: "A" data_type: uint32 swap: word device_class: current address: 46 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Ström (BE2)" unique_id: Nibe.BE2 unit_of_measurement: "A" data_type: uint32 swap: word device_class: current address: 48 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Ström (BE1)" unique_id: Nibe.BE1 unit_of_measurement: "A" data_type: uint32 swap: word device_class: current address: 50 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Driftläge" unique_id: Nibe.address.237 unit_of_measurement: "auto(0)/manuellt(1)/endast tillsats(2)" data_type: uint16 address: 237 input_type: holding scale: 1 precision: 0 state_class: measurement slave: 1 # - name: "Nibe - Energimätare (BE7/BF3)" # unique_id: Nibe.BE7/BF3 # unit_of_measurement: "kWh" # data_type: uint32 # swap: word # device_class: energy # address: 396 # input_type: input # scale: 0.01 # precision: 1 # state_class: measurement # slave: 1 # - name: "Nibe - Energimätare (BE6/BF2)" # unique_id: Nibe.BE6/BF2 # unit_of_measurement: "kWh" # data_type: uint32 # swap: word # device_class: energy # address: 398 # input_type: input # scale: 0.01 # precision: 1 # state_class: measurement # slave: 1 - name: "Nibe - Beräknad framledning" unique_id: Nibe.address.1017 unit_of_measurement: "°C" data_type: int16 device_class: temperature address: 1017 input_type: input scale: 0.1 precision: 1 state_class: measurement slave: 1 # - name: "Nibe - Beräknad framledning kyla" # unique_id: Nibe.address.1567 # unit_of_measurement: "°C" # data_type: int16 # device_class: temperature # address: 1567 # input_type: input # scale: 0.1 # precision: 1 # state_class: measurement # slave: 1 - name: "Nibe - Total drifttid tillsats" unique_id: Nibe.address.1025 unit_of_measurement: "h" data_type: int32 swap: word device_class: power_factor address: 1025 input_type: input scale: 0.1 precision: 1 state_class: total_increasing slave: 1 - name: "Nibe - Driftprioritering" unique_id: Nibe.address.1028 unit_of_measurement: "av(10)/varmvatten(20)/värme(30)/pool(40)/kyla(60)" data_type: uint16 address: 1028 input_type: input scale: 1 precision: 0 state_class: measurement slave: 1 - name: "Nibe - Kompressorstarter EP14" unique_id: Nibe.EP14 unit_of_measurement: "antal" data_type: uint32 swap: word device_class: power_factor address: 1083 input_type: input scale: 1 precision: 0 state_class: total_increasing slave: 1 - name: "Nibe - Drifttid Kompressor EP14" unique_id: Nibe.EP14.time unit_of_measurement: "h" data_type: uint32 swap: word device_class: power_factor address: 1087 input_type: input scale: 1 precision: 1 state_class: measurement slave: 1 - name: "Nibe - Flödesmätning varmvatten (inkl. tillsats)" unique_id: Nibe.address.1575 unit_of_measurement: "kWh" data_type: uint32 swap: word device_class: energy address: 1575 input_type: input scale: 0.1 precision: 1 state_class: total_increasing slave: 1 - name: "Nibe - Flödesmätning värme (inkl. tillsats)" unique_id: Nibe.address.1577 unit_of_measurement: "kWh" data_type: uint32 swap: word device_class: energy address: 1577 input_type: input scale: 0.1 precision: 1 state_class: total_increasing slave: 1 - name: "Nibe - Flödesmätning varmvatten (endast kompressor)" unique_id: Nibe.address.1583 unit_of_measurement: "kWh" data_type: uint32 swap: word device_class: energy address: 1583 input_type: input scale: 0.1 precision: 1 state_class: total_increasing slave: 1 - name: "Nibe - Flödesmätning värme (endast kompressor)" unique_id: Nibe.address.1585 unit_of_measurement: "kWh" data_type: uint32 swap: word device_class: energy address: 1585 input_type: input scale: 0.1 precision: 1 state_class: total_increasing slave: 1 - name: "Nibe - Aktivt larm" unique_id: Nibe.address.2195 unit_of_measurement: "larm" data_type: uint16 address: 2195 input_type: input scale: 1 precision: 0 state_class: measurement slave: 1 - name: "Nibe - Larmnummer" unique_id: Nibe.address.1975 unit_of_measurement: "kod" data_type: uint16 address: 1975 input_type: input scale: 1 precision: 0 state_class: measurement slave: 1 - name: "Nibe - Använd effekt" unique_id: Nibe.address.2166 unit_of_measurement: "W" data_type: uint32 swap: word device_class: power address: 2166 input_type: input scale: 1 precision: 1 state_class: measurement slave: 1 /Jörgen |
@jorgen-zafir, is there a reason for setting The docs also say "Size: u8", but I can't get it to work setting |
GP1 scale was a typo. I discovered it myself yesterday when comparing with the data in MyUplink. So it should be set to "1". I never got the "uint8" data type to work either. "uint16" seems to be working instead. Since my posting I've also added all holding sensors that is working for my setup. (They are missing in my post above). |
Thanks for confirming! Would you mind posting your config for the holding sensors as well? Would be great to compare. |
Ok, I'll post the "entire" thing again now including the holding sensors. Note that I've commented the sensors not present in my setup and hence haven't been able to test them myself. You can see many other parameters in MyUplink than is present through Modbus. It could be that there are more Modbus parameters available than presented in the Nibe documentation. Possibly you could discover more by doing a Modbus register "dump" through the USB port. Another tip is to use a Modbus CLI for debugging. I selected "pymodbus" and its "pymodbus.console" as it seems to be working rather good. Byte order problems are a bit cumbersome in this tool though. Even though Modbus isn't as complete as MyUplink I managed to construct a COP sensor through Home assistant. It let me better understand how a heat pump work when it comes to the heating and hot water generation. The higher temperature required the less efficient the heat pump is. So a COP just above 4 is present for the current low level heating while hot water generation often gives a COP of down to 2. /Jörgen |
Hi, |
@rickardnr1 : Thanks for the info! I suppose I need to download the entire Modbus register list from the USB port. Well I think the "easy" COP measurement that I've setup in Home assistant at least gives an indication on what level you are at. There is also the question on what you want to include in the COP calculation. Should you include everything. E.g. mine has 273 kWh/year consumption regardless of its production. /Jörgen |
Just a small comment on my former text. By definition my COP calculation is wrong. This because I'm using the power measurements as a base. The real COP value is based on the energy measurements. However, I wanted to display the momentary efficiency of the heat pump and not the efficiency over time. Maybe I should have called the constructed sensor something else? /Jörgen |
Hello, nice work with the modbus settings for NIBE. I am trying to understand how to make this work on a CTC608. adress 1 = ID1 from Nibe PDF. CTC pdf doesent have that kind ID, just BMS values? i cant find a way to download the Modbus register list to USB either. ( on the CTC ) Please help me understand this. |
Hello, I am also interested in an implementation for myUplink (would also agree to be a tester). |
any news on myUplink integration? |
Hi. |
If anybody does continue this. I suggest adding support to https://github.com/yozik04/nibe Then it will end up in HA automatically. Much less work needed. |
Ps. Home assistant can connect natively to S series pumps in next release (or current dont remember if its released already). You dont need my uplink. |
have you got the energy meter to work? I can see you commented that out, and when I try to use them, I only get errors. [homeassistant.components.modbus.modbus] Pymodbus: Nibe: Exception Response(132, 4, IllegalFunction) |
the modbus connection does only respond to local devices so remote access with portforward dont work. So if you got a heatpump in ex. holidayhouse you can´t access it without myuplink. |
You can use a VPN connect to resolve this problem. Then you don't have to worry about which sensors that
have a cloud connection and which cloud their connected.
/Jörgen
--
Jörgen Andreasen
-----Original Message-----
From: rickardnr1
Sent: Monday 28 November 2022 12:49
To: To elupus/hass_nibe
Subject: Re: [elupus/hass_nibe] NIBE myUplink API (#81)
Ps. Home assistant can connect natively to S series pumps in next release (or current dont remember if its released already). You dont need my uplink.
the modbus connection does only respond to local devices so remote access with portforward dont work. So if you got a heatpump in ex. holidayhouse you can´t access it without myuplink.
…--
Reply to this email directly or view it on GitHub:
#81 (comment)
You are receiving this because you were mentioned.
Message ID: ***@***.***>
|
Jörgen, do you have an S series pump? Can you outline the steps used to integrate using the Addon? I cannot figure out how to do so. |
You don't use any addon for S series pumps. You use either the built in nibe integration in home assistant, or the built in modbus integration in home assistant with manual config. |
@elupus, I use the Modbus for an S1255 for the moment, but can't get the energy meter to work. And if try the integration, S1255 is not an option to choose. Is there a forum we can discuss this, this might not be the best place :). |
@raderarn, Forgot.. It's in next release. You could get beta if you dare once it's out in a few days. |
I dare, I have a test environment :). But have you solved the Energy part in that release? If I set it up like this with modbus, I get an error:
|
Hi Joakim!
Newer S series pumps support Modbus TCP. The HA Nibe integration supports Modbus RTU through
serial line, typical RS-485.
I have an S1255 and this is not supported by the HA Nibe integration. Older Nibe heat pumps
that only have Modbus RTU through RS-485 seems to be supported though.
To use Modbus TCP:
1) Enable Modbus TCP on the heat pump. I can't remember exactly where it is on unit interface,
*sorry* :( Use the manual to locate this.
2) Add the HA Mobdus integration
3) Configure the HA Modbus integration. The host or address of your heat pump and the TCP port used
is needed. Nibe uses the default TCP port 502. The configuration needs to be implemented in
HA configuration files. No Web GUI, yet, to support you here.
4) Get your hands on the Nibe S series Modbus register documentation. Alternative you can use
the Modbus register dump facility in the heat pump by connecting an USB stick to it.
The resulting file is in CSV format and you get name, unit, size, type (input, holding, coil) and
scaling for each register.
Note that many registers are not applicable for your particular setup and will return empty or
phony values.
Caveats:
o If you use Docker for HA it seems to be impossible to update any Modbus register in a deterministic
manner. On some occations I had to wait hours for the updates to reach the heat pump. A SSH command
to the Docker host resolved this issue. There the updates are made instantly.
o If you have a PV system the current sensors connected to the heat pump can't detect what direction
the current is going in any of the 3-phase AC grid line. This will be a problem when exporting
a lot of power as then the heat pump will think that there's no "room" for it. I solved this by
adding an HA automation which raises the heat pump current limit when exporting power over a fixed
value.
--
Jörgen Andreasen
-----Original Message-----
From: Joakim Plate
Sent: Tuesday 29 November 2022 12:21
To: To elupus/hass_nibe
Subject: Re: [elupus/hass_nibe] NIBE myUplink API (#81)
> You can use a VPN connect to resolve this problem. Then you don't have to worry about which sensors that
> have a cloud connection and which cloud their connected.
Jörgen, do you have an S series pump?
Can you outline the steps used to integrate using the Addon? I cannot figure out how to do so.
You don't use any addon for S series pumps. You use either the built in nibe integration in home assistant, or the built in modbus integration in home assistant with manual config.
…--
Reply to this email directly or view it on GitHub:
#81 (comment)
You are receiving this because you were mentioned.
Message ID: ***@***.***>
|
I have added support for S series pumps over TCP to home assistant, It will be in next release. Current release support only RTU with a nibegw. |
@elupus I have installed the beta version and it works great for the S1255. But I can't find the Pulse energy meters 396 and 398. I guess these are the ones to use in Energy Management. |
@raderarn can you export the registers from your pump (when set to english) and open an issue at https://github.com/yozik04/nibe and attach it. The i can have a look if we are missing some parameters in its database. |
Ps. @raderarn i assume you actually have an external energy meter connected to your pump.. |
@elupus oops, no I have not. I thought that was the built-in energy meter. And I have a major problem getting the register export since I am 350km away from the pump :). It is my brother-in-law who has the pump and I am on a Site-to-Site VPN link to him. So, that means there are no way getting energy consumption data to use in Energy Mangement? |
Not for complete pump no. They dont have it built in. If its an inverter pump,.you should be able to get the compressor energy usage (it is the majority of usage anyway). I dont know the number for that for S series though. |
@raderarn Can you share your steps on how you got the pump connected to HA? Currently I have read only data through a yaml that i created. I do have the S1255-6. |
@wgumaa I installed the beta version of HA, 2022.12.0b0, where the Nibe integration is updated by elupus. I added the integration, and choose the S1255, tcp with ipnumber to the pump. I can see that I have a switch for periodic hot water, and it seems to be working when I update it. But as the pump is 350 km away, it is a bit hard to go and check on the pump :). |
@raderarn thanks for the info, but I can’t find the beta version of HA. |
Can anyone point me to the HA beta so I can try? My S1255 is next to me :) |
@wgumaa if you run hassio or supervised, then you navigate to /hassio/system/info and on the supervisor, click join beta channel. If you run Core this article has instructions for beta: https://www.home-assistant.io/common-tasks/core/ |
Thanks @raderarn I was able to install the beta and set up the integration. The entities are now showing and yes they are disabled but I will go through and enable the ones that I need. I will report back any findings or issues. Thanks once again. |
Hi everyone I need your help! |
Can we not use this as ticket as a support forum for nibe S series Lets move this over to the forums. Start a new thread there, and post a link here then i will close this ticket. |
@elupus now I have created a new thread on the community :) https://community.home-assistant.io/t/discussions-about-nibe-s-series-and-the-integration/499985 |
Hello,
I have the NIBE VVM S320 and F-2120 Heatpump. It uses the new API service (https://dev.myuplink.com).
Is it possible to integrate my system with into HASS also?
Thanks in advance
The text was updated successfully, but these errors were encountered: