Hi
I’ve just tried the Test_Web_APi thing and it didn’t work for me ether.
So I copied the HTML and hosted it on the static server of openHAB2, but edited the destination WS IP and it’s working 
Which has lead me to create a Node-RED flow to convert a Dashboard Colour picker into 3 WS commands to feed into QLCplus
[
{
"id": "32414ca1.373bc4",
"type": "websocket out",
"z": "fe6c4c4c.494c7",
"name": "QLCplus on Odroid C4",
"server": "",
"client": "7913f01c.6095a",
"x": 1280,
"y": 1060,
"wires": []
},
{
"id": "86899306.76d3f",
"type": "function",
"z": "fe6c4c4c.494c7",
"name": "",
"func": "var RED = msg.payload.r;\nvar GREEN = msg.payload.g;\nvar BLUE = msg.payload.b;\nvar ALPHA = msg.payload.a;\n\nvar REDch = 60, GREENch = 61, BLUEch = 62; // The sliders in QLCplus that control the RGB elements\n\n\nvar REDmsg = { payload:REDch + \"|\" + RED };\nvar GREENmsg = { payload:GREENch + \"|\" + GREEN };\nvar BLUEmsg = { payload:BLUEch + \"|\" + BLUE };\n\n\nreturn [ [ REDmsg, GREENmsg, BLUEmsg ]];\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"x": 680,
"y": 1060,
"wires": [
[
"65b64860.00b0c8",
"32414ca1.373bc4"
]
]
},
{
"id": "65b64860.00b0c8",
"type": "debug",
"z": "fe6c4c4c.494c7",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "msg",
"x": 870,
"y": 1100,
"wires": []
},
{
"id": "c1b9028d.c76e1",
"type": "ui_colour_picker",
"z": "fe6c4c4c.494c7",
"name": "",
"label": "QLCplus",
"group": "adff93ca.07855",
"format": "rgb",
"outformat": "object",
"showSwatch": true,
"showPicker": false,
"showValue": false,
"showHue": false,
"showAlpha": false,
"showLightness": true,
"square": "false",
"dynOutput": "true",
"order": 3,
"width": 0,
"height": 0,
"passthru": true,
"topic": "",
"x": 430,
"y": 1060,
"wires": [
[
"86899306.76d3f",
"c9696228.20064"
]
]
},
{
"id": "d4a8d33c.2da23",
"type": "inject",
"z": "fe6c4c4c.494c7",
"name": "GREEN",
"props": [
{
"p": "payload"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"r\":0,\"g\":255,\"b\":0,\"a\":1}",
"payloadType": "json",
"x": 190,
"y": 1060,
"wires": [
[
"c1b9028d.c76e1"
]
]
},
{
"id": "c9696228.20064",
"type": "debug",
"z": "fe6c4c4c.494c7",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "msg",
"x": 470,
"y": 1120,
"wires": []
},
{
"id": "f60fa2f2.595ec",
"type": "inject",
"z": "fe6c4c4c.494c7",
"name": "BLUE",
"props": [
{
"p": "payload"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"r\":0,\"g\":0,\"b\":255,\"a\":1}",
"payloadType": "json",
"x": 210,
"y": 1100,
"wires": [
[
"c1b9028d.c76e1"
]
]
},
{
"id": "4478c90c.b32438",
"type": "inject",
"z": "fe6c4c4c.494c7",
"name": "RED",
"props": [
{
"p": "payload"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"r\":255,\"g\":0,\"b\":0,\"a\":1}",
"payloadType": "json",
"x": 210,
"y": 1020,
"wires": [
[
"c1b9028d.c76e1"
]
]
},
{
"id": "7913f01c.6095a",
"type": "websocket-client",
"z": "",
"path": "ws://192.168.178.94:9999/qlcplusWS",
"tls": "",
"wholemsg": "false"
},
{
"id": "adff93ca.07855",
"type": "ui_group",
"z": "",
"name": "Test",
"tab": "bd9e1305.3582",
"order": 3,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "bd9e1305.3582",
"type": "ui_tab",
"z": "",
"name": "Home",
"icon": "dashboard",
"disabled": false,
"hidden": false
}
]
It shouldn’t be too difficult to convert an openHAB2 colour picker value into these commands