# Basename of the parent project EJ: ewetasker.md -> ewetasker
parent_project:ewetasker
subtitle:Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
# Short description of the project
subtitle:This repository contains EWE Tasker Web Client module, written in React. It provides a web application to create and manage semantic rules in order to automate tasks for services or smart devices.
# Uncomment the categories where your project fit in
categories:
...
...
@@ -37,39 +37,211 @@ categories:
# Some tags of your project such as programming language, topix, etc.
tags:
-ewe
-pearl
-go
-php
-python
-elasticsearch
-mongodb
-crossbar
-fuseki
-semantic
-IoT
# If your project inherit from other, or if it is very close to other project
# put here base file name of the other project. Ej: ewetasker.md -> ewetasker
related:
# - sematch
-sefarad
# - gsitk
# If your project has a demo, put here the base file name of the demo.
# Ej: ewetasker-server.md -> ewetasker-server
demos:
# - ewetasker-server
# - ewetasker-webclient
-ewetasker-webclient
---
Nowadays we are surrounded by smart devices whose goal is tomake our lives easier. However, the configuration and the adaptation of them to the users becomes a problem when the number of involved devices increase. For this reason, Ewetasker provides a task automation platform for controlling and configurating smart devices.
EWE Tasker is an emotion aware automation platform based on semantic ECA (Event-Condition-Action) rules. It is capable of enable semantic automation rules in a smart environment allowing the user to configure his own automation rules in an easy way. This platform is divided in two modules: [Ewetasker Server](https://lab.cluster.gsi.dit.upm.es/ewe/ewetasker_server.git) module, and [Ewetasker Web Client](https://lab.cluster.gsi.dit.upm.es/ewe/ewetasker_webclient.git) module.

### EWE Tasker Server
## Ewetasker for users
This repository contains EWE Tasker Server module, written in Python. It provides an API REST to manage and evaluate semantic rules in order to automate tasks for services or smart devices.
Ewetasker web application provides an easy way to automate tasks in smart environments. Through its interface its is possible to parameterize the features of a smart device by creating channels following the EWE ontology.
Channels define devices which can generate Events (sensors), provide Actions (actuators) or both. Once having the channels, Ewetasker allows users to create automation rules. This rules are defined as an "Event-Condition-Action" (ECA) rules. When they are triggered by an event, Ewetasker generates a response with the corresponding Action.
### INSTALLATION
##### REQUIREMENTS
In order to install Ewetasker server, it is needed to have installed docker-compose. Follow this [link](https://docs.docker.com/compose/install/) if you need more information about it.
#### STEP BY STEP
To make the most out of Ewetasker, its neccesary to install the Ewetasker Android App. It allows to manage events and actions of channels like Bluetooth, WiFi or Presence. This smartphone application is available in Google Play store.
First of all, clone the git project locally and access to Ewetasker server directory.
In this documentation we are going to introduce this framework, detailing the global architecture of the project and explaining each module functionality. Finally, we will make a tutorial to know its working and its functions since the installation until using it. A demo video about Ewetasker is available
{"@context": {"@vocab": "http://www.gsi.dit.upm.es/ontologies/ewe#"}, "channels": [{"@id": "http://gsi.dit.upm.es/ontologies/ewe/ns/Chromecast", "rdfs:label": "Chromecast", "rdfs:comment": "This channel represents a chromecast device with simple capabilities.", "foaf:logo": "fa fa-chrome", "color": "#ea4335", "events": [], "actions": [{"@id": "http://gsi.dit.upm.es/ontologies/ewe/ns/PlayVideoChromecast", "rdfs:label": "Play video", "rdfs:comment": "This action will play a video on Chromecast.", "input_parameters": [{"@id": "http://gsi.dit.upm.es/ontologies/ewe/ns/ChromecastLocalIP", "rdfs:label": "Chromecast Local IP", "rdfs:comment": "This parameter represents the local IP of the Chromecast.", "rdf:datatype": "http://www.w3.org/2001/XMLSchema#string"}, {"@id": "http://gsi.dit.upm.es/ontologies/ewe/ns/ChromecastPublicIP", "rdfs:label": "Chromecast Public IP", "rdfs:comment": "This parameter represents the public IP of the Chromecast.", "rdf:datatype": "http://www.w3.org/2001/XMLSchema#string"}], "output_parameters": [{"@id": "http://gsi.dit.upm.es/ontologies/ewe/ns/ChromecastVideoUrl", "rdfs:label": "Youtube video url", "rdfs:comment": "This parameter represents the youtube video url to be reproduced.", "rdf:datatype": "http://www.w3.org/2001/XMLSchema#string"}]}], "parameters": [{"@id": "http://gsi.dit.upm.es/ontologies/ewe/ns/ChromecastLocalIP", "rdfs:label": "Chromecast Local IP", "rdfs:comment": "This parameter represents the local IP of the Chromecast.", "rdf:datatype": "http://www.w3.org/2001/XMLSchema#string"}, {"@id": "http://gsi.dit.upm.es/ontologies/ewe/ns/ChromecastPublicIP", "rdfs:label": "Chromecast Public IP", "rdfs:comment": "This parameter represents the public IP of the Chromecast.", "rdf:datatype": "http://www.w3.org/2001/XMLSchema#string"}]}, ...
```
In order to interact with Ewetasker server in a simple way, you can install Ewetasker web application in this [link](https://lab.cluster.gsi.dit.upm.es/ewe/ewetasker_webclient).
### API CALLS
| Route | Method | Description |
|---|---|---|
| /channels/base | GET | Get a list of base channels available at the platform |
| /channels/category/{categoryUri} | GET | Get a list by category (Services or Devices) of channels available at the platform |
| /channels/custom | GET | Get a list of custom channels available at the platform |
| /channels/custom/category/{categoryUri} | GET | Get a list by category (Services or Devices) of custom channels available at the platform |
| /channels/import | POST | Import a new custom channel from a json |
| /channels/custom/delete/{customChannelUri} | DELETE | Delete a custom channel |
| /rules/new | POST | Create a new rule from a json|
| /rules/user/{userUri} | GET | Get a list of rules available at the platform for the specified user |
| /rules/delete/{ruleUri} | DELETE | Delete a custom channel |