openHAB und Twitter

Diesen Beitrag schrieb ich 7 Jahre und 1 Monat zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

In einem früheren Artikel hatte ich vorgestellt, wie ich openHAB und Prowl miteinander verheiratet habe; inzwischen weiche ich jedoch mehr und mehr auf Twitter aus, und heute möchte ich euch zeigen, wie ich das mache.

Die Einrichtung

App Settings for openHAB Für mein iDomicile habe ich einen Twitter-Account gleichen Namens angelegt (in erster Instanz hatte er einen andern Namen, der jedoch für zu viel Verwirrung sorgte). Über apps.twitter.com muss eine Applikation erstellt werden – hinderlich fand ich hier, dass Twitter einen inzwischen dazu zwingt, eine Rufnummer zu hinterlegen, wenn man dieses Feature nutzen möchte. Temporär habe ich dem Account also meine Mobilfunknummer unterschieben müssen, nachdem die App eingerichtet war hab ich dem Account die Nummer wieder entzogen – die App funktioniert weiterhin ohne Probleme. Über den Reiter Keys and Access Tokens lassen sich nun Consumer Key und Consumer Secret abrufen – das sind die Angaben, die im nächsten Schritt in der openhab.cfg hinterlegt werden müssen.

################ Twitter Action configuration ################
## Twitter user is iDomicile
twitter:key=twitterapp_consumer_key
twitter:secret=twitterapp_consumer_secret
twitter:enabled=true
[...]

Natürlich muss auch das Action-File org.openhab.action.twitter-$VERSION.jar (die Dokumentation dazu findet sich hier) nach addons/ geschoben werden; sobald es am Platz liegt und die Konfiguration vollständig ist, kannst du in der Konsole erkennen, dass es die Arbeit aufnimmt. Allerdings fehlt noch ein letzter Schritt, um die Authentifizierung abzuschließen – folge hierzu den Anweisungen, öffne den genannten Link und erstelle die Datei twitter.pin mit dem Inhalt pin=DEINEPIN.

########################################################################################
# Twitter-Integration: U S E R   I N T E R A C T I O N   R E Q U I R E D !!
# 1. Open URL 'http://api.twitter.com/oauth/authorize?oauth_token=specialtokenjustforyou'
# 2. Grant openHAB access to your Twitter account
# 3. Create an empty file 'twitter.pin' in your openHAB install path
# 4. Add the line 'pin=' to the twitter.pin file
# 5. openHAB will automatically detect the file and complete the authentication process
# NOTE: You will only have 5 mins before openHAB gives up waiting for the pin!!!
########################################################################################

Läuft alles korrekt, wird im openHAB-etc/ eine Datei twitter.token angelegt (die dann auch dort bleiben muss), der Dienst meldet, dass er bereit ist – und twitter.pin kann nun gelöscht werden.

TwitterAction has been successfully authenticated > awaiting your Tweets!

Die Nutzung

Bei der Nutzung von Twitter innerhalb von openHAB müssen einige Dinge berücksichtigt werden – so unterliegt die Nutzung beispielsweise den bei Twitter aktuell geltenden API Rate Limits und insbesondere auch der Beschränkung auf 140 Zeichen; desweiteren unterbindet Twitter das Senden der immerzu gleichen Nachricht – willenloses Spammen ist also auch von deinem Smarthome nicht erwünscht.

Allgemeiner Tweet

openHAB Aussentemperatur Zu Testzwecken darf mein iDomicile derzeit jede Stunde die aktuelle Außentemperatur raushauen; er tut das unter Angabe der Uhrzeit, das minimiert die Wahrscheinlichkeit identischer Tweets. Okay, bisweilen übertreibt es es ein wenig mit seinen Angaben – daran werde ich dann wohl noch etwas feilen müssen ;-) Die rules-Datei findest du auch auf GitHub.

rule "Sende einen regelmäßigen Tweet"
when
  Time cron "0 23 * * * ?"
then
  var Number Stunde = now.getHourOfDay
  var Number Minute = now.getMinuteOfHour
  sendTweet("Die Außentemperatur beträgt " +Wetter_Temperatur.state +"°C um " +Stunde +" Uhr und " +Minute +" Minuten.")
end

Mention

openHAB Waschkeller Die allgemeinen Tweets können im Rauschen natürlich untergehen; ist es mir wichtig, von einer Nachricht auch wirklich Notiz zu nehmen, so lasse ich openHAB eine Mention an mich schreiben – zum Beispiel, wenn die Wäsche fertig ist.

sendTweet("@sys_adm_ama Waschkeller meldet um " +Stunde +" Uhr und " +Minute +" Minuten: die Wäsche ist fertig!")

Direct Message (DM)

Manche Dinge sollen aber vielleicht auch nicht für alle lesbar sein – vielleicht, wenn du das Haus verlässt und vergessen hast, ein Fenster oder eine Tür ordnungsgemäß zu schließen. Beachte jedoch, dass du auch hier den Maßgaben von Twitter unterliegst: für Direktnachrichten müssen du und dein Smarthome-Account einander entweder folgen, oder du musst in den Sicherheitseinstellungen deines Twitter-Accounts einen Haken bei „Erhalte Direktnachrichten von jedem.“ setzen.

rule "Eine Direktnachricht zum Testen"
when
  Item TestSwitchItem changed to ON
then
  sendDirectMessage("sys_adm_ama", "A host is a host from coast to coast...")
end