Arduino IoT Cloud – IoT-Clouddienst ohne MQTT

IoT-Clouddienste exponieren normalerweise ein MQTT-basiertes Interface. Arduino.cc setzt bei der IoT Cloud auf ein variablenbasiertes Backend, das Nutzern das Hantieren mit Nachrichten weitgehend erspart.
von Tam HANNA

Worum geht es hier

Puristen mögen dieser Situation unzufrieden gegenüberstehen: benötigt man eine Cloudlösung, um Sensor- und Aktordaten zu verarbeiten und zu visualisieren, so greift man zu einem Drittanbieter. Arduino.cc bietet mit der Arduino Cloud einen eigenen Dienst an, der insbesondere für “niederschwellige” Aufgaben des IoT optimiert ist.

Wie funktioniert es am Arduino?

Physikalische Endstellen hören in der Arduino IoT Cloud auf den Namen Thing. Wenn Sie sich unter https://create.arduino.cc/iot/things erstmals einloggen, so fordert Sie der (benutzerfreundlich gestaltete) Dienst zum Anlegen eines solchen an. Im Rahmen der Einrichtung benötigen Sie den Arduino Agent – ein auch unter Linux verfügbares Hilfsprogramm, das die Kommunikation zwischen Workstation, Cloud und angeschlossener Hardware ermöglicht.

Baustein der Kommunikation zwischen Endgerät und Clouddienst sind als Variable bezeichnete Speicherfelder. Die zweite Abbildung zeigt die “grundlegenden” Datentypen, zusätzlich gibt es einige dimensionsbehaftete Werte.

Je nach Konfiguration nehmen Variablen Änderungen entweder am Client, am Server oder auf beiden Seiten auf. Die Arduino Cloud kümmert sich dann selbsttätig um die Synchronisation der Daten.

Arduino-Code im Fokus

Arduino.cc nutzen die IoT Cloud als Weg, um Entwickler zur Nutzung des hauseigenen Cloud-Codeeditors zu animieren. Die “eigentliche Intelligenz” des Clouddiensts liegt im generierten Projekt in der Datei thingProperties.h, die nach folgendem Schema eine Initialisierungsfunktion und eine lokale Variable bereitstellt:

1
int tamsVariable1;
2
void initProperties(){
3
  ArduinoCloud.setThingId(THING_ID);
4
  ArduinoCloud.addProperty(tamsVariable1, READWRITE, ON_CHANGE, onVariable1Change);
5
}

Das vorliegende Beispiel ist für einen RP2040 kompiliert, der per WLAN Verbindung zum Internet aufnimmt. Der Verbindungsaufbau erfolgt dabei in setup(), wo wir auch die Menge der Debug-Statusausgaben beeinflussen können:

1
void setup() {
2
  pinMode(LED_BUILTIN, OUTPUT);
3
  Serial.begin(9600);
4
  delay(1500); 
5
  initProperties();
6
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
7
  setDebugMessageLevel(2);
8
  ArduinoCloud.printDebugInfo();
9
}

Die Zuweisung von Rechenleistung an die Cloudbibliothek ist Aufgabe des Entwicklers:

1
void loop() {
2
  ArduinoCloud.update();
3
}

Änderungen an lokalen Variablen müssen Sie der Bibliothek übrigens nicht anzeigen. Jeder Durchlauf von loop() führt eine Überprüfung der Zustände durch, und meldet Änderungen automatisch beim Server.
Zu guter Letzt gibt es onChange-Methoden, die den Sketch über von der Cloud ausgehende Änderungen am Systemzustand informieren:
[c]
void onVariable1Change() {
Serial.print(“onVariable1Change”);
digitalWrite(LED_BUILTIN, variable1);
}
[c]

Was kostet es?

Arduino.cc möchte mit der IoT Cloud auf den Zug des “Recurring Revenue” aufspringen. Neben einer auf zwei Geräte beschränkten Basisversion gibt es unter https://store.arduino.cc/digital/create#plans drei verschiedene Preisstufen, die in der Abbildung gegenübergestellt sind.

Die Verwendung on ESP32-Hardware ist übrigens auch im kostenlosen Plan erlaubt.

Lohnt es sich?

Außer Frage steht, dass die Erzeugung eines attraktiv aussehenden Dashboards mit der Arduino Cloud schnell und unbürokratisch erledigbar ist – in einem Folgeartikel stellen wir die diesbezüglichen Funktionen vor.
Andererseits ist die Skalierung fraglich: das größte Paket mit “nur” 100 Endstellen ist zudem relativ teuer. Für den kommerziellen Gebrauch ist das Produkt deshalb eher weniger geeignet – insbesondere deshalb, weil sich MQTT am Ende doch vergleichsweise schnell erlernen lässt und Entwicklern in der beruflichen Laufbahn doch immer wieder begegnet.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More