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 and works offline (without Internet).
EDIT 10/6/2024: The official TRIGGERcmd integration is now available in Home Assistant version 2024.10+. This Youtube video shows how it works.
You can click the little lightning bolts to run on and off commands.
EDIT 12/24/2024:
Now you can connect the TRIGGERcmd agent to Home Assistant directly, so if the Internet goes out, your commands will still run if you trigger them from Home Assistant. Add the TRIGGERcmd HA integration, then right-click the agent icon and click "Home Assistant Config" to configure it to listen for trigger events.The following is the old method that uses the "RESTful Command" to call the TRIGGERcmd api:
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://homeassistant.local: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
-
-
-
@blizzrdof77 @Russ I am new to HA and trying to get this working but not sure if my issue is related to possible syntax changes since 2021. Does this format still apply? Thanks.
-
@AZRushFan, yes, I just tried it. It worked for me with this text at the end of my configuration.yaml:
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=(my token)"
That said, would it help if I built an official Home Assistant integration?
EDIT 9/15/24: The official TRIGGERcmd integration will be available in next Home Assistant version (2024.10). It's due to be released on 10/2/2024. Please try using it instead of the "RESTful Command" method described above.
-
-
-
-
-