Commit 7656742d by John Doe

added timeout=0 for bundle install to prevent timeout

parent 9ff46497
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
The Wattsworth Project The Wattsworth Project
====================== ======================
Collect, process, and visualize IoT sensor data.
.. NOTE:: .. NOTE::
...@@ -14,34 +16,73 @@ The Wattsworth Project ...@@ -14,34 +16,73 @@ The Wattsworth Project
* See `web </web>`_ for information on the frontend interface (user facing) * See `web </web>`_ for information on the frontend interface (user facing)
Collect, process, and visualize IoT sensor data. Each Wattsworth is a complete
sensor network stack with support for:
1. **Data Collection** Collect and store highbandwidth data Unlike traditional IoT solutions, Wattsworth is a confederation of
self sufficient nodes. Each node collects, processes and stores its own data
and provides a web interface to visualize the data.
For many situations a single node can solve your problem. For more complex
sensor networks multiple nodes can be combined into a mesh or a client-server
architecture.
1. **Data Collection** Collect and store time series data
2. **Data Processing** Build flexible signal processing pipelines. 2. **Data Processing** Build flexible signal processing pipelines.
3. **Data Visualization** View data at any resolution using an intuitive web interface 3. **Data Visualization** View data using an intuitive web interface
Nodes may be combined into a mesh or operate individually. There is no central Follow the instructions below to set up a node and start using Wattsworth.
cloud server.
Install Step 0: Install
+++++++ +++++++
On a fresh Ubuntu installation (>= 16.02 LTS) run the following to install On a fresh Ubuntu installation (>= 16.04) run the following to install
the Wattsworth software stack:: the Wattsworth software stack::
$> sudo apt-get update $> sudo apt-get update
$> sudo apt-get install puppet $> sudo apt-get install puppet git
$> git clone https://git.wattsworth.net/wattsworth/puppet.git $> git clone https://git.wattsworth.net/wattsworth/puppet.git
$> cd puppet $> cd puppet
$> sudo puppet apply --modulepath=./modules --verbose site.pp $> sudo puppet apply --modulepath=./modules --verbose site.pp
Add a Reader Module Step 1: Generate Data
+++++++++++++++++++ +++++++++++++++++++++
Wattsworth's data processing engine is called Joule. Joule works with
Streams and Modules. Streams are sets of time series data (eg temperatures,
voltages, accelerations, etc). Modules are executable programs that read and
write to streams. There are two types of modules: readers and filters. Readers
collect external data (eg sensor readings) and write it to a stream. Let's start by
creating a reader that produces a stream of random data.
Copy the following to ``/etc/joule/module_configs/random_reader.conf``::
[Main]
exec_cmd = joule reader random 2 10
name = Demo Reader
[Source]
# a reader has no inputs
[Destination]
output = /demo/random
Time series data is stored as streams. Streams are similar to files in a This file tells Joule to create a new module called **Demo Reader** that is
filesystem. Copy the following to started by the command ``joule reader random 2 10``. The random reader is a
``/etc/joule/stream_configs/random.conf`` to allocate a new stream. built-in reader provided by Joule. It takes two command line arguments, the
number of elements to "read" and the range of random numbers. In this case we
are producing a two element stream of random numbers ranging from [0, 10]. Try
running the module from the command line::
# output columns: timestamp (us), element1, element2
$> joule reader random 2 10
Starting random stream: 2 elements @ 10.0Hz
1504275719114302 0.52250357475642772 0.27410492447391688
1504275719214302 0.3504811731191021 0.60611860137921958
1504275719314302 0.16871102294606499 0.26205382675613365
#... output continues, type Ctrl-C to stop
When Joule runs this program as a module this output is written to a stream. The
configuration file specifies this output stream is ``/demo/random``. Before
we can start writing data to this stream we have to create it. To do this copy
the following to ``/etc/joule/stream_configs/random.conf``
.. code-block:: ini .. code-block:: ini
...@@ -57,21 +98,13 @@ filesystem. Copy the following to ...@@ -57,21 +98,13 @@ filesystem. Copy the following to
[Element2] [Element2]
name = rand2 name = rand2
Reader modules read data from sensors and store it into a stream. Copy the Every stream must have a unique ``path`` similar to a file on a filesystem. The
following to ``/etc/joule/module_configs/random_reader.conf`` to configure a ``keep`` parameter tells Joule to save only the most recent week of data. This
module to produce data for your new stream:: prevents our disk from filling up. Next we list the elements in this stream.
This stream has two elements named *rand1* and *rand2*.
[Main] Now we are ready to start collecting data.
exec_cmd = joule reader random 2 10 From the terminal restart the Joule process to activate our new module::
name = Demo Reader
[Source]
# a reader has no inputs
[Destination]
output = /demo/random
From the terminal restart the Joule process to activate the module::
$> sudo service jouled restart $> sudo service jouled restart
$> joule modules # show the active modules $> joule modules # show the active modules
...@@ -92,6 +125,13 @@ data. ...@@ -92,6 +125,13 @@ data.
Add a Filter Module Add a Filter Module
+++++++++++++++++++ +++++++++++++++++++
Modules can be
connected together to build flexible data acquisition and signal processing
pipelines. There are two types of modules, readers and filters.
Reader modules collect data. This data can come from local sensors,
remote IoT nodes, third party API's or any other source. Let's start simple and
create a reader module that produces random data.
Filter modules process data generated by readers or by other filters. Filters Filter modules process data generated by readers or by other filters. Filters
store their results into one or more output streams. Copy the store their results into one or more output streams. Copy the
following to ``/etc/joule/stream_configs/averaged.conf`` to allocate following to ``/etc/joule/stream_configs/averaged.conf`` to allocate
...@@ -111,7 +151,6 @@ a new stream:: ...@@ -111,7 +151,6 @@ a new stream::
[Element2] [Element2]
name = filtered2 name = filtered2
Configure a
From the terminal restart the Joule process to activate the filter:: From the terminal restart the Joule process to activate the filter::
......
...@@ -37,6 +37,7 @@ class rails_api { ...@@ -37,6 +37,7 @@ class rails_api {
path => ['/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'], path => ['/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'],
refreshonly => true, refreshonly => true,
user => 'rails', user => 'rails',
timeout => 0,
require => [Vcsrepo['/opt/api'],Package['bundler']] require => [Vcsrepo['/opt/api'],Package['bundler']]
} }
exec {'db_setup': exec {'db_setup':
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment