digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den...

Post on 02-Jul-2015

4.877 views 1 download

description

dSS-Entwickler Patrick Stählin ging auf das Konzept zur Einbindung externer Komponenten ein, das beliebig auf jegliche Hard- und Software mit programmierbaren Schnittstellen anwendbar ist. Die Einbindung erfolgt jeweils über die JSON oder SOAP-Programmierschnittstelle des dSS, die es erlauben, digitalSTROM-Komponenten zu simulieren oder mittels Software virtuelle Geräte zu implementieren. So kommunizieren diese im digitalSTROM-Netzwerk und können in Szenen integriert und mit einem digitalSTROM-Taster oder der iPhone App aufgerufen werden. Stählin führte das Konzept anhand des VLC-Mediaplayers vor, der nun zum Beispiel beim Klingeln an der Tür die Musik kurz unterbrechen kann. Der entstandene Javascript Code kann nun mit geringem Aufwand an andere Mediaplayer angepasst werden.

Transcript of digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den...

Situation Scripting Beispiel Fragen

Simulation von GeratenOder: Wie binde ich IP-Gerate in digitalSTROM ein

Patrick Stahlin

futureLAB AG

27.01.2011

Situation Scripting Beispiel Fragen

Situation

I Viele Gerate wurden in den letzten Jahren IP fahig

I digitalSTROM in Version 1.0 nur mit Licht

I Der digitalSTROM Server (dSS) ist erweiterbar

Situation Scripting Beispiel Fragen

Situation

I Viele Gerate wurden in den letzten Jahren IP fahig

I digitalSTROM in Version 1.0 nur mit Licht

I Der digitalSTROM Server (dSS) ist erweiterbar

Situation Scripting Beispiel Fragen

Situation

I Viele Gerate wurden in den letzten Jahren IP fahig

I digitalSTROM in Version 1.0 nur mit Licht

I Der digitalSTROM Server (dSS) ist erweiterbar

Situation Scripting Beispiel Fragen

Situation

Durch die Scriptbarkeit des dSS konnen nicht digitalSTROMGerate transparent eingebunden werden.

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

JavaScript im dSS I

I SpiderMonkey JavaScript-EngineI Aufgerufen durch

I EventsI Beim Start (Simulation)I Details im Wiki [dT]

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

JavaScript im dSS II

Moglichkeiten

I Events

I Property-Tree

I TCP client/server

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

Properties

I Baumstruktur

I SpeicherbarI Zugriff von aussen

I JSONI SOAP

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

Properties

I Baumstruktur

I SpeicherbarI Zugriff von aussen

I JSONI SOAP

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

Properties

I Baumstruktur

I SpeicherbarI Zugriff von aussen

I JSONI SOAP

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

Events

I Name

I Parameter

I Quelle

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

Konstanten

I Scene.User1 . . . Scene.User4

I Scene.Bell

I usw. . .

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

Simulations API

I callScene(sceneNumber)

I getConsumption

I get/setConfigParameter

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

Simulation

I Bekannt machen in der Simulation: config.xml

I Instanzierung sim.xml

I AnsprechenI JSON/SOAPI digitalSTROM

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

Simulation

I Bekannt machen in der Simulation: config.xml

I Instanzierung sim.xml

I AnsprechenI JSON/SOAPI digitalSTROM

Situation Scripting Beispiel Fragen JS im Server Scripting API Sim-API

Simulation

I Bekannt machen in der Simulation: config.xml

I Instanzierung sim.xml

I AnsprechenI JSON/SOAPI digitalSTROM

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

Code

function SimpleDevice () {

this.callScene = function(sceneNumber) {

print(’SimpleDevice.callScene ’, sceneNumber);

}

}

new SimpleDevice ();

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

config.xml

[...]

<property name="simple_device">

<property name="script -file [0]" type="string">

<value >../ jslib/dsid.js </value >

</property >

<property name="script -file [1]" type="string">

<value >some/where/simple_device.js </value >

</property >

<property name="id" type="string">

<value >example.simple_device </value >

</property >

</property >

[...]

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

sim.xml

<?xml version="1.0"?>

<simulation version="1">

<modulator busid="70" dsid="10">

<device dsid="4" busid="4" type="example.

simple_device" />

<zone id="1">

<group id="1">

<device busid="4" />

</group >

</zone >

</modulator >

</simulation >

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

VLC Player

I OpenSource Medienplayer

I Dokumentiertes, telnet basiertes Protokoll

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

VLC Player

I OpenSource Medienplayer

I Dokumentiertes, telnet basiertes Protokoll

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

Kommandos

I Track: play, stop, prev, next

I Lautstarke: volup, voldown

I Jeweils mit LF (\n) terminiert

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

Mediengerate in digitalSTROM

I Volume: Scene.Inc/Scene.Dec

I On: Scene.Off - Scene.User1

I Next: Scene.User1 - Scene.User2 - Scene.User3 -Scene.User1

I Previous: Scene.User4 - Scene.User3 - Scene.User2 -Scene.User1

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

config.xml

[...]

<property name="vlc_player">

<property name="script -file [0]" type="string">

<value >../ jslib/dsid.js </value >

</property >

<property name="script -file [1]" type="string">

<value >../ examples/plugins/js/vlc.js </value >

</property >

<property name="id" type="string">

<value >example.vlc_player </value >

</property >

</property >

[...]

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

sim.xml

<?xml version="1.0"?>

<simulation version="1">

<modulator busid="70" dsid="10">

<device dsid="4" busid="4" type="example.

vlc_player" />

<zone id="1">

<group id="4">

<device busid="4" />

</group >

</zone >

</modulator >

</simulation >

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

Testaufbau

I VLC mit rc-interface vlc -I rc

--lua-config="rc=host=’localhost:4212’"

I dSS lokal installiert

Situation Scripting Beispiel Fragen

Fragen

Fragen?

References

References I

dSS Team.digitalstrom server wiki.http://developer.digitalstrom.org/redmine/

projects/dss/wiki/.