11 min read

#home-automation
DIY Physical Control Plane for your House/Home Automation (part 1)

Home Assistant + Refurbished Crestron TWS 1060 + Custom Engineering

Greg Dosh

Technical Coach / Mentor

I'd always kinda really liked the outside the meeting room panels with lights & displays for scheduling meetings for their over the top LED panels. Saw 'em when I was working at Facebook (Meta) and really wanted something like that for kicks at home. A touch panel with a lot of LEDs!

The only photo I have of said cool tablets at Facebook's campus.

I'm a bit forgetful, and love to use indicator lights and other small bits of automation and code to hijack my ADHD to catch my attention. I used to love older phones that had hidden LED indicator lights like the Google Nexus 6 (and apps like Lightflow)!

Never thought about it much until I saw on Mastodon this post about using an end of life touch screen panel for Home Automation. That memory and inspiration came back to me after seeing that I could pick up some refurbished end-of-life tech and hack-away in my homelab.

An internet search later I was able to get a reasonableish deal on some similar devices as the Mastodon post! Wasn't nearly so sweet of a deal, but for <$200 for a pair of 'em (Crestron TWS-1060 SKU: TSS-10-W-S), I was willing to experiment on some fun!

Historically I've not done any unboxing videos, and almost 0 public facing technical guides. Please forgive me for not having all the deets and pictures from the process. 😅

A rough unboxing photo in my kitchen of a hastily unpacked tablet device in bubble wrap.

Caution to the wind, I was in deep into the threads and small little discussions. There was a post on the Home Assistant forums "Crestron TSW 1060. POE HA dash for $30. Firmware" which captures a couple details on how to reset devices and otherwise update firmware etc.

The main points from the thread I picked up were the fact that after you reset, boot, and setup the devices, you can open the HTTPS URL and adjust the settings of the device to use the Application Mode EMS along with whatever URL you'd like the device to load.

In my case I'm using an internally routeable HTTPS URL for my Home Assistant instance with a Split-Horizon DNS setup. You could theoretically point these Crestron devices at whatever you'd like I suppose, though beware if you navigate "away" from your defined URL that it becomes hard to navigate back.

Screenshot of a browser window showing the Crestron UI. The UI is open to the Settings panel and the "Applications" dropdown menu is open. In the subpanel is an option for "Application Mode" which displays the option "EMS". Below this sits another option for "URL" which is filled in with a partially obscured URL that reads "https://home.virt.auengun.net"
💡
If you DO somehow navigate away from the defined URL, you can open the HTTPS dashboard again to "set" the URL again. You could also use the 5 point palm exploding heart technique --- err reset to get back to the settings menu and "cancel" to have it load the default page again.

I skipped some details here on the setup of my user accounts in my SSO provider, but after you get setup and logged in, a successful image looks a little bit like the following. I was able to get into the dashboard and toggle around and use the features. Note that the LEDs, camera, speaker, and the side-buttons aren't lighting up in my devices (yet?). There are some other "bits" that are needed for some of that.

A picture of a device showing my internally available instance of Home Assistant.

It was pretty thrilling to have a super cheap device that acts as a way more powerful Stream Deck. I'd always been toying with device automation, like my Automidically app to control MIDI devices. This is like that but much more visually pleasing and fun to play with in a different way. That KORG nanoKONTROL2 is still on my desk BTW.

A MIDI device being used to control volume mixers in Windows + PowerShell scripts/automations.

How cool it was to fire up some music via this little touch device and have it play on my office speakers or in the home anywhere.

Home Assistant displaying an add-on called Music Assistant.

Getting the LEDs working beyond the basics, and adjusting some of the other more customizable bits will have to come in the future explorations. The most basic playing around is getting the devices to show any color at all.

To do that you'll need to login to the device via SSH and the username/password of the administrator of that particular Crestron device. Note, if you didn't set this up you might need to enable SSH. I don't recall.

💡
Note that if you SSH wrong too many times you'll lock yourself out and need to rotate your local IP and try again. Use REMBLOCKEDip on a successful login to remove the old block if you need.

After you're able to login to the device, you'll be able to issue some basic commands like HELP and HELP ALL to see what is possible on the device.

TSS-10 Control Console

TSS-10>help all
8021XAUthenticate             Administrator       Enable/Disable 802.1x Authentication.
8021XDOMain                   Administrator       Configure/View 802.1x Domain Name.
8021XMEThod                   Administrator       Configure/View EAP Method.
8021XPASsword                 Administrator       Configure 802.1x Password.
8021XSENdpeapver              Administrator       Enable/Disable 802.1x Peap version reporting.
8021XTRUStedcas               Administrator       Select/List 802.1x Trusted CA Certificates
8021XUSERname                 Administrator       Configure/View 802.1x User Name.
8021XVALidateserver           Administrator       Require Validation Of 802.1x Authentication Server's Certificate.
ADDBLOCKEDip                  Administrator       Add an IP Address to the blocked list
ADDDOMAINGroup                Administrator       Create a new domain group
ADDDns                        Administrator       Add an entry to DNS server List
ADDGroup                      Administrator       Create a new local group
ADDHOSTS                      Administrator       Add hosts entries
ADDLOCKEDUser                 Administrator       Add user to the blocked list
ADDMaster                     Programmer          Add an entry to IP table
ADDPUBKEYTouser               Administrator       Add a public key to an existing user account
ADDPeer                       Programmer          Add an entry to Peers IP table
ADDREMOTeweb                  Programmer          Add an entry to Remote Web Connections table
ADDUSER                       Administrator       Create a new local user
ADDUSERTogroup                Administrator       Add an existing local or domain user to an existing local group
ADLOGIN                       Administrator       Active Directory Login
ADLOGOUt                      Administrator       Active Directory Logout
APPAUENABLE                   Programmer          Enable/disable automatic updates of apps
APPMODE                       Programmer          Enable or disable application mode
APPRESTART                    Programmer          Restart current or last used application
APPSTOP                       Programmer          Stop current application
AUCHECKNOW                    Programmer          Check for updates now.
AUDITLogging                  Administrator       Display or Change the current audit logging operation.
AUENABLE                      Programmer          Enable/disable automatic updates.
AUFORCEUPDATENOW              Programmer          Force updates now.
AUMANIFESTURL                 Programmer          Get or Set auto updater manifest URL.
AUPASSWORD                    Programmer          Get or Set auto updater password.
AUPOLLINTERVAL                Programmer          Set how long to wait before checking for updates again.
AUSTATUS                      Programmer          Reports the auto update status.
AUTHentication                Administrator       Authentication on/off
AUTIME                        Programmer          Set a scheduled time for when to check for updates.
AUTODiscovery                 Operator            Commands for Ethernet auto discovery
AUUSERNAME                    Programmer          Get or Set auto updater username.
AUVERIFY                      Programmer          Configure verification when negotiating TLS and SSL connections.
BATRECAL                      Operator            Recalibrate new battery in TSR310
BRIGHTNESS                    Programmer          Set LCD brightness level.
BROADcast                     Operator            Enable Error Broadcast
BYE                           Operator            Close user session
CARDS                         Operator            Display Cards detected in system
CD                            Operator            Change directory
CERTIFicate                   Administrator       Add, Remove, List or View Certificates
CIPPORT                       Programmer          Set port number for CIP
CIPSERVERPORT                 Programmer          Set port number for CIP Server
CIPTIMEOUT                    Operator            Set/Get CIP connection timeout
CLEARAUDITLOG                 Administrator       Clear the audit log.
CLEARCSAUTHENTICATIon          Administrator       Clear Control System Authentication
CLEARerr                      Operator            Clears the current error log
COPYfile                      Programmer          Copy a file to a different directory
CORE3Uilevel                  Operator            View core3 UI Level.
CORE3Version                  Operator            View core3 Version.
CREATECsr                     Administrator       Generate a CSR.
DEFRouter                     Administrator       Set default router
DELETEDOMAINGroup             Administrator       Delete an existing domain group
DELETEGroup                   Administrator       Delete an existing local group
DELETEUser                    Administrator       Delete an existing local user
DELete                        Programmer          Remove File(s)
DHCP                          Administrator       Control dynamic IP addressing
DHCPEx                        Administrator       Control dynamic IP addressing
DHCPOpt                       Administrator       Use FQDN in DHCP Discover Request
DIR                           Operator            List files and directories in current directory
DOMAinname                    Administrator       Set domain name
ECHo                          Operator            Enable/disable character echoing
ENABLEfeature                 Administrator       Enables/disables specified feature
ENTERSETUPSEQ                 Administrator       Enable/disable hard key setup launch sequence
ERASE                         Programmer          Remove file(s)
ERRlog                        Operator            Prints the current error log
FGETfile                      Programmer          FTP file from a remote server
FLASHVersion                  Operator            View Flash Version and Vendor.
FORCEDREBOOT                  Operator            Forces system reboot
FPUTfile                      Programmer          FTP file to a remote server
FREE                          Operator            Show available file space
GETAUDITLOG                   Administrator       Retrieve the audit log.
GETPAsswordrule               Administrator       Display password rules
HARDWAREDEBUG                 Programmer          Test hardware components
HEARTBEATtimeout              Administrator       Set/Get heartbeat timeout
HELP                          Operator            Display help screens
HOSTname                      Administrator       Set hostname
ICMP                          Administrator       Turn ON/OFF ICMP
INFO                          Operator            Print Software Capabilities
INITIALIZE                    Programmer          Clear file system
IPAddress                     Administrator       Set IP address
IPCONFIG                      Operator            Display/Configure IP Settings
IPMask                        Administrator       Set IP subnet mask
IPROUTE                       Operator            Print Kernel IP routing table
IPTable                       Operator            Display IP table
ISDIR                         Operator            Is the parameter a directory
KEYBACKLTATSTBY               Programmer          Key backlight state at Standby timeout.
KEYBKL                        Programmer          Set key backlight brightness.
KEYBOARDTYPE                  Programmer          Configure the keyboard language settings.
KEYWAKE                       Programmer          Enable/disable turning on the LCD when waking from a hardkey press.
KILLSOCKET                    Administrator       Close an active TCP console socket
LANGUAGE                      Programmer          Configure the locale language of the system.
LEDBAR                        Programmer          Set LED RED BAR brightness.
LEDCONFIG                     Programmer          Configure mode of device LED(s)
LISTBLOCKEDips                Administrator       List the blocked IP addresses
LISTDNS                       Operator            Display the list of DNS servers
LISTDNSEx                     Operator            Display the list of DNS servers
LISTGROUPS                    Administrator       List existing local groups
LISTGROUPUsers                Administrator       List all existing (local and domain) users in an existing
LISTLOCKEDUsers               Administrator       List blocked users
LISTPUBKEYFromuser            Administrator       List existing public key from an existing user account
LISTUSERS                     Administrator       List of users authenicated on thus system
LOGINSTAT                     Administrator       Set time to count valid logins
LOGOFF                        Operator            Logoff current user
MAKEDIR                       Programmer          Create a Directory
MASTERSTATE                   Programmer          Enable/disable all audio
MASTERVOL                     Programmer          Set master volume level
MDNSRETURN                    Administrator       Change nsswitch to return or not return on mdns NOTFOUND
MEDIABUFFERLEN                Programmer          Get or Set media player init. buffer length in ms.
MEDIACHROMAKEY                Programmer          Get or Set media player chroma key.
MEDIAMUTE                     Programmer          Get or Set media audio mute
MEDIAPLAYERTCP                Programmer          Get or Set media stream over TCP
MEDIAVOLUME                   Programmer          Get or Set media audio volume
MESSage                       Operator            Display a message on the screen.
MICSTATE                      Programmer          Enable/disable mic
MOVEfile                      Programmer          Move a file to a different directory
NVRAMREBOOT                   Operator            Print reboot information
OSD                           Programmer          Show OSD state.
OSKFORCe                      Administrator       Force OSK popup
PAGEFLIP                      Programmer          Configure page flip options
PING                          Operator            Ping remote node
PIRSHOW                       Operator            Show raw data and temperatures from Mercury PIR sensor
POEPLUS                       Programmer          Enable/disable 24V when POEPLUS+ is available
PRINTAUDITLOG                 Administrator       Print the audit log.
PROJECTLOAD                   Programmer          Begin the process of loading the specified project
PROJECTREFRESHSEQ             Administrator       Enable/disable hard key setup launch sequence
PROJECTRESTART                Programmer          Restart the user project.
PROXY                         Administrator       Configure Proxy
PROXYALLOW                    Administrator       Setup list of hosts that need to use Proxy
RAMFree                       Operator            Show available RAM file space
REBOOT                        Operator            Reboot the device
RECOVEr                       Administrator       Backup or Restore config/display folders
REMBLOCKEDip                  Administrator       Remove an IP Address from the blocked list
REMDns                        Administrator       Remove an entry from DNS server List
REMLOCKEDUser                 Administrator       Remove user from the blocked list
REMMaster                     Programmer          Remove a master entry
REMOTEWEBConnections          Operator            Display Remote Web Connections
REMOVEDIR                     Programmer          Remove a Directory
REMOVEPUBKEYFromuser          Administrator       Remove an existing public key from an existing user account
REMOVEUserfromgroup           Administrator       Remove an existing local or domain user from an existing local group
REMPeer                       Programmer          Remove an entry from Peers IP table
REMREMOTeweb                  Programmer          Remove a Web connection Entry
RESETPassword                 Administrator       Reset an existing local user's password
RESTORe                       Administrator       Restore factory defaults
RMLOGerr                      Operator            Enable logging errors to the file.
ROUTEADD                      Administrator       Add a static IP route
ROUTEDELete                   Administrator       Delete a static IP route
ROUTEPRINT                    Administrator       Print Kernel IP routing table
SCREENSAVER                   Programmer          Get or Set screen saver settings
SCREENSHOT                    Operator            Take a screen shot.
SECURECIPport                 Programmer          Set the secure (SSL) port number for CIP
SECUREWebport                 Administrator       Set Secure(SSL) port number for Web.
SETCSAUTHENTICATION           Administrator       Set Control System Authentication credentials.
SETLOCKOUTTIME                Administrator       Set time that an IP is blocked from login
SETLOGINAttempts              Administrator       Set the number of login attempts before blocking IP
SETLogoffidletime             Administrator       Set idle time allowed before current user is automatically logged off
SETPAsswordrule               Administrator       Set password rules
SETUP                         Administrator       Enter Setup mode.
SETUPWIZARD                   Operator            Reset Setupwizard flag
SETUSERLOCKOUTTime            Administrator       Set time that a user is blocked from login
SETUSERLOGINATtempts          Administrator       Set the number of login attempts before blocking User
SHOWHW                        Operator            Display hardware configuration
SNMP                          Programmer          Enable/disable Simple Network Management Protocol
SNMPAccess                    Programmer          Configure Access Rights for SNMP Communities
SNMPALLOWall                  Programmer          Allows All SNMP Managers
SNMPCONtact                   Programmer          Configure an SNMP manager
SNMPLOCation                  Programmer          Configure an SNMP manager
SNMPMANager                   Programmer          Configure an SNMP manager
SNTP                          Administrator       Configure network time synchronization
SONOS                         Programmer          Enable or disable launching Sonos
SSHPORt                       Administrator       Enable/Disable and configure SSH port number
SSHSERVer                     User                Configure the SSH server and the public keys
SSL                           Administrator       Display/Set SSL type
SSLVERIFY                     Administrator       Display/Set SSL certificate verification.
STANDBY                       Operator            Puts the panel into standby.
STBYTO                        Programmer          Set the standby timeout.
SYSLOG                        Operator            Enable/disable system UI log.
SYSMSG                        Programmer          Enable/disable system message display.
TASKSTAT                      Operator            Lists applications in system
TEMPerature                   Operator            Get CPU/PMIC temperature.
TESTDNS                       Operator            Test DNS Server
TESTPAttern                   Operator            Display test patterns.
TIMEZone                      Administrator       Get/Set the timezone
TIMEdate                      Programmer          Get the time and date
TLSVERsion                    Administrator       Set the minimum TLS version.
TOUCHONSTARTUp                Administrator       Enable/disable Touch on startup to enter setup mode
TYPE                          Operator            Display file contents
UPDATEPassword                User                Update current local user's password
UPGRADERESULTS                Operator            Print results of last upgrade command
UPTIME                        Operator            Display the time the system is running
USERInformation               Administrator       Show access information for a specific user
USERPAGEAUTH                  Administrator       User page Authentication on/off
VERsion                       Operator            Print version to console
VIDEOPRIORITY                 Operator            Increase the priority of the video threads
WEBPORT                       Administrator       Set port number for Webserver.
WEBSERVER                     Administrator       Enable/disable Webserver
WEBSOCKET                     Administrator       Enable/disable WebSocket
WHO                           Administrator       Generate a report of the Ethernet consoles
WHOAmi                        Operator            Display current user's identity
XGETfile                      Operator            Use XMODEM to transfer file from ROM
XPUTfile                      Operator            Use XMODEM to transfer file to ROM

To get the LEDs functional we'll need to fireup the POEPLUS command to see the status, and then give it the ON command if you're ready for adventure.

TSS-10 Control Console

TSS-10>POEPLUS ?
POEPLUS [ON|OFF]- enable/disable POE+

TSS-10>POEPLUS
POE+: Off

TSS-10>POEPLUS ON
Reboot to take effect.

Reboot the device and then log back in via SSH. To turn on/off the LEDs you can type the following commands. Note that you can individually turn on/off each LED to make combination colors.

Command Effect
setdigitaljoin 30025 1 Turns on Red LED
setdigitaljoin 30026 1 Turns on Green LED
setdigitaljoin 30027 1 Turns on Blue LED
setdigitaljoin 30025 0 Turns off Red LED
setdigitaljoin 30026 0 Turns off Green LED
setdigitaljoin 30027 0 Turns off Blue LED
A really poor quality "glamour" shot at night of what the device could look like with the LEDs on and some music playing.

Other commands of note:

Command Effect
timezone 12 Sets the timezone on the device to CST. Use timezone list to get options.
STBYTO 5 Sets the standby timer of the device to 5 minutes.
SCREENSAVER toptext Hello Sets top line text of the standby/idle screensaver.
SCREENSAVER bottext World Sets bottom line text of the standby/idle screensaver.
SCREENSAVER BRIGHTNESS 1 Sets the brightness of the screensaver to 1%.

Things I'd still like to toy around with:

  • Getting the rest of the hardware working
  • Getting the devices mounted surface/in-wall (completed! – see part 2)
  • Creating plugin/extension for Home Assistant to make LED alerting easier

Member Comments