knuspermagier.de
Der privateste Blog von Philipp.

Huginn

Manchmal bin ich ja sehr froh, dass ich programmieren kann. Immer, wenn es irgendwelche nervigen Probleme gibt, die man automatisieren kann, zum Beispiel.

Wenn der Lieblingsarzt doctolib benutzt, kann man wunderbar einfach einen REST-API-Endpunkt regelmäßig abfragen, um herauszufinden, ob ein Termin frei geworden ist. Man muss gar nicht jeden Tag drei mal auf die Webseite gucken. Auch die regelmäßige Suche auf dem Lieblings-Online-Flohmarkt lässt sich ganz gut automatisieren. Oder das automatische Herunterladen und Archivieren aller Youtube-Videos seines Lieblingskünstlers!

Naja, bisher lief das dann meistens so: Ich überlege, auf welcher VM ich die Dinger eigentlich abgelegt habe, suche mir eins der Skripte raus, die für meinen neuen Anwendungsfall passen, kopiere es und ändere ein paar Dinge.

Wie man sehen kann, hat diese Herangehensweise natürlich ein paar Nachteile, auch wenn sie seit 10 Jahren gut funktioniert. Die Skripte sind nicht versioniert, wenn ich drei Termin-Überwacher brauche, habe ich halt doctolib1.php, doctolib2.php, doctolib3.php herumliegen, alles ist kopiert und naja, es ist halt ein bisschen chaotisch.

Wäre das nun ein choose your own adventure-Blogpost, gäbe es nun die Auswahlmöglichkeiten “Who cares? Es funktioniert doch.” und “Ja, aber wie wäre es, jetzt einfach die zehnfache Zeit im Voraus zu investieren, und das alles cool und konfigurierbar zu machen, damit ich in Zukunft nur noch einen Button drücken muss, statt ein PHP-Skript zu kopieren”.


Da der erste Fall zum sofortigen Ende des Posts führen würde, kümmern wir uns also lieber um das zweite Szenario, in dem ich mir ein paar Tools angucke, um sowas umzusetzen.

Mein erster Gedanke war natürlich, ich bau sowas ungefähr selber. Also zumindest mal ein Laravel aufsetzen, die Skripte reinkopieren, ein paar ähnliche Sachen raus-abstrahieren und eine Konfigurationsschnittstelle bauen, oder so.

Aber es wäre ja Quatsch, etwas zu bauen, da es schon gibt, dachte ich mir, das mach ich ja nie, daher schaute ich mir nochmal Huginn an.

Huginn is a system for building agents that perform automated tasks for you online. They can read the web, watch for events, and take actions on your behalf. Huginn’s Agents create and consume events, propagating them along a directed graph. Think of it as a hackable version of IFTTT or Zapier on your own server. You always know who has your data. You do.

Klingt ja eigentlich ganz gut. Die Vorstellung, dass kleine Raben mit Headsets für mich durchs Internet fliegen und Aufgaben erledigen, gefällt mir gut.

20140610_050542_img_2511.jpg
Wow, Photos.app hat tatsächlich etwas gefunden, als ich nach Raven suchte. Tokio, 2014.

Da ich modern bin, startete ich also mal eben das Docker Image, klickte mich ein bisschen durchs Interface und fühlte mich erstmal komplett erschlagen. Phew, das sind ganz schön viele Funktionen!

Ich las mich also etwas durch Tutorials und guckte den ein oder anderen Screencast, stellte aber fest, dass die Sache doch viel zu fett ist für meine kleinen Scripte. Klar, mit Huginn Agents könnte ich so viel Kram machen, und ein self-hosted IFTTT zu haben, wäre sicher nice, aber… ich weiß schon immer nicht, was ich mir da überhaupt automatisieren soll, was ich nicht schneller mit drei Zeilen Code erledigt habe.

Naja, long story short, ich hab den Docker Container wieder beendet und mich damit abgefunden, dass ich meine drei oder vier Skripte weiterhin so lassen werde, wie sie sind. Sie funktionieren wunderbar, es tut wirklich niemandem weh, dass sie nicht in ein hochkomplexes System von irgendwelchen Automatisierungen eingebunden sind und vor allem dauert es nur wenige Minuten, ein neues zu schreiben. Bye bye, liebe Headset-Raben.

Habt ihr sowas im Einsatz? Ich las noch von Node-Red, und ein paar anderen Sachen, aber insgesamt finde ich alles, wo man so Abläufe in einem Interface zusammenklickt, irgendwie wesentlich anstrengender als Code schreiben.

Kommentare, Feedback und andere Anmerkungen?
Schreib mir eine E-Mail 🤓