Page 1 of 1

GUIDE: Interfacing QLC+ to Homeseer (or other non-Websocket freindly apps)

Posted: Sat Mar 24, 2018 8:17 pm
by frunk
Hi all,

Just giving back to the community. I did struggle with this for a while - Homeseer like many similar tools does not have a Websocket interface.

I used MQTT and Node-Red to provide a very reliable interface. Since both of these are 2 minute installs on a Raspberry PI it is quite a useful solution and very flexible.

It is a great mix - Homeseer does the broad home integration stuff and it just "presses the buttons" on QLC+ to recall presets and lets it do the fancy stuff with the DMX or LED light strips.

If this is something that interests anyone I wrote up what I did on the HS forum: https://forums.homeseer.com/showthread.php?p=1293433

Alex

Re: GUIDE: Interfacing QLC+ to Homeseer (or other non-Websocket freindly apps)

Posted: Fri Mar 10, 2023 10:13 am
by ninno
Hi Alex, great guide.
One question, do you think the opposite could also be done?

Let me explain.... From Qlc+ I enable a scenario or a dimmer and control the lights connected to a sonoff....
Or better yet a shelly that also has http api.

Thank you

Re: GUIDE: Interfacing QLC+ to Homeseer (or other non-Websocket freindly apps)

Posted: Fri Apr 21, 2023 11:22 am
by RKtech
Hi,
if I had to controll things from QLC+ which have not a fitting interface I did this with a smal python (OSC-server) script with pythonosc https://github.com/attwad/python-osc. You can use the Simple Server example https://github.com/attwad/python-osc#simple-server. The only thing to know is the channel address and the mapping to OSC.
If you like to get values of the first and second QLC+ DMX channel in OSC Universe 5 you need the dispatcher configuration lines (OSC adress = "/<QLCpUniverse - 1>/dmx/<QLCpChannel - 1>")

Code: Select all

dispatcher.map("/4/dmx/0", dmx_handler, "U5C001")
dispatcher.map("/4/dmx/1", dmx_handler, "U5C002")
in the python script and a handler function which is called every time when in QLC+ the value changes and where you get a floating number from 0.0 to 1.0 based on the DMX value (0..100%).

Code: Select all

def dmx_handler(unused_addr, args, value):
  if args[0] == "U5C001":
    print("Universe 5 channel 1 is {0}".format(value))
    # Do watherver you like with the value
  if args[0] == "U5C002":
    print("Universe 5 channel 2 is {0}".format(value))
    # Do watherver you like with the value
    # ....
in the handler you can call the shally API or what ever you want