ZWave gate module : NICE IBT4ZWAVE

Hello,

I’d like to buy this ZWave module : NICE IBT4ZWAVE
https://products.z-wavealliance.org/products/3837


It’s made by Nice (owner of Fibaro) and it used to control motorized gates and doors. It compliant with Z-Wave Plus Version: 2, but I can’t find any reference to this module working with Home Assistant.
Any chance that’s it’s already integrated in native Home Assistant ZWave integration and will work normally as a ‘generic’ device " GENERIC_TYPE_SWITCH_MULTILEVEL " ?

Thanks,
David

Tested.

It works. It’s seen as a light sensor, but it works. You can open/close the door, and you’ve got a status report opened/closed.

I’ve just found back this topic looking for something else…

A little follow-up 5 months later : this NICE IBT4ZWAVE module works perfectly fine with my garage door ! :slight_smile:

Another update :
I’ve just migrated to ZWaveJS2MQTT.

This device is seen like a Light. It works but I got errors about incorrect “brightness” data received.
I will try to force it to be recognized as a gate device.

This device exists in the OpenSmartHouse Z-Wave Device Database :
OpenSmartHouse Z-Wave Device Database

Does anyone know how I can proceed to integrate properly this module ? or submit a change request to ZWaveJS2MQTT team ?

I can see in the module specs a very interesting table for example :

Table 7 - Multilevel Switch Command Class Report
State Current Value Target Value Duration
Open 0x63 0x63 0x00
Opening 0xFE 0x63 0xFE
Stopped 0xFE 0xFE 0x00
Closing 0xFE 0x00 0xFE
Close 0x00 0x00 0x00

This suggests that this module should be able to send all these status, and not only on/off as I have today when it is recognized as a Light.

EDIT : currently with ZWaveJS2MQTT this module is seen like this :

manufacturer_id : 1089
producttype : 9216
productId : 4096

OK, if aynone read this in the following weeks : this device will be officially added in ZWaveJS in the upcoming weeks according to this announcement on github :
:loudspeaker: Announcement: About supporting new device configuration files · Issue #1600 · zwave-js/node-zwave-js · GitHub

Among this huge device list (:crazy_face:) we can find : “NICE Spa - IBT4ZWAVE - BusT4-Z-Wave interface”

:slight_smile:

The device was added to zwavejs in the latest version 7.4.
It’s working OK, but HA mapped it to Light entity instead of Cover.
I’ve open an issue on HA Core repo.

Wow, great !

I did not notice. I’ve been using it as a ‘light’ for a few months now.
I confirm that is still seen as a light by HA event after Node Interview / Update Topics /…

Do you know if it means that we can now get the new status ‘opening’ and ‘closing’ when gate is being closed/opened ?

Do you have the link to your issue please ?

I will try to remove / re-add the device tonight.

Thanks,
David

David,
Here is the link to the issue:

Regarding the status opening/closing, I thought it will happen once the device will officially be supported; so far no status update (I hope this is because it’s defined as a light entity).

1 Like

Hi, can anybody make a pictures of inside PCB. Would like to see what components used to main zwave MCU. Have a plan to make all on esp8266. Maybe there is no any CAN bus. On IT4WIFI Nice used LTC2875 can bus transiever.

I just created a proper gate cover entity using a set of configurations.

  1. Find the device ID for your IBT4ZWAVE. Open the device page, and copy the last chunk of the URL. That’s the device ID.
  2. Under Devices / Helpers create a new text input. Mine is called: input_text.kapu_allapota
  3. In the following snippets, always replace the device id and the input id with your values.
  4. Create a set of automations that change the value of the text input when the value of the BiDi ZWave changes. You’ll need to add the following to your automations.yaml file.
- alias: Set gate=open
  trigger:
    - platform: zwave_js.value_updated
      id: The gate is open
      # At least one `device_id` or `entity_id` must be provided
      device_id: ada001b6ca774d54e373efec48b81f8c # Garage Door Lock device ID
      entity_id:
        - light.kapunyito
      # `property` and `command_class` are required
      command_class: 38 # Door Lock CC
      property: "currentValue"
      # `property_key` and `endpoint` are optional
      #property_key: null
      #endpoint: 0
      # `from` and `to` will both accept lists of values and the trigger will fire if the value update matches any of the listed values
      to: "99"
  action:
    - service: input_text.set_value
      target:
        entity_id: input_text.kapu_allapota
      data:
        value: "open"
- alias: Set gate=closed
  trigger:
    - platform: zwave_js.value_updated
      id: The gate closed
      # At least one `device_id` or `entity_id` must be provided
      device_id: ada001b6ca774d54e373efec48b81f8c # Garage Door Lock device ID
      entity_id:
        - light.kapunyito
      # `property` and `command_class` are required
      command_class: 38 # Door Lock CC
      property: "currentValue"
      # `property_key` and `endpoint` are optional
      #property_key: null
      #endpoint: 0
      # `from` and `to` will both accept lists of values and the trigger will fire if the value update matches any of the listed values
      to: "0"
  action:
    - service: input_text.set_value
      target:
        entity_id: input_text.kapu_allapota
      data:
        value: "closed"
- alias: Set gate=opening
  trigger:
    - platform: zwave_js.value_updated
      id: The gate is opening
      # At least one `device_id` or `entity_id` must be provided
      device_id: ada001b6ca774d54e373efec48b81f8c # Garage Door Lock device ID
      entity_id:
        - light.kapunyito
      # `property` and `command_class` are required
      command_class: 38 # Door Lock CC
      property: "targetValue"
      # `property_key` and `endpoint` are optional
      #property_key: null
      #endpoint: 0
      # `from` and `to` will both accept lists of values and the trigger will fire if the value update matches any of the listed values
      to: "99"
  action:
    - service: input_text.set_value
      target:
        entity_id: input_text.kapu_allapota
      data:
        value: "opening"
- alias: Set gate=closing
  trigger:
    - platform: zwave_js.value_updated
      id: The gate is closing
      # At least one `device_id` or `entity_id` must be provided
      device_id: ada001b6ca774d54e373efec48b81f8c # Garage Door Lock device ID
      entity_id:
        - light.kapunyito
      # `property` and `command_class` are required
      command_class: 38 # Door Lock CC
      property: "targetValue"
      # `property_key` and `endpoint` are optional
      #property_key: null
      #endpoint: 0
      # `from` and `to` will both accept lists of values and the trigger will fire if the value update matches any of the listed values
      to: "0"
  action:
    - service: input_text.set_value
      target:
        entity_id: input_text.kapu_allapota
      data:
        value: "closing"
  1. Create the cover by adding to your configuration.yaml
cover:
  - platform: template
    covers:
      gate:
        device_class: gate
        friendly_name: "Main gate"
        value_template: "{{ states('input_text.kapu_allapota') }}"
        open_cover:
          service: zwave_js.set_value
          data: 
            command_class: 38
            #endpoint: 0
            device_id: ada001b6ca774d54e373efec48b81f8c
            property: targetValue
            value: 99
        close_cover:
          service: zwave_js.set_value
          data: 
            command_class: 38
            #endpoint: 0
            device_id: ada001b6ca774d54e373efec48b81f8c
            property: targetValue
            value: 0

That’s it. As an extra benefit, I wanted to add a button card to my dashboard as well. For this I created an “Open/Close the gate script” under Automations / Scripts. The YAML is the following:

alias: Open/Close the gate
sequence:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_text.kapu_allapota
            state: closed
        sequence:
          - service: zwave_js.set_value
            data:
              command_class: 38
              device_id: ada001b6ca774d54e373efec48b81f8c
              property: targetValue
              value: 99
      - conditions:
          - condition: state
            entity_id: input_text.kapu_allapota
            state: opening
        sequence:
          - service: zwave_js.set_value
            data:
              command_class: 38
              device_id: ada001b6ca774d54e373efec48b81f8c
              property: targetValue
              value: 0
      - conditions:
          - condition: state
            entity_id: input_text.kapu_allapota
            state: opened
        sequence:
          - service: zwave_js.set_value
            data:
              command_class: 38
              device_id: ada001b6ca774d54e373efec48b81f8c
              property: targetValue
              value: 0
      - conditions:
          - condition: state
            entity_id: input_text.kapu_allapota
            state: closeing
        sequence:
          - service: zwave_js.set_value
            data:
              command_class: 38
              device_id: ada001b6ca774d54e373efec48b81f8c
              property: targetValue
              value: 99
    default: []
mode: queued
icon: mdi:gate
max: 5

Finally, the dashboard button is configured as

type: custom:button-card
entity: cover.gate
name: Kapu
triggers_update:
  - input_text.kapu_allapota
state_display: |
  [[[
   states["input_text.kapu_allapota"].state
  ]]]
show_state: true
tap_action:
  action: call-service
  service: script.open_close_the_gate
color_type: icon
size: 50%
aspect_ratio: 1/1
state:
  - value: closed
    color: var(--paper-item-icon-color)
    icon: mdi:gate-arrow-right
  - value: closed
    color: var(--paper-item-icon-color)
    icon: mdi:gate-arrow-right
  - value: opening
    icon: mdi:gate-arrow-left
    color: rgb(100,255,100)
  - value: closing
    icon: mdi:gate-arrow-right
    color: rgb(100,255,100)

It’s a bit complicated to set up, but in the end, it works without any issues.

1 Like

Would be much much easier if the module was identified by ZWaveJS and pushed to HA as a gate and not a light. :smile:

I have done about the same templates than you. I have added ‘opening’ and ‘closing’ status juste a few weeks ago.
I had to add MQTT output to ZWaveJS just for this specific module, to get ‘currentvalue’ and ‘targetvalue’. I could not find a way to get them from ZWaveJS.

It’s workinh thanks.
I will look about adding the Stop state to the button

So I don’t have succcess to implement the stop call to API.
When I push wia mqtt in the same class the value to “Stop”, the gate is stoping.
Which method use here ?

This looks really interesting and a possible excuse to dip my foot into Z-Wave (I already have Zigbee). I currently have the Wifi version and it causes no end of problems when it decides to stop working.

When it is working, it also doesn’t properly integrate with HA. The “easy” option would be to set it up with the HomeKit integration but I would lose the ability to open 1 leaf of the gate. Does anyone know if the Z-Wave version would allow this?

@loic69 can you shared bit more info how did you manage to stop the gate? Is it through mqtt? What are you publishing and into which topic?
Also, are you using mqtt cover template?

Jeedom is more flexible for this and can manage the stop command.
So I call from HA the Jeedom API command to stop the gate…
I don’t find better for now.
It’s a problem for me because i’d like to remove jeedom instance…

From Homeassistant 2023.6 onwards the Nice IBT4ZWAVE module is finally recognized as a cover (see Breaking Changes in Zwave).
The stop command is working now. Only problem left: the Position won’t update on stop. So the status does not change (it remains open/close til it’s fully opended or closed).

Has anyone used this with a dual-leaf gate? I’d like to be able to open either a single leaf or both, like my remote allows

The wifi module I have allows this though their app, but not through HomeKit compatible mode. Of course the HA integration relies on the HomeKit mode

Great question. I also have a dual leaf swing gate, so, of course, I want to be able to either partially or fully open the gate and ideally also differentiate between the two open states.

There is an OpenHAB integration for the IT4WIFI module written in Java based on reverse engineering which allows doing that.

Z-Wave would be more interesting for me but before looking into it, it would be nice to know if the hardware does support it.