7. WSO2 IoT Platform
7
Device in location X
Control operations on
Android TV Box
Control operation for
configuring XBee devices
Device Instance Details Page
15. @Plan:name('edgeAnalytics')
define stream edgeDeviceEventStream (ac int, window int, light int, temperature float, humidity float, keycard int);
@info(name = 'alertQuery') from edgeDeviceEventStream[(1 == ac or 1 == window or 1 == light) and 0 == keycard]
select ac, window, light insert into alertOutputStream;
@info(name = 'temperatureQuery') from every te1=edgeDeviceEventStream, te2=edgeDeviceEventStream[te1.temperature != temperature ]
select te2.temperature insert into temperatureOutputStream;
@info(name = 'humidityQuery') from every he1=edgeDeviceEventStream, he2=edgeDeviceEventStream[he1.humidity != humidity ]
select he2.humidity insert into humidityOutputStream;
@info(name = 'acQuery') from every ae1=edgeDeviceEventStream, ae2=edgeDeviceEventStream[ae1.ac != ac ]
select ae2.ac insert into acOutputStream;
@info(name = 'windowQuery') from every we1=edgeDeviceEventStream, we2=edgeDeviceEventStream[we1.window != window ]
select we2.window insert into windowOutputStream;
@info(name = 'keycardQuery') from every ke1=edgeDeviceEventStream, ke2=edgeDeviceEventStream[ke1.keycard != keycard ]
select ke2.keycard insert into keycardOutputStream;
Sample query
15
16. @Plan:name('edgeAnalytics')
define stream edgeDeviceEventStream (ac int, window int, light int, temperature float,
humidity float, keycard int);
@info(name = 'alertQuery') from edgeDeviceEventStream[(1 == ac or 1 == window or 1 ==
light) and 0 == keycard]
select ac, window, light insert into alertOutputStream;
@info(name = 'temperatureQuery') from every te1=edgeDeviceEventStream,
te2=edgeDeviceEventStream[te1.temperature != temperature ]
select te2.temperature insert into temperatureOutputStream;
@info(name = 'humidityQuery') from every he1=edgeDeviceEventStream,
he2=edgeDeviceEventStream[he1.humidity != humidity ]
select he2.humidity insert into humidityOutputStream;
Sample query
16
17. @info(name = 'humidityQuery') from every he1=edgeDeviceEventStream,
he2=edgeDeviceEventStream[he1.humidity != humidity ]
select he2.humidity insert into humidityOutputStream;
@info(name = 'acQuery') from every ae1=edgeDeviceEventStream,
ae2=edgeDeviceEventStream[ae1.ac != ac ]
select ae2.ac insert into acOutputStream;
@info(name = 'windowQuery') from every we1=edgeDeviceEventStream,
we2=edgeDeviceEventStream[we1.window != window ]
select we2.window insert into windowOutputStream;
@info(name = 'keycardQuery') from every ke1=edgeDeviceEventStream,
ke2=edgeDeviceEventStream[ke1.keycard != keycard ]
select ke2.keycard insert into keycardOutputStream;
Sample query
17
18. private void findSerialPortDevice() {
// This snippet will try to open the first encountered usb device connected, excluding usb root hubs
HashMap<String, UsbDevice> usbDevices = usbManager.getDeviceList();
if (!usbDevices.isEmpty()) {
boolean keep = true;
for (Map.Entry<String, UsbDevice> entry : usbDevices.entrySet()) {
device = entry.getValue();
int deviceVID = device.getVendorId();
int devicePID = device.getProductId();
Log.d(TAG, "deviceVID: " + Integer.toHexString(deviceVID) + " devicePID: " +
Integer.toHexString(devicePID));
if (deviceVID == 0x0403 && devicePID == 0x6001) {
// There is a device connected to our Android device. Try to open it as a Serial Port.
requestUserPermission();
keep = false;
} else {
connection = null;
device = null;
}
Android to USB
18