NEWS
Autom. Zeiterfassung mit TogglTrack und tr-064 (Home Office)
-
Hi zusammen,
das ist mein erstes Tutorial aber ich finde diese Automatisierung ist gerade in Home Office Zeiten sehr nützlich.
Es geht darum, dass meine Arbeitszeiten automatisiert in einem kostenlosen Tool namens TogglTrack (https://track.toggl.com/) eingetragen werden.
Dabei arbeite ich mit dem Adapter tr-064 um zu erkennen, ob mein geschäftlicher Laptop mit dem Heimnetz verbunden ist oder nicht. TogglTrack bietet eine kostenlose API (https://github.com/toggl/toggl_api_docs/blob/master/toggl_api.md), welche sich sehr einfach mit ioBroker nutzen lässt.Vorbedingungen:
- tr-064 Adapter installiert & konfiguriert
- TogglTrack Account --> https://toggl.com/track/ (Web- und App vorhanden)
Anleitung:
1. TogglTrack API Token zur Authentifizierung herausfinden:
Loggt euch in TogglTrack ein und klickt unten links auf euren Account und dann auf "Profile Settings". Anschließend scrollt ihr bis nach unten und dort findet ihr den API Token. Klickt auf das Feld "-- Click to reveal --" und kopiert ihn euch in ein Notepad o.ä.2. Benötigte API Requests (siehe auch https://github.com/toggl/toggl_api_docs/blob/master/chapters/time_entries.md)
2.1 Mit diesem Befehl prüfst du, ob bereits "eingestempelt" wurde. Den Platzhalter <API_TOKEN> bitte durch deinen zuvor notierten Token ersetzen.
curl -v -u <API_TOKEN>:api_token \ -X GET https://api.track.toggl.com/api/v8/time_entries/current
2.2 Mit diesem Befehlt startest du einen neuen Zeit-Eintrag bzw. stempelst ein. Den Platzhalter <API_TOKEN> bitte durch deinen zuvor notierten Token ersetzen. Die <PROJECT_ID> bitte durch das gewünschte Projekt aus TogglTrack ersetzen. Die <PROJECT_ID> findest du ganz einfach in der URL, wenn du ein Projekt in der Web-Version von TogglTrack ausgewählt hast.
In der URL sieht es wie folgt aus:
https://track.toggl.com/<USER_ID>/projects/<PROJECT_ID>/team
Als Description kannst du eingeben, was du möchtest. Alternativ kannst du die <PROJECT_ID> auch per API Befehl herausfinden (siehe offizielle TogglTrackAPI).
curl -v -u <API_TOKEN>:api_token \ -H "Content-Type: application/json" \ -d '{"time_entry":{"description":"Arbeitszeit","pid":<PROJECT_ID>,"created_with":"ioBroker"}}' \ -X POST https://api.track.toggl.com/api/v8/time_entries/start
2.3 Mit diesem Befehl stoppst du den zuvor gestarteten Zeit-Eintrag bzw. stempelst aus. Den Platzhalter <API_TOKEN> bitte durch deinen zuvor notierten Token ersetzen. Die <TIME_ID> erhältst du später über das Blockly Skript aus einer Variable.
curl -v -u <API_TOKEN>:api_token \ -H "Content-Type: application/json" \ -X PUT https://api.track.toggl.com/api/v8/time_entries/<TIME_ID>/stop
3. Blockly Script
3.1. Wir setzen einen Trigger auf die Änderung des Datenpunkts "active" des Geschäfts-Laptops mittels tr-064 (Anleitung zur tr-064 Konfiguration findet ihr beispielsweise hier --> https://youtu.be/Eq-mGu_aTt8).
3.2. Falls eine Änderung erkannt wird und der Geschäfts-Laptop im Heimnetz aktiv ist (wahr), dann führe den API-Request "2.1" aus. Falls es noch keinen gestarteten Zeit-Eintrag gibt, dann führe den API-Request "2.2" aus und Stempel ein.
3.3 Falls eine Änderung erkannt wird und der Geschäftslaptop im Heimnetz inaktiv ist (falsch), dann führe den API-Request "2.1" aus. Falls es bereits einen gestarteten Zeit-Eintrag gibt, dann hole dir über die Variable "result" (muss exakt mit diesem Namen angelegt werden) die <TIME_ID> und speichere sie in der Variable "id". Baue dir anschließend mittels "erstelle Text aus" den API-Request "2.3" gemeinsam mit der Variable "id" zusammen und führe ihn aus. Du stempelst nun aus.
4. Zusammenfassung:
Das Skript erfasst nun automatisch in TogglTrack die Zeit, sobald sich der Rechner mit dem Heimnetz verbindet. Wenn der Rechner heruntergefahren wird, dann dauert es bei mir genau 10 Minuten bis erkannt wird, dass der Rechner inaktiv ist und die Zeiterfassung gestoppt wird. Dies sollte bei der späteren Zeiterfassung im Tool des Arbeitgebers berücksichtigt werden. Da ich meinen Rechner per Ethernet (LAN) im Netzwerk eingebunden habe, kann die Verzögerung auch daran liegen. Bei WIFI-Verbindungen wird die Trennung ggf. schneller erkannt.
Das Skript kann sicherlich noch für andere Zwecke verwendet werden. Tipps & Anregungen gerne hinzufügen.