Pluggit ventilation unit ( modbus )

I have a Pluggit ventilation unit, a use the modbus component to read a sensor data it’s works perfectly.

based by http://www.pluggit.com/fileserver/files/1413/609560454939420/21_08_2015_pluggit_uvc_controller_modbus_tcp_ip.pdf

modbus:
  name: pluggit
  type: tcp
  host: 192.168.X.Y
  port: 502

  - platform: modbus
    scan_interval: 10
    registers:
      - name: Outdoor_T1
        hub: pluggit
        slave: 1
        register: 133
        unit_of_measurement: C
        count: 2
        data_type: float

  - platform: modbus
    scan_interval: 10
    registers:
      - name: Supply_T2
        hub: pluggit
        slave: 1
        register: 135
        unit_of_measurement: C
        count: 2
        data_type: float

  - platform: modbus
    scan_interval: 10
    registers:
      - name: Extract_T3
        hub: pluggit
        slave: 1
        register: 137
        unit_of_measurement: C
        count: 2
        data_type: float

  - platform: modbus
    scan_interval: 10
    registers:
      - name: Exhaust_T4
        hub: pluggit
        slave: 1
        register: 139
        unit_of_measurement: C
        count: 2
        data_type: float
  - platform: modbus
    scan_interval: 10
    registers:
      - name: Bypass_State
        hub: pluggit
        slave: 1
        register: 198   #40199
        unit_of_measurement: status
        count: 1
        data_type: uint

  - platform: modbus
    scan_interval: 10
    registers:
      - name: Bypass_State_REQ
        hub: pluggit
        slave: 1
        register: 168   #40169
        unit_of_measurement: Register_Value
        count: 1
        data_type: uint

  - platform: modbus
    scan_interval: 10
    registers:
      - name: Bypass_remaining_time
        hub: pluggit
        slave: 1
        register: 264   #40265
        unit_of_measurement: minutes
        count: 1
        data_type: uint

  - platform: modbus
    scan_interval: 10
    registers:
      - name: Fan_Level
        hub: pluggit
        slave: 1
        register: 324   #40325
        unit_of_measurement: Step
        count: 1
        data_type: int

  - platform: modbus
    scan_interval: 10
    registers:
      - name: Fan1_Speed
        hub: pluggit
        slave: 1
        register: 101
        unit_of_measurement: rpm
        count: 2
        data_type: float

  - platform: modbus
    scan_interval: 10
    registers:
      - name: Fan2_Speed
        hub: pluggit
        slave: 1
        register: 103
        unit_of_measurement: rpm
        count: 2
        data_type: float

but the writing to register not working, I think it’s a timing problem:

  - platform: modbus
    registers:
      - name: FAN_2_4
        hub: pluggit
        slave: 1
        register: 324 #40325
        command_on: 4
        command_off: 2
#        verify_state: false

It possible to integrate this plugin https://github.com/smarthomeNG/plugins/tree/master/pluggit to HA?

regards
Pimpalavista

1 Like

Hi there. I also have a pluggit system (AP460) and would like to change fan speed based upon CO2 measurement (done through KNX) and also see if I can work out a warning system based upon pressure change to say when the filters need to be cleaned.
I however am a complete beginner with HA. Do I just need to get the IP address of my unit then dump the text above in the configuration.yaml file? I’m happy to share the filter warning if I can get it to work.

@pimpalavista I only just caught this with the recent reply by @britaway so you may already have sorted this out?

If not for my use case when I write to modbus registers I use an automation like this:

- id: IrrigationStartTime
  alias: Irrigation Start Time
  trigger:
    platform: state
    entity_id: input_number.slider1
  action:
    service: modbus.write_register
    data_template:
      hub: hub3
      unit: 3
      address: 3074
      value: "{{ states.input_number.slider1.state|int }}"

But like I said your use case may differ?

You are treating this like a switch right? A switch is binary 0 or 1

Don’t think you can send a 4 or a 2 value for that? Treat it like a sensor I think?

Hi Pimpalavista,

how to you interprete the bypass status and buypass state req?

I miss the understanding?!

Did you get the writing working?

Br,
Senbei

Hi Again, firstly great effort on this!
I have been having a go with my set-up (HA on a Pi and A460) and have the following script in the config file, and am getting the wrong output value:

modbus:
  name: pluggit
  type: tcp
  host: 192.168.xx.xx
  port: 502

sensor:
  - platform: modbus
    registers:
      - name: Outdoor_T1
        hub: pluggit
        unit_of_measurement: °C
        slave: 1
        register: 133
        data_type: float

The output I get is 3DegC. The actual value from the Pluggit unit is 24DegC.

Any idea what is going wrong?

After some digging and advice I got it working, and also VOC and humidity sensors. Here is the script if use to anybody:

  - platform: modbus
    registers:
      - name: Outdoor_T1
        hub: pluggit
        unit_of_measurement: °C
        slave: 1
        count: 2
        reverse_order: 1
        register: 132
        data_type: float
        
  - platform: modbus        
    registers:
      - name: VOC
        hub: pluggit
        unit_of_measurement: ppm
        slave: 1
        count: 2
        reverse_order: 1
        register: 430
        data_type: uint

  - platform: modbus        
    registers:
      - name: HumidityPI
        hub: pluggit
        unit_of_measurement: humidity
        slave: 1
        count: 2
        reverse_order: 1
        register: 196
        data_type: uint

°C

only C !!!

Hi Senbei,

Sorry
I stooped this project…

Maybe in winter time…

regards
Pimpalavista

Now wintertime is coming… :wink:

The new style of modbus register:

modbus:
  name: pluggit 
  type: tcp
  host: 192.168.X.Y 
  port: 502
  sensors:
    - name: Outdoor_T1 
      slave: 1
      address: 133 
      unit_of_measurement: C
      count: 2
      data_type: float

    - name: Supply_T2 
      slave: 1
      address: 135 
      unit_of_measurement: C
      count: 2
      data_type: float

    - name: Extract_T3 
      slave: 1
      address: 137 
      unit_of_measurement: C
      count: 2
      data_type: float

    - name: Exhaust_T4 
      slave: 1
      address: 139 
      unit_of_measurement: C
      count: 2
      data_type: float

    - name: RoomTemp_WirelesRemote_T5
      slave: 1
      address: 141 
      unit_of_measurement: C
      count: 2
      data_type: float

    - name: Bypass_State
      slave: 1
      address: 198   #40199
      unit_of_measurement: status 
      count: 1
      data_type: uint

    - name: Bypass_State_REQ
      slave: 1
      address: 168   #40169
      unit_of_measurement: Register_Value 
      count: 1
      data_type: uint

    - name: Bypass_remaining_time
      slave: 1
      address: 264   #40265
      unit_of_measurement: minutes 
      count: 1
      data_type: uint

    - name: Fan_Level
      slave: 1
      address: 324   #40325
      unit_of_measurement: Step 
      count: 1
      data_type: int

    - name: Fan1_Speed
      slave: 1
      address: 101 
      unit_of_measurement: rpm 
      count: 2
      data_type: float

    - name: Fan2_Speed
      slave: 1
      address: 103 
      unit_of_measurement: rpm 
      count: 2
      data_type: float

Hi Senbei,



type: button
show_state: true
tap_action:
  action: call-service
  service: modbus.write_register
  service_data:
    address: 324
    unit: 255
    value: [1,0]
    hub: pluggit
  target: {}
show_icon: true
show_name: true
name: Pluggit Fan 1


type: button
show_state: true
tap_action:
  action: call-service
  service: modbus.write_register
  service_data:
    address: 324
    unit: 255
    value: [2,0]
    hub: pluggit
  target: {}
show_icon: true
show_name: true
name: Pluggit Fan 2


type: button
show_state: true
tap_action:
  action: call-service
  service: modbus.write_register
  service_data:
    address: 324
    unit: 255
    value: [3,0]
    hub: pluggit
  target: {}
show_icon: true
show_name: true
name: Pluggit Fan 3


type: button
show_state: true
tap_action:
  action: call-service
  service: modbus.write_register
  service_data:
    address: 324
    unit: 255
    value: [3,0]
    hub: pluggit
  target: {}
show_icon: true
show_name: true
name: Pluggit Fan 3


type: button
show_state: true
tap_action:
  action: call-service
  service: modbus.write_register
  service_data:
    address: 324
    unit: 255
    value: [4,0]
    hub: pluggit
  target: {}
show_icon: true
show_name: true
name: Pluggit Fan 4

regards
Pimpalavista

Thanks, I can add the following:

      - name: Pluggit VOC
        address: 430 #40431
        count: 1
        data_type: uint16
        slave: 1
        unit_of_measurement: ppm
      - name: Pluggit moisture
        address: 196 #40197
        count: 1
        data_type: uint16
        device_class: humidity
        slave: 1
        unit_of_measurement: RH%
      - name: Pluggit Mode
        address: 472 #40473
        count: 1
        data_type: uint16
        slave: 1
      - name: Pluggit Filter remaining days
        address: 555 #40555
        count: 1
        data_type: uint16
        slave: 1
        unit_of_measurement: days

ähm… stupid question… in which section do I have to add this?

To lovelace UI, “Edit Dashboard” and click “+ ADD CARD” , last add manual. and copy the first section.

You can copy the button and modify, or add new.

If You like change the button and add graphic it’s up to you.

Please edit all data_type:

float ----> float32
uint -----> uint16

regards
Pimpalavista

Hello Ladys & Gentlemen,
I have created a Video and uploaded to youtube in case you need video guidance.
You can see everything step by step.
But it is in german language :sweat_smile:

1 Like

Thank you very much for the video, once again! I have commented in the video’s comment section but it seems that either you or YouTube deleted the comment, so here I come again:

To preserve the awesome work of yours and come work together as a community I put your examples into this GitHub Wiki. Your video is linked, too, so at least German folks can not only use your examples but also learn how and why they are being used.

I’m in the setup process of my Avent AP310 right now and I discovered that you can even control the percentage of the 4 available ventillation steps. I hope to be able to do this via Modbus, too. I already created a PI-Controller in Home Assistant with the CO2, VOC, Temp and Humidity Sensors of my house and only the ventillation unit itself is missing.

I’ll keep you posted how it went and also update the Wiki with the new addresses, if they work as hoped.

Cheers!

1 Like

I have a working Setup to gather communication data from the official app. It also communicates throught modbus with the ventilation unit, obviously. I document all my findings in the Wiki posted above.

I’ll keep my setup working for couple of days or weeks. Let me know if you want to use any specific feature from the app that you don’t get to work using Home Assistant and I can go and analyze the traffic for you guys.

If you want to do it yourselves: I use a packet capture app for Android and record the traffic from the app to later analyze it in Wireshark. Wireshark understands the Modbus protocol very well. You can see all registers and values that are used.

1 Like

Hi Gersilex, thanks for the wiki - I updated a few entities. :slight_smile:
Nice that there is also a german video - therfore I don’t have to create one from myself. :wink:

1 Like

Yoooooo Party People,
I did not delete any comments so far :smiley:

Thanks Gersilex for moving it to the wiki.
Thanks Senbei for updating it.
Maybe my grandchilds will find me one day there.

And to the whole “Integration“: modbus is a bitch.
I think the whole topic deserves a second video with more possible options to trigger and control the pluggit via Home Assistent.

Man I almost cried when I got it working :partying_face: