TigerJython | xx für Gymnasien |
Deutsch English |
Beim Cloudcomputing werden Rechenleistungen auf einen externen Server ausgelagert, auf den über das Internet zugegriffen wird.Im Zusammenhang mit IoT ist insbesondere die Speicherung von Sensordaten in der Cloud interessant, da diese Daten danach über das Internet von überall abrufbar sind. |
|
Um die Dienste zu verwenden, muss man bei ThingSpeak (www.thingspeak.com) ein persönliches Konto erstellen. Eine kurze Anleitung dazu findet man hier: ThingSpeak Konto erstellen.
Beispiel 1: Messwerte des Distanzsensors in der Cloud speichern
Um die Distanz-Messwerte in der Cloud zu speichern, sendet der mbRobot als HTTP-Client einen HTTP-Request in einem bestimmten Format an den Cloud-Server. Im folgenden Programm wird alle 15 Sekunden ein neuer Wert erzeugt (bei einem kostenlosen Konto kann man nicht häufiger als alle 15 Sekunden, bei einem bezahlten Konto jede Sekunde). Den benötigten API-Key erhält man bei der Erstellung des ThingSpeak Channels. |
# ThingSpeakDist.py from microbit import * from linkup import * from mbrobot import * key = "456FPOXESR6L8WYX" print("Sending AP connection command") connectAP("mySSID", "myPassword") while True: dist = getDistance() print("Sending new distance:", dist) url = "http://api.thingspeak.com/update?api_key=" + key + "&field1=" + str(dist) httpGet(url) delay(15000) |
|
Nach einiger Zeit erhält man auf der ThingSpeak-Webseite folgende Grafik:
Der Cloudserver stellt Tools zur Verfügung, mit welchen man die Daten auf einer beliebigen Webseite in Tabellenform oder als Grafik abrufen kann.
Erklärungen zum Programmcode:
key = "7893POXESR6L8WUX": Schüssel (write key) des ThingSpeak-Channels | |
httpGet(url): Sendet den aktuellen Sensorwert mit einem GET-Request |
Beispiel 2: Messwerte des Beschleunigungssensors in der Cloud speichern
Mit dem Beschleunigungssensor des micro:bits wird die x-Komponente der Beschleunigung gemessen. Steht der mbRobot auf einer waagrechten Unterlage ist der Messwert 0, bei einer Seitwärtsneigung nach rechts sind die Werte positiv, kippt man ihn nach links sind die Werte negativ. Um die Messwerte abzuspeichern, sendet der mbRobot als HTTP-Client alle 15 Sekunden einen HTTP-Request an den Cloud-Server, wo der Messwert gespeichert wird. |
# ThingSpeakAcc.py from microbit import * from linkup import * from mbrobot import * key = "7567FPOXESR6L8WXY" print("Sending AP connection command") connectAP("mySSID", "myPassword") while True: acc = accelerometer.get_x() print("Sending acc:", acc) url = "http://api.thingspeak.com/update?api_key=" + key + "&field1=" + str(acc) response = httpGet(url) print("Response:", response) delay(15000) |
|
Nach einiger Zeit erhält man auf der ThingSpeak-Webseite folgende Grafik:
Beispiel 3: Daten mit einem Programm aus der Cloud holen
Mit einem GET-Request kann man die auf ThinkSpeak gespeicherten Daten abrufen. Dazu benötigt man vom Channel den read key und die channel ID, die man nach dem Einloggen in sein Konto unter dem Menu-Punkt API Keys entnehmen kann. Das Format der URL ist das Folgende: http://api.thingspeak.com/channels/channelID/feeds.json?api_key=readKey&results=100 wo channelID und readKey durch die aktuellen Werte ersetzt werden müssen. Der Wert von results entspricht der maximalen Anzahl zurückgegebener Werte (es können maximal 8000 Werte gespeichert werden). Der Rückgabewert ist einJSON-formatierter String, der die gesamten Informationen des Channels enthält. Tippt man diese URL in einen Browser ein, so werden die Daten angezeigt (sowohl im Raw-Format wie JSON-formattiert). |
# ThingSpeakFeeds.py import urllib2 from gpanel import * makeGPanel(-2, 22, -600, 600) drawGrid(0, 20, -500, 500) x = 0 readKey = "LGHJ1UDKXABYCIJ" channelID = "4924629" url = "http://api.thingspeak.com/channels/"+channelID+"/feeds.json?api_key="+readKey+"&results=100" data = urllib2.urlopen(url).read() dataDict = eval(data) print dataDict feeds = dataDict['feeds'] for feed in feeds: a = feed['field1'] y = int(a) if x == 0: pos(x, y) else: draw(x, y) x += 1 |
Mit einem HTTP-DELETE-Request kann man programmgesteuert alle Daten des Channels löschen. Dazu muss man den User Key kennen, den man unter Account | My Profile des ThingSpeak-Kontos findet.
# ThingSpeekDel.py from linkup import * channelId = "123456" userKey = "A4YKXGJEIC8J1L48" connectAP("myssid", "mypassword") url = "https://api.thingspeak.com/channels/" + channelId + "/feeds.json?api_key=" + userKey httpDelete(url) |