Zum Hauptinhalt springen

Mastodon Smart-Home-Integration, kostenlos und Open Source

Mastodon-Integration für Gladys Assistant

Poste auf Mastodon aus Szenen, reagiere auf Erwähnungen und Follower, verfolge deine Zähler.

Verbindet ein Mastodon-Konto mit Gladys: Szenen können auf Mastodon posten und Personen, die du kennst, privat schreiben, und sie können starten, wenn das Konto erwähnt wird, eine private Erwähnung erhält, einen neuen Follower bekommt oder ein Beitrag geteilt oder favorisiert wird. Ein Gerät verfolgt die Zähler des Kontos (Follower, gefolgte Konten, Beiträge, ungelesene Benachrichtigungen), und ein Dashboard-Widget zeigt die letzten Benachrichtigungen.

Die Integration funktioniert mit jedem Server, der die Mastodon-API spricht: Mastodon, GoToSocial, Akkoma, Pleroma.

Gegen einen echten GoToSocial-Server getestet, noch nicht gegen Mastodon selbst und nicht mit einem echten Gladys: Rückmeldungen sind willkommen auf GitHub.

Was du brauchst​

  • Gladys 5.1 oder neuer.
  • Ein Mastodon-Konto. Am besten ein eigenes Konto für das Zuhause (im Profil als Bot markiert): Alles, was die Szenen posten, erscheint unter seinem Namen.
  • Ein Zugriffstoken dieses Kontos: Öffne auf dem Server Einstellungen → Entwicklung → Neue Anwendung, gib ihr einen Namen (Gladys), aktiviere die Berechtigungen read und write:statuses (und write:media, um Bilder anzuhängen), speichere, öffne die Anwendung und kopiere Dein Zugriffstoken. Auf GoToSocial: Einstellungen → Anwendungen, dann ein Token für die Anwendung anfordern.

Einrichtung​

  1. Installiere die Integration: Integrationen → Von GitHub installieren, Adresse https://github.com/guim31/gladys-mastodon.
  2. Fülle im Tab Konfiguration aus:
    • Serveradresse: die Adresse deines Servers, z. B. https://mastodon.social.
    • Zugriffstoken: das oben kopierte Token.
    • Erlaubte Konten: die Konten, deren Erwähnungen Szenen starten, durch Kommas getrennt, z. B. [email protected], bob (bob ist ein Konto deines eigenen Servers). Leer: Keine Erwähnung startet eine Szene. Diese Konten können auch private Erwähnungen der Szenen erhalten.
    • Sprache der Namen: die Sprache der Gerätefunktionen und der an Szenen zurückgegebenen Fehler.
  3. Speichere. Der Status wechselt auf „verbunden“, und das Konto erscheint im Tab Entdecken: Füge es hinzu, um seine Zähler zu bekommen.
  4. Verbindung testen prüft das Token und zeigt das Konto, seine Follower und ungelesenen Benachrichtigungen.

Das Gerät​

Ein Gerät pro Konto, Mastodon @konto@server genannt, mit vier Zählern: Follower, Folge ich, Beiträge und Ungelesene Benachrichtigungen. Die Zähler werden alle 5 Minuten gelesen und direkt nach einer Benachrichtigung. Ungelesen sind die Benachrichtigungen nach der Lesemarke der Mastodon-Apps: Liest du sie in der Weboberfläche von Mastodon oder in einer kompatiblen App, stehen sie wieder auf 0. Auf Servern ohne die Zählung von Mastodon 4.3 (GoToSocial, ältere Mastodon-Versionen) werden höchstens 40 gezählt.

Dashboard​

Das Widget Mastodon zeigt, ob das Konto verbunden ist, seine Follower und ungelesenen Benachrichtigungen sowie die letzten fünf Benachrichtigungen (Erwähnungen, Follower, geteilte Beiträge, Favoriten). Private Erwähnungen erscheinen nie: Das Dashboard sehen alle zu Hause. Zwei Schaltflächen: Als gelesen markieren (wenn Benachrichtigungen ungelesen sind) setzt die Lesemarke auf die neueste Benachrichtigung, Verbindung testen startet den Test oben.

Szenen​

Auslöser​

  • Mastodon-Erwähnung erhalten: Ein öffentlicher, nicht gelisteter oder Follower-Beitrag erwähnt das Konto. Filter: Verfasser (eine Adresse wie [email protected]) und Sichtbarkeit. Variablen: der Verfasser (Adresse und Anzeigename), der Text ohne die Erwähnungen am Anfang, die Sichtbarkeit, die Beitrags-ID und seine Adresse.
  • Private Mastodon-Erwähnung erhalten: Eine private Erwähnung (eine Direktnachricht) hat das Konto erreicht. Filter: Verfasser. Dieselben Variablen, ohne die Sichtbarkeit.
  • Neuer Mastodon-Follower: Jemand folgt dem Konto oder fragt es an, wenn das Konto geschützt ist. Variablen: der Verfasser und ob es eine zu bestätigende Folgeanfrage ist.
  • Mastodon-Beitrag geteilt oder favorisiert: Jemand hat einen Beitrag des Kontos geteilt oder favorisiert. Filter: Art. Variablen: die Art (boost für geteilt, favourite für Favorit), der Verfasser, der Text und die Adresse des Beitrags.

Nur die Erwähnungen der Erlaubten Konten starten eine Szene: Bei leerer Liste keine (Follower, geteilte Beiträge und Favoriten lösen für alle aus). Das Konto selbst startet nie einen Auslöser, und Benachrichtigungen, die älter als 10 Minuten sind (erhalten, während Gladys gestoppt war), starten nichts.

Aktionen​

  • Auf Mastodon posten: veröffentlicht einen Beitrag. Sichtbarkeit: standardmäßig nicht gelistet (im Profil, nicht in den öffentlichen Timelines), öffentlich oder nur Follower. Optionale Inhaltswarnung und ein optionales Bild: eine Bildadresse in http(s), die die Integration erreicht (die Schnappschuss-Adresse einer Kamera, zum Beispiel http://benutzer:[email protected]/snapshot.jpg; JPEG, PNG, GIF oder WebP, höchstens 8 MB) mit ihrer Bildbeschreibung für Bildschirmleser. Der Text wird auf die vom Server erlaubte Länge gekürzt (500 Zeichen auf Mastodon standardmäßig).
  • Private Mastodon-Erwähnung senden: schreibt einem Konto privat. Der Empfänger muss ein erlaubtes Konto sein oder eines, dem das Konto folgt: Die Integration schreibt nie an Unbekannte. Antwort auf (Beitrags-ID) nimmt die Beitrags-ID-Variable eines Auslösers, um in derselben Unterhaltung zu antworten. Die anderen @ der Nachricht werden entschärft (ein unsichtbares Zeichen folgt ihnen): Ein aus einem Auslöser übernommener Text fügt nie einen Empfänger hinzu.

Beide Aktionen geben Gesendet, die Beitrags-ID, die Adresse des Beitrags und den Fehler an die folgenden Aktionen der Szene zurück. Höchstens 30 Beiträge pro Stunde kommen von Szenen: Darüber hinaus werden sie übersprungen.

Szenenideen​

  • Es hat geklingelt: Wenn die Klingel gedrückt wird → Auf Mastodon posten, nur Follower, „Jemand hat an der Tür geklingelt“, mit der Schnappschuss-Adresse der Kamera am Eingang.
  • Ein Befehl per privater Erwähnung: Private Mastodon-Erwähnung erhalten, Verfasser [email protected] → wenn der Text „garage“ ist, das Garagentor schließen, dann Private Mastodon-Erwähnung senden an den Verfasser, als Antwort auf die Beitrags-ID: „Das Garagentor schließt.“
  • Ein neuer Follower: Neuer Mastodon-Follower → eine Benachrichtigung auf das Telefon des Zuhauses, mit dem Verfasser.

Fehlerbehebung​

  • „Zugriffstoken abgelehnt“: Das Token wurde widerrufen oder falsch abgeschrieben; leg ein neues an.
  • „abgelehnt: Hat das Token die Berechtigungen read und write:statuses?“: Der Anwendung fehlt eine Berechtigung; aktiviere sie und verwende das neue Token.
  • Kein Auslöser, obwohl die Zähler funktionieren: Die Streaming-API wird vielleicht von einem Reverse Proxy blockiert (WebSocket-Upgrade). Die Integration liest die Benachrichtigungen dann jede Minute: Die Auslöser kommen verspätet, aber sie kommen. Prüfe, dass dein Proxy /api/v1/streaming als WebSocket weiterleitet.
  • Eine Erwähnung startet nichts: Prüfe, ob ihr Verfasser in Erlaubte Konten steht (vollständige Adresse, z. B. [email protected]) und den Filter Verfasser des Auslösers; setze LOG_LEVEL=debug, um die ignorierten Erwähnungen in den Logs zu sehen.
  • Das Bild fehlt: Die Adresse muss vom Container der Integration erreichbar sein und mit einem Bildtyp antworten.

Grenzen​

  • Ein Konto pro Gladys. Das Token gibt der Integration die Rechte des Kontos: Nimm ein eigenes Konto.
  • Erwähnungen wirken dank der Streaming-API in etwa einer Sekunde; während einer Unterbrechung verpasste Benachrichtigungen werden danach nachgelesen, aber solche, die älter als 10 Minuten sind, starten keine Szene, und höchstens 200 werden nachgelesen.
  • Gladys gibt einer Geräte-Integration keine Kamerabilder: Das Bild eines Beitrags kommt von einer Adresse.
  • Mastodon begrenzt ein Konto auf 300 Beiträge in 3 Stunden und 300 Anfragen in 5 Minuten; die Integration stellt etwa 3 Anfragen alle 5 Minuten, mehr, wenn Benachrichtigungen eintreffen.
  • Umfragen, Bearbeitungen und Admin-Benachrichtigungen sind keine Auslöser. Nur Text: Das HTML der Beiträge wird zu reinem Text.
  • Nicht verbunden mit der Mastodon gGmbH. Mastodon ist eine Marke der Mastodon gGmbH.

Konfigurationseinstellungen​

Diese Einstellungen fragt Mastodon in seinem Konfigurationsbildschirm in Gladys ab.

EinstellungTypPflichtfeldBeschreibung
Erste SchrittesectionNeinÖffne auf deinem Mastodon-Server Einstellungen → Entwicklung → Neue Anwendung, aktiviere die Berechtigungen read und write:statuses, speichere und kopiere dann das Zugriffstoken. Am besten ein eigenes Konto für das Zuhause.
ServeradressestringJaDie Adresse deines Mastodon-Servers (oder GoToSocial, Akkoma, Pleroma), z. B. https://mastodon.social.
ZugriffstokensecretNeinDas Zugriffstoken der in Einstellungen → Entwicklung angelegten Anwendung.
Erlaubte KontenstringNeinKonten, deren Erwähnungen Szenen auslösen, durch Kommas getrennt, z. B. [email protected], bob. Leer: niemand. Diese Konten können auch private Erwähnungen erhalten.
Sprache der NamenselectNeinSprache der Gerätefunktionen und der an Szenen zurückgegebenen Fehler.

So installierst du Mastodon in Gladys​

  1. Öffne in Gladys Integrationen: Mastodon 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-mastodon: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-mastodon.

Mastodon 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​

Mastodon 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 🙂