• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
digitalSTROM Developer Day 2011: digitalSTROM-Server-Apps
 

digitalSTROM Developer Day 2011: digitalSTROM-Server-Apps

on

  • 5,385 views

 

Statistics

Views

Total Views
5,385
Views on SlideShare
1,646
Embed Views
3,739

Actions

Likes
0
Downloads
0
Comments
0

5 Embeds 3,739

http://www.digitalstrom.org 3730
http://digitalstrom.org 4
http://webcache.googleusercontent.com 2
http://translate.googleusercontent.com 2
http://www.google.de 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    digitalSTROM Developer Day 2011: digitalSTROM-Server-Apps digitalSTROM Developer Day 2011: digitalSTROM-Server-Apps Presentation Transcript

    • „Auto off“ Script – Code Explained Zürich, 27.01.2011, Sergey Bostandzhyan
    • „Auto off“ Script – Code ExplainedÜbersicht● Zielsetzung● Verfügbare Schnittstellen / API● Aufbau● Code
    • „Auto off“ Script – Code ExplainedZielsetzungAutomatisches Abschalten von Licht ineinem Raum nach „X“ Minuten.● nur für Szene 1● Raum konfigurierbar● Timeout konfigurierbarBeispiel: Treppenhausbeleuchtung
    • „Auto off“ Script – Code ExplainedVerfügbare Schnittstellen / API● digitalSTROM Server JSON API über HTTPS● digitalSTROM Server JS Scripting API JS Scripting API JSON API SpiderMonkey JS Engine Webserver digitalSTROM Server
    • „Auto off“ Script – Code ExplainedVerfügbare Schnittstellen - JSON APIJSON API Dokumentation:http://developer.digitalstrom.org/download/dss/0.9/doc/dss-0.9.0/● Informationen über Räume und Geräte● Konfiguration● Steuerung● Events auslösen● Zugang zum Property Tree● ...
    • „Auto off“ Script – Code explainedVerfügbare Schnittstellen - JSON APIJSON API Dokumentation:http://developer.digitalstrom.org/download/dss/0.9/doc/dss-0.9.0/● Informationen über Räume und Geräte● Konfiguration● Steuerung● Events auslösen● Zugang zum Property Tree● ...
    • „Auto off“ Script – Code ExplainedVerfügbare Schnittstellen – JS ScriptingJS Scripting Dokumentation:http://developer.digitalstrom.org/redmine/projects/dss/wiki/Scripting_inside_the_dSS● Informationen über Räume und Geräte● Steuerung● Events auslösen● auf Events reagieren● Zugang zum Property Tree● TCP Socket Zugriff● ...
    • „Auto off“ Script – Code ExplainedVerfügbare Schnittstellen – JS ScriptingJS Scripting Dokumentation:http://developer.digitalstrom.org/redmine/projects/dss/wiki/Scripting_inside_the_dSS● Informationen über Räume und Geräte● Steuerung● Events auslösen● auf Events reagieren● Zugang zum Property Tree● TCP Socket Zugriff● ...
    • „Auto off“ Script – Code ExplainedAufbau JS Scripting API JSON APIEvents empfangen Events auslösen Property Tree digitalSTROM Server
    • „Auto off“ Script – Code ExplainedAufbau – Web Interface
    • „Auto off“ Script – Code ExplainedAufbau – Web InterfaceRäume auflisten Timeout konfigurieren Konfiguration anzeigen
    • „Auto off“ Script – Code ExplainedAufbau – Web InterfaceRäume auflistenRequest an den dSS:/json/property/query?query=/apartment/zones/*(ZoneID,name)/devices/*(present)Antwort:{"ok":true,"result":{"zones":[{"ZoneID":4,"name":"Treppenhaus","devices":[{"present":true}]}]}}
    • „Auto off“ Script – Code ExplainedAufbau – Web InterfaceKonfiguration anzeigenRequest an den dSS:/json/property/query?query=/scripts/auto-off/*(ZoneID,offDelay)Antwort:{"ok":true,"result":{"auto-off":[{"ZoneID":4,"offDelay":1}]}}
    • „Auto off“ Script – Code ExplainedAufbau – Web InterfaceTimeout KonfigurierenRequest an den dSS:/json/event/raise?name=auto-off_set&parameter=ZoneID%3D4%3BoffDelay%3D1Parameter dekodiert: ZoneID=4;offDelay=1Event wird ausgelöst und von unseremJS Script im dSS empfangen.
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptHört auf Events und kümmert sich um:● Laden der Konfiguration● Speichern der Konfiguration● Reagieren auf Szenenaufrufe● Auto off
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS Script„Main“var l = new Logger("auto-off");if (raisedEvent.name === running){ Property.load();}else if (raisedEvent.name === auto-off_set){ setTrigger(raisedEvent.parameter);}else if (raisedEvent.name === callScene){ processSceneCall(raisedEvent.parameter);}
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptKonfiguration speichernfunction setTrigger(parameters){ var zoneID = parseInt(parameters.ZoneID, 10); var offDelay = parseInt(parameters.offDelay, 10); l.logln("Setting trigger: " + zoneID + " delay: " + offDelay); Property.setProperty(zoneID + / + ZoneID, zoneID); Property.setFlag(zoneID + / + ZoneID, ARCHIVE, true); Property.setProperty(zoneID + / + offDelay, offDelay); Property.setFlag(zoneID + / + offDelay, ARCHIVE, true); Property.setFlag(zoneID.toString(), ARCHIVE, true); Property.store();}
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptKonfiguration speichernfunction setTrigger(parameters){ ...}
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptReagieren auf Szenenaufrufefunction processSceneCall(parameters){ var sceneID = raisedEvent.parameter.sceneID; var zoneID = raisedEvent.source.zoneID; l.logln("Processing call scene event for zone " + zoneID + " scene " + sceneID); // ignore scenes that we do not care about if (sceneID != Scene.User1) { l.logln("Ignoring scene " + sceneID); return; } ...
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptReagieren auf Szenenaufrufefunction processSceneCall(parameters){ ... // check if auto-off is configured for this zone var zoneNode = Property.getNode(zoneID); if (zoneNode === null) { l.logln("Nothing configured, returning"); return; } ...
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptReagieren auf Szenenaufrufefunction processSceneCall(parameters){ ... // get delay setting var offDelay = delayNode.getValue(); // an off delay of zero means - auto off is disabled if (offDelay < 1) { l.logln("Auto-off for zone " + zoneID + " is disabled"); return; } ...
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptReagieren auf Szenenaufrufefunction processSceneCall(parameters){ ... // our delay is in minutes, timeout parameter has to be in ms setTimeout(offDelay * 60 * 1000, function() { executeTrigger(zoneID); });} // processSceneCall
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptAuto offfunction executeTrigger(zoneID){ l.logln("Executing tigger for zone " + zoneID); // our idea is to turn off the light only if scene 1 was // called, if the user switches to a different scene we will // not turn off anything var lastCalledScene = Property.getProperty(/apartment/zones/zone + zoneID + /groups/group1/lastCalledScene); ...
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptAuto offfunction executeTrigger(zoneID){ ... // only take action if we are still in scene 1 if (lastCalledScene == Scene.User1) { // select all light devices from the desired zone // by creating a set, then call scene 0 (off) var set = getDevices().byZone(zoneID).byGroup(yellow); set.callScene(Scene.Off); }} // executeTrigger
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptdSS Konfiguration<?xml version="1.0"?><subscriptions version="1"> <subscription event-name="running" handler-name="javascript"> <parameter> <parameter name="filename1">/path/to/auto-off.js</parameter> <parameter name="script_id">auto-off</parameter> </parameter> </subscription> ...
    • „Auto off“ Script – Code ExplainedAufbau – dSS JS ScriptdSS Konfiguration ... <subscription event-name="auto-off_set" handler-name="javascript"> <parameter> <parameter name="filename1">/path/to/auto-off.js</parameter> <parameter name="script_id">auto-off</parameter> </parameter> </subscription> <subscription event-name="callScene" handler-name="javascript"> <parameter> <parameter name="filename1">/path/to/auto-off.js</parameter> <parameter name="script_id">auto-off</parameter> </parameter> </subscription></subscriptions>
    • „Auto off“ Script – Code ExplainedZusammenfassungScript:● reagiert auf Events● lädt und speichert die Konfiguration● schaltet das Licht ausWeb UI:● fragt den dSS nach verfügbaren Räumen● fragt die Konfiguration ab● setzt den Auto off Timeout pro Raum
    • Fragen?http://developer.digitalstrom.org/