[dss-developer] Fragen zu dsApps

Sebastian Scholz digitalstrom at sunshine-studios.org
Tue Apr 26 23:31:44 CEST 2011


Hallo Dieter

Ich versuche mal deine Fragen so gut wie möglich zu beantworten. Bei
manchen Details die den dSS angehen bin ich mir nicht ganz sicher, weil
ich bisher auch eher die APIs verwendet habe.


> 1) Das Beispiel myapp schreibt in ein Log-File, wenn es den Event erhält.
> Wo finde ich dieses File?
> Liesse es sich auch ins home-Verzeichnis von dssadmin schreiben? (von den Berechtigungen her, meine ich - sprich unter welchem user läuft eigentlich ein Script?)

Die Scripte werden direkt vom dSS ausgeführt. Dazu besitzt er intern
einen JavaScript Interpreter (SpiderMonkey). Da JavaScript aus
Sicherheitsgründen keinen Dateizugriff zulässt (wer möchte schon das
eine Webseite auf seine lokale Daten zugreifen kann) kann man nur über
die vom dSS bereitgestellte Logger Klasse in Logdateien schreiben. Dazu
muss im JavaScript eine neue Instanz erzeugt werden:

var l = new Logger("dateiname.log");

Das Beispiel erzeugt eine neue Datei mit dem Name "dateiname.log". Die
Logdateien werden im konfigurierten Logverzeichnis des dSS abgelegt. Auf
dem dSS11 ist dies unter /var/log/dss.


> 2) Auf Seite 5: du erwähnst den Namespace. Dieser wird vermultich durch den Parameter 'script_id' definiert, richtig?

Nein. Mit dem Namensraum meinte ich einfach, dass jedes in der App
definierte Event mit einem "helloWorld." beginnt. Dies wurde in [1] als
Konvention festgelegt.
Die script_id wird nur intern vom dSS verwendet. Unter anderem wird
dadurch auch ein Node im Property-Tree für jedes script erstellt. Gibt
man beispielsweise als script_id "foo" an, so erstellt der dSS im
Property-Tree unter /scripts/foo/ einen Bereich der extra für das Script
vorgesehen ist.


> 3)  Gibt es die Möglichkeit, Quelle eines Events zu erfahren?
> Z.B. an welchem Taster eine Szene aufgerufen wurde.

Ja die Herkunft eines callScene-Events zu erfahren ist möglich. Ist
sogar schon unter [2] dokumentiert.


> 4) Auf Seite 9 beschreibst du die Übersetzung von .po in .mo Files.
> Es wäre wohl nützlich, einen Hinweis auf das Tool po2json einzufügen.
> (Habe erst später erkannt, dass du dieses im wiki-Doc erwähnt hattest - welches aber auf dem dSS nicht vorhanden ist. Woher bekommt man es?).

Die ganze Sache mit der Übersetzung ist für die erste Schritte
wahrscheinlich unnötig und verkompliziert die Sache nur. Wenn du
trotzdem damit arbeiten willst, kannst du po2json zum einen im
getting-started Paket ([3]) oder auch über den ersten Treffer bei Google
unter [4] finden.


> 5) Aus deiner früheren Antwort:
>> Richtig ds3 unterstützt nicht das komplette JSON-API. Events kann man
>> damit aber trotzdem auslösen (z.B. ./ds3 event raise myapp.sayHello) Mit
>> ds3 kann man auch weitere Parameter an das Event anhängen. Z.B. mit
>> ./ds3 event raise "myapp.sayHello&parameter=message=test"
> 
> 
> War das wirklich so gemeint: 
> 	"myapp.sayHello&parameter=message=test"
> ?
> (Vielleicht war "&parameter=message-text" gemeint?)

Auch wenn es komisch aussieht war wirklich
"myapp.sayHello&parameter=message=test" gemeint. Dadurch wird der
Parameter mit dem Namen "message" an das JavaScript weitergegeben. Im
JavaScript kann man dann mit "raisedEvent.parameter.message" den Inhalt
des Parameters abfragen und bekommt "test" zurück.



[1]
http://developer.digitalstrom.org/redmine/projects/dss/wiki/DSApps#Conventions
[2]
http://developer.digitalstrom.org/redmine/projects/dss/wiki/Scripting_inside_the_dSS#Event-handlers
[3]
http://developer.digitalstrom.org/redmine/attachments/77/getting-started.tar.gz
[4] http://jsgettext.berlios.de/


Hoffentlich konnte ich damit mehr Fragen beantworten als ich neue
aufgeworfen habe ;-)

Gruss
Sebastian


More information about the dss-developer mailing list