






| As a | I want | so that |
|---|---|---|
| Admin | to add, remove or rename smart devices in my smart home | i can extend my domotic system |
| Admin | to be able to set up user-device permissions and as a consequence tasks can be executed only by users that own the user-device permission for every device included in the task | i can prohibit uninteded use of the system |
| Admin | tasks to have a user whitelist and a user blacklist to override user-device permissions | i can prohibit uninteded use of the system |
| Admin | tasks and automations to have an editlist to specify which user can edit that | i can prohibit uninteded use of the system |
| Admin | to review and accept or decline users registration requests | i can manage who has access to the system |
| Admin | to be able to remove users from the system | i can manage who has access to the system |
| Admin | to organize the home devices in groups | it’s easier to manage them |
| User | to see the properties exposed by my smart devices | i can gain knowledge about the state of the house |
| User | to make smart devices execute an action | i can alter the state of the house |
| User | to set up tasks to be executed with one click | i can automate the execution of multiple instructions |
| User | to express conditional logic in my tasks | i can achieve complex behaviour |
| User | to set up automations to be executed periodically or when specific triggering events happen | my home can do stuff even without me taking care of it |
| User | to enable and disable automations | i can stop some automations to run for a while |
| User | to receive a notification when a specific device goes offline | i can fix problems in case they happen |
| User | to edit my profile data like my nickname, email and password | i can keep my data up to date |
| Word | Definition | Synonyms |
|---|---|---|
| User | A person which interacts with the domotic system | |
| Nickname | A simple name or string that the user choose to present himself to other users | Username |
| An e-mail address that it used to identify a user inside the system | ||
| Password | A string that grants the access to a user account | |
| Admin | A role played by a user of the system which is responsible for its management | Administrator |
| Smart home | A phisical house equipped with a software to manage connected smart devices | Domotic, Domotic system, Home, System |
| Smart device | An electronic device able to interact or sense the environment, generally connected to other devices or networks | IoT device, device |
| Client | A computer (mobile or desktop) used by the users to interact with the system | |
| Remote access | Ability to access the domotic system even if not connected to the local network | |
| Property | Some data provided by a smart device | Device data |
| Action | An operation that can be executed by a smart device | |
| Notification | A message sent by the server to every user that wants to receive it | |
| Instruction | An operation that can be executed by the domotic system (for example running a device action, reading some property on a device or sending a notification, wait for some time, set constants for scripting purposes and start other tasks). Instructions can have inputs | |
| Constant | A name with an associated value of a specific type. It can be set manually or by reading a device property | variable |
| Type (scripting) | A set of possible values | |
| Control flow instructions | Instructions that can alter the control flow of the script (if and if-else) based on a condition | |
| Condition | An expression that results in a boolean value | |
| Task | A sequence of instructions to be executed | |
| Automation | A sequence of instructions triggered by an automation trigger | |
| Script | A task or an automation | |
| Active/Inactive automation | An automation that is/is not run by the domotic system when it triggers | |
| Automation trigger | A device event or a time period specification | trigger |
| Triggering period | How frequently an automation should be run, has a starting point in time | period |
| Device event | An event that can be fired by a device | |
| Offline device | A smart device that is not reachable by the domotic system | |
| Interacting with a device | A client that reads properties or runs actions on a smart device | |
| User-Device permission | Right of a user to interact with some device | User permission |
| Task permissions | A task whitelist, blacklist and editlist | |
| Automation permissions | An automation editlist | |
| Task whitelist | A list of users that can run the task regardless of their user-device permissions | |
| Task blacklist | A list of users that cannot run the task regardless of their user-device permissions | |
| Task/Automation editlist | A list of users which can edit the script | |
| Registration request | A user must send a registration request that must be accepted by the admin before he can interact with the system | |
| Device group | A grouping of smart devices, each device can be part of 0 or N groups | Group |
| Server | A computer installed in the house responsible for managing all aspects of the domotic system | |
| Token | A piece of data that contains information about a user and it’s role in the system. It is signed in order to prove it’s validity |

Users management context
This context handles everything related to user accounts.
Devices management context
This context is responsible for managing the lifecycle of smart devices and the interfaces they offer.
Scripts context
This context focuses on automating the functionality of the smart home.
Permissions context
This context handles everything related to permissions and access control.
Notifications context
This context handles notifications sent to the users.
System access context
This context deals with remote/local system access.
