If looking for lightweight solution with zigbee (usb dongle) one can also take a look at Zigbee2MQTT [0]. This library is used by HomeAssistant under the hood, but it can be used independently as a standalone app and let one interact with zigbee devices using MQTT json messages. And it supports a lot of devices : "Currently 2971 devices are supported from 379 different vendors"
It can use both. ZHA is included in base HA. Z2M is an optional addon. Z2M has better support for obscure devices in my experience. I Also strongly prefer the management interface in z2m.
[0] https://www.zigbee2mqtt.io