<<< Previous topic - Next topic >>> |
|
Author |
Message |
kdw
Joined: 05 May 2006 Posts: 1490
|
Posted: 05.11.2015, 08:42 Post subject: IoT-Entwicklerbaukasten ... |
|
|
Siehe http://www.ssv-embedded.de/doks/manuals/fs_iot-ebk_v03_de.pdf
Damit kann innerhalb weniger Minuten die erste RTDC-Anwendung erstellt und das Ergebnis per Webbrowser-Zugriff betrachtet werden.
Die hier folgende Tabelle liefert einen Überblick zu den Bestandteilen eines IoT-Entwicklerbaukasten (Achtung: Die Farben der Kabelbrücken können je nach Verfügbarkeit variieren).
Mit dem IoT-Entwicklerbaukasten lässt sich inzwischen auch innerhalb weniger Minuten ein Modbus-TCP-basierter Smart Sensor aufbauen. Dazu wird einfach der LM35-Temperatursensor mit dem A0-Eingang des Arduino Uno verbunden und der zum Entwicklerbaukasten gehörende Beispielcode in den Uno geladen.
Gruß KDW
Last edited by kdw on 08.09.2017, 20:28; edited 8 times in total |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1490
|
Posted: 13.11.2015, 23:01 Post subject: Poti anschließen … |
|
|
Hallo Forum.
Zum Lieferumfang des IoT-Entwicklerbaukastens gehört ein Potentiometer (Poti). Dieser Poti hat drei Kontakte. Schließen Sie die beiden äußeren Kontakte an Masse und +5 VDC an. Verbinden Sie den Mittabgriff des Poti mit dem Analogeingang A0. Übertragen Sie den folgenden Code in Ihre Arduino-IDE.
Code: | // Poti an A0 einlesen ...
void setup()
{
Serial.begin(9600);
}
void loop()
{
int value = analogRead(0);
int percent = map(value, 0, 1023, 0, 100);
Serial.print(value);
Serial.print(" ");
Serial.print(percent);
Serial.print("% ");
float voltage = value * (5.0 / 1023.0);
Serial.print(voltage);
Serial.println("V");
delay(1000);
} |
Übersetzen Sie den Code und laden das Ergebnis per USB zum Arduino Uno. Öffnen Sie den seriellen Monitor. Beobachten Sie die Ausgaben über die serielle Schnittstelle. Drehen Sie am Poti. Es werden jeweils andere Spannungswerte angezeigt.
Gruß KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1490
|
Posted: 05.01.2016, 18:20 Post subject: Datenobjekte ... |
|
|
Hallo Forum.
Für die beiden „Sensoren“ (Potentiometer und Temperatursensor) des IoT-Entwicklerbaukastens existiert ein RTDC-Datenprojekt mit zwei Datenobjekten und jeweils einem Daten-Item:
Code: | {
"do": [
{
"id": 77,
"name": "EMG",
"desc": "",
"property": {},
"item": [
{
"id": 146,
"name": "TEMP",
"data": [
1452018206,
"0"
],
"type": "GAUGE",
"desc": "",
"property": {
"unit": "C"
}
}
]
},
{
"id": 80,
"name": "POTI",
"desc": "",
"property": {},
"item": [
{
"id": 149,
"name": "U1",
"data": [
1452018194,
"0"
],
"type": "GAUGE",
"desc": "",
"property": {
"unit": "V"
}
}
]
}
]
} |
Zur Visualisierung er beiden Daten-Items (EMG/TEMP und POTI/U1) wurde eine Webseite mit zwei virtuellen Instrumenten vorbereitet:
Sie können die Daten-Items EMG/TEMP und POTI/U1 auch mit Hilfe von cURL auslesen. Siehe hierzu auch http://www.ssv-comm.de/forum/viewtopic.php?t=1222. Der grundsätzliche Aufbau einer cURL-Kommandozeile für einen RTDC-GET-Request wäre:
Code: | curl -X GET -H "X-RTDC-Auth-Key: <API KEY>" "<REST API LINK>" |
Um das Daten-Item EMG/TEMP zu lesen, ist
Code: | "<REST API LINK>" = "ssv-connect.de:80/rtdc/v0/?get=data&do=EMG&item=TEMP" |
Das Daten-Item POTI/U1 wäre mit folgendem Kommandozeilenelement auslesbar:
Code: | "<REST API LINK>" = "ssv-connect.de:80/rtdc/v0/?get=data&do=POTI&item=U1" |
In beiden Fällen ist
Code: | "ssv-connect.de:80" = "<SERVER:PORT>" |
und muss jeweils durch die URL und Portnummer des jeweils benutzen RTDC-Servers ersetzt werden.
Das cURL-Kommandozeilenelement
muss jeweils durch den zu Ihrem RTDC-Datenprojekt gehörenden Schlüsselwert für X-RTDC-Auth-Key ersetzt werden. Zum Beispiel:
Code: | a8a14123-d031-5432-9fac-ff8e3073e5cf |
Analog zum zuvor beschriebenen HTTP-GET-Request kann per cURL-Kommandozeile z. B. auch ein HTTP-POST-Request möglich, mit dem als RTDC-REST-API „CREATE“ ein weiteres Daten-Item erzeugt werden kann. Hierzu ein Beispiel. Per
Code: | curl -X POST -H "X-RTDC-Auth-Key: <API KEY1>" -H "X-RTDC-Access-Key: <API KEY2>" -d @<DATEINAME> "<REST API LINK>" |
und einer Textdatei mit dem folgenden JSON-Inhalt
Code: | {"do":[{"name":"POTI","item":[{"name":"I1","desc":"Strom 0 - 100mA","type":"GAUGE","property":{"unit":"mA"}}]}]} |
wird im Datenobjekt POTI das Daten-Item I1 erzeugt. Der Name der Textdatei mit dem JSON-String wird als <DATEINAME> in der cURL-Kommandozeile benutzt.
Durch die REST-CREATE-Operation hat unser RTDC-Datenprojekt nun die hier folgende Struktur:
Code: | {
"do": [
{
"id": 77,
"name": "EMG",
"desc": "",
"property": {},
"item": [
{
"id": 146,
"name": "TEMP",
"data": [
1452019456,
"45.6"
],
"type": "GAUGE",
"desc": "",
"property": {
"unit": "C"
}
}
]
},
{
"id": 80,
"name": "POTI",
"desc": "",
"property": {},
"item": [
{
"id": 149,
"name": "U1",
"data": [
1452019455,
"4.56"
],
"type": "GAUGE",
"desc": "",
"property": {
"unit": "V"
}
},
{
"id": 535,
"name": "I1",
"data": [
1452071409,
""
],
"type": "GAUGE",
"desc": "Strom 0 - 100mA",
"property": {
"unit": "mA"
}
}
]
}
]
} |
Beachten Sie bitte das neu erzeugte Daten-Item POTI/I1.
Gruß KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1490
|
Posted: 06.01.2016, 12:21 Post subject: Weitere Sensoren … |
|
|
Hallo Forum.
Hin und wieder erreicht uns die Frage, ob man weitere Sensoren (z. B. einen Sensor mit 0 – 10V-Ausgang) an den Arduino Uno des IoT-Entwicklerbaukasten anschließen kann.
Grundsätzlich ist das problemlos möglich. Es sind allerdings gute Ardunio-Kenntnisse und Erfahrungen mit einfachen elektronischen Schaltungen erforderlich. Da den analogen Eingängen des Arduino Uno nur eine Spannung aus dem Bereich 0 – 5 V zugeführt werden darf, wäre zum Beispiel eine entsprechende Eingangsbeschaltung (z. B. ein Spannungsteiler) notwendig. Wenn man dieses Problem einmal „googled“, findet man zahlreiche Beispiele und konkrete Vorschläge. Aber Vorsicht: Ein kleiner Schaltungsfehler kann zur Zerstörung des Arduino Uno führen. Sollten aus welchen Gründen auch immer die 10 V direkt auf einen analogen 0 - 5 V-Eingang gelangen, ist die Uno-Hardware anschließend wohl nicht mehr zu gebrauchen.
Gruß KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1490
|
Posted: 09.09.2017, 07:55 Post subject: Node-RED-Dashboard … |
|
|
Hallo Forum.
Die Sensordaten aus den Beispielen des IoT-Entwicklerbaukastens lassen sich zum Beispiel auch an ein IGW/936 weiterleiten. Dafür wird zum Beispiel ein Modbus-Slave auf dem Arduino-Maker-Board implementiert, der die Messwerte an den analogen Eingängen des Arduino über Modbus-Register zur Verfügung stellt.
Unter Node-RED auf dem IGW/936 wird ein Modbus-Master für den Zugriff auf das oder die betreffenden Arduino-Modbus-Register konfiguriert.
Das Ergebnis lässt sich wahlweise mit Hilfe des IGW/936-Node-RED-Dashboards visualisieren, also per Webbrowser auf einem PC im LAN grafisch darstellen, oder über den OPC UA-Server des IGW/936 an einen externen OPC UA-Client weiterleiten.
VG KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1490
|
Posted: 26.11.2017, 17:46 Post subject: Smart Sensor ... |
|
|
Hallo Forum.
Der IoT-Entwicklerbaukasten kommt auch im neuen IGW/936-OPC UA-Starterkit zum Einsatz.
Siehe http://www.ssv-comm.de/forum/viewtopic.php?t=1403
Die Bausteine des Entwicklerbaukastens dienen für das IGW/936 als Smart Sensor.
VG KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1490
|
Posted: 25.05.2018, 10:54 Post subject: Next: Machine Learning … |
|
|
Hallo Forum.
Seit 2015 verwende ich den IoT-Entwicklerbaukasten für meine IoT-Workshops, wie zum Beispiel das zweitägige Intensivseminar „Internet der Dinge (IoT), das ich in Zusammenarbeit mit dem WEKA-Verlag und weiteren Partnern abhalte. In diesem Jahr werde ich auch auf den Themenbereich „Datenanalysen und Machine Learning“ eingehen. Entscheidend für ein IoT-Projekt ist ja letztendlich, welcher quantifizierbaren Nutzen aus den IoT-Daten gezogen wird. Siehe hierzu:
https://www.training-for-professionals.de/veranstaltungen/internet-der-dinge-iot.html
Der Werkzeugkasten, der im Rahmen des Workshops zum Einsatz kommt, um mit Hilfe des IoT-Entwicklerbaukasten erzeugte „Sensordaten“ zu analysieren, ist Scientific Python. Dazu gehören eine Python 3.x-Programmier- und Laufzeitumgebung plus verschiedene ausgesuchte Spezialbibliotheken (z. B. NumPy, Pandas, Scikit-Learn, Matplotlib).
Als Entwicklungsumgebung dient Anaconda, eine leistungsfähige und weit verbreitete Open Source Distribution für die Programmiersprachen Python und R. Die integrative Oberfläche Anaconda Navigator enthält u. a. die Python-IDE Spyder, den Kommandozeileninterpreter IPython und das webbasierte Frontend Jupyter. Anaconda läuft auf PCs mit unterschiedlichen Betriebssystemen.
Die eigentliche Rohdatenanalyse und die Informationsgewinnung erfolgt z. B. innerhalb von Spyder. Dabei werden die jeweils benötigten Daten zunächst von Form einer CSV-Datei eingelesen und in NumPy-Arrays oder Pandas-Dataframes gespeichert. Dann werden verschiedene Algorithmen und Methoden eingesetzt, um die gewünschten Informationen zu gewinnen.
Spyder ist eine IDE (Integrated Development Environment), in der sich interaktiv Python-Quellcodes entwickeln und testen lassen. Besonders wichtig dabei ist, dass einzelne Python-Codezeilen im Single-Step-Modus oder als Code-Block ausgeführt werden können und nach jeder einzelnen Codezeile z. B. die Veränderung der Daten darstellbar ist. Mit Matplotlib erstellte Grafiken werden direkt innerhalb von Spyder ausgegeben. Darüber hinaus besteht aus Spyder heraus der direkte Zugriff auf umfangreiche Online-Hilfen zu Python und den Spezialbibliotheken.
Jupyter ist eine Weboberfläche, die mit einem Kernel als Webserver kommuniziert. Unter Jupyter werden sogenannte Notebooks bearbeitet, in denen Codezeilen, Bilder und Textdokumentation in Zellen zusammengefügt werden. Python-Code-Zellen lassen sich direkt ausführen, die Ergebnisse werden innerhalb des Browserfensters angezeigt und in das Notebook übernommen. Jupyter-Notebooks werden als einzelne Datei gespeichert. Sie lassen sich sehr einfach weitergeben und in einer anderen Zielumgebung nutzen. Insofern dient Jupyter im Sensor-2-Information-Prozess auch zu Ergebnispräsentation.
Zu Jupyter gehört in Anaconda auch eine QT Console (Jupyter QtConsole). Dieses Werkzeug ist aus meiner Sicht der effizienteste Weg, um Codefragmente auszutesten. Für mich ich ist es immer besonders hilfreich, wenn ich die „Daten sehen kann“. Das geht mit der Jupyter QtConsole sehr einfach. Man muss nur wenige Zeilen tippen. Im einfachsten Fall z. B. drei Zeilen:
Code: | %matplotlib inline
import matplotlib.pyplot as plt
plt.plot ([1, 5, 7, 10, 2, 9, 0]) |
Es lassen sich aber auch per Cut&Paste komplette Codefragmente aus anderen Werkzeugen in die Console kopieren und testen.
VG KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1490
|
Posted: 15.02.2020, 21:44 Post subject: |
|
|
Hallo Forum.
Da inzwischen sowohl die Sicherheitsanforderungen (z. B. Cloud- und IoT-Plattformanbindungen per TLS) als auch das maschinelle Lernen zu praktisch jeder IoT-Anwendung gehören, würden wir für neue Entwicklungsvorhaben statt des hier beschriebenen IoT-Entwicklerbaukastens dann doch den DNP/AISS1 empfehlen. Siehe
https://ssv-comm.de/forum/viewtopic.php?t=1450
VG KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1490
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|