News Arduino IoT Cloud – IoT-Clouddienst ohne MQTT


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Angehängte Dateien:

Lesenswert?

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.


:
von Content B. (Firma: Da) (contentblocker_da)


Lesenswert?

Erkläre doch mal bitte welchen Vorteil Cloud in der heutigen Zeit 
überhaupt hat! Ich meine jetzt, wenn man zu Hause ist! Muss ich da 
meinen Lichtschalter mit dem Internet verbinden um das Licht 
einzuschalten? Wieso nicht direkt? Was passiert wenn die Hausfrau beim 
Putzen versehendlich die Fritzbox wässert?

Nachtrag:
Was ist aber wenn ich bereits IoT mache? Blockieren dann neue 
Arduino-Versionen meine Entwicklungen?

: Bearbeitet durch User
Beitrag #6742385 wurde vom Autor gelöscht.
von Kybernetiker X. (kybernetiker)


Lesenswert?

Content B. schrieb:
> Erkläre doch mal bitte welchen Vorteil Cloud in der heutigen Zeit
> überhaupt hat! Ich meine jetzt, wenn man zu Hause ist! Muss ich da
> meinen Lichtschalter mit dem Internet verbinden um das Licht
> einzuschalten? Wieso nicht direkt? Was passiert wenn die Hausfrau beim
> Putzen versehendlich die Fritzbox wässert?
>
> Nachtrag:
> Was ist aber wenn ich bereits IoT mache? Blockieren dann neue
> Arduino-Versionen meine Entwicklungen?

Du muss gar nichts für deinen Lichtschalter. IoT bedeutet nicht
Haussteuerung und Haussteuerung find ich sinnlos und ist nur Eigennutz.
Unter IoT verstehe ich viel mehr als nur das. Ich kann jedes einzelne
Gerät updaten lassen.

Kannst du nicht mal weiterdenken?

Zum Beispiel dezentrale reproduzierbare Forschungslaboratorien. Es wird
global an gemeinsamen Projekten gearbeitet, jeder nimmt sein
Arduino-Teil, jeder hat die gleiche Hardware, alle müssen an diesem
Projekt für eine Software-Lösung arbeiten. Zum Beispiel die Entwicklung
eines neuen 3D-Druckers. Programmierer aus aller Welt coden an einer
neuen Software zur Ansteuerung des speziellen 3D-Druckers. Jeder hat 
exakt die selbe Hardware, aber durch ein Software-Update müssten die 
Maschinen-Parameter nachjustiert werden. Die werden von der Cloud 
abgerufen, damit das Verhalten der Maschine bei allen Programmierern und 
Beta-Testern reproduzierbar wird.

Anderes Beispiel: Ich biete Umbaukit für eine Maschine auf Ebay an. Nach 
dem die Maschine umgebaut wurde, muss eine modifizierte Firmware 
aufgespielt werden. Über die Bedienfelder und Menü einer Maschine kann 
ich die Firmware über eine Cloud herunterladen und automatisch flashen 
lassen. Superbequem.

Dieser Beitrag kann nur von angemeldeten Benutzern beantwortet werden. Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail, Yahoo oder Facebook? Keine Anmeldung erforderlich!
Mit Google-Account einloggen | Mit Facebook-Account einloggen
Noch kein Account? Hier anmelden.