Crestron - custom component to integrate a Crestron control system via XSIG

I agree with @DR7 that it wouid be a very deep rabbit hole to interface Crestron Home with HA. To make it work with this XSIG interface would require another processor then you would needs to acquire the proprietary software for the XSIG interface. You might be able to do something with the SDK, but you would be in uncharted waters. Ultamation has a Simpl Windows interface for Crestron Home which might be worth looking at but you would need to add another processor to run the Simpl Windows code for that too. It might be doable but it ain’t going to be easy.

This is a good idea. Next time I’m in there I need to change it like this.

Hello everyone! I am a beginner Crestron integrator, and I see tremendous potential in Home Assistant, especially through integration with Apple Home. My request is if someone could create a video demonstrating step-by-step how to control Crestron through Home Assistant?

Hmm… $10000 and we can make it happen.

Just stumbled upon this page and trying to get it to work inside my system.

I’m trying to get one of my HA lights configured to turn it on/off with my Crestron TP. My crestron is having trouble connecting to the HA for communication. I get a connection failed status.

crestron:
  port: 16384
  to_joins:
    - join: a1
      entity_id: light.office
      attribute: brightness

after saving the restarting HA, I get this error in the log.

2023-11-12 19:36:13.616 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration crestron which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant

2023-11-12 19:36:40.467 WARNING (MainThread) [py.warnings] /config/custom_components/crestron/crestron.py:25: RuntimeWarning: coroutine 'Server.serve_forever' was never awaited

server.serve_forever()

2023-11-12 19:36:40.473 WARNING (MainThread) [py.warnings] /config/custom_components/crestron/__init__.py:83: RuntimeWarning: coroutine 'async_load_platform' was never awaited


Does anyone have any tips?

Sorry about the late reply. I’m just using a Simpl TCP Client with port set to 16384d. XSIG is using offset 0 and option 1. I’m no longer using this for lighting as I switched over to a native vantage integration which works beautifully! I am still using this for tstats and media player if you want me to try anything for you.

Hi Everyone,

thank you very much for this integration. I want to use it with my Crestron Remote. A simple button-Press and than something in HA should happen.

I could manage to connect the to systems as documented on the HUB.
I can see that the TCP-IP Client is connected

However it’s not yet working and I do not find the problem. Any idea?

Here is what I did on the Crestron Side:

And here is the yaml file on the HA side:

crestron:
  port: 16384
  from_joins:
    - join: d1
      script:
        service: switch.turn_on
        target:
          entity_id: switch.zirkulations_pumpe

In the Crestron Tools I trigger a manual signal but nothing happens on HA side:
2023-12-07 16_13_00

Thanks for your help

Alex

Hi All, Fairly new to Home Assistant and Crestron so excuse me if this is a dumb question. Trying to connect my Home Assistant to my existing Crestron System. I have the CIP which i believe is the port to connect to but do I need anything else to connect? I have the Panel ID as well. Also, do I need to install anything on the Crestron Controller itself? I’m not trying to do anything fancy with the integration. I have some amplifiers that are controlled on the crestron and some lights and it would be nice to have them on my Home Assistant so I can have one spot to control my Sonos and Audio players. Really Appreciate any help to get me started!

Hello
did you find the solution because I have the same problem?
Thank you for your feedback.

in addition, the state of the entity is unavailable.
Do you have an idea?

Thanks for your help

I believe that you want that to be from_joins in place of to_joins

I have some Shelly dimmers that don’t have exposed entities for brightness., They can be adjusted via a URL. I have added a rest_command statement to my configuration.yaml file that looks like this:

rest_command:
shelly_dimmer:
url: “http://{{ip}}/rpc/Light.Set?id=0&on={{on_true_false}}&brightness={{bright_lvl}}&transition_duration={{duration_sec}}”

I am trying to get the value from the analog join into the bright_lvl parameter, but not having luck. I am very brand new to HA and YAML.

I have this, but it is incorrect:
from_joins:
- join: d1
script:
service: light.toggle
data:
entity_id: light.living_room_lights
- join: a1
script:
service: rest_command.shelly_dimmer
data:
ip: 192.168.0.174
on_true_false: true
bright_lvl: “{{ value|int }}”
duration_sec: 0

In addition to this, I am seeing this in the logs at the server start:

/config/custom_components/crestron/init.py:83: RuntimeWarning: coroutine ‘async_load_platform’ was never awaited async_load_platform(hass, platform, DOMAIN, {}, config)

6:59:01 PM – (WARNING) Crestron XSIG Integraton (custom integration)

/config/custom_components/crestron/crestron.py:25: RuntimeWarning: coroutine ‘Server.serve_forever’ was never awaited server.serve_forever()

6:59:01 PM – (WARNING) Crestron XSIG Integraton (custom integration)

suggestions?

Everything works well. When I go to Entities List under Settigs of HA
all these Crestron entities have “Switch” under “Integration” column name.

It suppose to be “Crestron” instead of “switch” in Integration column.
Generally it take value from manifest.json domain part.

following is manifest.json

{
  "domain": "crestron",
  "name": "Crestron XSIG Integraton",
  "documentation": "https://github.com/npope/home-assistant-crestron-component/blob/2b90696fbe71161d0537072f8ce48084a293da20/README.md",
  "dependencies": [],
  "codeowners": ["@npope"],
  "requirements": [],
  "version": "0.2.3"
}

Domain is already crestron, but see screenshot below. It appears as switch only.
How can i resolve this?

How to edit manifest.json
Where can I check the version key?
Detailed format?
Thank you so much

Hi Nick,

Many thanks for putting in the effort to produce this HA integration.

I’m using scene selects in my Crestron program to match my Cameo keypads.
The button mapping is:
L1/2 - toggle on to full brightness & off (combined double height button)
L3 - Scene 1
L4 - Scene 2
L5 - Scene 3
L6 - Scene 4
R1/2/3 - Raise (triple height)
R4/5/6 - Lower (triple height)

My TSW’s mimic this behaviour & I have a separate iPad Crestron Go app for managing the scene levels & scene save. So I have no requirement for adjusting levels in HA.

I want to mimic this behaviour in HA so this only requires momentary buttons, but I want the associated buttons in HA to light up in a similar fashion to the keypads.

The HA switch entity only provides a toggle function which asserts the dig_out on the XSIG and maintains a high state.

I’m looking for a momentary action on the HA switch entity with the feedback shown when a scene is selected.

Is this possible with the Crestron HA integration?

Regards
-s

I’m currently setting this up via XSIG. I have everything talking, but am confused how to setup a switch. I have 2 digital signals, one thats a toggle for the switch, and one thats the Feedback (on/off) state. How can I wire it in XSIG and then in the HA system.

Thank you very much for this npope Nick! I have spent years trying to get OPENHAB and then Node Red to communicate this well with my CP2E. I was somewhat successful but it was messy. This made it fairly simple and I want to thank you for putting it together.


Hoping this screenshot will show for you.

I was having trouble getting the switch to work also. But using toolbox in Crestron I could see that what Home Assistant was sending back to Crestron was not a toggle, it was an on and then on another press it was an off. So I put together the logic in the screenshot and I now have a switch I can control in Crestron using the switch1_toggle_from_crestron and the status shows in HA using the switch1_status that feeds into the XSIG and HA can control that switch using the XSIG out. Note the 2 One Shots. One is to send a pulse when the signal from HA goes high which sends switch1_turn_on and the other is used to send a signal to turn off when signal goes low (by using the trig* input and not trig.

Also I noticed that even without any analog inputs my dig_in1 corresponded to join: 2
I found this when I was having trouble by setting up 3 switches with join 1,2,3 in HA and found it was 2 I was controlling from HA

switch:

  • platform: crestron
    name: “switch 1”
    switch_join: 2

Hope this helps

Slip, please see my recent reply on how to work around this