Transmission
The Transmission integration allows you to monitor your Transmission BitTorrent downloads from within Home Assistant and set up automations based on that information.
Setup
Your Transmission client must first be configured to allow remote access. In your Transmission client navigate to Preferences -> Remote tab and then click the Allow remote access checkbox.
Configuration
In Home Assistant, navigate to Configuration -> Integrations and click the plus button to add a new integration and search for Transmission. For legacy support old Transmission configuration is imported and set up as a new integration. Make sure to remove monitored_conditions
as they are now automatically added to Home Assistant.
Alternatively, the integration can be set up via YAML by adding the following lines to your configuration.yaml
:
transmission:
host: 192.168.1.1
Configuration Variables
This is the IP address of your Transmission daemon, e.g., 192.168.1.1
or https://example.com/transmission/rpc
.
Integration Entities
The Transmission integration will add the following sensors and switches.
Sensors:
-
sensor.transmission_current_status
: The status of your Transmission daemon. -
sensor.transmission_download_speed
: The current download speed [MB/s]. -
sensor.transmission_upload_speed
: The current upload speed [MB/s]. -
sensor.transmission_active_torrents
: The current number of active torrents. -
sensor.transmission_paused_torrents
: The current number of paused torrents. -
sensor.transmission_total_torrents
: The total number of torrents present in the client. -
sensor.transmission_started_torrents
: The current number of started torrents (downloading). -
sensor.transmission_completed_torrents
: The current number of completed torrents (seeding).
Switches:
-
switch.transmission_switch
: A switch to start/stop all torrents. -
switch.transmission_turtle_mode
: A switch to enable turtle mode (a.k.a. alternative speed limits).
Event Automation
The Transmission integration is continuously monitoring the status of torrents in the target client. Once a torrent is started or completed, an event is triggered on the Home Assistant Bus, which allows to implement any kind of automation.
Possible events are:
transmission_downloaded_torrent
transmission_started_torrent
transmission_removed_torrent
Inside of the event, there is the name of the torrent that is started or completed, as it is seen in the Transmission User Interface.
Example of configuration of an automation with completed torrents:
- alias: Completed Torrent
trigger:
platform: event
event_type: transmission_downloaded_torrent
action:
service: notify.telegram_notifier
data:
title: "Torrent completed!"
message: "{{trigger.event.data.name}}"
Services
Service add_torrent
Adds a new torrent to download. It can either be a URL (HTTP, HTTPS or FTP), magnet link or a local file (make sure that the path is white listed).
Service data attribute | Optional | Description |
---|---|---|
name |
yes | Name of the configured instance (Default: “Transmission”) |
torrent |
no | Torrent to download |
Service remove_torrent
Removes a torrent from the client.
Service data attribute | Optional | Description |
---|---|---|
name |
no | Name of the configured instance (Default: “Transmission”) |
id |
no | ID of the torrent, can be found in the torrent_info attribute of the *_torrents sensors |
delete_data |
yes | Delete torrent data (Default: false) |
Templating
Attribute torrent_info
All *_torrents
sensors e.g. sensor.transmission_total_torrents
or sensor.transmission_started_torrents
have a state attribute torrent_info
that contains information about the torrents that are currently in a corresponding state. You can see this information in Developer Tools -> States -> sensor.transmission_total_torrents
-> Attributes, or by adding a Markdown card to Lovelace with the following code:
content: >
{% set payload = state_attr('sensor.transmission_total_torrents', 'torrent_info') %}
{% for torrent in payload.items() %} {% set name = torrent[0] %} {% set data = torrent[1] %}
{{ name|truncate(20) }} is {{ data.percent_done }}% complete, {{ data.eta }} remaining {% endfor %}
type: markdown