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

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