TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
cloud1

6. CLOUDCOMPUTING 1

 

 

DU LERNST HIER...

 

wie du Messdaten mit der Oxocard auf einem Cloudserver speicherst, um sie von überall auf der Welt abrufbar zu machen.

 

 

VERWENDUNG DES CLOUDSERVERS

 

Für diese Einführung benötigst du keinen zusätzlichen Sensor, denn du simulierst die Messdaten mit der Funktion getData() als Floatwerte im Bereich 25 +- 10 mit einem sinusartigen Verlauf. Nachher brauchst du nur in dieser Funktion den entsprechenden Aufruf für einer deiner Sensoren "einzuklicken".

Wir verwenden den Cloudserver von ThingSpeak, der von MathWorks (Distributor von MatLab) für kleine Datenvolumen kostenlos zur Verfügung gestellt wird. Du musst aber ein persönliches Konto erstellen. Gehe wie folgt vor:

1.
Wähle auf thingspeak.com die Menüoption Sign Up
2. Fülle das Formular aus



3.

Warte bist du ein Bestätigungsmail erhalten  hast und klicke im Mail auf Verify your email:



 
4. Fülle in der automatisch erscheinenden Dialogbox die Felder User ID und Password aus:

Nun kannst du auf dem Cloudserver sogenannte Channels erzeugen. Es handelt sich dabei um Tabellen, in denen du die Messwerte ablegen wirst.

5. Erzeuge einen Channel und gebe ihm einen Namen (z.B.  "Oxocard"):

6. Wähle einen Titel für die grafische Darstellung (hier "Sensor Data") und definiere die Spaltennamen der Tabelle (hier ein Field 1 mit dem Namen "value"). Dieser wird auch zur y-Achsenbeschriftung verwendet. Klicke Save Channel.

Im Reiter Sharing wähle Share channel view with everyone:

Klicke Reiter API Keys:



7. Kopiere den Write und Read Key mit Cut&Paste in irgendeine Ablage:

Kopiere den Eintrag unter Update a Channel Feed. Mit diesem GET-Request werden Einträge in der Tabelle gemacht:

Um manuell Daten in die Tabelle einzufüllen, kannst du in einem Browser diese URL angeben, wo der Tabellenwert die letzte Zahl ist (das GET gehört nicht zur URL):

https://api.thingspeak.com/update?api_key=Y03F0Y1IPUKP6ARD&field1=25

Damit wird in der Tabelle ein erster Eintrag mit dem Wert 25 gemacht. Der Server antwortet mit der Anzahl der vorhandenen Tabellenwerte.

Um die Tabelle anzuschauen, klicke unter Channels auf den Namen des Channel:

Nachdem du mit dem Browser einige Werte erzeugt hast, siehst du eine grafische Darstellung. Beachte, dass du mit dem kostenlosen Konto nur alle 15 Sekunden einen neuen Wert auf der Cloud speichern kannst.

Um nachzuschauen, mit welcher URL man mit einem Browser direkt diese Tabelle abrufen kann, klickst du auf die Ikone mit dem Rechteck und ein neues Browserfenster geht auf. Merke dir diese URL:

8. Um die Grafik in eine eigene Website einzubauen, klickst du auf die Ikone mit der Sprechblase und kopierst die Angabe.
9. Lösche die Tabellendaten unter dem Reiter Channel Settings mit der Schaltfläche Clear Channel:


 

 

MUSTERBEISPIEL

 

Für diese Einführung benötigst du keinen Sensor, denn du simulierst die Messdaten mit der Funktion getData() als Floatwerte im Bereich 25 +- 10 mit einem sinusartigen Verlauf. Zur Aufzeichnung realer Sensordaten brauchst du nur diese Funktion anzupassen.

Wie du gesehen hast, ist es sehr einfach, Daten auf einem Cloudserver in einer Tabelle zu speichern und sie grafisch darzustellen. Dazu muss die Oxocard (wie ein Browser) als HTTP-Client einen HTTP-Request an der Server senden, was du unter Verwendung des Moduls tcpcom mit sendGetRequest() sehr einfach machen kannst.. Im folgenden Programm wird alle 20 Sekunden ein neuer Wert erzeugt (bei einem kostenlosen Konto kannst du nicht häufiger als alle 15 Sekunden einen neuen Wert speichern).

Programm:

from tcpcom import *
from time import sleep
from math import sin

def getValue():
    return 25 + 10 * sin(0.1 * t)

host = "api.thingspeak.com"
port = 80
key = "Y03F0Y1IPUKP6ARD"
inquiry = "/update?api_key=" + key + "&field1="
t = 0
Wlan.connect("raspilink", "aabbaabbaabb")
client = HTTPClient()
while True:
    temp = getValue()
    t += 1
    print("temp:", temp)
    if (client.connect(host, port)):
        client.sendGetRequest(inquiry + str(temp))
        client.closeConnection()
    sleep(20) 
► In Zwischenablage kopieren

Nach einiger Zeit erhält man folgende Grafik:

 

 

MERKE DIR...

 

Zur Speicherung von Messdaten in einer Cloud benötigst du ein Konto auf einem Cloudserver. Die Daten werden normalerweise mit einem HTTP-GET-Request auf die Cloud kopiert. Der Cloudserver stellt Tools zur Verfügung, damit man die Daten mit irgendeinem Webbrowser in Tabellenform oder als Grafik abrufen kann.

 

 

ZUM SELBST LÖSEN

 

 

1.

Verwende den Lagesensor (Accelerometer) der Oxocard, um ihre Kipplage (in einer Dimension) in der Cloud abzuspeichern.

2a.

Verwende irgendeinen Sensor, z.B. den Temperatursensor von Sensirion, um den Temperaturverlauf während mehreren Stunden aufzuzeichnen.

2b.

Zeichne zusätzlich einen zweiten Messwert auf, z.B. die Luftfeuchtigkeit.