Koenkk / zigbee2mqtt

Zigbee 🐝 to MQTT bridge 🌉, get rid of your proprietary Zigbee bridges 🔨
https://www.zigbee2mqtt.io
GNU General Public License v3.0
11.78k stars 1.64k forks source link

[Feature request]: New property NodOn SIN-4-RS-20, SIN-4-RS-20_LEX and SIN-4-RS-20_PRO #18414

Closed rty3108 closed 10 months ago

rty3108 commented 1 year ago

Is your feature request related to a problem? Please describe

Please, can you add the Calibration property for the NodOn devices SIN-4-RS-20, SIN-4-RS-20_LEX and SIN-4-RS-20_PRO? These devices support the option to calibrate through zigbee commands.

The attribute to be used for module calibration is 'Mode' is code 0x0017 from 'Window Covering Settings Attribute Set' (7.4.2.1.3). The bit for its activation is the 'bit1' table (7.4.2.1.3.8)

Describe the solution you'd like

New property for devices SIN-4-RS-20, SIN-4-RS-20_LEX and SIN-4-RS-20_PRO

Describe alternatives you've considered

I don't know any other way to get this information

Additional context

.

github-actions[bot] commented 1 year ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days

rty3108 commented 1 year ago

Please can implement this features? Thancks

Sraoune commented 1 year ago

Yeah, would be nice to have

github-actions[bot] commented 11 months ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days

Sraoune commented 11 months ago

Still needed :)

github-actions[bot] commented 10 months ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days

rty3108 commented 10 months ago

Please can implement this features? Thancks

eherranzr commented 8 months ago

Hi guys, I just bought the device and position only shows 0% or 100%. Is the same for you? I would say calibrating would solve this issue. If I can support somehow, please let me know

josejn commented 6 months ago

Hi guys, I just bought the device and position only shows 0% or 100%. Is the same for you? I would say calibrating would solve this issue. If I can support somehow, please let me know

Hi, I have bought some of them and they work like a charm (lex / leroy merlin version) You have to calibrate them by pushing 5 times the phisical switch at the module. The blind will go full up, then full down and them up again.

The only issue I have is at the first pairing. I have to reboot mosquito brocker in order to get they publishing the state and follow the commands properly.

Having this feature would be great since they are ver inconvinient to disassemble because they barely fit under the wall buttons.

Regards.

josejn commented 5 months ago

After 2 weeks, one of my modules stops sending open status. He's always responding as closed even when status is 100% open :/ Other of them behaves as push button. When I release the button, the blind stop moving (the others keep moving until I press the button again) I think this would be fixed with a new calibration. Can you implement it, please? Regards.

amanfromfrance commented 3 months ago

I also would like this feature to be implemented as the auto-calibration does not work with my Bubendorff motors.

lippertmarkus commented 3 months ago

did one of you were able to start the manual calibration? E.g. via dev console?

amanfromfrance commented 3 months ago

If you mean sending commands using this panel: image

Then no it never worked.

lippertmarkus commented 3 months ago

I just were able to manually set the calibration bit:

image

but setting this just starts the automatic calibration (just like pressing the button on the module 5 times) and afterwards disables the automatic calibration again (bit1 = 0)

amanfromfrance commented 3 months ago

So you are sending something like 0x0010?

lippertmarkus commented 3 months ago

yes writing the attribute, but as a decimal (2)

amanfromfrance commented 2 months ago

I was able to get the complete list of attributes from the module using zha_toolkit.scan_device command:

zha_toolkit_version: v1.1.10
zigpy_version: 0.64.1
zigpy_rf_version: 0.39.1
ieee_org:
  - 165
  - 93
  - 25
  - 254
  - 255
  - 177
  - 179
  - 244
ieee: f4:b3:b1:ff:fe:19:5d:a5
command: scan_device
command_data: null
start_time: "2024-06-20T16:18:26.653801+00:00"
errors: []
params:
  dir: 0
  tries: 1
  expect_reply: true
  args: []
  read_before_write: true
  read_after_write: true
scan:
  ieee: f4:b3:b1:ff:fe:19:5d:a5
  nwk: "0x5447"
  model: SIN-4-RS-20
  manufacturer: NodOn
  manufacturer_id: "0x4747"
  endpoints:
    - id: 1
      device_type: "0x0202"
      profile: "0x0104"
      in_clusters:
        "0x0000":
          cluster_id: "0x0000"
          title: Basic
          name: basic
          attributes:
            "0x0000":
              attribute_id: "0x0000"
              attribute_name: zcl_version
              value_type:
                - "0x20"
                - uint8_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 8
            "0x0001":
              attribute_id: "0x0001"
              attribute_name: app_version
              value_type:
                - "0x20"
                - uint8_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 3
            "0x0002":
              attribute_id: "0x0002"
              attribute_name: stack_version
              value_type:
                - "0x20"
                - uint8_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 103
            "0x0003":
              attribute_id: "0x0003"
              attribute_name: hw_version
              value_type:
                - "0x20"
                - uint8_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 50
            "0x0004":
              attribute_id: "0x0004"
              attribute_name: manufacturer
              value_type:
                - "0x42"
                - CharacterString
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: NodOn
            "0x0005":
              attribute_id: "0x0005"
              attribute_name: model
              value_type:
                - "0x42"
                - CharacterString
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: SIN-4-RS-20
            "0x0006":
              attribute_id: "0x0006"
              attribute_name: date_code
              value_type:
                - "0x42"
                - CharacterString
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: "2020"
            "0x0007":
              attribute_id: "0x0007"
              attribute_name: power_source
              value_type:
                - "0x30"
                - enum8
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: 1
            "0x0014":
              attribute_id: "0x0014"
              attribute_name: disable_local_config
              value_type:
                - "0x18"
                - bitmap8
                - Discrete
              access: READ|WRITE|REPORT
              access_acl: 7
              attribute_value: 0
            "0x4000":
              attribute_id: "0x4000"
              attribute_name: sw_build_id
              value_type:
                - "0x42"
                - CharacterString
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: 3.0.0-1.1.2
            "0xfffd":
              attribute_id: "0xfffd"
              attribute_name: cluster_revision
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 3
          commands_received:
            "0x00":
              command_id: "0x00"
              command_name: reset_fact_default
              command_arguments: <class 'zigpy.zcl.foundation.reset_fact_default'>
          commands_generated: {}
        "0x0003":
          cluster_id: "0x0003"
          title: Identify
          name: identify
          attributes:
            "0x0000":
              attribute_id: "0x0000"
              attribute_name: identify_time
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|WRITE|REPORT
              access_acl: 7
              attribute_value: 0
            "0xfffd":
              attribute_id: "0xfffd"
              attribute_name: cluster_revision
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 2
          commands_received:
            "0x00":
              command_id: "0x00"
              command_name: identify
              command_arguments: <class 'zigpy.zcl.foundation.identify'>
            "0x01":
              command_id: "0x01"
              command_name: identify_query
              command_arguments: <class 'zigpy.zcl.foundation.identify_query'>
          commands_generated:
            "0x00":
              command_id: "0x00"
              command_name: identify_query_response
              command_args: <class 'zigpy.zcl.foundation.identify_query_response'>
        "0x0004":
          cluster_id: "0x0004"
          title: Groups
          name: groups
          attributes:
            "0x0000":
              attribute_id: "0x0000"
              attribute_name: name_support
              value_type:
                - "0x18"
                - bitmap8
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: 0
            "0xfffd":
              attribute_id: "0xfffd"
              attribute_name: cluster_revision
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 3
          commands_received:
            "0x00":
              command_id: "0x00"
              command_name: add
              command_arguments: <class 'zigpy.zcl.foundation.add'>
            "0x01":
              command_id: "0x01"
              command_name: view
              command_arguments: <class 'zigpy.zcl.foundation.view'>
            "0x02":
              command_id: "0x02"
              command_name: get_membership
              command_arguments: <class 'zigpy.zcl.foundation.get_membership'>
            "0x03":
              command_id: "0x03"
              command_name: remove
              command_arguments: <class 'zigpy.zcl.foundation.remove'>
            "0x04":
              command_id: "0x04"
              command_name: remove_all
              command_arguments: <class 'zigpy.zcl.foundation.remove_all'>
            "0x05":
              command_id: "0x05"
              command_name: add_if_identifying
              command_arguments: <class 'zigpy.zcl.foundation.add_if_identifying'>
          commands_generated:
            "0x00":
              command_id: "0x00"
              command_name: add_response
              command_args: <class 'zigpy.zcl.foundation.add_response'>
            "0x01":
              command_id: "0x01"
              command_name: view_response
              command_args: <class 'zigpy.zcl.foundation.view_response'>
            "0x02":
              command_id: "0x02"
              command_name: get_membership_response
              command_args: <class 'zigpy.zcl.foundation.get_membership_response'>
            "0x03":
              command_id: "0x03"
              command_name: remove_response
              command_args: <class 'zigpy.zcl.foundation.remove_response'>
        "0x0005":
          cluster_id: "0x0005"
          title: Scenes
          name: scenes
          attributes:
            "0x0000":
              attribute_id: "0x0000"
              attribute_name: count
              value_type:
                - "0x20"
                - uint8_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 0
            "0x0001":
              attribute_id: "0x0001"
              attribute_name: current_scene
              value_type:
                - "0x20"
                - uint8_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 0
            "0x0002":
              attribute_id: "0x0002"
              attribute_name: current_group
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 0
            "0x0003":
              attribute_id: "0x0003"
              attribute_name: scene_valid
              value_type:
                - "0x10"
                - Bool
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: 0
            "0x0004":
              attribute_id: "0x0004"
              attribute_name: name_support
              value_type:
                - "0x18"
                - bitmap8
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: 0
            "0xfffd":
              attribute_id: "0xfffd"
              attribute_name: cluster_revision
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 3
          commands_received:
            "0x00":
              command_id: "0x00"
              command_name: add
              command_arguments: <class 'zigpy.zcl.foundation.add'>
            "0x01":
              command_id: "0x01"
              command_name: view
              command_arguments: <class 'zigpy.zcl.foundation.view'>
            "0x02":
              command_id: "0x02"
              command_name: remove
              command_arguments: <class 'zigpy.zcl.foundation.remove'>
            "0x03":
              command_id: "0x03"
              command_name: remove_all
              command_arguments: <class 'zigpy.zcl.foundation.remove_all'>
            "0x04":
              command_id: "0x04"
              command_name: store
              command_arguments: <class 'zigpy.zcl.foundation.store'>
            "0x05":
              command_id: "0x05"
              command_name: recall
              command_arguments: <class 'zigpy.zcl.foundation.recall'>
            "0x06":
              command_id: "0x06"
              command_name: get_scene_membership
              command_arguments: <class 'zigpy.zcl.foundation.get_scene_membership'>
          commands_generated:
            "0x00":
              command_id: "0x00"
              command_name: add_scene_response
              command_args: <class 'zigpy.zcl.foundation.add_scene_response'>
            "0x01":
              command_id: "0x01"
              command_name: view_response
              command_args: <class 'zigpy.zcl.foundation.view_response'>
            "0x02":
              command_id: "0x02"
              command_name: remove_scene_response
              command_args: <class 'zigpy.zcl.foundation.remove_scene_response'>
            "0x03":
              command_id: "0x03"
              command_name: remove_all_scenes_response
              command_args: <class 'zigpy.zcl.foundation.remove_all_scenes_response'>
            "0x04":
              command_id: "0x04"
              command_name: store_scene_response
              command_args: <class 'zigpy.zcl.foundation.store_scene_response'>
            "0x06":
              command_id: "0x06"
              command_name: get_scene_membership_response
              command_args: <class 'zigpy.zcl.foundation.get_scene_membership_response'>
        "0x0102":
          cluster_id: "0x0102"
          title: Window Covering
          name: window_covering
          attributes:
            "0x0000":
              attribute_id: "0x0000"
              attribute_name: window_covering_type
              value_type:
                - "0x30"
                - enum8
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: 8
            "0x0007":
              attribute_id: "0x0007"
              attribute_name: config_status
              value_type:
                - "0x18"
                - bitmap8
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: 3
            "0x0008":
              attribute_id: "0x0008"
              attribute_name: current_position_lift_percentage
              value_type:
                - "0x20"
                - uint8_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 100
            "0x0009":
              attribute_id: "0x0009"
              attribute_name: current_position_tilt_percentage
              value_type:
                - "0x20"
                - uint8_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 0
            "0x0010":
              attribute_id: "0x0010"
              attribute_name: installed_open_limit_lift
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 0
            "0x0011":
              attribute_id: "0x0011"
              attribute_name: installed_closed_limit_lift
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 65535
            "0x0012":
              attribute_id: "0x0012"
              attribute_name: installed_open_limit_tilt
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 0
            "0x0013":
              attribute_id: "0x0013"
              attribute_name: installed_closed_limit_tilt
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 65535
            "0x0017":
              attribute_id: "0x0017"
              attribute_name: window_covering_mode
              value_type:
                - "0x18"
                - bitmap8
                - Discrete
              access: READ|WRITE|REPORT
              access_acl: 7
              attribute_value: 8
            "0xfffd":
              attribute_id: "0xfffd"
              attribute_name: "65533"
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 1
            "0x0001":
              attribute_id: "0x0001"
              attribute_name: physical_closed_limit_lift
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|WRITE|REPORT
              access_acl: 7
              manf_id: 4747
              attribute_value: 300
            "0x0002":
              attribute_id: "0x0002"
              attribute_name: physical_closed_limit_tilt
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|WRITE|REPORT
              access_acl: 7
              manf_id: 4747
              attribute_value: 300
            "0x0003":
              attribute_id: "0x0003"
              attribute_name: current_position_lift
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|WRITE|REPORT
              access_acl: 7
              manf_id: 4747
              attribute_value: 2000
            "0x0004":
              attribute_id: "0x0004"
              attribute_name: current_position_tilt
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|WRITE|REPORT
              access_acl: 7
              manf_id: 4747
              attribute_value: 2000
          commands_received:
            "0x00":
              command_id: "0x00"
              command_name: up_open
              command_arguments: <class 'zigpy.zcl.foundation.up_open'>
            "0x01":
              command_id: "0x01"
              command_name: down_close
              command_arguments: <class 'zigpy.zcl.foundation.down_close'>
            "0x02":
              command_id: "0x02"
              command_name: stop
              command_arguments: <class 'zigpy.zcl.foundation.stop'>
            "0x05":
              command_id: "0x05"
              command_name: go_to_lift_percentage
              command_arguments: <class 'zigpy.zcl.foundation.go_to_lift_percentage'>
            "0x08":
              command_id: "0x08"
              command_name: go_to_tilt_percentage
              command_arguments: <class 'zigpy.zcl.foundation.go_to_tilt_percentage'>
          commands_generated: {}
        "0x1000":
          cluster_id: "0x1000"
          title: LightLink
          name: lightlink
          attributes:
            "0xfffd":
              attribute_id: "0xfffd"
              attribute_name: "65533"
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 2
          commands_received:
            "0x41":
              command_id: "0x41"
              command_name: get_group_identifiers
              command_arguments: <class 'zigpy.zcl.foundation.get_group_identifiers'>
            "0x42":
              command_id: "0x42"
              command_name: get_endpoint_list
              command_arguments: <class 'zigpy.zcl.foundation.get_endpoint_list'>
          commands_generated:
            "0x01":
              command_id: "0x01"
              command_name: scan_rsp
              command_args: <class 'zigpy.zcl.foundation.scan_rsp'>
            "0x03":
              command_id: "0x03"
              command_name: device_info_rsp
              command_args: <class 'zigpy.zcl.foundation.device_info_rsp'>
            "0x11":
              command_id: "0x11"
              command_name: network_start_rsp
              command_args: <class 'zigpy.zcl.foundation.network_start_rsp'>
            "0x13":
              command_id: "0x13"
              command_name: network_join_router_rsp
              command_args: <class 'zigpy.zcl.foundation.network_join_router_rsp'>
            "0x15":
              command_id: "0x15"
              command_name: network_join_end_device_rsp
              command_args: <class 'zigpy.zcl.foundation.network_join_end_device_rsp'>
            "0x40":
              command_id: "0x40"
              command_name: endpoint_info
              command_args: <class 'zigpy.zcl.foundation.endpoint_info'>
            "0x41":
              command_id: "0x41"
              command_name: get_group_identifiers_rsp
              command_args: <class 'zigpy.zcl.foundation.get_group_identifiers_rsp'>
            "0x42":
              command_id: "0x42"
              command_name: get_endpoint_list_rsp
              command_args: <class 'zigpy.zcl.foundation.get_endpoint_list_rsp'>
      out_clusters:
        "0x0003":
          cluster_id: "0x0003"
          title: Identify
          name: identify
          attributes:
            "0xfffd":
              attribute_id: "0xfffd"
              attribute_name: cluster_revision
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 2
          commands_received:
            "0x00":
              command_id: "0x00"
              command_name: identify
              command_arguments: <class 'zigpy.zcl.foundation.identify'>
          commands_generated:
            "0x00":
              command_id: "0x00"
              command_name: identify_query_response
              command_args: <class 'zigpy.zcl.foundation.identify_query_response'>
            "0x01":
              command_id: "0x01"
              command_name: "1"
              command_args: not_in_zcl
        "0x0019":
          cluster_id: "0x0019"
          title: Ota
          name: ota
          attributes:
            "0x0000":
              attribute_id: "0x0000"
              attribute_name: upgrade_server_id
              value_type:
                - "0xf0"
                - EUI64
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value:
                - 48
                - 178
                - 34
                - 254
                - 255
                - 39
                - 135
                - 4
            "0x0001":
              attribute_id: "0x0001"
              attribute_name: file_offset
              value_type:
                - "0x23"
                - uint32_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 393278
            "0x0006":
              attribute_id: "0x0006"
              attribute_name: image_upgrade_status
              value_type:
                - "0x30"
                - enum8
                - Discrete
              access: READ|REPORT
              access_acl: 5
              attribute_value: 0
            "0xfffd":
              attribute_id: "0xfffd"
              attribute_name: cluster_revision
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 4
          commands_received: {}
          commands_generated:
            "0x01":
              command_id: "0x01"
              command_name: "1"
              command_args: not_in_zcl
            "0x03":
              command_id: "0x03"
              command_name: "3"
              command_args: not_in_zcl
            "0x06":
              command_id: "0x06"
              command_name: "6"
              command_args: not_in_zcl
        "0x0102":
          cluster_id: "0x0102"
          title: Window Covering
          name: window_covering
          attributes:
            "0xfffd":
              attribute_id: "0xfffd"
              attribute_name: "65533"
              value_type:
                - "0x21"
                - uint16_t
                - Analog
              access: READ|REPORT
              access_acl: 5
              attribute_value: 3
          commands_received: {}
          commands_generated:
            "0x00":
              command_id: "0x00"
              command_name: "0"
              command_args: not_in_zcl
            "0x01":
              command_id: "0x01"
              command_name: "1"
              command_args: not_in_zcl
            "0x02":
              command_id: "0x02"
              command_name: "2"
              command_args: not_in_zcl
    - id: 242
      device_type: "0x0066"
      profile: "0xa1e0"
success: true

When I reached NodOn customer Support, they told me that there are Manufacturers Specific Attributes and that we could use the following attributes:

But as you can see these Manufacturers attribues do not appear in the YAML... so I'm confused.

From what the customer support told me, it works perfectly using Z2M but to be honest I am reluctant to migrate...

lippertmarkus commented 2 months ago

Those manufacturer specific attributes have been implemented in Z2M here: https://github.com/AlexisPolegato/zigbee-herdsman-converters/blob/b0bf537d9509e8be158e1297d8749429cc5ff863/src/devices/nodon.ts#L21-L76

but changing them has no effect for me. I also asked customer support about using those attributes this but they weren't able to help. Can you try with Z2M if they work for you ?

amanfromfrance commented 2 months ago

Sure, I'll give it a try.

But maybe with a cheap alternate Zigbee key as I spent many hours getting my Tuya garage opener module working and tweaking it... I suppose I would have to start from 0 once more with Z2M otherwise.

By any chance, would you have a recommendation for such a cheap alternate Zigbee key? (I am using SkyConnect at the moment).

lippertmarkus commented 2 months ago

I'm super happy with this one: https://itead.cc/product/sonoff-zigbee-3-0-usb-dongle-plus/

amanfromfrance commented 2 months ago

So! I've received and installed the Sonoff Zigbee dongle, installed and configured Z2M and the NodOn module is now integrated through Z2M on my HA installation.

I can now see the manufacturer specific attributes and by default they are not set: image

But changing them using the sliders or the dedicated field has absolutely no effect... while the NodOn customer support ensured me that it works for them.

Maybe that is due to my Bubendorff 4 wire shutters?? It's really a shame, I feel like there is no solution.

lippertmarkus commented 2 months ago

Thanks for the feedback! Good (or bad) to hear that you experience the same issue as me. Maybe those attributes require a new firmware? But neither Zigbee2MQTT nor the NodOn mobile app shows a firmware update. Could you ask the NodOn customer support about that?

maybe @AlexisPolegato who contributed those attributes to Zigbee2MQTT can help us?

amanfromfrance commented 2 months ago

Sure, I'll try to call them again this week. Because for them what I was experiencing was related to the fact that I was using ZHA instead of Z2M... which has been proven wrong.

One thing I really don't understand is that as soon as the module is detected and integrated (wether it is using ZHA or Z2M), it automatically calibrates itself:

Which according to NodOn customer support should not happen.

The installed FW on my module is 3.0.0-1.1.2.

And when it comes to the NodOn Connect app, it tells me that my module is not up to date but the firmware update stalls at 0%... and I am unable to remove the module from the list.

lippertmarkus commented 2 months ago

Thank you very much!

For me it's also automatically calibrated when paired with Z2M. I have firmware 3.0.0-1.3.0.

AlexisPolegato commented 2 months ago

Hi @amanfromfrance ,

Sure, I'll try to call them again this week. Because for them what I was experiencing was related to the fact that I was using ZHA instead of Z2M... which has been proven wrong.

One thing I really don't understand is that as soon as the module is detected and integrated (wether it is using ZHA or Z2M), it automatically calibrates itself:

  • Makes the shutter go up for 20cm,
  • Makes it go down for 20cm,
  • Makes it go up for 20cm,
  • Makes it go down for 20cm,
  • Finally makes it go up for 20cm.

Which according to NodOn customer support should not happen.

Well, this should actually happen, but it is not the Calibration, it's the Identification Process (when the Device is paired in a Zigbee Network, it identifies itself). Once you've added the Device in the Network, you can calibrate it by doing a 5x press on the button. Altenatively, you can launch the Calibration from your Z2M interface.

The installed FW on my module is 3.0.0-1.1.2.

And when it comes to the NodOn Connect app, it tells me that my module is not up to date but the firmware update stalls at 0%... and I am unable to remove the module from the list.

I will test the Manuel Calibration with this version in few days to check if there's any issue, I'll get back to you on this point.

lippertmarkus commented 2 months ago

With a hint from @AlexisPolegato I just updated to firmware 3.3.0-1.3.0 via Z2M and since then the configuration attributes seem to work

amanfromfrance commented 2 months ago

That's great! How were you able to update to this firmware? Using the NodOn app?

lippertmarkus commented 2 months ago

In Z2M under "OTA" you can "check for new updates" for the NodOn modules and update them afterwards

amanfromfrance commented 2 months ago

Actually I tried it numerous times this weekend and it never worked... 1h ago, it detected the new firmware version and I was able to launch the update 👍

lippertmarkus commented 2 months ago

I just updated my second module to 3.3.0-1.3.0 as well and tried setting the calibration attributes but for that module it didn't work :(

amanfromfrance commented 2 months ago

Ok so that's not related to the firmware then 😯

lippertmarkus commented 2 months ago

@amanfromfrance Did it work for you after the firmware update?

amanfromfrance commented 2 months ago

I'll only be able to test tomorrow when I'll be back home, but for now what I can say is that the firmware update I was able to start yesterday (I could see a progress indication) seemingly has gone wrong because the version displayed is still the same:

image

And now the OTA update tells me the module is up to date 🤔

image

lippertmarkus commented 2 months ago

@amanfromfrance you mentioned in an earlier comment that you had firmware 3.0.0-1.1.2 before so at least the first version part seems to have increased after the firmware update

amanfromfrance commented 2 months ago

I've just tested and the calibration attributes still have no effect unfortunately :(

lippertmarkus commented 2 months ago

I did further tests and found out that even after setting the manual calibration attributes the NodOn modules still seem to watch the current to detect start end end positions.

Setting the manual calibration attributes did only work for roller shutters for which the automatic calibration also works (roller shutters which are detected correctly because of the current rising/falling edges).

What I tried:

  1. Add a module to a "supported" roller shutter
  2. Run automated calibration ==> roller shutter correctly drives to closed or open positions
  3. Set manual calibration attributes ==> automated calibration is correctly overriden by the set runtime values and roller shutter drives the correct amount of time that I manually set
  4. Disconnect the Nodon module from the supported and connect it to the "unsupported" roller shutter (for me those are two roller shutters paired and driven together) without reset/reconfigure
  5. I would expect that the manual runtimes I set before in step 3 are still applying for the "unsupported" roller shutter I switched to but this is not the case. Setting a position now doesn't move the roller shutter at all, using "OPEN" and "CLOSE" from Z2M only moves the roller shutter for 1s and then stops (instead of the manual runtime I set in 3)

I would expect that as soon as I set the manual calibration attributes the module no longer watches the current and only drives the exact amount of seconds I set it to. But it seems that even with the manually set runtime the module still watches the current (which "give the wrong signal" when e.g. two roller shutters are paired)

@AlexisPolegato Are you able to change that behaviour or make it configurable? I really like the modules but this behaviour really limits the use cases 🙁

amanfromfrance commented 2 months ago

I've also noticed something annoying when the module is installed and I want to open or close the shutter using the physical switch (10cm by 10cm...): I have to press the up/down button 2 times for the shutter to go up/down:

I suppose that's not a normal behavior...

I have these switches installed: https://www.leroymerlin.fr/produits/electricite-et-domotique/interrupteur-et-prise/interrupteur-et-prise-schneider-electric/schneider-electric-odace/interrupteur-schneider-electric-odace/interrupteur-volet-roulant-a-assembler-odace-schneider-electric-blanc-68749695.html

Sraoune commented 2 months ago

I've also noticed something annoying when the module is installed and I want to open or close the shutter using the physical switch (10cm by 10cm...): I have to press the up/down button 2 times for the shutter to go up/down:

* 1st press: nothing happens

* Press on the middle/stop button to be able to go up/down a 2nd time

* 2nd press: the shutter goes up/down

I suppose that's not a normal behavior...

I have these switches installed: https://www.leroymerlin.fr/produits/electricite-et-domotique/interrupteur-et-prise/interrupteur-et-prise-schneider-electric/schneider-electric-odace/interrupteur-schneider-electric-odace/interrupteur-volet-roulant-a-assembler-odace-schneider-electric-blanc-68749695.html

I experience the exact same behaviour, in the same context (Sin-4-RS-20 + Schneider Odace). I beleive this is related to the switch type (bistable switch with a reset button). If i do a power reset of the NodOn, i get back to what is the standard comportment : pressing up or down launch the shutter going up/down, and the middle button stop the motion.

amanfromfrance commented 1 month ago

It's been a long while now, I suppose we'll have to do with what we have :(

AlexisPolegato commented 3 weeks ago

It's been a long while now, I suppose we'll have to do with what we have :(

You are talking about the behavior with the Physical Switch ? There's a learning mechanism at the first use of the the Switch by the device. If it doesn't work properly, it might come from here.

So you can try to power off and on your device and then make a Simple Press on the Switch.

amanfromfrance commented 3 weeks ago

Hello @AlexisPolegato,

I am talking more generally of the fact that the NodOn module isn't working at all in my case, .e.g. with my Bubendorff shutters:

And yes on top of that there is the Physical Switch problem.

Last week I tried to use 2 MOES Zigbee + RF curtain switch modules (MS-108ZR) and it worked at first try... bonus is that with these modules I get to set the shutters position using a percentage.

I find it sad that a 40/45€ module is unable to accomplish what a 12€ module is able to do.