Hi tramlaan,
I’m an old Unix Greybeard so recognise that sometimes you just want to keep what you have and know works, rather than re-implement using a different tool.
Here are a few links and ideas which might help…
As mentioned, I’ve used the ‘standard’ OH user interface elements (such as a switch or string) as a means of interacting with custom code (e.g. create a dummy Switch item, and a rule triggered when it changes state to shell out to a Bash script or Python using executeCommandLine("/path/script" + Variable)
). This half-and-half approach might get you a prototype faster than writing a fully custom Node or JS GUI. It also allows custom code to be triggered and display results from all OpenHAB interfaces including the mobile apps.
I’ve not tried creating a custom GUI, but for instance, you can draw a custom control panel in SVG and have it automatically update using OH variables:
SVG might be more customisable than HABpanel, but easier than full-custom JavaScript.
There is a way to use native Python in OpenHAB rules, rather than using eXtend - search for JSR223 and Jython.
As mentioned, you can interact directly with MQTT without using a shell command from a rule - here’s an example I use to update Tasmota devices which might be of use:
All the best,
James