Integrating and Controlling Transmission With Home Assistant

Disclosure: This post contains affiliate links. If you click through and make a purchase, I will earn a commission, at no additional cost to you. Read my full disclosure here.

Digital artwork of a turtle with a highly stylized cyberpunk design, positioned on a road. The turtle's shell and skin have vibrant green, orange, and metallic colours with intricate patterns, giving it a mechanical appearance. The turtle's eyes have a reflective quality, and its overall design suggests a blend of organic and robotic elements. The background is softly focused with bokeh lights indicative of a cityscape.

In the digital era, the smart home ecosystem is rapidly expanding, encompassing not just traditional devices like lights, media players, and PCs, but also integrating software applications on your home server. Transmission, a renowned lightweight and open-source BitTorrent client, stands out for its ease of use and efficiency in handling file downloads. In this guide, we'll walk you through the process of controlling your Transmission activities directly from the Home Assistant Dashboard, leveraging automation for a seamless experience, especially in optimizing network usage based on the presence of people in the home.


Ethical Considerations and the Stance of Home Assistant Guide

First and foremost, it's crucial to address the ethical landscape surrounding torrenting. Home Assistant Guide firmly stands against piracy in all its forms, emphasizing that the instructions provided are for educational purposes only. Respecting intellectual property rights and supporting content creators through legal channels is paramount to foster a healthy digital ecosystem.

The Role of Transmission in a Smart Home Setup

Transmission's appeal lies in its minimalistic interface, low resource consumption, and versatility across different operating systems. My setup involves running Transmission within a Docker container, sharing the same host as my Home Assistant Core container. The challenge, however, lies in managing Transmission's network consumption to prevent it from hindering other online activities within the home. This is where the clever use of Home Assistant's automation capabilities comes into play.

Screenshot of the Transmission application window showing three downloading files with their names, sizes, and download statuses. The files are Linux distribution ISO images named 'linuxmint-21.3-cinnamon-64bit.iso,' 'manjaro-kde-23.1.3-240113-linux66.iso,' and 'ubuntu-23.10.1-desktop-amd64.iso.' Each file displays the downloaded amount, total size, percentage completed, estimated time left, download and upload speeds, and the number of connected peers.

Setting the Stage for Integration

Integrating Transmission with Home Assistant is straightforward and doesn't discriminate based on your Home Assistant installation type. Essential prerequisites include a functional Transmission setup with access from within the home network enabled.

To let Home Assistant boost your home network's performance, set up the alternate speeds (often referred to as “turtle mode” because of its turtle-shaped icon) in your Transmission client. The speeds should be low enough to keep Transmission's presence unnoticed when doing other work on your home network.

Screenshot of the 'Speed' tab in the Transmission application's settings, showing options for speed limits. There are fields for setting standard upload and download speed limits, both set to 100 kB/s. Below, there is an 'Alternative Speed Limits' section with a blue snail icon, where the upload speed limit is set to 50 kB/s and the download speed limit is set to 250 kB/s. There is also an option for 'Scheduled Times' to automatically apply these limits, with fields to set the time from 9:00 to 17:00 and the option to apply these settings every day.

How to Integrate Transmission with Home Assistant

To achieve integration, you'll need the host IP, Transmission's port (default 9091), and your user credentials. Home Assistant's graphical interface facilitates a hassle-free setup process, granting immediate access to valuable sensors and switches for managing your torrent activities.

Screenshot of the 'Setup Transmission Client' configuration panel within the Home Assistant dashboard. It includes fields for 'Name' filled with 'Transmission,' 'Host' with the IP address ',' a 'Username' field filled with 'my_transmission_user,' and a 'Password' field obscured for security. Lastly, there's a 'Port' field filled with the number '9091.' A 'SUBMIT' button is visible at the bottom.

Key Integration Features

Services Provided by the Integration

The Transmission integration with Home Assistant includes services for adding, removing, starting, and stopping torrents directly from the dashboard, enhancing the automation capabilities for your torrenting experience.

Screenshot of a list of items related to Transmission within a control interface, likely a Home Assistant dashboard. Each item is labeled, including 'Transmission Active Torrents,' 'Transmission Completed Torrents,' 'Transmission Down Speed,' 'Transmission Paused Torrents,' 'Transmission Started Torrents,' 'Transmission Status,' 'Transmission Switch,' 'Transmission Total Torrents,' 'Transmission Turtle Mode,' and 'Transmission Up Speed.' To the left of each item, there is a checkbox, and to the right, there are toggle switches indicating the status of each item, with some toggled on and others off. The word 'Name' is at the top with an arrow indicating sorting options.

Creating the Transmission turtle mode automation in Home Assistant

Creating a “turtle mode” automation in Home Assistant can dynamically manage the bandwidth Transmission is allowed to take up. This not only ensures efficient use of your internet connection but also prevents your torrent activities from interfering with your daily online tasks. Here's a detailed guide on setting up this automation, making it straightforward even for beginners.

Screenshot of an automation setup within the Home Assistant interface, titled 'Actions.' It describes what Home Assistant will do when the automation is triggered. The setup includes two options. Option 1 has a condition type 'Triggered by' with the trigger 'liam_away,' and an action to 'Call service' for a 'Switch: Turn off' service targeting 'Transmission Turtle Mode.' Option 2 has a similar setup with the condition trigger 'liam_home,' and an action to 'Call service' for a 'Switch: Turn on' service, also targeting 'Transmission Turtle Mode.' Both options include buttons to add conditions and actions, and have 'TEST' options to the right.

Step 1: Define the Triggers

The first step is to identify the conditions that will trigger the automation. Typically, these conditions are based on presence detection, such as when someone arrives at or leaves the home. You can use various methods for presence detection in Home Assistant, including mobile device tracking, network-based detection, or third-party services.

  1. When Someone is Home: This trigger activates turtle mode to limit Transmission's bandwidth usage, ensuring other internet activities are not disrupted.
  2. When Everyone is Away: This trigger deactivates turtle mode, allowing Transmission to use the full bandwidth for downloads.
Screenshot of the 'Triggers' section in a Home Assistant automation configuration. It lists two triggers based on a zone type. The first trigger is labeled 'liam_away' and is associated with 'Liam Alexander Colman' leaving the 'Acehouse Control' zone. The second trigger is labeled 'liam_home' and is associated with the same individual entering the same zone. Both triggers have options to specify whether the event is for entering or leaving the zone, but the selection is not indicated in the image.

Step 2: Set Up the Automation in Home Assistant

Navigate to the Automations section in Home Assistant and create a new automation.

  1. Name your automationfor easy identification, such as "Transmission Turtle Mode Automation."
  2. Select the Trigger Type: Choose the type of trigger based on your presence detection setup (e.g., device tracker, person entity, etc.).
  3. Define the Trigger Conditions: Specify the conditions that will trigger this automation, such as the presence status changing to "home" or "not_home."
  4. Choose the Action Type: Select 'Call Service' as the action type.

For Enabling Turtle Mode:

For Disabling Turtle Mode:

Step 3: Refining the Automation with Conditions (Optional)

To make your automation even smarter, consider adding conditions. For example, you might only want to activate turtle mode during specific hours or when the network usage exceeds a certain threshold. After setting up your automation, it's crucial to test it under different scenarios to ensure it behaves as expected. You may need to adjust the triggers, conditions, or actions based on your observations.

Creating the Transmission Turtle Mode Automation in Node-RED

Leveraging Node-RED for creating advanced automations offers a powerful and intuitive way to manage your smart home devices, including controlling Transmission's "turtle mode" based on household occupancy. Node-RED's visual programming environment simplifies the process of creating complex logic by connecting nodes in a flow-based manner. This section will guide you through setting up a Node-RED flow that automates Transmission's bandwidth usage, ensuring efficient internet consumption tailored to your presence at home.

Screenshot of a Node-RED flow diagram titled 'Turn off Turtle Mode if unoccupied.' It displays two blue nodes with the label 'away?' and a sub-label 'running,' both connected to two intermediary blue nodes with an information icon and the label 'away?' These are then connected to a final node, coloured light blue, with the label 'Turn off turtle mode' accompanied by a Wi-Fi icon and a power symbol. This flow chart visually represents a logical sequence where if the condition 'away?' is true and running, then Turtle Mode should be turned off.

Getting Started with Node-RED

Before diving into the automation, ensure you have Node-RED installed and accessible within your network. Node-RED can run on various platforms, including a Raspberry Pi, a server, or even directly on some routers. If you're using Home Assistant, you can easily add Node-RED through the Supervisor Add-on store.

Step 1: Plan Your Flow

The objective is to create a flow that adjusts Transmission's download speed based on the presence or absence of people in your home. The flow will have three main parts:

  1. Presence Detection: Determines if anyone is home or if everyone is away.
  2. Enable Turtle Mode: Activates turtle mode when someone arrives home.
  3. Disable Turtle Mode: Deactivates turtle mode when everyone is away.

Step 2: Set Up Presence Detection

  1. Input Nodes: Use input nodes to receive presence information. This could be from device trackers, network presence detection, or manual input switches. Configure these nodes to detect when someone arrives at or leaves the home.
  2. Function Nodes: Add function nodes to evaluate the presence data. You might write a simple JavaScript function to check if at least one person is home or if everyone is away.
Screenshot of a Node-RED flow diagram. It shows two blue nodes labeled 'home?' with a sub-label 'running' connected to an orange node labeled 'Turn on turtle mode.' The connections indicate a flow of information or a trigger sequence from the 'home?' conditions to the action of turning on turtle mode.

Step 3: Control Transmission's Turtle Mode

  1. HTTP Request Nodes: Since Transmission offers a web API, you can use HTTP request nodes to send commands to enable or disable turtle mode. Configure these nodes with the appropriate API endpoints and authentication credentials.
  2. Template Nodes: Use template nodes to construct the JSON payload required by the Transmission API to set the turtle mode's status.
Screenshot of a Node-RED automation configuration panel. The panel includes the following fields: 'Name' with the entry 'Turn on turtle mode,' 'Server' set to 'Home Assistant' from a dropdown menu with an edit pencil icon, 'Domain' with the entry 'switch,' 'Service' with the entry 'turn_on,' and 'Entity Id' with the entry 'switch.transmission_turtle_mode.' Each field is labelled with an icon representing its function, such as a tag for 'Name' and a diamond for 'Domain.

Step 4: Create the Flows

  1. Flow for Enabling Turtle Mode: Connect the presence detection nodes to a function node that checks if anyone is home. If so, link it to the HTTP request node configured to enable turtle mode in Transmission.
  2. Flow for Disabling Turtle Mode: Similarly, create a flow that triggers when everyone is away, connecting it to a different HTTP request node set to disable turtle mode.

Step 5: Implement Logic for Conditional Execution

  1. Switch Nodes: Incorporate switch nodes to direct the flow based on presence status. This ensures that turtle mode is only activated or deactivated under the correct conditions.
  2. Delay Nodes: Optionally, add delay nodes to prevent rapid toggling of turtle mode in cases of brief disconnections or presence detection anomalies.

Step 6: Testing, Debugging, and Deploying

  1. Debug Nodes: Utilize debug nodes to monitor the flow's operation and troubleshoot any issues. Pay special attention to the payload structure and HTTP request configuration to ensure successful API communication with Transmission.
  2. Deploying: Once satisfied with the setup, deploy the flow and observe its operation. Node-RED provides real-time feedback on each node's status, helping you ensure that the automation behaves as expected.

Further Ideas for Transmission Automations in Home Assistant

Although the initial setup is elementary, numerous ways exist to enhance these examples. Consider the following suggestions:

Transmission Sensors and Switches in the Home Assistant Dashboard

After setting up the Transmission integration in Home Assistant, why not create visually appealing graphs for your uploads and downloads? For example, the Lovelace Mini Graph Card displays data beautifully. Additionally, a substantial physical button for turtle mode can be established using a Button Card.

Screenshot of a network speed graph from the Transmission app on the Home Assistant Dashboard. The header 'Transmission' is displayed at the top, with two numerical indicators showing '0.05 MB/s' for both download and upload speeds, labelled 'Down' and 'Up' respectively. Below the indicators is a multicoloured line graph depicting network activity over time, with peaks and valleys in different colours representing changes in speed.
Graphic image of a stylized turtle icon in yellow against a black background, likely representing a button card from the Home Assistant Dashboard, possibly for activating 'Turtle Mode' or a low-speed setting.
A portrait photo oif Liam Alexander Colman, the author, creator, and owner of Home Assistant Guide wearing a suit.

About Liam Alexander Colman

is an experienced Home Assistant user who has been utilizing the platform for a variety of projects over an extended period. His journey began with a Raspberry Pi, which quickly grew to three Raspberry Pis and eventually a full-fledged server. Liam's current operating system of choice is Unraid, with Home Assistant comfortably running in a Docker container.
With a deep understanding of the intricacies of Home Assistant, Liam has an impressive setup, consisting of various Zigbee devices, and seamless integrations with existing products such as his Android TV box. For those interested in learning more about Liam's experience with Home Assistant, he shares his insights on how he first started using the platform and his subsequent journey.

Leave a comment

Share to...