Startseite>Mit Teamviewer IoT eine Indoor-Farm überwachen
Aus Raspberry Pi Geek 06/2018

Mit Teamviewer IoT eine Indoor-Farm überwachen (Seite 2)

Listing 4

 

$ export cafile=/var/lib/teamviewer-iot-agent/certs/TeamviewerAuthority.crt
$ mosquitto_sub -h localhost -p 1883 --cafile $cafile -t /certBack/$hash

In einem Fenster, in dem alle Shell-Variablen definiert sind, starten Sie nun den MQTT-Subscriber (Listing 4, letzte Zeile). In einem zweiten Fenster, ebenfalls mit allen Shell-Variablen, setzen Sie dann den Request zum Erstellen eines Zertifikats ab (Listing 5, Zeile 2). Kurz nachdem Sie den Request abgesendet haben, erscheint im ersten Fenster das Zertifikat. Dieses kopieren Sie und speichern es in einer Datei, die im Beispiel myConnector.crt heißt.

Listing 5

 

$ . tvenv.sh
$ mosquitto_pub -h localhost -p 1883 --cafile $cafile -t /createConnector -f csr.pem
$ openssl x509 -noout -subject -in myConnector.crt -nameopt multiline | grep commonName | sed -r 's/commonName/ /g' | sed -r 's/=/ /g' | xargs | tr -d " \t\n\r"Connector-ID
$ export conID=Connector-ID

Nun parsen Sie aus dem Connector-Zertifikat die ID des Connectors heraus. Diese benötigen Sie später für alle Zugriffe auf die API. Daher legen Sie sie ebenfalls in einer Shell-Variable ab (Listing 5, Zeile 3 bis 7).

Im nächsten Schritt legen Sie den eigentlichen Sensor an. Er darf mehrere Metriken liefern; in unserem Beispiel stellt er alle drei Metriken der Indoor-Farm bereit. Wie gehabt starten Sie zuerst einen Subscriber, um das Ergebnis über MQTT zu empfangen (Listing 6, Zeile 2). Wenn Sie den Subscriber starten, liegt das Ergebnis noch nicht vor; erst mit dem Request stehen die Daten bereit.

Listing 6

 

$ . tvenv.sh
$ mosquitto_sub -h localhost -p 8883 --cert myConnector.crt --key privkey.pem --cafile $cafile -t /v1.0/$conID/sensor/inbox
{
  "name" : "Farm",
  "sensorId" : "Sensor-ID"
}
$ mosquitto_pub -h localhost -p 8883 --cert myConnector.crt --key privkey.pem --cafile $cafile -t /v1.0/$conID/sensor/create -m "{\"name\":\"Farm\"}"
$ export sensorID=Sensor-ID

Danach erstellen Sie den Sensor (ab Zeile 3). Er erhält wieder eine ID, die Sie in einer Shell-Variable speichern. Die ID erscheint im Fenster der Empfangsseite. Sie kopieren sie von dort einfach wieder in eine Variable. Vergessen Sie dabei nicht, alle Export-Kommandos in tvenv.sh anzulegen.

Bei einem anschließenden Blick auf die Weboberfläche von Teamviewer IoT unter dem Menüpunkt Devices fällt Ihnen vermutlich auf, dass ein neuer Sensor dazugekommen ist. Da er bis jetzt über keine Metriken verfügt, lässt er sich noch nicht abfragen. Die notwendigen Metriken erstellen Sie jedoch schnell.

Dazu verbinden Sie sich zunächst, wie bei allen Komponenten, auf den Kanal für den Empfang. Damit bekommen Sie die IDs der Metriken (Listing 7, Zeile 2 bis 18). Nun legen Sie auf dem Farm-Sensor drei neue Metriken an: Bodenfeuchte, Temperatur und Licht (Zeile 19). Aus der API erhalten Sie die drei dazugehörigen IDs, die Sie wie allen anderen Variablen in die Datei tvenv.sh speichern (Zeile 20 bis 22).

Listing 7

 

$ . tvenv.sh
$ mosquitto_sub -h localhost -p 8883 --cert myConnector.crt --key privkey.pem --cafile $cafile -t /v1.0/$conID/sensor/$sensorID/metric/inbox
[
  {
   "matchingId" : "1",
   "metricId" : "Feuchte-ID"
  },
  {
   "matchingId" : "2",
   "metricId" : "Temperatur-ID"
  },
  {
   "matchingId" : "3",
   "metricId" : "Licht-ID"
  }
]
new metrics created
$ mosquitto_pub -h localhost -p 8883 --cert myConnector.crt --key privkey.pem --cafile $cafile -t /v1.0/$conID/sensor/$sensorID/metric -m "{\"metrics\" : [{\"matchingId\" : \"1\", \"valueUnit\": \"NoSI.Dimensionless.PERCENT\", \"name\" : \"Bodenfeuchte\" },{\"matchingId\" : \"2\",\"valueUnit\": \"SI.Temperature.CELSIUS\", \"name\" :\"Temperatur\" },{\"matchingId\" : \"3\", \"valueType\" : \"integer\" , \"valueAnnotation\": \"Licht\", \"name\" : \"Licht\"}]}"
$ export FeuchteID=Feuchte-ID
$ export TempID=Temperatur-ID
$ export LichtID=Licht-ID

In Teamviewer IoT sehen Sie jetzt die neuen Metriken, die Sie mit einem Klick auf Pin to dashboard ins Dashboard kopieren. Dort ordnen Sie die Charts nach Belieben an. Abbildung 4 zeigt, wie das Dashboard im Test aussah – es waren schon einige Testeinträge für den Temperatursensor vorhanden.

Abbildung 4: Über das Dashboard haben Sie die Werte aller Sensoren im Blick.

Abbildung 4: Über das Dashboard haben Sie die Werte aller Sensoren im Blick.

Nun ist die Umgebung vollständig aufgebaut, und Sie fangen damit an, Messwerte in die API zu schicken. Das Kommando aus Listing 8 sendet einen Wert von 22 Grad Celsius für den Temperatursensor. Der Messwert erscheint mit einer kleinen Verzögerung auf dem Dashboard. Die Dokumentation der API, die alle Möglichkeiten ausführlich beschreibt, finden Sie online [7].

Listing 8

 

$ . tvenv.sh
$ mosquitto_pub -h localhost -p 8883 --cert myConnector.crt --key privkey.pem --cafile $cafile -t /v1.0/$conID/sensor/$sensorID -m "{\"metrics\" : [{\"metricId\" : \"$TempID\", \"value\" : 22 }]}"

Probleme lösen

Sollten Sie beim Experiment an einen Punkt gelangen, wo es einfach nicht mehr weitergeht, sind Sie nicht auf sich alleine gestellt: Als Erstes lohnt es sich immer, einen Blick in die Logfiles unter /var/log/teamviewer-iot-agent/ zu werfen. Gelegentlich kommt es vor, dass die API im Fehlerfall über einen Kanal antwortet, den Sie nicht erwartet haben und daher nicht beobachten. In einem solchen Fall hilft es, alle Nachrichten unter dem Connector zu empfangen (Listing 9).

Listing 9

 

$ . tvenv.sh
$ mosquitto_sub -h localhost -p 8883 --cert myConnector.crt --key privkey.pem --cafile $cafile -t /v1.0/$conID/#

Liefern die Logfiles und die Nachrichten keinen Hinweis auf den Fehler, sehen Sie sich in der Teamviewer-Knowledge-Base [8] nach dem Problem um. Zusätzlich gibt es noch ein moderiertes Forum, über das sich User austauschen. Üblicherweise landen Anfragen, bei denen die Community nicht antwortet, direkt beim Support. Sie können sich auch direkt an den Support wenden, der erfahrungsgemäß recht schnell reagiert.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland