Google stoppt Weather API

Yahoo Weather APIDie Google Weather API war ein von Google undokumentierter Dienst, der von vielen Anwendungen und Websites genutzt wurde. Wie viele Anwender berichten, ist der Dienst seit kurzem nicht mehr in Betrieb.

Da ich den Wetterdienst im der 2. Auflage in den Kapiteln 8.4.2 (Wetterdaten von Google Weather abfragen) und 8.9 (Projekt Wetterstation) verwendet habe, muss nun ein anderer Dienst verwendet werden.

Als guter Ersatz empfiehlt sich hier der Wetterfeed von Yahoo.

Wie der Google Dienst liefert auch die  Wetter-API von Yahoo die Wetterdaten als XML die man mit geeigneten Programmen und Funktionen einlesen kann.

Die Wetter-Daten werden in der folgen Form aufgerufen:

http://weather.yahooapis.com/forecastrss?w=StandortID

Die StandortID ist dabei eine einheitliche Standort-ID die über eine Abfrage ermittelt werden kann. Für Zürich wird die ID so abgefragt:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22Schweiz%20Z%C3%BCrich%22&format=xml

Im Feld 784794 kann dann die StandortID ausgelesene werden.
Für Zürich also 784794.

Die Wetterdaten für einen gewünschten Standort können anschliessend weiterverarbeitet werden, für PHP steht hier eine gut dokumentierte Funktion SimplePie zur Verfügung.

Update 15.09.12:
Alle Beispiele aus dem Buch als ZIP im Downloadbereich verfügbar.

Twitter API und OAuth

Per Ende August hat Twitter seine bisherige Zugriffsmethode Basic Authentication gestoppt. Anwendungen, welche Tweets via API lesen oder schreiben möchten, müssen die Methode OAuth verwenden.

Für Arduino-Anwendungen heisst dass konkret, dass die verwendete Bibliothek überprüft und aktualisiert werden muss. Viele Arduino-Projekte verwenden die Twitter-Library. Diese muss, falls noch nicht geschehen, im Projekt aktualisiert werden. Die aktuelle Version ist 1.1.0.

Neben dem Aktualisieren der Twitter-Bibliothek muss ein zusätzlicher Token angefordert werden. Der Token wird anschliessend im Sketch, statt den bisherigen Zugangsdaten, eingefügt.

Im Listing 8.2, Zeile 11, im Buch sieht das dann wie folgt aus:

Bisher:

Twitter twitter("MeineUserID:MeinPasswort");

Neu:

Twitter twitter("MeinToken");

Mit diesem Verfahren wird die Sicherheit erhöht, da nun keine Twitter-Zugangsdaten in Drittapplikationen hinterlegt und als Plaintext über das Internet verschickt werden müssen.

Sensordaten visualisieren

Das Einlesen und Verarbeiten von analogen Sensordaten ist mit dem Arduino Board relativ einfach zu realisieren. Wie man die eingelesen Sensordaten nun weiterverarbeiten und auf dem Arduino im Webserverbetrieb visualiseren kann, zeigt die Visualisierungslösung bei freeduino.de.  Dabei werden die Daten mittels Google Chart API auf der internen Website des Arduino dargestellt.

Der Aufruf der kostenlosen API erfolgt mittels Parameterübergabe. Die Graphik wird dann als Bild in die HTML-Seite eingebaut. Die Erstellung der Graphik erfolgt dabei auf dem Server von Google.

Die Verwendung der Google Chart API ist sehr einfach. Eine IMG-Anweisung mit den nötigen Parametern genügt um die gewünschte Graphik darzustellen. Für die Anzeige eines aktuellen Analogwertes verwendet man idealerweise eine Art Tachometeranzeige, Google-O-Meter genannt.

Als HTML-Anweisung sieht dann so aus:

<img src='http://chart.apis.google.com/chart?cht=gom&
chs=200x100&chxt=x,y&chd=t:60&
chco=FF0000,FF8040,FFFF00,00FF00,00FFFF,0000FF,800080&
chxl=0:|60'>

Die IMG-Anweisung wird nun im Webserver-Sketch integriert, wobei die Parameter chd und chxl die Werte des eingelesenen Analogwertes sind.

Um diese Lösung zu realisieren wird neben dem Arduino ein Ethernet-Modul, beispielsweise ein Ethernet Shield, und eine funktionierende Verbindung zum Internet vorausgesetzt.

Werden auf der HTML-Seite nun mehrere Graphiken eingeblendet, hat man sein eigenes Dashboard oder Armaturenbrett im Intranet.

Für komplexere Lösungen empfiehlt sich die Daten via URL-Aufruf an eine externe Website zu senden, auf welcher dann alle Möglichkeiten der Visualisierung und Weiterverarbeitung via Script (beispielsweise PHP, Javascript und AJAX-Funktionen) zur Verfügung stehen.

Das Datensammeln und Weiterverarbeiten im Internet wird im Arduino-Buch in Kapitel 8.7 beschrieben.