How to run commands from Home Assistant
-
Home Assistant (aka Hass.io) is a popular automation system sort of like SmartThings but it's open source.
Here's how you trigger commands on your computers from Home Assistant using a RESTful Command.
Add this to the end of your configuration.yaml file:
rest_command: triggercmd_calculator: url: 'https://www.triggercmd.com/api/run/triggerSave' method: "post" content_type: "application/x-www-form-urlencoded" payload: "trigger=calculator&computer=russfam&token=(your token from Instructions page)"
You can test it by clicking the little cell phone icon in the lower left under Developer tools, then select rest_command.triggercmd_calculator in the Service field, then click CALL SERVICE. This is what it should look like:
I installed Home Assistant on my QNAP nas as a Docker container. If you do that, I recommend these two settings:
- Create a folder you have access to, and mount it as /config in your container. That will give you easy access to the configuration files, and when you upgrade the container, you can re-mount this folder to /config.
- Use HOST networking, so you can access Home Assistant at a URL like http://nas:8123.
-
I can get the commands to be executed by Alexa, but when I try to make the call directly through the Home Assistant, I get the error: Status Code 400
Does the call syntax remain the same?
-
@rafastanger, that should still work, but you can also use this "get" method below. One thing to note - your trigger and computer values can be different from your voice words you'd use with Alexa.
rest_command: triggercmd_calculator: url: 'https://www.triggercmd.com/api/run/triggerSave?trigger=calculator&computer=russhp&token=(your token)' method: "get"
-
Is it possible to pass arguments via this method?
-
@blizzrdof77, good question. Yes, you can add this to your URL or payload to pass parameters:
¶ms=(yourParams)
You can use a space or %20 between parameters if you have multiple parameters to pass, like this:
¶ms=(param1)%20(param2)
-
@russ Thanks for this, by the way!
For anyone else using TriggerCMD with Home Assistant, I wrote this helper
script
with arest_command
that I have found very useful for running commands with parameters (or without parameters).Just be sure to change "
ADD.YOUR.TRIGGERCMD.TOKEN.HERE
" to your token.The Script:
## -- RUN TRIGGERCMD REST COMMAND script: run_triggercmd_rest_command: alias: Run TriggerCMD REST Command description: Execute a RESTful command with params and a device using triggercmd. icon: mdi:apple-keyboard-command variables: params: '' token: 'ADD.YOUR.TRIGGERCMD.TOKEN.HERE' fields: trigger: description: The name of the trigger example: Exit Windows Program required: true computer: description: The name of the computer as shown in your computer list on triggercmd.com. example: My Computer Name required: true params: description: Optional args string to pass with the trigger, using a space for multiple params [optional]. example: '' required: false sequence: - service: rest_command.tcmd_run_command data: trigger: "{{ trigger }}" computer: "{{ computer }}" params: "{{ params }}" token: "{{ token }}"
The Rest Command
## -- RUN TRIGGERCMD COMMAND rest_command: tcmd_run_command: url: 'https://www.triggercmd.com/api/run/triggerSave' method: POST content_type: 'application/x-www-form-urlencoded' payload: 'trigger={{trigger|replace(" ","%20")}}&computer={{computer|replace(" ","-")}}¶ms=+{{params}}&token={{token}}'
Example Usage
service: script.run_triggercmd_rest_command data: trigger: This Is The Trigger Name # Literally the name of the command computer: My Computer # (will render as 'My-Computer') params: '--female "Shutdown request confirmed"' # This has 3 params
-
Russ
-
Russ