Custom Component: Nikobus

Hi, yes i have one on paper. “Algemene Catalogus 2009 - 2010”.
I also have the same one (only the Nikobus chapter) from 2012-2013 in pdf and a very old pdf with components of the first version of Nikobus.
I will compare the one on paper with the PDF one and see if there are any differences.
i’ll send you a PM with the file(s).

1 Like

Nikobus 0.4.0 is out, 0.4 releases will not change anything else than adding discovery of the Nikobus installation. So if you are not interested; you are fine to skip the release and stay with 0.3.1 version.

If you do upgrade, may I ask you to revert with the below information:

1- go to you Nikobus physical installation and press one by one each “yellow” buttons from your modules until your hear a beep. Remember in which order you have pressed and the module type: dimmer; roller; etc…

2- go to HA / System / Log put a filter on “niko” and from the 3dots - “load full log”

3- copy/paste everything you got under " Discovered device…" highlighting missing or incorrect matches vs your install.

Do not worry about a module being reported mutiple times, that’s cosmetics, I’m working on the functionalities first:

Thank you !

2025-01-30 14:34:30.342 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 09 {'Category': 'Module', 'Model': '05-002-02', 'Name': 'Compact Switch Module'} at 5B05 from message: b'\x18\x05[\x00\x90\t\x13\xff+\x81U'
2025-01-30 14:34:30.502 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 09 {'Category': 'Module', 'Model': '05-002-02', 'Name': 'Compact Switch Module'} at 5B05 from message: b'\x18\x05[\x00\x90\t\x13\xff+\x81U'
2025-01-30 14:34:30.662 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 09 {'Category': 'Module', 'Model': '05-002-02', 'Name': 'Compact Switch Module'} at 5B05 from message: b'\x18\x05[\x00\x90\t\x13\xff+\x81U'
2025-01-30 14:34:30.805 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 09 {'Category': 'Module', 'Model': '05-002-02', 'Name': 'Compact Switch Module'} at 5B05 from message: b'\x18\x05[\x00\x90\t\x13\xff+\x81U'
2025-01-30 14:34:30.962 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 09 {'Category': 'Module', 'Model': '05-002-02', 'Name': 'Compact Switch Module'} at 5B05 from message: b'\x18\x05[\x00\x90\t\x13\xff+\x81U'
2025-01-30 14:34:34.322 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 03 {'Category': 'Module', 'Model': '05-007-02', 'Name': 'Dimmer Module'} at 0E6C from message: b'\x18l\x0e\x000\x03!\nq8\x97'
2025-01-30 14:34:34.472 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 03 {'Category': 'Module', 'Model': '05-007-02', 'Name': 'Dimmer Module'} at 0E6C from message: b'\x18l\x0e\x000\x03!\nq8\x97'
2025-01-30 14:34:34.632 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 03 {'Category': 'Module', 'Model': '05-007-02', 'Name': 'Dimmer Module'} at 0E6C from message: b'\x18l\x0e\x000\x03!\nq8\x97'
2025-01-30 14:34:34.784 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 03 {'Category': 'Module', 'Model': '05-007-02', 'Name': 'Dimmer Module'} at 0E6C from message: b'\x18l\x0e\x000\x03!\nq8\x97'
2025-01-30 14:34:34.949 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 03 {'Category': 'Module', 'Model': '05-007-02', 'Name': 'Dimmer Module'} at 0E6C from message: b'\x18l\x0e\x000\x03!\nq8\x97'
2025-01-30 14:34:37.862 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 02 {'Category': 'Module', 'Model': '05-001-02', 'Name': 'Roller Shutter Module'} at 9105 from message: b'\x18\x05\x91\x00 \x02%\xff\xbd\xa0\x17'
2025-01-30 14:34:38.024 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 02 {'Category': 'Module', 'Model': '05-001-02', 'Name': 'Roller Shutter Module'} at 9105 from message: b'\x18\x05\x91\x00 \x02%\xff\xbd\xa0\x17'
2025-01-30 14:34:38.172 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 02 {'Category': 'Module', 'Model': '05-001-02', 'Name': 'Roller Shutter Module'} at 9105 from message: b'\x18\x05\x91\x00 \x02%\xff\xbd\xa0\x17'
2025-01-30 14:34:38.331 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 02 {'Category': 'Module', 'Model': '05-001-02', 'Name': 'Roller Shutter Module'} at 9105 from message: b'\x18\x05\x91\x00 \x02%\xff\xbd\xa0\x17'
2025-01-30 14:34:38.473 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 02 {'Category': 'Module', 'Model': '05-001-02', 'Name': 'Roller Shutter Module'} at 9105 from message: b'\x18\x05\x91\x00 \x02%\xff\xbd\xa0\x17'
2025-01-30 14:34:41.401 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 02 {'Category': 'Module', 'Model': '05-001-02', 'Name': 'Roller Shutter Module'} at 8394 from message: b'\x18\x94\x83\x00 \x02\x11\xff\xc1\xd6+'
2025-01-30 14:34:41.542 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 02 {'Category': 'Module', 'Model': '05-001-02', 'Name': 'Roller Shutter Module'} at 8394 from message: b'\x18\x94\x83\x00 \x02\x11\xff\xc1\xd6+'
2025-01-30 14:34:41.693 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 02 {'Category': 'Module', 'Model': '05-001-02', 'Name': 'Roller Shutter Module'} at 8394 from message: b'\x18\x94\x83\x00 \x02\x11\xff\xc1\xd6+'
2025-01-30 14:34:41.863 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 02 {'Category': 'Module', 'Model': '05-001-02', 'Name': 'Roller Shutter Module'} at 8394 from message: b'\x18\x94\x83\x00 \x02\x11\xff\xc1\xd6+'
2025-01-30 14:34:41.993 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 02 {'Category': 'Module', 'Model': '05-001-02', 'Name': 'Roller Shutter Module'} at 8394 from message: b'\x18\x94\x83\x00 \x02\x11\xff\xc1\xd6+'
2025-01-30 14:34:45.443 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 01 {'Category': 'Module', 'Model': '05-000-02', 'Name': 'Switch Module'} at 4707 from message: b'\x18\x07G\x00\x10\x01\x1e\xffX\xc0\x81'
2025-01-30 14:34:45.603 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 01 {'Category': 'Module', 'Model': '05-000-02', 'Name': 'Switch Module'} at 4707 from message: b'\x18\x07G\x00\x10\x01\x1e\xffX\xc0\x81'
2025-01-30 14:34:45.763 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 01 {'Category': 'Module', 'Model': '05-000-02', 'Name': 'Switch Module'} at 4707 from message: b'\x18\x07G\x00\x10\x01\x1e\xffX\xc0\x81'
2025-01-30 14:34:45.913 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 01 {'Category': 'Module', 'Model': '05-000-02', 'Name': 'Switch Module'} at 4707 from message: b'\x18\x07G\x00\x10\x01\x1e\xffX\xc0\x81'
2025-01-30 14:34:46.075 INFO (MainThread) [custom_components.nikobus.nkblistener] Discovered device : 01 {'Category': 'Module', 'Model': '05-000-02', 'Name': 'Switch Module'} at 4707 from message: b'\x18\x07G\x00\x10\x01\x1e\xffX\xc0\x81'

New release 0.4.1 available! :tada: Discovering modules and buttons is now possible. Next up: establishing the relationship between module outputs and buttons… Work in progress! :construction:

Big Thanks to @promy for his guidance and contribution !

This release does not modify or add anything new. It simply logs the discovery output for troubleshooting purposes. You can safely install it.

You might get some warning, and that’s where you could help

Unknown device detected: Type 31 at Address 005B05. Please open an issue on https://github.com/fdebrus/Nikobus-HA/issues with this information.
Unknown device detected: Type FF at Address FFFFFF. Please open an issue on https://github.com/fdebrus/Nikobus-HA/issues with this information.
Unknown device detected: Type FB at Address FFFFFF. Please open an issue on https://github.com/fdebrus/Nikobus-HA/issues with this information.
Unknown device detected: Type FF at Address FEFFFF. Please open an issue on https://github.com/fdebrus/Nikobus-HA/issues with this information.
Unknown device detected: Type FE at Address FFFFFF. Please open an issue on https://github.com/fdebrus/Nikobus-HA/issues with this information.

You can ignore type FF FB FE etc… but do report

Type 31 at Address 005B05 and try to figure out what is having the address 5B05 or 055B in your install, so you can report a module I do not know about and I can be adding to the discovery process.

What you can test so far

As you install the new release, you can now trigger a service “nikobus integration: scan for module”

Before to perform action, make sure you have debuglog enabled. you shall then see your installation specifics reported in the log as

Discovered Module - Dimmer Module, Model: 05-007-02, at Address: 000E6C
Discovered Module - Roller Shutter Module, Model: 05-001-02, at Address: 009105
Discovered Module - Roller Shutter Module, Model: 05-001-02, at Address: 008394
Discovered Module - Switch Module, Model: 05-000-02, at Address: 00C9A5
Discovered Module - PC Logic, Model: 05-201, at Address: 00940C
Discovered Module - Switch Module, Model: 05-000-02, at Address: 004707
Discovered Button - Feedback Button with 2 Operation Points, Model: 05-344, at Address: 0F654E
Discovered Module - Feedback Module, Model: 05-207, at Address: 00966C
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 1843B4
Discovered Button - IR Button with 4 Operation Points, Model: 05-348, at Address: 0D1C80
Discovered Button - RF Transmitter with 4 Operation Points, Model: 05-312, at Address: 201250
Discovered Button - RF Transmitter with 4 Operation Points, Model: 05-312, at Address: 204915
Discovered Button - Feedback Button with 4 Operation Points, Model: 05-347, at Address: 10152B
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 17C554
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 1D1F12
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 182F18
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 1C8D84
Discovered Button - Feedback Button with 4 Operation Points, Model: 05-347, at Address: 103669
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 17EF72
Discovered Button - IR Button with 4 Operation Points, Model: 05-348, at Address: 0FFEC0
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 1809FE
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 1D1EA6
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 180C56
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 17C1CC
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 1CFBA0
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 1E0D4A
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 1D0C02
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 1CFE4A
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 1D164C
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 1D127E
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 1E1ED4
Discovered Button - RF Transmitter with 4 Operation Points, Model: 05-312, at Address: 3FFFFF
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 1DF39E
Discovered Button - All-Function Interface, Model: 05-055, at Address: 0C2387
Discovered Button - All-Function Interface, Model: 05-055, at Address: 0C2166
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 1CA840
Discovered Button - Switch Interface, Model: 05-057, at Address: 1634DC
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 1D157C
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 1D1482
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 1E1ED8
Discovered Button - Button with 4 Operation Points, Model: 05-346, at Address: 1E0D48
Discovered Button - Button with 8 Operation Points, Model: 05-349, at Address: 1DF256
Discovered Button - Button with 8 Operation Points, Model: 05-349, at Address: 1DF1E0
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 1D054A
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 17F2F8
Discovered Button - Button with 2 Operation Points, Model: 05-342, at Address: 1E584C
Discovered Button - RF Transmitter with 2 Operation Points, Model: 05-311, at Address: 2E58F6

You can now also try with the “mode” yellow button on any module, it will report it in the log as well but this time only the concerned module is reported.

It will report the modules for which “mode” button has been pressed in a json format

{\n    \"switch_module\": [\n        {\n            \"description\": \"Compact Switch Module at 5B05\",\n            \"model\": \"05-002-02\",\n            \"address\": \"5B05\",\n            \"channels\": [\n                {\n                    \"description\": \"Compact Switch Module Output 1\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Compact Switch Module Output 2\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Compact Switch Module Output 3\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Compact Switch Module Output 4\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                }\n            ]\n        },\n        {\n            \"description\": \"Switch Module at 4707\",\n            \"model\": \"05-000-02\",\n            \"address\": \"4707\",\n            \"channels\": [\n                {\n                    \"description\": \"Switch Module Output 1\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 2\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 3\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 4\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 5\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 6\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 7\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 8\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 9\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 10\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 11\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Switch Module Output 12\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                }\n            ]\n        }\n    ],\n    \"dimmer_module\": [\n        {\n            \"description\": \"Dimmer Module at 0E6C\",\n            \"model\": \"05-007-02\",\n            \"address\": \"0E6C\",\n            \"channels\": [\n                {\n                    \"description\": \"Dimmer Module Output 1\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 2\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 3\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 4\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 5\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 6\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 7\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 8\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 9\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 10\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 11\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                },\n                {\n                    \"description\": \"Dimmer Module Output 12\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\"\n                }\n            ]\n        }\n    ],\n    \"roller_module\": [\n        {\n            \"description\": \"Roller Shutter Module at 9105\",\n            \"model\": \"05-001-02\",\n            \"address\": \"9105\",\n            \"channels\": [\n                {\n                    \"description\": \"Roller Shutter Module Output 1\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                },\n                {\n                    \"description\": \"Roller Shutter Module Output 2\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                },\n                {\n                    \"description\": \"Roller Shutter Module Output 3\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                },\n                {\n                    \"description\": \"Roller Shutter Module Output 4\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                },\n                {\n                    \"description\": \"Roller Shutter Module Output 5\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                },\n                {\n                    \"description\": \"Roller Shutter Module Output 6\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                }\n            ]\n        },\n        {\n            \"description\": \"Roller Shutter Module at 8394\",\n            \"model\": \"05-001-02\",\n            \"address\": \"8394\",\n            \"channels\": [\n                {\n                    \"description\": \"Roller Shutter Module Output 1\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                },\n                {\n                    \"description\": \"Roller Shutter Module Output 2\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                },\n                {\n                    \"description\": \"Roller Shutter Module Output 3\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                },\n                {\n                    \"description\": \"Roller Shutter Module Output 4\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                },\n                {\n                    \"description\": \"Roller Shutter Module Output 5\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                },\n                {\n                    \"description\": \"Roller Shutter Module Output 6\",\n                    \"led_on\": \"\",\n                    \"led_off\": \"\",\n                    \"operation_time\": \"40\"\n                }\n            ]\n        }\n    ]\n}"

CHATGPT will parse it nicely for you for better readability :slight_smile:

relation between module outputs and button is still WIP, it will be something like

2025-02-04 20:42:13.981 INFO (MainThread) [custom_components.nikobus.nkbdiscovery] Decoded Button Commands:
2025-02-04 20:42:13.981 INFO (MainThread) [custom_components.nikobus.nkbdiscovery] Type Code: 2E, Header: 0747
2025-02-04 20:42:13.981 INFO (MainThread) [custom_components.nikobus.nkbdiscovery] Command 1: Button Address: 1A93EE, Key: 0, Channel: 4, Timer: 10, Mode: 6
2025-02-04 20:42:13.981 INFO (MainThread) [custom_components.nikobus.nkbdiscovery] Command 2: Button Address: 77CE48, Key: 1, Channel: 0, Timer: 0, Mode: 4
2025-02-04 20:42:13.981 INFO (MainThread) [custom_components.nikobus.nkbdiscovery] Command 3: Button Address: EEFFEC, Key: 3, Channel: 9, Timer: 10, Mode: 1
1 Like

So we can now fully decode the Nikobus installation, each module will dump its configuration and relationship of its outputs towards buttons with its configuration (on/off, flashing, etc)

I’m planning a release where I will “only” create files in the config directory of HA with 1/ Module inventory 2/ Button inventory 3/ Relationship between outputs and buttons.

It’s too soon to tell if this could be further leveraged by the integration or if it will only be a source of information you can leverage to configure the integration.

Example of the 3 generated files:

{
    "switch_module": {
        "C9A5": {
            "description": "Switch Module at C9A5",
            "model": "05-000-02",
            "address": "C9A5",
            "channels": [
                {
                    "description": "Switch Module Output 1",
                    "led_on": "",
                    "led_off": ""
                },
                {
                    "description": "Switch Module Output 2",
                    "led_on": "",
                    "led_off": ""
                },
{
    "nikobus_button": {
        "0F654E": {
            "description": "Feedback Button with 2 Operation Points at 0F654E",
            "model": "05-344",
            "address": "0F654E",
            "impacted_module": [
                {
                    "address": "xxxx",
                    "group": "x"
                }
            ]
        },
        "1843B4": {
            "description": "Button with 4 Operation Points at 1843B4",
            "model": "05-346",
            "address": "1843B4",
            "impacted_module": [
                {
                    "address": "xxxx",
                    "group": "x"
                }
            ]
        },
Module_address: 0747
Button Address: 1DF256, Push Button Address: 1A93EE, Key: 2D, Channel: Channel 5, Timer: 0s, Mode: M03 Off with operation time
Button Address: 1CFBA0, Push Button Address: 0177CE, Key: 1B, Channel: Channel 2, Timer: 0s, Mode: M03 Off with operation time
Button Address: 1DF256, Push Button Address: 1A93EE, Key: 1D, Channel: Channel 1, Timer: 0s, Mode: M03 Off with operation time

Release 0.4.2 is out; no change in the behaviour of the integration only adding first step of discovery for PCLink owner only.

After installation of this release, you will have new action “query_pclink_module” available to trigger from the “developer tools”

it will create 2 files in the config directory of your HA

1- nikobus_button_discovery.json with all button and their push button

{
    "nikobus_button": {
        "0F654E": {
            "description": "Feedback Button with 2 Operation Points at 0F654E",
            "model": "05-344",
            "address": "0F654E",
            "channels": 2,
            "impacted_module": [
                {
                    "address": "xxxx",
                    "group": "x"
                }
            ],
            "channels_data": {
                "channel_1": {
                    "key": "1A",
                    "address": "8CA9BC"
                },
                "channel_2": {
                    "key": "1B",
                    "address": "CCA9BC"
                }
            }
        },

2- nikobus_module_discovery.json with all modules and their outputs

{
    "switch_module": {
        "C9A5": {
            "description": "Switch Module at C9A5",
            "model": "05-000-02",
            "address": "C9A5",
            "channels": [
                {
                    "description": "Switch Module Output 1",
                    "led_on": "",
                    "led_off": ""
                },
                {
                    "description": "Switch Module Output 2",
                    "led_on": "",
                    "led_off": ""
                },

This is still the early stage of the release 0.4.x that focussed on Nikobus inventory. Next in the pipe is the extract of the relationship between push button and module outputs. It’s already fully working, I just need time to code it in HA

Please revert with any findings. thanks !

1 Like

0.4.3 is out to fix a scene issue with module with less than 6 outputs.

the service command has also be renamed to “query_module_inventory”

the integration now also support the “mode” yellow button from all module, if you do not have a PCLink, you can click on the button “mode” from any module till you hear a beep. It will then be added to nikobus_module_discovery.json

of course, using button “mode” vs PCLink, will not give you the button inventory. only the modules.

it’s safe to test and play, NO CHANGE to the integration, entities, configuration files, … only new files are created in the HA config directory.

Hello, I’m new to Home Assistant and I’m thinking about making the switch from openhab to HA. I have a Nikobus system to control my lights (only lights). I have a PC-Link module connected, no feedback. I have 2 switch modules (05-000-02) and I managed to configure this in HA (I can switch lights on/off) but I’m struggling with the next step: having the fysical buttons discovered and having them in sync. My buttons are mainly 05-064 (4 points) and a few 05-060 (2 points). I can see the Nikobus Integration: Query_pclink_module but no service nikobus integration: scan for module. Also no file named nikobus_button_discovery.json in my config folder.

Welcome to the HA community :slight_smile:

You do not need to scan your buttons, each time a button is pressed “physically” if not yet defined it will appear in nikobus_button_config.json. Next you can manually update it with list of impacted modules.

The “discovery” is work in progress, purpose is to help user without Nikobus software to “dump” their config to files, so it can be used as source for them to configure the integration.

If you known already your module address, so this piece is working, what’s left is to go around the house, push one button → it will be discovered → update its definition in nikobus_button_config.yaml, then next button… Will take time, but only needed once.

Hello, thank you for your quick respons!
There was no file nikobus_button_config.json in my config folder. Nothing happens when physical button is pressed, I created the file manually (should be created automatically, no?) but even then nothing appears in it on button press. Also can’t find any nikobus_button_config.yaml. Is it possible that my type of button (mainly 05-064 (4 points) and a few 05-060 (2 points)) is not recognised?

Could you send me your debuglog ?

Maybe a stupid question but do you mean the file “home-assistant.log” which is in the config folder? and how can I send it? I only see an option here to attach images

go to Settings - Devices and Services - Nikobus and select “enable debug logging”.
back to Settings - System - Log - search log “niko” then 3 dots “Show raw log”.
from another windows restart HA, then check the log and copy/paste any warning / error here.

There are no errors or warnings. Button press is visible in the log:

2025-02-15 22:52:09.388 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Received message: #NA53CEF
2025-02-15 22:52:09.388 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Button command received: #NA53CEF
2025-02-15 22:52:09.388 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Handling button press for address: A53CEF
2025-02-15 22:52:09.420 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Received message: #NA53CEF
2025-02-15 22:52:09.420 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Button command received: #NA53CEF
2025-02-15 22:52:09.420 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Handling button press for address: A53CEF
2025-02-15 22:52:09.454 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Received message: #NA53CEF
2025-02-15 22:52:09.455 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Button command received: #NA53CEF
2025-02-15 22:52:09.455 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Handling button press for address: A53CEF
2025-02-15 22:52:09.484 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Received message: #NA53CEF
2025-02-15 22:52:09.485 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Button command received: #NA53CEF
2025-02-15 22:52:09.485 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Handling button press for address: A53CEF
2025-02-15 22:52:09.517 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Received message: #NA53CEF
2025-02-15 22:52:09.517 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Button command received: #NA53CEF
2025-02-15 22:52:09.517 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Handling button press for address: A53CEF
2025-02-15 22:52:09.549 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Received message: #NA53CEF
2025-02-15 22:52:09.549 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Button command received: #NA53CEF
2025-02-15 22:52:09.549 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Handling button press for address: A53CEF
2025-02-15 22:52:09.582 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Received message: #NA53CEF
2025-02-15 22:52:09.582 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Button command received: #NA53CEF
2025-02-15 22:52:09.582 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Handling button press for address: A53CEF
2025-02-15 22:52:09.614 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Received message: #NA53CEF
2025-02-15 22:52:09.615 DEBUG (MainThread) [custom_components.nikobus.nkblistener] Button command received: #NA53CEF
2025-02-15 22:52:09.615 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Handling button press for address: A53CEF
2025-02-15 22:52:09.770 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Button released for A53CEF, duration: 0.38s
2025-02-15 22:52:09.771 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Discovering button at address: A53CEF
2025-02-15 22:52:09.771 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Firing timer event nikobus_button_released for address: A53CEF
2025-02-15 22:52:09.772 DEBUG (MainThread) [custom_components.nikobus.nkbactuator] Firing events nikobus_short_button_pressed for address: A53CEF

so after this entry: Discovering button at address
look for
Button found in config
or
Creating new button in config

No entry “Button found …”
No entry “Creating …”

Super weird, right after Discovering button at address, the code check if the button already exist and if not create it.

So we do have an issue with the _dict_button_data dictionary… may be we have to check if it’s None / non existing… will debug

    async def button_discovery(self, address: str) -> None:
        """Discover a button and process it if configured."""
        _LOGGER.debug("Discovering button at address: %s", address)

        button_data = self._dict_button_data.get("nikobus_button", {}).get(address)

        if button_data:
            _LOGGER.debug("Button found in config.")
            await self.process_button_modules(button_data, address)
        else:
            _LOGGER.debug("Creating new button in config.")
            new_button = {
                "description": f"DISCOVERED - Nikobus Button #N{address}",
                "address": address,
                "impacted_module": [{"address": "", "group": ""}],
            }
            self._dict_button_data.setdefault("nikobus_button", {})[address] = (
                new_button
            )

            await self._coordinator.nikobus_config.write_json_data(
                "nikobus_button_config.json", "button", self._dict_button_data
            )

Only lines with the word “found” are:

2025-02-15 22:48:09.921 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration nikobus which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2025-02-15 22:48:09.923 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2025-02-15 22:48:15.462 INFO (MainThread) [custom_components.nikobus.nkbconfig] Button configuration file not found: /config/nikobus_button_config.json. A new file will be created upon discovering the first button.

But no new file is created

I see the problem, we expect a dictionary and as the file does not exist, the check of the button existance fails, and the code stop with exception instead of creating the file.

Create the file /config/nikobus_button_config.json with

{
    "nikobus_button": [
        {
            "description": "my dummy button",
            "address": "004E2C",
            "impacted_module": [
                {
                    "address": "0E6C",
                    "group": "1"
                }
            ]
        }
    ]
}

I will fix the code, but this shall get you started, after a first button is discovered, you can remove this dummy one.

new release 0.4.4 that fixes the button discovery issue when not file exist yet…

Now I see that there are lines added in the file on button press but the address is not what I expected

        {
            "description": "DISCOVERED - Nikobus Button #NC8FCEF",
            "address": "C8FCEF",
            "impacted_module": [
                {
                    "address": "",
                    "group": ""
                }
            ]
        }
In nikobussoft the address is totally different: 3DCFC4?