[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[mita-dev] Feedback zu Eclipse Mita / XDK Live
|
Liebes Eclipse-Mita-Team,
wir sind ein Entwicklerteam der Abteilung BCI/ECO (Bosch Connected Industry) und beschäftigen uns mit der Entwicklung von Open-Source-Komponenten für das Internet der
Dinge. Dabei arbeiten wir unter anderem auch mit dem XDK.
Aktuell beschäftigen wir uns mit der Programmiersprache XDK Live / Eclipse Mita, die ja in der neuesten Version der XDK-Workbench enthalten ist. Wir sind total begeistert,
wie einfach sich mit XDK Live typische Anwendungsfälle des IIoT umsetzen lassen.
Bei unserer Arbeit mit XDK Live sind uns zwei Dinge aufgefallen, die wir euch gerne rückmelden möchten:
1. In unserem aktuellen Setup sendet der XDK die Sensordaten per MQTT an einen Broker (Kura), der auf einem Raspberry Pi läuft (Code siehe Anhang). Dabei verwenden
wir die Plattform XDK110. Diese unterstützt noch nicht das Magnetometer und das Gyroskop des XDK (siehe
https://bit.ly/2rfipwu). Vielleicht kann eine Implementierung dieser beiden Sensoren in einer zukünftigen Version von XDK-Live umgesetzt werden? Darüber würden wir uns sehr freuen, da wir gerne das ganze Potenzial des XDK
ausschöpfen würden.
2. Um die Daten an den Broker zu senden, verbindet sich der XDK mit dem WLAN-Netz des Raspberry Pi. Dieses ist nicht 100% zuverlässig, weshalb es hin und wieder zu
kurzen Unterbrechungen kommt. Diese führen dann auf dem XDK zu einer WLAN-Exception, wodurch die ganze Applikation beendet wird und neu über die Workbench gestartet werden muss. Die WLAN-Connection wird nur einmalig mit "setup" eingerichtet, daher haben wir
noch keine Möglichkeit gefunden, mit XDK Live einen automatischen WLAN-Reconnect nach x Sekunden zu definieren. Für einen reibungslosen Betrieb wäre das jedoch sehr hilfreich. Wir schlagen deshalb vor, in einer künftigen Version von XDK Live entweder einen
Auto-Reconnect in das WLAN-Interface zu integrieren oder einen Reconnect als Methode bereitzustellen.
Bitte fasst unser Feedback nicht als Kritik auf – uns ist klar, dass es sich erst um Version 1.1.0 von XDK Live handelt. Wir wollten vielmehr unsere ersten Erfahrungen
mit euch teilen, vielleicht ja als Anregung für zukünftige Releases.
Wir sind schon gespannt, wie sich das Projekt XDK Live / Eclipse Mita noch weiterentwickeln wird, da wir darin ein großes Potenzial sehen!
Mit freundlichen Grüßen / Best regards
Niklas Cornelius Kunz
Ecosystem Solution Integration (BCI/ECO)
Tel. +49 711 811-0 | Fax +49 711 811 |
fixed-term.NiklasCornelius.Kunz@xxxxxxxxxxxx
|
package main;
import platforms.xdk110;
var sendData = false;
// Configure the WLAN connectivity of the XDK.
setup devnet : WLAN {
ssid = "MSW_Pi_AccessPoint";
psk = "OpenIoT23!";
}
// Software resources are set up using the setup keyword.
// Notice how we refer to the devnet WLAN setup
// as means of transport, and instantiate a signal to the / topic.
setup backend : MQTT {
transport = devnet;
url = "mqtt://172.16.1.1:1883";
clientId = "client_xdk";
var events = topic(name="xdk/data");
}
setup hmi : LED {
var dataSent = light_up(color=Red);
var errorInfo = light_up(color=Yellow);
}
every button_one.pressed {
sendData = true;
println("Publishing to mqtt broker.");
hmi.dataSent.write(true);
}
every button_two.pressed {
sendData = false;
println("Not publishing to mqtt broker.");
hmi.dataSent.write(false);
}
// The every keyword handles events. Here we use time as an event source and
// run at a regular interval.
every 3 seconds {
// Writing to the signal instance we've created in the signal block
// above sends out the MQTT message (backend is an MQTT resource
// after all). Using backticks we can use string interpolation.
// Here we construct a JSON string inline to the function call.
if (sendData == true) {
// Sensor data (and other modalities) are available due to the platform import above.
// One can use some resources even if they were not configured beforehand.
let temp = environment.temperature.read() - 7000;
let hmd = environment.humidity_fixed_point.read();
let pres = environment.pressure.read();
let li = light.intensity.read();
let acc_x = accelerometer.x_axis.read();
let acc_y = accelerometer.y_axis.read();
let acc_z = accelerometer.z_axis.read();
let gyro_x = 0;
let gyro_y = 0;
let gyro_z = 0;
let mag_x = 0;
let mag_y = 0;
let mag_z = 0;
try {
backend.events.write(`{ "temperature": ${temp}, "humidity": ${hmd},
"pressure": ${pres}, "light": ${li},
"acc_x": ${acc_x}, "acc_y": ${acc_y}, "acc_z": ${acc_z}, "gyro_x": ${gyro_x}, "gyro_y": ${gyro_y}, "gyro_z": ${gyro_z},
"mag_x": ${mag_x}, "mag_y": ${mag_y}, "mag_z": ${mag_z}}`);
} catch(Exception) {
hmi.errorInfo.write(true);
println("Exception. Data could not be published.");
}
}
}