Home - eucleed/wikkiot GitHub Wiki
The wikkiot framework is a service that allows devices equipped with a microcontroller and wifi to interact between each other. A device communicates with another device via a wikkiot server using the wikkiot protocol. The protocol has been defined generic enough to allow any type of interaction.
####The wikkiot server The wikkiot server listens to events from devices. It executes a business logic. It also invokes functions on devices.
In the diagram above, the wikkiot server receives event "OnHighLuminosity" from the light sensor. It then invokes "StartMachine" from device coffee machine and so on.
####The device The figure below shows the level of abstractions between the wikkiot server down to the end user appliance.
#####The wikkiot protocol It is a technology agnostic protocol. It communicates with the wikkiot server using standard websocket.
The wikkiot protocol uses websocket to transmit json messages.
The figure below shows the steps followed to initialize a device with the wikkiot server.
#####The device driver
The device driver is a software installed on the micro-controller.
It is the bridge between the physical micro-controller and the wikkiot server.
We currently provide driver framework for:
- micro-controllers that is embedded with a jvm
- Arduino
- Raspberry
Help is required to provide support for other micro-controllers.
Support for picaxe micro-controller would be very helpful.
#####The micro-controller. It can be any micro-controller that can send and receive json data via websocket.
#####The end user appliance The micro-controller sends electric impulse to the end user appliance circuit. It is up to the electronic engineer to make the device react according to the signal output by the micro-controller.
#####The device definition
The framework addresses the following issue:
When building inter object communication systems , there are 2 types of implementations.
- Building the objects i.e. devices.
- Implement the interactions between the objects.
The framework has been designed in such a way in order to allow the object builder have complete abstraction on the interaction builder and vice versa.
To achieve this, we use a device definition.
The device definition defines a contract between the object builder and the interaction builder.
#####The device definition emulator. As wikkiot programmer will probably not already have the physical device before hand. We provide an online device definition emulator. This is a convenient tool to build interactions and test them until the physical device is ready.
The emulator does the following:
- Logs functions being invoked
- Provides buttons to emit events specified in the device definition.
At least JDK 1.7 is required.
Download wikkiot server wikkiot
run
bin/startup.sh on linux
or
bin/startup.bat on windows
Check if server is running http://localhost:8080/wikkiot
<dependency>
<groupId>org.castafiore</groupId>
<artifactId>iot.driver.java</artifactId>
<version>x.x.x</version>
</dependency>
Get your hands wet with the Tutorial