Tasker: Piwik Widget

Diejenigen von euch, die das Analysetool Piwik verwenden, bzw. die passende App unter Android benutzen, dürften sicherlich schon länger bemerkt haben, dass die App leider komplett ohne Widgets daher kommt. Das ist besonders ärgerlich, wenn man gerne eine Hand voll Daten immer im Auge behalten möchte.

Gut, jetzt gibt es im Playstore das passende Widget zum downloaden, … welches mir persönlich aber eher weniger gefällt. Die Werbeeinblendungen beim Start stören mich, bzw. das Widget lässt sich optisch nicht anpassen.

geekstat

Aber wofür gibt es Tasker? An dieser Stelle werde ich euch zeigen, wie ihr mit Hilfe von Tasker die Daten von eurer Piwik Installation auslesen und diese entweder als Notification oder mit Hilfe von Minimalistic Text ausgeben könnt.

Dazu erstellen wir zuerst ein Profil, welches festlegt, wie oft die Daten abgerufen werden sollen. Ich habe mich hier für ein stündliches Update entschieden. Theoretisch könnt ihr noch einstellen, in welchem Zeitraum die Daten angefordert werden sollen, beispielsweise zwischen 8:00 Uhr und 20:00 Uhr. Ihr könnt das ganze auch mit der Abfrage einer Variable kombinieren, ob ihr z.B. daheim, oder unterwegs seid. Eurer Kreativität sind an dieser Stelle wieder keine Grenzen gesetzt.

In meinem Fall sieht das ganze einfach so aus:

Profile: Piwik Update (43)
Time: Every 1h
Enter: ~Piwik (42)

Wenn ihr weitere Beispiele benötigt, findet ihr einige im Tutorial zum Nachtmodus. Damit wären wir auch schon mit dem Profil fertig. Einen Exit Task benötigen wir hier nicht.

Kommen wir nun zum eigentlichen Task. In meinem Fall heißt er ~Piwik.

Hier müsst ihr euch zunächst überlegen, welche Informationen ihr abrufen wollt. Dank der Piwik API habt ihr hier reichlich zur Auswahl. Ich möchte an dieser Stelle nur auf die aktuellen Besucherzahlen eingehen, einfach weil es die sind, die mich persönlich interessieren. Einen Überblick über alle API Parameter findet ihr hier. Ganz wichtig ist, dass ihr am Ende immer der Abfrage euren Token hinzufügt &token_auth=YOUR_TOKEN. Diesen findet ihr einfach unter den API Einstellungen eurer Piwik Installation.

Wie schon gesagt, interessieren mich nur die Besucher der letzten 24 Stunden, bzw. 30 Minuten. Diese lassen sich bequem über diese URL abrufen:

//Eure_Piwik_Installation/?module=API&method=Live.getCounters&idSite=2&lastMinutes=1440&format=xml&token_auth=Euer_Token

Eigentlich ist diese Abfrage mit dem Parameter lastMinutes= nur für die letzten Minuten gedacht, lässt sich aber ohne Probleme auch für die letzten 24 Stunden anwenden (24 x 60 = 1440).

Das ganze sollte in etwa dann so aussehen, wenn ihr die URL zum Testen in eurem Browser aufruft:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<result>
<row>
<visits>73</visits>
<actions>107</actions>
<visitors>68</visitors>
<visitsConverted>0</visitsConverted>
</row>
</result>

Für uns wirklich interessant ist in diesem Fall nur die Zahl zwischen <visits></visits>.

Aber wie können wir die Daten nun mit Hilfe von Tasker auslesen? Ganz einfach, mit Hilfe von HTTP Get. Wir beginnen unseren Task also mit einer HTTP Abfrage, diese finden wir unter dem Menüpunkt Net. Dort tragt ihr unter Server:Port die URL zu eurer Piwik Installation und unter Path eure API Parameter ein.

Die Abgerufenen Daten werden von Tasker automatisch in der Variable %HTTPD gespeichert. Ich habe mir angewöhnt, da ich in manchen Tasks viele HTTP Abfragen benutze, die Daten direkt an eine anderen Variable weiterzugeben, z.B. %piwik_24h. Wie weiter oben beschrieben interessiert uns aber nur der Bereich zwischen <visits></visits>. Desshalb splitten wir die Variable einfach einmal nach <visits> und einmal vor </visits>.

Damit wäre die Abfrage der Daten fertig. Wie das ganze dann aussieht, seht ihr hier:

Task: ~Piwik (42)
A1: HTTP Get [ Server:Port://PIWIK_URL Path:?module=API&method=Live.getCounters&idSite=2&lastMinutes=1440&format=xml&token_auth=EUER_AUTH Attributes: Cookies: User Agent: Timeout:10 Mime Type: Output File: Trust Any Certificate:Off ] 
A2: Variable Set [ Name:%piwik_24h To:%HTTPD Do Maths:Off Append:Off ] 
A3: Variable Split [ Name:%piwik_24h Splitter:<visits> Delete Base:Off ] 
A4: Variable Split [ Name:%piwik_24h2 Splitter:</visits> Delete Base:Off ] 
A5: HTTP Get [ Server:Port://PIWIK_URL Path:?module=API&method=Live.getCounters&idSite=2&lastMinutes=30&format=xml&token_auth=EUER_AUTH Attributes: Cookies: User Agent: Timeout:10 Mime Type: Output File: Trust Any Certificate:Off ] 
A6: Variable Set [ Name:%piwik_30m To:%HTTPD Do Maths:Off Append:Off ] 
A7: Variable Split [ Name:%piwik_30m Splitter:<visits> Delete Base:Off ] 
A8: Variable Split [ Name:%piwik_30m2 Splitter:</visits> Delete Base:Off ]
A9: Variable Set [ Name:%piwik_gettime To:%TIME Do Maths:Off Append:Off ] 
A10: Variable Split [ Name:%piwik_gettime Splitter:. Delete Base:Off ] 
A11: Variable Set [ Name:%piwik_time To:%piwik_gettime1:%piwik_gettime2 Do Maths:Off Append:Off ] 

Wie ihr sehen könnt, die Abfrage für die letzten 30 Minuten funktioniert genau so. Zusätzlich speichere ich auch noch die aktuelle Zeit in der Variable %piwik_time, weil ich diese gerne später mit ausgeben möchte.

Jetzt könnten wir eigentlich diese Daten mit Hilfe einer Notification in der Benachrichtigungsleiste ausgeben lassen, … tun wir aber nicht. Ich persönlich habe die Daten lieber direkt auf dem Homescreen im Blick.

Wollen wir uns also schnell ein passendes Widget mit Hilfe von Minimalistic Text erstellen.

Dazu wählt ihr einfach in eurem Task den Menüpunkt Plugin aus. Dort wählt ihr, vorausgesetzt, ihr habt die App bereits installiert,  Minimalisitc Text aus. Jetzt habt ihr die Auswahl zwischen MT Text Style und Minimalisitc Text. Auch hier wählt ihr wieder Minimalisitc Text.

Wenn ihr jetzt auf Configuration klickt, könnt einen Variablenamen und den Variableinhalt angeben. Unter Name tragt ihr den Namen der Variable ein, wie sie von Minimalistic Text genutzt werden soll und unter Inhalt tragt ihr ein, welche Daten ihr von Tasker übergeben wollt. In unserem Fall wäre das z.B. %piwik_24h21.

Fertig sollte das Ganze dann in etwa so aussehen:

A12: Minimalistic Text [ Configuration:min_piwik24 = %piwik_24h21 Package:de.devmil.minimaltext Name:Minimalistic Text Timeout (Seconds):0 ] 
A13: Minimalistic Text [ Configuration:min_piwik30 = %piwik_30m21 Package:de.devmil.minimaltext Name:Minimalistic Text Timeout (Seconds):0 ] 
A14: Minimalistic Text [ Configuration:min_piwikup = %piwik_time Package:de.devmil.minimaltext Name:Minimalistic Text Timeout (Seconds):0 ]

Nachdem ihr mit Minimalistic Text ein neues Widget erstellt habt, findet ihr unter dem Menüpunkt Layout die Möglichkeit etliche Infos hinzuzufügen. Ganz am Ende unter VERSCH. findet ihr dann auch LOCALE/Locale Variable. Hier tragt ihr einfach den Namen ein, den ihr vorher in Piwik unter Variablenamen angegeben habt.

Damit wären wir nun auch schon am Ende angelangt. Wie genau ihr euer Widget gestaltet bleibt euch überlassen.

Bei Fragen stehe ich natürlich wie gewohnt zu eurer Verfügung. Gerne auch per Mail.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein