Smart-Home

In unserem Wohnzimmer liegt an einer versteckten Stelle ein Raspi herum, an dem ein Temperatursensor angeschlossen ist.

Nur die Temperatur zu messen ist langweilig, daher benutze ich ihn seit Anfang der Woche zur Automatisierung.
Dazu wird alle fünf Minuten die Innentemperatur mit der Außentemperatur (hole ich via API von OpenWeather) verglichen. Wenn es dann draußen das erste Mal wärmer als drinnen ist, schickt mir mein Bot diese Nachricht:

Und dann gehe ich los und mache alle Außentüren und Fenster zu.

Smart-Home mit Fitnesseffekt.


Direktnachricht per Mastodon API

Ich brauchte etwas, das mir bei bestimmten Ereignissen auf möglichst simple Weise eine Nachricht schickt. Das lässt sich auf allerlei Arten bewerkstelligen, ich fand es am einfachsten, meinem Mastodon-Account von einem schnell eingerichteten Zweit-Account Direktnachrichten zu schicken. Das lässt sich mit einem curl-Aufruf machen:

curl --location --request POST 'https://social.tchncs.de/api/v1/statuses' \
--header 'Authorization: Bearer GEHEIM' \
--header 'Content-Type: application/json' \
--data-raw '{
      "status": "@scaldra@social.tchncs.de Hallo",
      "language":"de",
      "visibility": "direct"
}'Code-Sprache: Bash (bash)

Das schickt @scaldra@social.tchncs.de ein Hallo als Direktnachricht in Deutsch. Damit das auch funktioniert, muss dazu nur noch GEHEIM durch das Bearer Token ersetzt werden. Das lässt sich schnell erstellen, indem unter Entwicklung eine neue Anwendung angelegt wird. Sobald die Anwendung erzeugt wurde, muss sie noch mal geöffnet und der Inhalt von Dein Zugangs-Token kopiert und ins Skript eingesetzt werden. Und schon ist der Bot fertig und sagt Hallo.

Hier das Ganze noch mal als PHP.

<?php
$headers = [
  'Authorization: Bearer GEHEIM'
];

$status_data = array(
  "status" => "@scaldra@social.tchncs.de Hallo",
  "language" => "de",
  "visibility" => "direct"
);

$ch_status = curl_init();
curl_setopt($ch_status, CURLOPT_URL, "https://social.tchncs.de/api/v1/statuses");
curl_setopt($ch_status, CURLOPT_POST, 1);
curl_setopt($ch_status, CURLOPT_POSTFIELDS, $status_data);
curl_setopt($ch_status, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch_status, CURLOPT_HTTPHEADER, $headers);

$output_status = json_decode(curl_exec($ch_status));

curl_close ($ch_status);Code-Sprache: PHP (php)

Das Fediverse und die Blogs

Vor einem Jahr habe ich mit den hervorragenden Plugins von Matthias Pfefferle scaldra.net ins Fediverse gebracht. Oder anders gesagt: WordPress mit einer ActivityPub-Schnittstelle versehen. Aber bereits zu dem Zeitpunkt fragte ich mich, wie denn ein Blogpost am besten zu z.B. Mastodon geteilt wird. Wirklich im Volltext oder doch besser nur mit einem Teaser?

Inzwischen sehe ich den Blogpost als so etwas wie einen Vortrag: Jemand erzählt und einige/viele hören zu. Ein Blog mit Kommentarfunktion ist dann so etwas wie ein Vortrag mit anschließender Diskussion. Dagegen ist das, was auf den ActivityPub-getriebenen Plattformen wie Mastodon stattfindet, eine Unterhaltung. Jeder trägt kurze Schnipsel bei und wenn es in einen länglichen Monolog ausartet, dann wird es nervig.

Als Konsequenz sind die alten Plugins jetzt weg und wurden durch Mastodon Autopost ersetzt. Der Blogpost wird einfach nur automatisch – sozusagen in einem Satz – in meinem Account bekannt gegeben. Denn das war eine weitere Irritation: Das Blog hatte seine eigene beschränkte Social Media Identität und daneben hatte ich noch meinen normalen Mastodon-Account. Das passte einfach nicht zusammen.

Und es kann durchaus sein, dass ich demnächst an dieser Stelle auf jede Automatisierung verzichte und meine „Vorträge“ lieber manuell verbreite.

Das Blog im Fediverse

Dieses Blog ist seit einigen Wochen Teil des Fediverse dank des ActivityPub-Plugins von Matthias Pfefferle.

Für alle, die sich angesichts der seltsamen Begriffe verwundert am Kopf kratzen und sich fragen „Was will mir der Autor sagen?“, erst einmal ein paar Worte der Erklärung.

Das Fediverse  ist eine sehr lebendige Verknüpfung von sozialen Netzwerken, die wiederum aus vielen unabhängigen Instanzen bestehen. Es ist der Gegenentwurf zu Twitter, Instagram und Co. Hinter den einzelnen Instanzen, die manchmal nur einen, aber auch Tausende Benutzer haben können, stehen reale Menschen und keine gewinnmaximierende Konzerne. Und die Moderation erfolgt nicht durch eine seltsame KI, sondern ebenfalls durch Menschen. Wobei sich ohnehin alle deutlich freundlicher verhalten, als ich es aus dem kommerziellen Bereich kenne. Ein Grund dafür dürfte sein, dass die Timeline nicht durch Algorithmen auf maximale Aufregung optimiert wird, sondern schlicht zeitlich sortiert ist. Wer technisches Vorwissen hat, kann selbst die passende Software aufsetzen und alle anderen sind jederzeit auf den vielen Instanzen von Mastodon, Friendica, Pixelfed etc. willkommen. Insgesamt eine sehr offene Struktur.

Damit diese verschiedenen sozialen Netzwerke miteinander sprechen wurde das ActivityPub-Protokoll entwickelt und vom W3C normiert.

Und dank des Plugins von Matthias Pfefferle spricht inzwischen auch WordPress ActivityPub. Auf diese Weise nimmt mein Blog wie ein normaler User am Fediverse teil: andere Menschen können es abonnieren, in ihrem sozialen Netzwerk auf meine Posts antworten und diese Antworten erscheinen wiederum bei mir im Blog als Kommentar. Ziemlich cool.

Noch eine technische Notiz für alle WordPress-User, die es selbst mal ausprobieren wollen: SEO-Plugins wie Yoast besser ausschalten, denn sie greifen recht hässlich in die Linkstruktur ein und verhindern so die Teilnahme am Fediverse.

Über eine Sache grübelte ich überraschend lange nach. Das Plugin bietet verschiedene Möglichkeiten einen Post zu teilen: vom knappen Link bis zum Volltext. Was passt am Besten zu den doch sehr unterschiedlichen Netzwerken, die ja zum Teil eher aus der Microbloggingecke kommen? Ein nackter Link ist mir zu nichtssagend, aber komplette Posts sind wiederum zu lang. Und da ich oft Fotos dazwischen habe fällt das Ergebnis auf den verschiedenen Plattformen manchmal überraschend aus. Letztlich habe ich die Form Teasertext und Link gewählt. Ich glaube, dass das am Besten funktioniert .