Bram Kragten 630f456aed
Merge current into next (#40176)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: ecspiegel <87676266+ecspiegel@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
Co-authored-by: alawadhi3000 <5523980+alawadhi3000@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Co-authored-by: staticdev <staticdev-support@proton.me>
Co-authored-by: tronikos <tronikos@users.noreply.github.com>
Co-authored-by: AlCalzone <dominic.griesel@nabucasa.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: essys <essys@users.noreply.github.com>
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: Gord <31004434+googanhiem@users.noreply.github.com>
Co-authored-by: Darren Griffin <darren.griffin@live.co.uk>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: hanwg <han.wuguang@gmail.com>
Co-authored-by: Adam W <35391288+A-damW@users.noreply.github.com>
Co-authored-by: Hessel <hesselonline@users.noreply.github.com>
Co-authored-by: Damien Sorel <mistic@strangeplanet.fr>
Co-authored-by: Tempura San <tempura.san@gmail.com>
Co-authored-by: Manu <4445816+tr4nt0r@users.noreply.github.com>
Co-authored-by: J. Diego Rodríguez Royo <jdrr1998@hotmail.com>
Co-authored-by: lexitus <38081592+lexitus@users.noreply.github.com>
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
Co-authored-by: Evgeny Sureev <u@litka.ru>
Co-authored-by: Stefan Agner <stefan@agner.ch>
Co-authored-by: TomArm <TomArm@users.noreply.github.com>
Co-authored-by: starkillerOG <starkiller.og@gmail.com>
Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
Co-authored-by: Guillaume Rischard <github@stereo.lu>
Co-authored-by: Geoff <85890024+Thulrus@users.noreply.github.com>
Co-authored-by: GhoweVege <85890024+GhoweVege@users.noreply.github.com>
Co-authored-by: Logan Rosen <loganrosen@gmail.com>
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: RanTheLab <RanTheLab@users.noreply.github.com>
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
Co-authored-by: John Hess <john@h3ss.com>
Co-authored-by: Marco <cdrfun@cdrfun.eu>
Co-authored-by: robthebold <38596885+robthebold@users.noreply.github.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Pieter Rautenbach <parautenbach@gmail.com>
Co-authored-by: Tsvi Mostovicz <ttmost@gmail.com>
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Galorhallen <12990764+Galorhallen@users.noreply.github.com>
Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>
Co-authored-by: Jan Čermák <sairon@users.noreply.github.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: Mr. Snyds <41122989+mrsnyds@users.noreply.github.com>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
Co-authored-by: Ludovic BOUÉ <lboue@users.noreply.github.com>
Co-authored-by: threatdisplay <ajbriones@gmail.com>
Co-authored-by: Kamil Breguła <mik-laj@users.noreply.github.com>
Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
Co-authored-by: Timothy <6560631+TimoPtr@users.noreply.github.com>
Co-authored-by: Joris Pelgröm <jpelgrom@users.noreply.github.com>
Co-authored-by: Wendelin <12148533+wendevlin@users.noreply.github.com>
Co-authored-by: Arie Catsman <120491684+catsmanac@users.noreply.github.com>
Co-authored-by: Marko Dimjašević <marko@dimjasevic.net>
Co-authored-by: karwosts <32912880+karwosts@users.noreply.github.com>
Co-authored-by: Guido Schmitz <Shutgun@users.noreply.github.com>
2025-07-28 16:45:52 +02:00

7.8 KiB

title, description, ha_category, ha_release, ha_config_flow, ha_iot_class, ha_codeowners, ha_domain, ha_platforms, ha_integration_type, ha_quality_scale
title description ha_category ha_release ha_config_flow ha_iot_class ha_codeowners ha_domain ha_platforms ha_integration_type ha_quality_scale
SABnzbd Instructions on how to integrate SABnzbd with Home Assistant.
Downloading
Sensor
0.7 true Local Polling
@shaiu
@jpbede
sabnzbd
binary_sensor
button
number
sensor
integration bronze

The SABnzbd {% term integration %} allows you to monitor and control your downloads with SABnzbd from within Home Assistant and set up automations based on download status and activity.

SABnzbd is a popular newsgroup binary downloader that automates the downloading, verification, repairing, and extraction of files from Usenet. With this integration, you can create smart home automations that respond to your download activity, monitor disk space, and control your downloads remotely.

Use cases

Here are some practical ways you can use the SABnzbd integration:

  • Download completion notifications: Get notified on your phone or smart display when downloads finish.
  • Bandwidth management: Automatically pause downloads during peak internet usage hours or when streaming services are active.
  • Disk space monitoring: Set up alerts when your download drive is running low on space.
  • Smart scheduling: Automatically start downloads during off-peak hours when internet is faster or cheaper.
  • Home theater integration: Pause downloads when movie night starts to ensure smooth streaming.
  • Security monitoring: Get alerted if SABnzbd goes offline or becomes unreachable.

Prerequisites

You need to grab your API key from your SABnzbd instance in order to configure this integration:

  1. Navigate to your SABnzbd web interface.
  2. Select Config* {% icon "mdi:settings" %}, then General.
  3. Copy your API key under Security.

{% include integrations/config_flow.md %}

{% configuration_basic %} URL: description: "The full URL, including port, of your SABnzbd server. Example: http://localhost:8080 or http://a02368d7-sabnzbd:8080, if you are using the add-on." API key: description: "The API key of your SABnzbd server. You can find this in the SABnzbd web interface under Config {% icon "mdi:settings" %} (top right) > General > Security." {% endconfiguration_basic %}

Supported functionality

Binary sensors

  • Warnings: Indicates if SABnzbd has any warnings (for example, disk space low, download errors)

Buttons

  • Pause: Pause all downloads
  • Resume: Resume paused downloads

Sensors

This integration creates the following sensors to monitor your SABnzbd instance:

  • Status: The current status of SABnzbd (Idle, Downloading, Paused, etc.)
  • Speed: The current download speed in MB/s
  • Queue: The total size of the download queue in GB
  • Left: The remaining size of the download queue in GB
  • Disk: The total disk size at SABnzbd's download location in GB
  • Disk free: The available disk space at SABnzbd's download location in GB
  • Queue count: The number of items in the download queue
  • Total: Total GB downloaded since SABnzbd was last restarted

Numbers

  • Speed limit: Set the download speed limit (as a percentage of your configured maximum speed).

Examples

Basic download monitoring automation

This automation sends a notification when a download completes:

{% raw %}

- alias: "SABnzbd download complete"
  triggers:
    - trigger: state
      entity_id: sensor.sabnzbd_status
      to: "Idle"
      from: "Downloading"
  actions:
    - action: notify.mobile_app_your_phone
      data:
        title: "Download Complete"
        message: "SABnzbd has finished downloading and extracting files"

{% endraw %}

Disk space warning

Get notified when your download drive is running low on space:

{% raw %}

- alias: "SABnzbd low disk space warning"
  triggers:
    - trigger: numeric_state
      entity_id: sensor.sabnzbd_disk_free
      below: 10
  actions:
    - action: notify.mobile_app_your_phone
      data:
        title: "Low Disk Space"
        message: "Download drive has less than {{ states('sensor.sabnzbd_disk_free') }} GB free"
        data:
          priority: high

{% endraw %}

Bandwidth management during streaming

Automatically pause downloads when your media players are active:

{% raw %}

- alias: "Pause downloads during movie time"
  triggers:
    - trigger: state
      entity_id: media_player.living_room_tv
      to: "playing"
  conditions:
    - condition: state
      entity_id: sensor.sabnzbd_status
      state: "Downloading"
  actions:
    - action: button.press
      target:
        entity_id: button.sabnzbd_pause
    - action: notify.mobile_app_your_phone
      data:
        message: "Downloads paused for movie time"

- alias: "Resume downloads after movie time"
  triggers:
    - trigger: state
      entity_id: media_player.living_room_tv
      from: "playing"
      for: "00:05:00"
  conditions:
    - condition: state
      entity_id: sensor.sabnzbd_status
      state: "Paused"
  actions:
    - action: button.press
      target:
        entity_id: button.sabnzbd_resume

{% endraw %}

Smart scheduling with speed limits

Reduce download speed during peak hours and increase it during off-peak hours:

{% raw %}

- alias: "SABnzbd peak hours speed limit"
  triggers:
    - trigger: time
      at: "18:00:00"
  actions:
    - action: number.set_value
      target:
        entity_id: number.sabnzbd_speed_limit
      data:
        value: 30

- alias: "SABnzbd off-peak full speed"
  triggers:
    - trigger: time
      at: "23:00:00"
  actions:
    - action: number.set_value
      target:
        entity_id: number.sabnzbd_speed_limit
      data:
        value: 100

{% endraw %}

Dashboard card example

Create a comprehensive SABnzbd monitoring card for your dashboard:

{% raw %}

type: entities
title: SABnzbd Downloads
entities:
  - entity: sensor.sabnzbd_status
    name: Status
  - entity: sensor.sabnzbd_speed
    name: Download speed
  - entity: sensor.sabnzbd_queue_count
    name: Items in queue
  - entity: sensor.sabnzbd_left
    name: Remaining
  - type: divider
  - entity: button.sabnzbd_pause
    name: Pause downloads
  - entity: button.sabnzbd_resume
    name: Resume downloads
  - type: divider
  - entity: sensor.sabnzbd_disk_free
    name: Free space
  - entity: number.sabnzbd_speed_limit
    name: Speed limit

{% endraw %}

Data updates

The SABnzbd integration {% term polling polls %} data from your SABnzbd server every 30 seconds by default. This provides near real-time updates of download progress, queue status, and system information without putting excessive load on your SABnzbd instance.

Troubleshooting

SABnzbd not found or unreachable

  1. Verify SABnzbd is running: Check that SABnzbd is running and accessible via its web interface.
  2. Check the URL: Ensure you're using the correct URL format including the port (typically http://localhost:8080).
  3. Test API key: Verify your API key is correct by comparing it in the SABnzbd web interface.
  4. Network connectivity: If SABnzbd is on another device, ensure Home Assistant can reach it over the network
  5. Firewall settings: Check that your firewall allows connections to SABnzbd's port.
  6. Enable debug logging: Temporarily enable debug logging for the SABnzbd integration to get more detailed error messages.

SABnzbd add-on specific issues

If you're using the SABnzbd Home Assistant add-on:

  1. Use internal URL: Use http://a02368d7-sabnzbd:8080 instead of localhost.
  2. Check add-on logs: Review the SABnzbd add-on logs for any error messages.
  3. Add-on configuration: Ensure the add-on is properly configured and started.

Removing the integration

This integration follows standard integration removal. No extra steps are required.

{% include integrations/remove_device_service.md %}