Nicht nur das Vergessen der Zeiterfassung, sondern auch das Beenden selbiger kann ein Problem sein. Zumindest gilt dies für meine Toggl-Timery-Kombo. Fahre ich am Ende eines anstrengenden Arbeitstags den Mac einfach herunter, tickt die Uhr für ein laufendes Projekt weiter, wenn ich sie zuvor nicht angehalten habe. Dies führt zu Ungenauigkeiten in der Zeiterfassung, weil ich den entsprechenden Eintrag aus dem Gedächtnis oder anderer Anhaltspunkte manuell korrigieren muss.
Dies weckte bei mir schnell den Wunsch nach einer weiteren Automatisierung. Diese ist ein wenig ungewöhnlicher und auch schwieriger einzurichten als die meine bisherigen. Sie funktioniert aber so gut, dass ich mich trotzdem entschlossen habe, sie hier zu veröffentlichen. Die Systemvoraussetzungen sind höher als sonst, wir brauchen die Möglichkeit ein PHP-Skript laufen zu lassen und wir benötigen ein Smart-Home-System, welches in der Lage ist, dieses Skript über seine URL aufzurufen. Es muss sich dabei nicht um einen öffentlichen Webserver handeln, bei mir macht dies der Home-Server, auch ein NAS-System ist häufig geeignet. Als Smart-Home-System verwende ich Home Assistant und kann daher nur exemplarisch für diese Lösung zeigen, wie ich vorgegangen bin. Das erklärt jedenfalls, warum dieser Artikel zusätzlich in der Smart-Home-Kategorie steht.
Was hat Zeiterfassung mit Smart-Home zu tun?
Aber warum überhaupt die Kopplung ans Smart-Home für diese Automatisierung? Mein Smart-Home weiß gegenüber allen Alternativen am besten
- wann ich mein Zuhause verlasse (dieses ist eine sogenannte Zone in Home Assistant, mein iPhone mit der Home-Assistant-App fungiert als Tracker, das Verlassen einer Zone ist ein möglicher Auslöser für eine Automatisierung)
- wann ich mein Büro verlasse (dieses ist ebenfalls eine Zone in Home Assistant)
- wann ich schlafen gehe (Umschaltung in den Nachtmodus, an diesen Vorgang sind sowieso schon eine ganze Reihe von Automatisierungen geknüpft)
In all diesen Fällen dürfen keine Timer mehr laufen, weil ich keine Projekte habe, die über eine solche Grenze hinweg laufen. OK, fangen wir mal "hinten" an mit dem PHP-Skript. PHP übrigens nur deswegen, weil ich beruflich viel mit dieser Sprache zu tun habe und daher schnell zu brauchbaren Lösungen komme. Wenn ihr in einer anderen Sprache wie z.B. Python fit seit, könnt ihr es vermutlich leicht umschreiben oder anpassen. Das Skript prüft über die Programmierschnittstelle von Toggl, ob ein Timer läuft. Ist dies der Fall, beendet es diesen. Für den Zugriff auf Toggl benötigt das Skript euren API-Token. Dazu habe ich schon etwas in diesem Artikel geschrieben. Hier kommt das Skript, bei mir liegt es wie gesagt auf meinem Home-Server und ist über dessen IP-Adresse abrufbar: