Zum Hauptinhalt springen

aria2 Smart-Home-Integration, kostenlos und Open Source

aria2-Integration für Gladys Assistant

Verfolge und steuere aria2-Downloads: Tempo, Warteschlange, Fertige, Fehler, Pause, Links.

Verfolge und steuere aria2, das schlanke Download-Werkzeug (HTTP, FTP, SFTP, BitTorrent, Metalink), aus Gladys, in deinem lokalen Netzwerk. Sieh die Download- und Upload-Geschwindigkeit und die laufenden Downloads, pausiere alles oder drossle es, wenn ein Film im Fernsehen startet, füge aus einer Szene einen Link hinzu, und lass dich benachrichtigen, wenn ein Download fertig ist oder fehlschlägt.

Mit einem echten aria2 getestet, noch nicht in einem echten Zuhause: Rückmeldungen willkommen. Diese Integration wurde gegen aria2 1.37.0 getestet, mit echten Downloads (fertig, fehlgeschlagen, pausiert), aber noch nicht in einer echten Gladys-Installation mit deinem NAS, deinem Reverse Proxy oder deiner Oberfläche (AriaNg, Motrix…). Wenn etwas nicht wie beschrieben funktioniert, sag es im Gladys-Forum oder in den Issues.

Die Integration entfernt nie einen Download oder eine Datei. Die Befehle sind Pause, Fortsetzen, das Download-Limit und das Hinzufügen eines Links.

Was du brauchst​

  • Gladys Assistant 5.1.0 oder neuer.
  • aria2 1.18 oder neuer, mit eingeschalteter RPC-Schnittstelle gestartet und von Gladys erreichbar: aria2c --enable-rpc --rpc-listen-all --rpc-secret=\<ein Secret>, oder dieselben Optionen in aria2.conf (enable-rpc=true, rpc-listen-all=true, rpc-secret=…). Die Docker-Images (p3terx/aria2-pro…) und NAS-Pakete machen das mit einer Variable RPC_SECRET oder einer Einstellung.
  • Das RPC-Secret (--rpc-secret), das du in AriaNg als geheimes Token eingibst. aria2 läuft auch ohne, aber dann könnte jeder in deinem Netzwerk es steuern.

--rpc-listen-all ist wichtig: ohne antwortet aria2 nur auf localhost, und Gladys läuft in einem anderen Container.

Einrichtung​

  1. Installiere die Integration aus dem Gladys-Katalog.
  2. Gib unter Konfiguration die RPC-Adresse von aria2 ein (zum Beispiel 192.168.1.10:6800; Port 6800, wenn keiner angegeben ist) und das RPC-Secret, optional einen Namen. Die volle URL geht auch, so wie AriaNg sie zeigt: ws://192.168.1.10:6800/jsonrpc, oder https://nas.example.com/aria2/jsonrpc hinter einem Reverse Proxy.
  3. Speichere und klicke auf Verbindung testen: Die Meldung unter dem Knopf sagt, ob aria2 antwortet, seine Version, seine Downloads und ob die Sofortbenachrichtigungen funktionieren.
  4. Öffne den Tab Erkennung: ein Gerät, aria2. Klicke auf Hinzufügen, wähle einen Raum, speichere.

Optionen:

  • Limit für „Drosseln“ (kB/s): das Download-Tempo aller Downloads zusammen, solange Drosseln an ist (standardmäßig 1000 kB/s, also 8 Mbit/s).
  • Aktualisierungsintervall: wie oft aria2 gelesen wird, von 10 Sekunden bis 2 Minuten (standardmäßig 30 Sekunden). Die Szenen-Auslöser warten nicht darauf: aria2 benachrichtigt die Integration sofort.
  • Selbstsignierte Zertifikate akzeptieren: für ein aria2, das über HTTPS (--rpc-secure) mit eigenem Zertifikat läuft.
  • Sprache der Gerätetexte: Englisch, Französisch, Deutsch oder Spanisch, für die Namen der Funktionen (beim Hinzufügen des Geräts vergeben) und die Liste der Downloads (standardmäßig Französisch).

Das aria2-Gerät​

FunktionWas es ist
Download-GeschwindigkeitTempo aller Downloads, in kB/s
Upload-GeschwindigkeitTempo aller Uploads (teilende Torrents), in kB/s
Aktive DownloadsDownloads, die Daten empfangen
Wartende DownloadsDownloads in der Warteschlange, wartend auf einen freien Platz oder pausiert
Fertige DownloadsSeit dem Start von aria2 beendete Downloads (teilender Torrent inklusive)
Fehlgeschlagene DownloadsSeit dem Start von aria2 durch einen Fehler gestoppte Downloads
Aktuelle DownloadsText: die ersten drei aktiven Downloads mit ihrem Prozentsatz
Alle pausierenSchalter: an pausiert alle Downloads, aus setzt sie fort
DrosselnSchalter: an setzt das Limit der Konfiguration, aus entfernt es
Download-LimitDas globale Download-Limit von aria2, in kB/s (0: keins)
aria2 verbunden1, solange aria2 antwortet, sonst 0

Fertige Downloads und Fehlgeschlagene Downloads zählen, woran aria2 sich erinnert: die Ergebnisse der Sitzung (höchstens 1000, --max-download-result), bis aria2 neu startet oder sie in AriaNg gelöscht werden. Die Metadaten eines Magnet-Links und die .torrent-Datei eines Downloads zählen nicht: nur der eigentliche Download.

Alle pausieren ist an, wenn noch etwas herunterzuladen ist und alles davon pausiert ist. Ein Link, der hinzugefügt wird, während alles pausiert ist, startet sofort: aria2 pausiert, was existiert, nicht was danach kommt.

Drosseln ist an, sobald ein globales Download-Limit gesetzt ist, egal von wem (der Schalter, das Widget, die Aktion Download-Limit festlegen, AriaNg).

Dashboard​

Das Widget aria2-Downloads zeigt die Download- und Upload-Geschwindigkeit, die Zahl der aktiven Downloads, die laufenden Downloads mit Prozentsatz und Tempo und die Zahl der wartenden, fertigen und fehlgeschlagenen. Drei Knöpfe:

  • Alle pausieren: pausiert alle Downloads;
  • Alle fortsetzen: setzt alle Downloads fort;
  • Drosseln: setzt das Limit der Konfiguration oder entfernt das Limit, wenn eins gesetzt ist (ein Häkchen zeigt es).

Das Widget funktioniert, sobald die Integration konfiguriert ist, schon bevor das Gerät hinzugefügt wurde.

Szenen​

Auslöser​

  • Download abgeschlossen: ein Download ist fertig. Ein Torrent zählt, sobald er vollständig ist, während er weiter teilt, einmal. Variablen: der Dateiname, die Größe in GB und der Ordner.
  • Download fehlgeschlagen: aria2 hat einen Download wegen eines Fehlers gestoppt (toter Link, Server lehnt ab, Platte voll…). Variablen: der Dateiname, die Fehlermeldung von aria2 und ihr Fehlercode (3: Ressource nicht gefunden, 9: zu wenig Speicherplatz…).
  • Nichts mehr herunterzuladen: der letzte aktive oder wartende Download ist beendet (fertig, fehlgeschlagen oder entfernt). Pausierte Downloads stehen noch aus: alles zu pausieren löst ihn nicht aus. Variablen: die Zahl der fertigen und fehlgeschlagenen Downloads der Sitzung.

Die beim Start der Integration vorhandenen Downloads werden nicht gemeldet. aria2 benachrichtigt die Integration über seinen WebSocket (gleicher Port wie der RPC): die Auslöser kommen in weniger als einer Sekunde. Ohne WebSocket (ein Reverse Proxy, der ihn nicht durchlässt) kommen sie beim nächsten Lesen.

Aktionen​

  • Download-Link hinzufügen: gibt aria2 einen Link: http, https, ftp, sftp, einen magnet:-Link oder die Adresse einer .torrent- oder .metalink-Datei (aria2 lädt dann herunter, was sie beschreibt). Der Ordner ist optional: ein absoluter Pfad auf dem aria2-Server (/downloads/filme); leer, der Standardordner von aria2. Die Ausgabe ist die Kennung (GID) des neuen Downloads.
  • Alle Downloads pausieren: pausiert die aktiven und wartenden Downloads.
  • Alle Downloads fortsetzen: setzt die pausierten Downloads fort.
  • Download-Limit festlegen: das globale Limit von aria2 für alle Downloads zusammen, in kB/s, bis zur nächsten Änderung; 0 entfernt es.

Szenen-Ideen​

  • Ein Film startet: Wenn der Fernseher oder der Mediaplayer abspielt, schalte Drosseln an (Aktion „Gerät steuern“ auf dem Schalter); wenn er stoppt, aus.
  • Videoanruf: Aus einem Kalendertermin oder einem Knopf Alle Downloads pausieren, eine Stunde später Alle Downloads fortsetzen.
  • Downloads in der Nacht: Um 1 Uhr Download-Limit festlegen auf 0, um 8 Uhr auf 2000.
  • Film bereit: Bei Download abgeschlossen eine Nachricht senden „{{triggerEvent.data.name}} ist bereit ({{triggerEvent.data.size_gb}} GB)“.
  • Toter Link: Bei Download fehlgeschlagen „{{triggerEvent.data.name}}: {{triggerEvent.data.error}}“ senden.
  • Nichts mehr: Bei Nichts mehr herunterzuladen den NAS-Lüfter ausschalten oder den Rechner schlafen lassen.

Aktualisierung und Last​

Die Integration liest aria2 mit ihrem eigenen Timer (standardmäßig alle 30 Sekunden), nicht über den Planer von Gladys, und direkt nach jeder Benachrichtigung von aria2 (einmal pro Schwall). Ein Lesen ist eine einzige Anfrage (system.multicall) mit nur den genutzten Feldern, für höchstens 1000 wartende und 1000 beendete Downloads. Antwortet aria2 nicht mehr, wird es 15 Sekunden später erneut gelesen. Ein unveränderter Wert wird trotzdem alle 6 Stunden an Gladys gesendet. Der WebSocket verbindet sich selbst neu, nach 5 Sekunden, dann bis zu 5 Minuten.

Die API ist lokal, ohne Kontingent.

Fehlerbehebung​

  • „aria2 antwortet nicht“: Prüfe Adresse und Port vom Gladys-Rechner aus (curl http://192.168.1.10:6800/jsonrpc muss eine Antwort bekommen), ob aria2 mit --enable-rpc und --rpc-listen-all läuft und ob der Port veröffentlicht ist, wenn aria2 in Docker läuft.
  • „Secret abgelehnt“: Das RPC-Secret weicht von --rpc-secret ab. Ohne Secret auf der aria2-Seite lass das Feld leer.
  • „kein aria2-RPC unter dieser Adresse“: Etwas antwortet, aber nicht aria2: oft die Webseite von AriaNg (Port 6880) statt des RPC (Port 6800), oder ein fehlender Pfad hinter einem Reverse Proxy.
  • „Zertifikat abgelehnt“: Aktiviere Selbstsignierte Zertifikate akzeptieren.
  • „keine Sofortbenachrichtigungen“ im Testbericht: Der WebSocket wird abgelehnt, oft von einem Reverse Proxy ohne WebSocket-Unterstützung, oder ein selbstsigniertes Zertifikat (das der WebSocket nicht akzeptieren kann). Alles funktioniert, im Aktualisierungsintervall.
  • „Befehl von aria2 abgelehnt“: aria2 hat den Link (unbekanntes Schema, ungültige Adresse) oder den Ordner nicht angenommen. Der Grund steht in den Protokollen der Integration.
  • Mehr Details: Setze die Umgebungsvariable LOG_LEVEL=debug am Container, um jedes Lesen und jede Benachrichtigung in den Protokollen zu sehen. Das Secret und die Links werden nie geschrieben (nur der Host eines Links).

Grenzen​

  • Ein einziger aria2-Server. Ein Gerät, nicht eins pro Download.
  • Kein Entfernen von Downloads oder Dateien, mit Absicht.
  • Die Geschwindigkeiten und das Limit gelten für das ganze aria2, nicht für einen Download.
  • Die Zahl der fertigen und fehlgeschlagenen Downloads gilt für die Sitzung von aria2 und beginnt bei einem Neustart von aria2 wieder bei null.
  • Ein Download, der zwischen zwei Lesevorgängen bei getrenntem WebSocket hinzugefügt und wieder entfernt wird, wird nicht gesehen.
  • Die Namen der Funktionen werden beim Hinzufügen des Geräts festgelegt: Eine spätere Sprachänderung benennt in Gladys nichts um.
  • Nicht mit dem aria2-Projekt verbunden.

Konfigurationseinstellungen​

Diese Einstellungen fragt aria2 in seinem Konfigurationsbildschirm in Gladys ab.

EinstellungTypPflichtfeldBeschreibung
Dein aria2-ServersectionNeinaria2, gestartet mit --enable-rpc und --rpc-listen-all (Port 6800), in deinem Netzwerk. AriaNg, Motrix oder ein NAS-Paket: derselbe RPC. Löscht nie einen Download oder eine Datei.
RPC-AdressestringJaIP-Adresse oder Name, mit :Port (sonst 6800). Die volle URL geht auch: http(s):// oder ws(s)://…/jsonrpc.
RPC-SecretsecretNeinDer Wert von --rpc-secret (das „geheime Token“ von AriaNg). Leer, wenn aria2 keins hat.
NamestringNeinName des Geräts in Gladys. Leer: aria2 gefolgt von der Adresse.
OptionensectionNein
Limit für „Drosseln“ (kB/s)numberNeinDownload-Tempo aller Downloads zusammen, solange „Drosseln“ an ist. 1000 kB/s = 8 Mbit/s.
AktualisierungsintervallselectNeinWie oft aria2 gelesen wird. Die Szenen-Auslöser kommen sofort: aria2 benachrichtigt Gladys.
Selbstsignierte Zertifikate akzeptierenbooleanNeinFür ein aria2, das über HTTPS (--rpc-secure) mit eigenem Zertifikat läuft.
Sprache der GerätetexteselectNeinNamen der Funktionen (beim Hinzufügen des Geräts festgelegt) und Texte der Integration.

So installierst du aria2 in Gladys​

  1. Öffne in Gladys Integrationen: aria2 erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
  2. Klicke auf Installieren. Gladys lädt das Docker-Image (ghcr.io/guim31/gladys-aria2:1.0.1) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration).
  3. Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
  4. Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-aria2.

aria2 benötigt Gladys >=5.1.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.

Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.

Über externe Integrationen​

aria2 ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von guim31 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.

Abonniere den Newsletter von Gladys Assistant

Ein paar E-Mails im Monat zu neuen Releases und Neuigkeiten aus dem Projekt. Verschickt von Pierre-Gilles Leymarie, dem Gründer des Projekts. Jederzeit abbestellbar 🙂