Pluggit ventilation unit ( modbus )

Hi Christian,

In the pdf:

changed to https!

In page 51

The conversion, example, 40011 → 10

After I try to search:

Modbus is a data communications protocol originally published by Modicon (now Schneider Electric) in 1979 for use with its programmable logic controllers

  • Since Modbus was designed in the late 1970s to communicate to programmable logic controllers, the number of data types is limited to those understood by PLCs at the time. Large binary objects are not supported.

Its a modbus addressing.

Holding register Read-write 16 bits 40001 – 49999

it’s a read/write register group range.

use google: “modbus register mapping 40001”

https://www.simplymodbus.ca/FAQ.htm

like:
40001 → 0
40002 → 1
.
.
40123 → 122
etc.

regards
Attila

2 Likes

Thanks for your suggestions, I have created a package[1] that breaks down all values. Unfortunately I need an additional variable (_raw values) for some values. I haven’t found a way to automatically hide these values. Suggestions and PRs are welcome.

[1] home_assistant/modbus.yaml at 50d42b57de07fb5adcae6de6dc87f6162a96a899 · luusl/home_assistant · GitHub

4 Likes

Awesome work, thank you so much! I struggled so much with the correct interpretation of the data returned by these modbus registers…

This is such amazing work. Thank you for that! That package feels almost like a full integration and it’s definitely worthy of one. It feels like there only those 10% left to do to make it a full integration now.

Is there anyone feeling able to give it a shot or lay down the ground work so all of us can jump in and integrate all the functionality?

Is it possible to change prmBypassTmax by modbus? I’d like to change temperature between summer and winter.
Or is it possible to disable bypass by modbus?
Then I could stop the bypass in winter, when heating is enabled.

Took the idea from an other topic:

fan:
  - platform: template
    fans:
      pluggit_fan:
        unique_id: "pluggit_fan_id"
        friendly_name: "Pluggit AP 310"
        value_template: "{{ int(states('sensor.pluggit_speed_level_of_fans_in_manual_mode_raw'), 3) > 0 }}"
        percentage_template: "{{ int(states('sensor.pluggit_speed_level_of_fans_in_manual_mode_raw'), 3) * 25 }}"
        preset_mode_template: "{{ states('select.pluggit_active_unit_mode') }}"

        turn_on:
          service: script.pluggit_set_speed_level_of_fans_in_manual_mode
          data:
            speed_level: "{{ 2 }}"
          target:
            entity_id: sensor.pluggit_speed_level_of_fans_in_manual_mode_raw
        turn_off:
          service: script.pluggit_set_speed_level_of_fans_in_manual_mode
          data:
            speed_level: "{{ 0 }}"
          target:
            entity_id: sensor.pluggit_speed_level_of_fans_in_manual_mode_raw
        set_percentage:
          service: script.pluggit_set_speed_level_of_fans_in_manual_mode
          data:
            speed_level: "{{ percentage / 25  }}"
          target:
            entity_id: sensor.pluggit_speed_level_of_fans_in_manual_mode_raw
        set_preset_mode:
          service: script.pluggit_set_active_unit_mode
          data:
            unit_mode: "{{ preset_mode }}"
        #set_oscillating:
        #  service: script.fan_oscillating
        #  data:
        #    oscillating: "{{ oscillating }}"
        #set_direction:
        #  service: script.fan_direction
        #  data:
        #    direction: "{{ direction }}"
        speed_count: 4
        preset_modes:
          - "Manual"
          - "WeekProgram"
2 Likes

Pluggit has released a new firmware late september, version 3.14

To install it, the also new V3 of Pluggit iFlow must also be installed on your computer, and previous iFlow versions MUST be uninstalled prior to upgrading the firmware. :slight_smile:

A new Modbus documentation has also been released. Everything can be downloaded after registering an account on https://inside.pluggit.com

To find the updated Modbus documentation, go to Pluggit Inside and search for “Modbus”.

The changes since V2.68 are:

  1. the following parameters have now write access:
  • prmDHCPEN
  • prmCurrentIPAddress
  • prmCurrentIPMask
  • prmCurrentIPGateway
  • prmBypassTmin
  • prmBypassTmax
  • prmRamIdxBypassManualTimeout
  • prmRomIdxRhSetPoint
  1. In the filter surveillance section, Servoflow has been added.

  2. Alarm list updated.

  3. Following parameters added:

  • prmBypassTmaxSummer
  • prmBypassTminSummer
  • prmRHSetpointSummer

The most interesting changes for me are that we can now modify the manual timeout duration and the Tmin and Tmax values for piloting the summer bypass. Also, there are now different Tmin and Tmax values for Summer and Winter times. Sounds cool!

Hi I upgrade to version 3.14

After I like to to change this new writable float32 registers.
Try to set prmBypassTmaxSummer register, first try use a “call service” in developer tools

service: modbus.write_register
data:
  hub: pluggit
  address: 764 or 765
  value: [30,0] or [0,30] or [11110,0] or [0,11110]

any combination but only write a 0 to register

I found only this: Write a Modbus R32 (word-swapped float32) register and use binary value, but not helped.

After can connect to iFlow3 tool to reset to default.
It’s a Settings → Accessory → select bypass ->save.
0 (wrong) value change to deselect bypass any time.

How to write a float32 register in modbus service?

Regards
Pimpalavista

Hi, I think I could need some help.
I must have made a mistake with the registers and now my pluggit is confused with its bypass-state. Wenn bypass is open it thinks it’s closed and when it’s closed it thinks it is open. I can open and close bypass via Home Assistant or the phone-app, but it ist always the wrong way. I tried to get rid of this error by restarting the pluggit and even by physical deinstallation and reinstallation of the bypass, but the error still is there. Has anyone an idea of how to tell the pluggit, that the bypass is open when it really is open?

Regards

Titansalat

connect to iFlow[2|3] tool to reset to default.

Settings → Accessory → deselect bypass ->save.
and after
Settings → Accessory → select bypass ->save.

So far I have only managed to edit values for prmBypassTmax (Tmax winter) - trying to write to the other 3 registers Tmin (winter), TmaxSummer and TminSummer always fails and sets them to 0 or the lowest possible value.

The example below is an automation triggered by a slider (input_number) entity to change values of Tmax winter:

- id: "4cd0083a-53bc-4587-afff-315ffb016e86"
  alias: Pluggit - Set ByPass Tmax Winter via slider
  description: "Uses input_number entity to update Tmax Winter value"
  mode: single
  trigger:
    - platform: state
      entity_id: input_number.pluggit_bypass_tmax_winter
  action:
    - service: modbus.write_register
      data:
        address: 447
        unit: 255
        value: >
          [ {{ '0x%04x' % unpack(pack(states('input_number.pluggit_bypass_tmax_winter') |float(0), '>f'), '>h') |abs }}, 0 ]
        hub: pluggit

I haven’t been able to do the same for the 3 other registers mentioned above, and I don’t understand the reason why…

Here are the details of the input_number

Unfortunately the settings in accessories don‘t change anything. If you deselect Bypass you just can’t activate it via the App. You still can activate it via modbus, even if it is deactivated in the settings. But I found the solution. If you log into iFlow 3 as admin you find an endless register of values. One is called „prmNeedInverseBypassState“. This was set to 1. I changed it to 0 and now it works perfectly. :grinning:

I happened to stumble upon this thread and noticed a striking similarity between the Modbus descriptions in both this threads and this one.

As the author of the Dantherm integration, I don’t see any reason why it shouldn’t also work with Pluggit units as well as the Dantherm units. Even the apps from both brands show a noticeable resemblance.

Check out the linked discussion, and if anyone is interested in testing the integration, I’m considering creating a separate Pluggit integration using the same code.

I can confirm that my Pluggit AP310 is running with your Dantherm integration. It is recognized as WG300
Bildschirmfoto 16

Hi neotigger,
Thank you for confirming. Would it make sense to adapt the integration for Pluggit, or is there already an existing solution for Home Assistant? I have tried looking around, but didn’t find anything.

I also only know of this solution here

No, there is nothing else in existence for Pluggit and Home Assistant. Great to hear that Dantherm and Pluggit are mostly the same thing.

Can we do anything to help adapting your integration for Pluggit? You can have me (and most likely neotigger) for real-life, real-device tests. I also happily provide you pcapng packet captures from the Pluggit App and the Pluggit AP310 device, if needed.

If anyone is interested, there is a Pluggit integration here. If something doesn’t work or is missing, please let me know.

2 Likes

Very cool, thanks for your work on it! I will try it out when I have some spare time.

Can you confirm that manually setting TmaxSummer and TminSummer works?
I have never been able to set these 2 particular settings via modbus…

Thank you! :slight_smile:

Hello juskalalie. Yes, that works. If the values ​​are set using HA, they are read correctly in the iFlow software and vice versa.

Just to clarify. Summer means the values ​​apply to summer time and the two values ​​without summer mean winter time.

Hope that helps.