ICasa Script Language
ICasa Simulation module provides a script language that can be used to create scenarios in order to test pervasive applications. In the next section we show the instructions set supported by the language and their (XML) syntax.
1. Script File Syntax
Scenarios in iCasa simulation module are specified in a XML file using the tag behavior.
Example:
<behavior startdate="03/10/2011-00:00:00" factor="1440">
<!-- Scenario instructions -->
</behavior>
Attribute | Description |
---|---|
startdate | Starting date of script execution in format "dd/MM/yyyy-HH:mm:ss" |
factor | speed factor for script execution |
2. General Instructions
2.1. Delay
Introduces a delay in (virtual) minutes between the previous instruction and the next one.
Example:
<delay value="60" />
or
<delay value="60" unit="h"/>
Attribute | Description |
---|---|
value | Time in (virtual) units |
unit | Time unit, value it can be h (hours), m (minutes), s (seconds). Default value is m |
3. Zone Instructions
3.1. Create Zone
Creates a zone in application context
Example:
<create-zone id="kitchen" leftX="410" topY="370" X-Length="245" Y-Length="210" />
or
<create-zone id="kitchen" leftX="410" topY="370" bottomZ="0" X-Length="245" Y-Length="210" Z-Length="300" />
Attribute | Description |
---|---|
id | Zone's Identifier |
leftX | Left X coordinate value |
topY | Top Y coordinate value |
bottomZ | Bottom Z coordinate value |
X-Length | Zone X-Length |
Y-Length | Zone Y-Length |
Z-Length | Zone Z-Length |
3.2. Move Zone
Move a zone in application context
Example:
<move-zone id="kitchen" leftX="410" topY="370" />
Attribute | Description |
---|---|
id | Zone's Identifier |
leftX | New left X coordinate value |
topY | New top Y coordinate value |
3.3. Resize Zone
Resize a zone in application context
Example:
<resize-zone id="kitchen" X-Length="245" Y-Length="210" />
or
<resize-zone id="kitchen" X-Length="245" Y-Length="210" Z-Length="210" />
Attribute | Description |
---|---|
id | Zone's Identifier |
X-Length | New zone X-Length |
Y-Length | New zone Y-Length |
Z-Length | New zone Z-Length |
3.4. Add Variable to Zone
It adds a simulation variable to a zone
Example:
<add-zone-variable zoneId="livingroom" variable="Temperature" />
Attribute | Description |
---|---|
zoneId | Zone's Identifier |
variable | Variable name |
3.5. Modify Variable in Zone
It modifies a simulation variable in a zone
Example:
<modify-zone-variable zoneId="kitchen" variable="Temperature" value="296.15"/>
Attribute | Description |
---|---|
zoneId | Zone's Identifier |
variable | Variable name |
value | Variable value |
4. Device Instructions
4.1. Create Device
It creates a device instance in the application context
Example:
<create-device id="Pres-A1255D-D" type="iCasa.PresenceSensor" />
Attribute | Description |
---|---|
id | Device's Identifier |
type | Device's type |
4.2. Remove Device
Example:
<remove-device deviceId="Pres-A1255D-D" />
Attribute | Description |
---|---|
deviceId | Device's Identifier |
4.3. Move device into zone
Places a device in a zone of application context.
Example:
<move-device-zone deviceId="BiLi-A7496W-S" zoneId="kitchen" />
Attribute | Description |
---|---|
deviceId | Device's Identifier |
zoneId | Zone's Identifier |
4.4. Activate Device
Changes the device's state to activated.
Example:
<activate-device deviceId="Pres-A1255D-D" />
Attribute | Description |
---|---|
deviceId | Device's Identifier |
4.5. Deactivate Device
Changes the device's state to deactivated.
Example:
<deactivate-device deviceId="Pres-A1255D-D" />
Attribute | Description |
---|---|
deviceId | Device's Identifier |
4.6. Fault Device
Changes the device's fault state to yes.
Example:
<fault-device deviceId="Pres-A1255D-D" />
Attribute | Description |
---|---|
deviceId | Device's Identifier |
4.7. Repair Device
Changes the device's fault state to no.
Example:
<repair-device deviceId="Pres-A1255D-D" />
Attribute | Description |
---|---|
deviceId | Device's Identifier |
4.8. Set device property value
Set the value of the device property
Example:
<set-device-property deviceId="BiLi-A7496W-S" property="powerStatus" value="true"/>
Attribute | Description |
---|---|
deviceId | Device's Identifier |
property | property name |
value | property value |
5. Person Instructions
5.1. Create Person
Adds a person to the simulation context
Example:
<create-person id="Paul" type="Grandfather" />
Attribute | Description |
---|---|
id | Person's Identifier |
type | Person's type |
5.2. Move Person into zone
Places a person in a zone in the application context
Example:
<move-person-zone personId="Paul" zoneId="bedroom" />
Attribute | Description |
---|---|
personId | Person's Identifier |
zoneId | Zone's identifier |
6. Scenario Example
<behavior startdate="27/10/2011-00:00:00" factor="1440">
<!-- Creation of kitchen zone -->
<create-zone id="kitchen" leftX="410" topY="370" X-Length="245" Z-Length="210" />
<!-- Adding and setting variables in kitchen zone -->
<add-zone-variable zoneId="kitchen" variable="Temperature" />
<add-zone-variable zoneId="kitchen" variable="Illuminance" />
<modify-zone-variable zoneId="kitchen" variable="Temperature" value="296.15"/>
<modify-zone-variable zoneId="kitchen" variable="Illuminance" value="0"/>
<!-- Creating and placing devices in kitchen zone -->
<create-device id="Pres-A1255D-D" type="iCasa.PresenceSensor" />
<create-device id="Ther-A3654Q-S" type="iCasa.Thermometer" />
<create-device id="Phot-A4894S-S" type="iCasa.Photometer" />
<create-device id="BiLi-A7496W-S" type="iCasa.BinaryLight" />
<move-device-zone deviceId="Pres-A1255D-D" zoneId="kitchen" />
<move-device-zone deviceId="Ther-A3654Q-S" zoneId="kitchen" />
<move-device-zone deviceId="Phot-A4894S-S" zoneId="kitchen" />
<move-device-zone deviceId="BiLi-A7496W-S" zoneId="kitchen" />
<!-- Creation of livingroom zone -->
<create-zone id="livingroom" leftX="410" topY="28" X-Length="245" Y-Length="350" />
<!-- Adding and setting variables in kitchen zone -->
<add-zone-variable zoneId="livingroom" variable="Temperature" />
<add-zone-variable zoneId="livingroom" variable="Illuminance" />
<add-zone-variable zoneId="livingroom" variable="Volume" />
<modify-zone-variable zoneId="livingroom" variable="Temperature" value="295.15"/>
<modify-zone-variable zoneId="livingroom" variable="Illuminance" value="5"/>
<modify-zone-variable zoneId="livingroom" variable="Volume" value="10"/>
<!-- Others instructions -->
<delay value="100" />
<deactivate-device deviceId="Pres-A1255D-D" />
<delay value="100" />
<activate-device deviceId="Pres-A1255D-D" />
<delay value="100" />
<fault-device deviceId="Pres-A1255D-D" />
<delay value="100" />
<repair-device deviceId="Pres-A1255D-D" />
<delay value="100" />
<remove-device deviceId="Pres-A1255D-D" />
<delay value="100" />
<set-device-property deviceId="BiLi-A7496W-S" property="powerStatus" value="true"/>
</behavior>
7. Script Deployment
New scripts have to be deployed to the directory ICASA_HOME/scripts in the gateway. All scripts files must have the .bhv extensions to be recognized by the iCasa platform.