The objective behind this experiment is to provide a very quick and easy way for folks to use iotivity-node, the JavaScript bindings for IoTivity. The only requirement is to have Docker installed on your machine.
Here are a few steps that will get you going with the IoTivity-in-a-box
container:
- Install Docker if not yet available on your system (follow these instructions if you need help with this step).
- Prepare a project space where you will have your node.js application JavaScript file that uses iotivity-node.
If you don't have one yet, you can grab one of our example following these steps (Linux command-line):
$ mkdir ~/test/
$ cd ~/test
$ wget https://raw.githubusercontent.com/01org/SmartHome-Demo/master/ocf-servers/js-servers/gas.js
- Run it with the Docker image
$ sudo docker run -v `pwd`:/opt/user gvancuts/iotivity-in-a-box gas.js
Note: this container only works on x86 CPU architectures.
You now have an OCF server (gas/CO2 detector) running on your local machine!! If you’re not sure how to easily verify this, take a look at this section below.
The generic form for using the IoTivity-in-a-box
container is the following:
$ sudo docker run -v `pwd`:/opt/user gvancuts/iotivity-in-a-box <your-app.js>
Where your-app.js
is your node.js application that uses iotivity-node.
The IoTivity-in-a-box container also supports installing additional applications dependencies if a package.json
file is provided. In order to use this feature, simply create your own package.json
file in your project space (e.g. test
as used above) and it will automatically be detected by the container and a npm install
will be executed inside the container.
Using the IoT REST API Server in a container
A very easy and neat way to check what OIC/OCF servers are available in your network is to use a containerized version of the IoT REST API Server.
- Install the IoT REST API Server container
$ sudo docker pull smarthome2cloud/smarthome-gateway
-
Run the container (aka gateway) There are different ways you can run such container, they all work so feel free to pick your preferred method. If you wish to get a better understanding of what these really mean and how they work, I recommend you read this section about networking in Docker.
- Using the host network
$ sudo docker run --net host smarthome2cloud/smarthome-gateway
- Mapping the container port to a host port
$ sudo docker run -p 8000:8001 smarthome2cloud/smarthome-gateway
- Using the standard
bridge
network from Docker
$ sudo docker run smarthome2cloud/smarthome-gateway
-
Open a web browser and use the following URLs
- When using the host network, go to: http://localhost:8000/api/oic/res
- When mapping the container port, go to: http://localhost:8001/api/oic/res
- When using the standard
bridge
network, go to: http://<ip-of-container>:8000/api/oic/res
Hint: for your convenience, the IP address of the container is printed at the very beginning.