IoT Dienst Cayenne für den Arduino Microcontroller

In diesem Beitrag möchte ich dir den IoT Dienst Cayenne für den Arduino vorstellen.

Ethernetshield W5100 am Arduino UNO R3 mit Temperatursensor DS18B20
Ethernetshield W5100 am Arduino UNO R3 mit Temperatursensor DS18B20

Registrieren eines neuen Benutzers in Cayenne

Um einen neuen Benutzer in Cayenne zu registrieren musst du

  • deinen Vornamen, Nachnamen, sowie
  • deine E-Mail Adresse, und natürlich
  • ein Passwort

eingeben.

IoT Dienst Cayenne - registrieren eines neuen Benutzers
IoT Dienst Cayenne – registrieren eines neuen Benutzers

Das Passwort bedarf keiner besonderen komplexität und auch vermisst man beim einloggen ein sonst übliches Double-Opt-In.

Einrichten eines Microcontrollers in Cayenne

Nachdem Login wird man über einen Wizard angeleitet um ein Dashboard einzurichten. Dabei wählt man im ersten Schritt einen Microcontroller aus.

Cayenne - Schritt 1 auswählen eines Microcontrollers
Cayenne – Schritt 1 auswählen eines Microcontrollers

Zur Auswahl stehen hier auf der Oberfläche die „üblichen verdächtigen“ Raspberry PI, Arduino & LoRa. Wenn du einen ESP besitzt bzw. verwenden möchtest so findest du diese über „All Devices“.

Cayenne - Auswahl eines ESPs
Cayenne – Auswahl eines ESPs

Arduino UNO mit EthernetShield

Für den Arduino UNO gibt es diverse Ethernet Shields welche man entweder auf diesen Stecken kann oder über Breadboardkabel an diesen anschließen kann.

 

Das Ethernetshield ENC28J60 habe ich bereits im Beitrag Arduino Lektion #114: Mini Ethernetshield ENC28J60 ausgiebig vorgestellt. Hier möchte ich nun zeigen wie du mit Cayenne und dem Ethernetshield WS5100 Daten eines einfachen Temperatursensors vom Typ DS18B20 veröffentlichen kannst.

Zunächst müssen wir eine Bibliothek installieren damit der Microcontroller über MQTT mit dem IoT Dienst Cayenne kommunizieren kann. Dazu navigieren wir über das Hauptmenü „Sketch“ > „Bibliothek einbinden“ > „Bibliotheken verwalten…“ zum Bibliotheksverwalter. 

In dem Bibliotheksverwalter suchen wir zunächst nach „Cayenne MQTT“ (1) und betätigen auf dem gefundenen Eintrag die Schaltfläche „Installieren“ (2) nach der Installation kann dieser Dialog über die Schaltfläche „Schließen“ (3) geschlossen werden.

Arduino IDE - Bibliotheksverwalter - installieren der Bibliothek von Cayenne
Arduino IDE – Bibliotheksverwalter – installieren der Bibliothek von Cayenne

Hinzufügen eines Devices/Widgets im Dashboard von Cayenne

Auf der Webseite findest du zunächst einen Wizard über welchen du deinen ersten Channel erstellen kannst. Einen solchen Channel erstellst du in dem du die Schaltfläche „Add new…“ betätigst und dort den Eintrag „Device/Widget“ auswählst.

Cayenne Dashboard - Add new Device/Widget
Cayenne Dashboard – Add new Device/Widget

Auf der rechten Seite solltest du nun einige Microcontroller sowie Sensoren/Aktoren sehen. Hier wähle ich nun den Eintrag „Temperature“ in der Sektion „Sensors“ aus.

Cayenne Dashboard - auswählen der Sektion für Temperatursensoren
Cayenne Dashboard – auswählen der Sektion für Temperatursensoren

Es werden nun 5 Temperatursensoren aufgelistet für welche Beispielprogramme vorliegen.

IoT Cayenne Dashboard - Temperatursensoren
IoT Cayenne Dashboard – Temperatursensoren

In dieser kleinen Anleitung möchte ich den Temperatursensor DS18B20 verwenden daher wähle ich diesen aus. Auf der rechten Seite kannst du den Channel anpassen aber für den Einstieg in Cayenne lassen wir das einfach mal so stehen.

IoT Cayenne - Einstellungen im Channel
IoT Cayenne – Einstellungen im Channel

Über die Schaltfläche „Step 1: Sketch File“ kannst du den Dialog für den Download des Beispielprogrammes anzeigen und herunterladen.

IoT Cayenne - Sketch File
IoT Cayenne – Sketch File

Dieser Sketch ist sofort lauffähig soweit man den Temperatursensor DS18B20 am digitalen Pin D2 angeschlossen hat.

Quellcode für den DS18B20

×Close
Cayenne Code
Copy and paste the code below to your Arduino IDE and click the  (upload) button.

After uploading the code, return to Cayenne and add your sensor. It will appear in your Arduino dashboard.

/*
Cayenne DS18B20 Example

This sketch shows how to send DS18B20 Sensor data to the Cayenne Dashboard.

The CayenneMQTT Library is required to run this sketch. If you have not already done so you can install it from the Arduino IDE Library Manager.

Steps:
1. Install the OneWire library (http://www.pjrc.com/teensy/td_libs_OneWire.html) from the Arduino Library Manager.
2. Install the DallasTemperature library (http://milesburton.com/Main_Page?title=Dallas_Temperature_Control_Library#Code.2FLibrary) from the Arduino Library Manager.
3. Attach a DS18B20 to a digital pin on your Arduino.
   Schematic:
   [Ground] – [DS18B20] – [4.7k resistor] – [5V]
                   |______________|
                   |
              Digital Pin
4. Set the SENSOR_PIN value below to the pin number you used when connecting the sensor.
5. Set the VIRTUAL_CHANNEL value below to a free virtual channel (or the virtual channel of a DS18B20 Sensor widget you have added) in the Dashboard.
6. Set the Cayenne authentication info to match the authentication info from the Dashboard.
7. Compile and upload this sketch.
8. Once the Arduino connects to the Dashboard it should automatically create a temporary display widget (or update the DS18B20 Sensor widget you have added) with data.
   To make a temporary widget permanent click the plus sign on the widget.
*/

#define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space
#include <OneWire.h>
#include <DallasTemperature.h>
#include <CayenneMQTTEthernet.h>

// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "xyz";
char password[] = "abc";
char clientID[] = "def";

#define SENSOR_PIN 2 // Do not use digital pins 0 or 1 since those conflict with the use of Serial.
#define VIRTUAL_CHANNEL 0815

OneWire oneWire(SENSOR_PIN);
DallasTemperature sensors(&oneWire);

void setup()
{
    Serial.begin(9600);
    Cayenne.begin(username, password, clientID);
    sensors.begin();
}

void loop()
{
    Cayenne.loop();
}

// This function is called at intervals to send sensor data to Cayenne.
CAYENNE_OUT(VIRTUAL_CHANNEL)
{
    // Send the command to get temperatures.
    sensors.requestTemperatures();
    // This command writes the temperature in Celsius to the Virtual Channel.
    Cayenne.celsiusWrite(VIRTUAL_CHANNEL, sensors.getTempCByIndex(0));
    // To send the temperature in Fahrenheit use the corresponding code below.
    //Cayenne.fahrenheitWrite(VIRTUAL_CHANNEL, sensors.getTempFByIndex(0));
}

Anpassen des neuen Widgets im Dashboard

Wenn du diesen Sketch auf den Arduino kopiert / geschrieben und mit dem Internet verbunden hast, musst du die Schaltfläche „Step 2: Add Sensor“ betätigen und man wird zum Dashboard geleitet. Dort solltest du nun deinen Sensor als Widget wiederfinden.

Cayenne Dashboard - Widget für den Temperatursensor DS18B20
Cayenne Dashboard – Widget für den Temperatursensor DS18B20

Es kommt manchmal vor das zwei Widgets erzeugt werden und wenn man das eine wohl überzählige löscht dann beide verschwinden, hier muss man nur die Seite aktualisieren und es sollte das eigentliche Widget wieder erscheinen.

Dieses angezeigte Widget lässt sich über das Zahnrad etwas konfigurieren.

Cayenne - Konfiguration eines Widgets
Cayenne – Konfiguration eines Widgets

Wenn die Nummer im Feld Channel angepasst wird muss diese wiederum im Sketch angepasst werden!

Unter „Widget Name“ können wir den Titel im Widget anpassen.
Aus der Auswahlliste „Choose Widget“ kann man den Style / Typ des Widgets auswählen und so das Design im Dashboard anzupassen.

Cayenne - Widget Konfiguration Style im Dashboard wählen
Cayenne – Widget Konfiguration Style im Dashboard wählen

Zur Auswahl stehen:

 

Sollten wir die Konfiguration soweit abgeschlossen haben können wir auf das kleine Diagramm neben dem Zahnrad klicken und dort die empfangenen Sensorwerte in einem Liniendiagramm ablesen.

Cayenne - Daten des Sensors in einem Liniendiagramm
Cayenne – Daten des Sensors in einem Liniendiagramm

Schalten eines Relais über Cayenne

Ähnlich einfach wie das einrichten eines Temperatursensors kannst du auch ein Relais einrichten und sogar über das Dashboard steuern (EIN/AUS Schalten).

 

Fazit

Der IoT Dienst Cayenne ist eine sehr gute alternative zu ThinkSpeak (Beitrag Iot Service ThingSpeak, einrichten und betreiben). Jedoch hat dieser Dienst einpaar kleine Schwächen, so hatte ich zeitweise keinen Zugriff auf mein Dashboard und konnte diesen Fehler nur mir dem löschen der Browser History lösen.

Besonders gelungen finde ich dass, man zu den Sensoren / Aktoren gleich fertige Sketche bzw. Programme mit Pinbelegung erhält so das man sehr schnell sein eigenes kleines Dashboard mit Sensorwerten erschaffen kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.