Custom Component: Nikobus

Try USB2 port vs USB3 if relevant to your case

Zigbee Network only comunicate in one direction - Configuration / Zigbee - Home Assistant Community (home-assistant.io)

Many other posts around USB device on VMWare on the forum

I needed to change the controller in vmware ESXI to USB3 in stead of USB2 and it works now without errors.

For reference, and others that might have same issue:
I am using ESXI version 6.7.0 Update 3. The vm is in compatebility mode ESXi 5.5.

Thx Again for all the help. Iā€™m bringing my full installation over to HA

1 Like

We still have a little problem with coversā€¦

At integration starts, as Nikobus does not feedback on cover position, if we set a position for a cover it will not reach intended position.

We need a full run (full open or close) so HA knows about cover position before we can set one.

Options

  • leave as is, setting cover position right after integration starts will fail and cover will be in a random position. setting position will only work after a full close or open when HA become aware of the correct cover postion.

  • Perform a full open or close even if a position has been set, cover will be fully close or open even if we asked for a specific position.

  • Perform a full open or close and then set position, cover will be in the correct postion but it require a full open or close before. It will be managed by the integration, so setting a position of 50%, you will first have a full close or open, then a position setting to 50%

Suggestion ?

I vote for fully open the cover, then set to position.

Fully open the covers at integration start seems to be reasonable for me. Then the integration is in sync with the real position of the covers.

Is there an option to set a default state (if desired) for each defined cover after integration (re)start?

Itā€™s only needed for setting a position right after integration start when cover position is unknown. We do not need this for other scenarioā€™s

Integration starts: Command can be from Nikobus button (except for setting position) or HA.

  • Command to fully open; cover will fullly open and HA / Nikobus will then be in sync
  • Command to fully close; cover will fullly close and HA / Nikobus will then be in sync
  • Command to set a position; cover will fullly open and HA / Nikobus will then be in sync, then position will be set.

I will test this

That could be an option in your module definition ?

{ā€œdescriptionā€: ā€œmyCoverā€, ā€œoperation_timeā€: ā€œ29ā€, ā€œled_onā€:ā€œā€, ā€œled_offā€:ā€œā€,ā€œorigin_posā€:ā€œ0ā€},

So at integration start, instead of ā€œunknownā€ the cover starts with a postion of ā€œorigin_posā€ which can be anything between 100 fully open and 0 fully closed.

This is not working, I can set a state, but somehow HA revert the state after startup. Reading HA docsā€¦

new release available, it adds an ā€œinitial_positionā€ parameter for cover channels,

new release it includes support for HomeAssistant Scene, why ?

If you setup scene, or automation with mutiple nikobus output combined in HomeAssistant. Each nikobus output will be triggered in sequence with a command delay between each.

Custom scene definition will allow the same combination of any Nikobus output but the outputs that belongs to the same module same group will be triggered all at once.

so we will have a new config file: nikobus_scene_config.json with as example

{
    "scene": [
        {
            "id": "scene_turn_on_living_lights",
            "description": "Turn on living lights",
            "channels": [
                {"module_id": "0E6C", "channel":"1", "state":"50"},
                {"module_id": "0E6C", "channel":"4", "state":"100"}
            ]
        }
    ]
}

The scene can be used in HomeAssistant, linked to a button or an automation; etcā€¦

is this example, for module address 0E6C channel 1 will be set to 50 and channel 4 to 100 with 1 command to Nikobus, so no delay between the 2 lights turning on.

that seems to be a good addidtion.
Iā€™ll test it out if i have some spare time left !

Do you have Shutter with button or group that particially open them ? I see a open 6s in your config.

As we know, Nikobus has no feedback on shutter position on the bus. So if you open or close a shutter, the integration always assume you will fully open or close it, unless you send a stop command which will be catched by the integration.

If you have partial open or close in Nikobus, using Nikobus internal timer T1ā€¦ It will break the sync between Nikobus and HA.

Nothing we can do to prevent this. Nikobus is old tech with no open API / documentation and ZERO feedback on shutter position.

Iā€™m afraid, you are stuck, HA will never manage shutter position correctly in your specific case.

Did it worked under openhab ?

You could migrate this logic to HA. So HA knows when the shutters is operated by 6 seconds.

Itā€™s quite some work:

1- define an automation that open the cover for 6seconds.
2- link all needed physicall buttons to this automation as a trigger.
3- remove this logic from Nikobus.

Basically, the more you manage in HA the better, as the sync between Nikobus and HA is close to impossible in most cases.

All logic, groups, etcā€¦ shall be converted to HA and removed from Nikobus.

HA manages all logics, Nikobus executes the command from HA.

Yes, I used to have it in the past but it is not used or linked anymore.
Iā€™ll clean it from the Nikobus conf to make sure it is complete gone.

Today it was the bathroom roller and my bedroom. Both stopping after I press the wall buttons. The other rollers work fine today.

This morning, my bedroom was opened bij the wall button. That was not seen by the integration if I check the app:

As you can see, closed yesterday evening. But the open is not there.

Not much we can do without a debuglog, Iā€™m still running wirh zero issue on covers.

Could you enable debug log in the morning before to operate shutters ? see if we get something.

I suppose you did not find anything strange in the debug logs I emailed you? Or was it too large to trace back where the issue started? I stopped debug logging after the issue happened.

Which debuglog ? Could you resend, I do not think I have it.

Hi, I tried to resend the same email. Let me know if you received it now.

Iā€™ve nearly completed testing the scenes, and everything looks good so far. A final release is coming soon.

Iā€™ve also started considering a rewrite for covers. Hereā€™s the rationale behind it:

  • Unlike lights, covers donā€™t have a typical on/off state; they default to ā€œStoppedā€ (00) unless actively moving within defined periods (closing or opening).
  • Refreshing the state periodically for covers, as is done for lights, seems unnecessary since covers remain in a stopped state unless motion is triggered.

This led me to think: why not switch to a cover state refresh triggered solely by button presses, rather than relying on periodic or feedback module-based updates?

Pros

  • Cover state updates only on button press, reducing unnecessary refreshes.
  • We could add properties to the button press, like operation_time, to control movement based on the button-defined operation duration.

Cons

  • If a button controls a cover but isnā€™t defined in Home Assistant, the setup will fail. All controlling buttons would need to be configured.

new release available, whatā€™s new ?

Cover logic

Switched to button only triggered state refresh for cover, as explained above, cover do not hold on state, they are always 0x00 when not moving

Integration load improvement

At integration startup, full scan of the nikobus is performed to reflect the state of the entities in HA as soon as possible. (Initial refresh)

Scene

scene can be created to operate group of modules all at once. output that belongs to the same module / group will receive the command at the same time vs sequentially.

Output that belongs to different moidule or module group will still be sequentially triggered. It can be used for all module types. switch / dimmer / cover

example with covers

{
    "scene": [
        {
            "id": "scene_close_all_shutters",
            "description": "Close all shutters",
            "channels": [
                {"module_id": "9105", "channel":"2", "state":"close"},
                {"module_id": "9105", "channel":"3", "state":"close"},
                {"module_id": "9105", "channel":"4", "state":"close"},
                {"module_id": "9105", "channel":"5", "state":"close"},
                {"module_id": "9105", "channel":"6", "state":"close"},
                {"module_id": "8394", "channel":"1", "state":"close"},
                {"module_id": "8394", "channel":"2", "state":"close"},
                {"module_id": "8394", "channel":"3", "state":"close"}
            ]
        },
        {
            "id": "scene_open_all_shutters",
            "description": "Open all shutters",
            "channels": [
                {"module_id": "9105", "channel":"2", "state":"open"},
                {"module_id": "9105", "channel":"3", "state":"open"},
                {"module_id": "9105", "channel":"4", "state":"open"},
                {"module_id": "9105", "channel":"5", "state":"open"},
                {"module_id": "9105", "channel":"6", "state":"open"},
                {"module_id": "8394", "channel":"1", "state":"open"},
                {"module_id": "8394", "channel":"2", "state":"open"},
                {"module_id": "8394", "channel":"3", "state":"open"}
            ]
        }
    ]
}

Operation time

It can be defined on Nikobus command for covers.

Example, this physical Nikobus button will only open the cover for 10secs

        {
            "description": "BT_GF_Office_Shutter_Open",
            "address": "C86C4E",
            "operation_time": "10",
            "impacted_module": [
                {
                    "address": "8394",
                    "group": "1"
                }
            ]
        },