APEX of Things

Werbung
APEX of Things
Home-Automation mit APEX
APEX connect
Berlin, 27. April 2016
Daniel Horwedel
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Agenda
▪ Vorstellung
▪ Internet of Things
▪ Systemarchitektur
▪ Hardware
▪ Software
▪ Sicherheit
▪ Anwendungsszenarien
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 2
Württembergische GemeindeVersicherung a.G.
Württembergische
GemeindeWGVWGVVersicherung AG
Lebensversicherung AG
Versicherung
WGV-Informatik und Media GmbH
wgv Versicherungen – wertvolles günstig versichert
„Leistungsstarker Schutz zu sehr günstigen Konditionen.“
„Innovative Versicherungskonzepte als Antwort auf die Herausforderungen der
Zukunft.“
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 3
Internet of Things
▪ Vernetzung physischer Objekte
▪ Geräte
▪ Sensoren
▪ Gebäude
▪ Fahrzeuge
▪ ...
▪ Erfassung von Zuständen
▪ Ausführen von Aktionen
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 4
IoT-Beispiele
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 5
IoT-Beispiele
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 6
IoT-Beispiele
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 7
IoT etwas übertrieben…;)
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 8
IoT etwas übertrieben…;)
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 9
Hardware
▪ Anforderungen
▪ klein
▪ günstig
▪ geringer Installationsaufwand
▪ niedriger Stromverbrauch
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 10
Systemarchitektur - Hardware
WLAN
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 11
Arduino
▪ einfach nutzbare Plattform
▪ Hard- und Software Open Source
▪ relativ günstige Entwicklungsboards (Clones, ab 2$)
▪ Entwicklung mit C oder Processing
▪ viele Libraries
▪ viele Shields
▪ Netzwerkfähigkeit: Zusatzmodul
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 12
ESP 8266 / NodeMCU
▪ WLAN-Chip mit Microcontroller und GPIOs
▪ extrem geringer Stromverbrauch
▪ geringere Performance als Arduino
▪ mit Lua, C und Arduino-IDE programmierbar
▪ sehr günstig (ab 2-3$)
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 13
Raspberry Pi
▪ günstiger Einplatinenrechner
▪ Zentrale Steuerungseinheit
▪ geringer Stromverbrauch
▪ ARM-Architektur
▪ diverse Linux-Distributionen + Win10 verfügbar
▪ vielseitige Anschlussmöglichkeiten
▪ 433MhZ-Funksender über GPIO
▪ Anschluss von Touchscreen-Display
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 14
Software
▪ Übertragunsprotokoll: MQTT
▪ Datenspeicherung: Oracle Datenbank
▪ GUI: APEX
▪ Schnittstelle MQTT->Oracle Datenbank: node.js
▪ Schnittstelle APEX->MQTT: Websockets
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 15
Systemarchitektur - Software & Kommunikation
Microcontroller
(Arduino, ESP 8266, …)
Raspberry Pi
Cloud / DB-Server
Sensor
Websockets
Aktor
APEX
MQTTBroker
oramqtt.js
ORACLE-DB
Anzeigegerät
REST (via ORDS)
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 16
Message Queue Telemetry Transport - MQTT
▪ leichtgewichtiges Messaging-Protokoll
▪ Queue-basiert
▪ ressourcensparende Implementierung
▪ Publish-Subscribe-Architektur
▪ offenes Protokoll, von IBM entwickelt
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 17
node.js
▪ serverseitiges JavaScript
▪ basiert auf V8-JS-Engine (Chrome)
▪ asynchrone Bearbeitung
▪ npm als zentrales Repository
▪ oracledb: offizieller Oracle-Treiber
▪ oracledb benötigt Oracle-Client
▪ nicht für ARM-Architektur verfügbar
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 18
node.js - Sourcecode (1/3)
//MQTT-Settings
var mqtt = require('mqtt');
var client
= mqtt.connect('mqtt://192.168.42.150');
var topic1 = 'sensor/temperature';
var topic2 = 'sensor/humidity';
var topic3 = 'sensor/light';
//Oracle DB-Settings
var oracledb = require('oracledb');
var dbConfig = require('./dbconfig.js');
client.on('connect', function () {
client.subscribe(topic1);
client.subscribe(topic2);
client.subscribe(topic3);
});
function doRelease(conn)
{
conn.release(
function(err) {
if (err) {
console.error(err.message);
}
});
}
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 19
node.js - Sourcecode (2/3)
function insertMessage(topic, message) {
oracledb.getConnection(
{
user
: "apexofthings",
password
: "APEXconnect2016",
connectString : "127.0.0.1/orcl"
},
function(err, conn) {
conn.execute(
"INSERT INTO sensor_values (seva_sety_id, seva_value) VALUES (:1, :2)",
[topic,message],
{ autoCommit: true},
function(err, result)
{
if (err) {
console.error(err.message);
doRelease(conn);
return;
}
doRelease(conn);
});
});
}
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 20
node.js - Sourcecode (3/3)
client.on('message', function (topic, message) {
if (topic === topic1) {
insertMessage(1, message.toString());
} else if (topic === topic2) {
insertMessage(2, message.toString());
} else if (topic === topic3) {
insertMessage(3, message.toString())
}
});
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 21
Websockets
▪ bidirektionale Schnittstelle Webanwendung <-> Server
▪ kein Polling
▪ Realtime-Push-Benachrichtigung
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 22
Websockets - Sourcecode node.js (1/2)
/* adapted from https://emoracle.wordpress.com/2012/04/11/using-websockets-in-apex-for-automatic-refresh-with-nodejs/ */
var wsServer = require('websocket').server;
var http = require('http');
var clients = [ ];
process.title = 'mqtt-websocket-server';
var config = {
port:9002 };
/* HTTP-SERVER */
var server = http.createServer(function(req, resp) {
var body = '';
var json;
req.setEncoding('utf8');
resp.writeHead(200,{'Content-Type':'application/json'});
req.on('data',function(data) {
body += data.toString();
try {
json = body;
var test = JSON.parse(json);
}
catch (e) {
json = JSON.stringify({'message':body});
}
for (var i=0; i < clients.length; i++) {
clients[i].sendUTF(json);
}
resp.end(JSON.stringify({ message: 'Send to '+ clients.length + ' clients' }));
});
});
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 23
Websockets - Sourcecode node.js (2/2)
server.listen(config.port, function() {
console.log((new Date()) + " Server is listening on port " + config.port);1
});
/* WEBSOCKET-SERVER */
var wsServer = new wsServer({
httpServer: server
});
wsServer.on('request',function(request) {
console.log((new Date()) + ' Websocketconnection from origin ' + request.origin + '.');
var connection = request.accept(null, request.origin);
var index = clients.push(connection) - 1;
console.log((new Date()) + ' Connection accepted.');
connection.on('close',function(connection) {
console.log((new Date()) + " Peer " + connection.remoteAddress + " disconnected.");
clients.splice(index, 1);
});
});
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 24
Websockets - Sourcecode PL/SQL (1/1)
PL/SQL
CREATE OR REPLACE
PACKAGE BODY WS_UTILS AS
PROCEDURE push_message(p_message IN VARCHAR2) AS
v_ret CLOB;
BEGIN
v_ret := apex_web_service.make_rest_request(p_url
=> 'http://127.0.0.1:9002',
p_http_method => 'POST',
p_body
=> '{"message":"' || p_message || '"}');
END push_message;
END WS_UTILS;
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 25
Websockets - Sourcecode JS / APEX (1/1)
$(function(){
window.WebSocket = window.WebSocket || window.MozWebSocket;
if (window.WebSocket) {
var connection = new WebSocket('ws://127.0.0.1:9002');
connection.onerror = function (error) {
console.log( 'Sorry, but there is some problem with your connection or the server is down.');
};
console.log('websocket connect succesful');
connection.onmessage = function (message) {
console.log(message.data);
var json = JSON.parse(message.data);
console.log('json.message=' + json.message);
if (json.message=='REFRESH') {
console.log('REFRESH');
apex.event.trigger('#SENSORWERTE','apexrefresh');
}
else {
console.log('JSON-Message:' + json.message);
}
};
}
});
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 26
Websockets - Browsersupport
Quelle: http://caniuse.com/#search=Web%20Sockets
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 27
REST-APIs
▪ Bereitstellung REST-APIs durch ORDS
▪ Zugriff auf REST-APIs über APEX_WEB_SERVICE.
MAKE_REST_REQUEST
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 28
Integration in APEX
▪ Live-Anzeige von Messwerten
▪ Steuerung von Aktionen
▪ Auswertung historischer Daten
▪ Definition von Workflows
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 29
Datenmodell
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 30
Sensoren
▪ Temperatur
▪ Luftfeuchtigkeit
▪ Erschütterungen
▪ Helligkeit
▪ Geräusche
▪ Bewegung (Infrarot / Ultraschall)
▪ Regen / Schnee
▪ Wasserstand
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 31
Sensoren - Temperatur & Feuchtigkeit
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 32
DEMO
▪ Temperatur
▪ Luftfeuchtigkeit
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 33
Sensoren - Temperatur & Feuchtigkeit
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 34
DEMO
▪ Helligkeit
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 35
Aktoren
▪ Funksteckdosen / -Schalter
▪ Funkthermostate
▪ Rolladenantriebe
▪ Relais
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 36
Ausgabegeräte
▪ LEDs
▪ (Touchscreen)-Display
▪ Browser
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 37
DEMO
▪ LED / TrafficLight
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 38
Sicherheit
▪ proprietäre Produkte / Protokolle
▪ oft keine Updatemöglichkeiten
▪ Investitionssicherheit / Langlebigkeit (NEST)
▪ geringe Ressourcen -> Verschlüsselung problematisch
▪ Ausfallsicherheit
▪ Abhängigkeit vom Internet
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 39
Sicherheit
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 40
Sicherheit: mögliche Lösungen
▪ Verwendung offener Standards
▪ separate Netzwerke
▪ nicht alles in die Cloud verlagern
▪ Failsafe-Modus für Offline-Betrieb
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 41
Anwendungsszenarien
▪ Komfortsteigerung durch kombinierte Programmabläufe
▪ Sicherheit durch Anwesenheitssimulation,
Einbruchserkennung, Wasserschäden etc.
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 42
Fragen & Antworten
Q&A
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 43
Ihr Ansprechpartner
Vielen Dank für die Aufmerksamkeit
WGV-Informatik und Media GmbH
Daniel Horwedel
Tübinger Str. 55
70178 Stuttgart
Tel:
eMail:
0711-1695 7572
[email protected]
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 44
Bildquellen
▪
▪
▪
▪
▪
▪
▪
Folie 5: loxone.com
Folie 6: wired.com
Folie 7: nest.com
Folie 8: Twitter @internetofshit
Folie 9: Pantelligent
Folie 40: Twitter / @internetofshit und heise.de
alle weiteren Bilder/Grafiken: selbst erstellt
WGV-Informatik und Media GmbH, Tübinger Straße 55, 70178 Stuttgart
APEX of Things
Seite 45
Herunterladen