Home Assistant + Refurbished Crestron TWS 1060 + Custom Engineering
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!
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. 😅
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.
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.
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.
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.
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.
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 |
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