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

28
Situation Scripting Beispiel Fragen Simulation von Ger¨ aten Oder: Wie binde ich IP-Ger¨ ate in digitalSTROM ein Patrick St¨ ahlin futureLAB AG 27.01.2011

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...

Page 1: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

Situation Scripting Beispiel Fragen

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

Patrick Stahlin

futureLAB AG

27.01.2011

Page 2: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Page 3: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Page 4: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Page 5: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

Situation Scripting Beispiel Fragen

Situation

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

Page 6: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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]

Page 7: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Page 8: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Properties

I Baumstruktur

I SpeicherbarI Zugriff von aussen

I JSONI SOAP

Page 9: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Properties

I Baumstruktur

I SpeicherbarI Zugriff von aussen

I JSONI SOAP

Page 10: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Properties

I Baumstruktur

I SpeicherbarI Zugriff von aussen

I JSONI SOAP

Page 11: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Events

I Name

I Parameter

I Quelle

Page 12: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Konstanten

I Scene.User1 . . . Scene.User4

I Scene.Bell

I usw. . .

Page 13: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Simulations API

I callScene(sceneNumber)

I getConsumption

I get/setConfigParameter

Page 14: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Page 15: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Page 16: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Page 17: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

Code

function SimpleDevice () {

this.callScene = function(sceneNumber) {

print(’SimpleDevice.callScene ’, sceneNumber);

}

}

new SimpleDevice ();

Page 18: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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 >

[...]

Page 19: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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 >

Page 20: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

VLC Player

I OpenSource Medienplayer

I Dokumentiertes, telnet basiertes Protokoll

Page 21: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

Situation Scripting Beispiel Fragen Simples Gerat VLC Player

VLC Player

I OpenSource Medienplayer

I Dokumentiertes, telnet basiertes Protokoll

Page 22: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Page 23: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Page 24: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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 >

[...]

Page 25: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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 >

Page 26: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

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

Page 27: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

Situation Scripting Beispiel Fragen

Fragen

Fragen?

Page 28: digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten ein - zum Beispiel den VLC-Player

References

References I

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

projects/dss/wiki/.