Commit d101dbd3 by John Donnal

auto doc rebuild

parent 7656742d
Configuration
=============
In most situations Wattsworth should work well with the default settings.
For more complex setups involving systems that may loose power, are connected
through networks, or other special cases the reference material in this section
shows how to fine tune the installation to meet these needs.
Storage
-------
Make sure you set up data journaling on the nilmdb partition. This will prevent
data corruption if the computer looses power without properly shutting down.
Edit ``/etc/fstab`` and add the ``data=journal`` option to the parition with the
nilmdb database.
.. code-block:: bash
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=XXX / ext4 errors=remount-ro,data=journal 0 1
# add this --^
If the partition is the root partition you must add this option directly to the volume
as well, otherwise the system will not boot properly. For example if your
root partition is on ``/dev/sda2``:
.. code-block:: bash
$> sudo tune2fs -o journal_data /dev/sda2
<span class="lead" id="storage">Storage Setup</span>
<hr/>
<p>
This section explains how to properly format and configure
an extra hard drive for a NILM system. It is usually a good idea to place the Nilm Database on a seperate hard drive. This prevents the database from filling the primary drive to the point
where the system become unusable and also makes it easy to retrieve collected data from an installation by simply swapping out the extra harddrive.
</p>
<p><b>Formatting a drive</b> After installing the drive and booting the system, the first step to use
the drive is to place a usable filesystem on it. There are many tools that can be used for this but one of the easiest is GParted. This program must be run as root. From the command line type type the following:
</p>
<div class="alert alert-danger"><i class="icon icon-warning-sign"></i> Be very careful with gparted, formatting the primary drive will destroy the installation</div>
<section class="indented cm-view ">
<textarea class="cm-textarea-sh">
$ sudo gparted </textarea>
</section>
<p>
Select the extra drive from the dropdown menu as shown. Generally the extra drive should be <b>/dev/sdb</b>
but this is not always the case. If the drive already has multiple partitions this most likely means it is the primary drive.
</p>
<div class="row">
<div class="col-sm-12 col-md-6">
<div class="thumbnail">
<%=image_tag "hdd_gparted_1.png"%>
<div class="caption">
Carefully select the device node for the extra drive
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="thumbnail">
<%=image_tag "hdd_gparted_2.png"%>
<div class="caption">
Create a new msdos partition table. This will erase the drive.
</div>
</div>
</div>
</div>
<p>
Select <b>Device</b> > <b> Create Partition Table</b> to bring up the Create Partition dialog. Select <b>msdos</b> and click Apply. Select <b>Partition</b> > <b>New</b> to bring up the New Partition dialog. Add a new <b>ext4</b> partition to the drive and assign it the full extents of the disk (this is the default). Click Add to close the dialog. Finally click <b>Apply</b> to format the disk and then close the program.
<div class="row">
<div class="col-sm-12 col-md-6 col-md-offset-3">
<div class="thumbnail">
<%=image_tag "hdd_gparted_3.png"%>
<div class="caption">
Add an <b>ext4</b> partition to fill the disk
</div>
</div>
</div>
</div>
<p>
To use the drive for the Nilm database it must be mounted to the correct location in the filesystem. Edit <b>/etc/fstab</b> in a word processor and add the following line where /dev/sdX1 is the name of the drive you just formatted. The number one refers to the first (and only) partition. Note that you will need to run the word processor as root (sudo) in order to edit this file.
<pre>
/dev/sdX1 /opt/data ext4 errors=remount-ro 0 1 </pre>
When using an external drive as the primary storage volume, drive letters cannot be used since they change. The UUID is a unique drive partition identifier that should be used instead. Running <span class="text-mono">sudo lsblk /dev/sdX1</span> will print out the UUID. The new line in <b>/etc/fstab</b> should resemble the following.
<pre>
UUID=XXXXXXXX-XXXXX-XXXX-XXXX-XXXXXXXXXXXX /opt/data ext4 errors=remount-ro 0 1 </pre>
Run the following commands to mount the drive and setup the permissions. Use <b>df</b> to verify the configuration:
<section class="indented cm-view ">
<textarea class="cm-textarea-sh">
$ sudo service nilm-capture stop #stop data capture if it is already running
$ sudo mount -a
$ sudo chown -R nilm:nilm /opt/data #assign the drive to the nilm user
$ df -h</textarea>
</section>
</p>
<p>
The output from <b>df</b> should look similar to that below:
</p>
<pre>
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1.8T 5.3G 1.7T 1% /
... other mount points ...
/dev/sdc1 917G 72M 871G 1% /opt/data</pre>
<p>If you have already configured your meters and want to start collecting data, run:</p>
<section class="indented cm-view ">
<textarea class="cm-textarea-sh">
$ sudo service nilm-capture start</textarea>
</section>
......@@ -3,121 +3,177 @@
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
.. highlight:: bash
The Wattsworth Project
======================
Collect, process, and visualize IoT sensor data.
.. raw:: html
<div class="alert alert-info">
See <a href="/joule">Joule</a> for information on the modular data processing framework
<br/>
See <a href="/web">Web</a> for information on the frontend user interface
</div>
.. NOTE::
Active Plugins
--------------
* See `joule </joule>`_ for information on the backend interface (CLI)
* See `web </web>`_ for information on the frontend interface (user facing)
The following plugins are active on this machine.
Click the name of a plugin to view the documentation.
.. raw:: html
<table class="table">
<thead>
<tr><th>Name</th><th>Description</th></tr>
</thead>
<tbody id="plugins-table">
</tbody>
</table>
.. raw:: html
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.
3. **Data Visualization** View data using an intuitive web interface
Installing the Software
-----------------------
Follow the instructions below to set up a node and start using Wattsworth.
All of the software repositories are available at
https://git.wattsworth.net/wattsworth. The software has been tested on
64 bit Ubuntu Linux. While it is possible to run on Arm-based Single
Board Computers (eg Raspberry Pi), the software works best on x86 systems
such as the Intel NUC.
Step 0: Install
+++++++
Use the Puppet repository to install the complete Wattsworth stack
On a fresh Ubuntu installation (>= 16.04) run the following to install
the Wattsworth software stack::
.. code-block:: bash
$> sudo apt-get update
$> sudo apt-get install puppet git
$> git clone https://git.wattsworth.net/wattsworth/puppet.git
$> cd puppet
$> sudo puppet apply --modulepath=./modules --verbose site.pp
$> sudo apt-get update
$> sudo apt-get install puppet
$> git clone https://git.wattsworth.net/wattsworth/puppet.git
$> cd puppet
$> sudo puppet apply --modulepath=./modules --verbose site.pp
Step 1: Generate Data
+++++++++++++++++++++
System Configuration
--------------------
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.
Make sure you set up data journaling on the nilmdb partition. This will prevent
data corruption if the computer looses power without properly shutting down.
Copy the following to ``/etc/joule/module_configs/random_reader.conf``::
Edit ``/etc/fstab`` and add the ``data=journal`` option to the parition with the
nilmdb database.
[Main]
exec_cmd = joule reader random 2 10
name = Demo Reader
.. code-block:: bash
[Source]
# a reader has no inputs
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=XXX / ext4 errors=remount-ro,data=journal 0 1
# add this --^
[Destination]
output = /demo/random
If the partition is the root partition you must add this option directly to the volume
as well, otherwise the system will not boot properly. For example if your
root partition is on ``/dev/sda2``:
This file tells Joule to create a new module called **Demo Reader** that is
started by the command ``joule reader random 2 10``. The random reader is a
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::
.. code-block:: bash
# 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
$> sudo tune2fs -o journal_data /dev/sda2
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``
.. toctree::
:maxdepth: 2
:caption: Contents:
.. code-block:: ini
[Main]
name = Random Data
path = /demo/random
datatype = float32
keep = 1w
[Element1]
name = rand1
[Element2]
name = rand2
Every stream must have a unique ``path`` similar to a file on a filesystem. The
``keep`` parameter tells Joule to save only the most recent week of data. This
prevents our disk from filling up. Next we list the elements in this stream.
This stream has two elements named *rand1* and *rand2*.
Now we are ready to start collecting data.
From the terminal restart the Joule process to activate our new module::
$> sudo service jouled restart
$> joule modules # show the active modules
View the Data
+++++++++++++
Open a browser and navigate to http://wattsworth.local. Log in as
**admin@wattsworth.local** with password **password**. From the main window
click the gear icon next to the local installation. This opens the
administration view (see ``admin help`` for more details). Click ``[Refresh]``
and the new data stream should appear in the file tree on the left. Navigate
back to the main page (click the header logo or use the browser back button) and
expand the file tree until you see the new stream. Click ``[Plot]`` and it
should display in the main window. See ``web help`` for information on plotting
data.
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.
Indices and tables
==================
Filter modules process data generated by readers or by other filters. Filters
store their results into one or more output streams. Copy the
following to ``/etc/joule/stream_configs/averaged.conf`` to allocate
a new stream::
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
.. code-block:: ini
.. _web: /web
.. _joule: /joule
[Main]
name = Averaged Data
path = /demo/filtered
datatype = float32
keep = 1w
.. raw:: html
[Element1]
name = filtered1
<script type="text/javascript">
[Element2]
name = filtered2
//hide the plugins section by default (in case plugins.txt is missing)
$("#active-plugins").hide();
var plugins="";
var nonce=new Date().getTime(); //so we force the browser to get new data
From the terminal restart the Joule process to activate the filter::
$> sudo service jouled restart
$> joule modules # show active modules
View the Data
+++++++++++++
From the web browser, go back to the administration view and refresh the
database. You should now see two streams. Back in the data view plot both
streams. The filtered stream should be the average of the random stream.
Contributing
------------
.. toctree::
:maxdepth: 2
:caption: Contents:
$.ajax({url: `_static/plugins.txt?nonce=${nonce}`, success:
function(result){
plugins = result.split('\n')
.reduce(function(acc,line){
if(line==""||line[0]=="#")
return acc;
acc.push(line.split(',').map(function(x){return x.trim()}));
return acc;
},[])
if(plugins.length>0)
$("#active-plugins").show();
plugins.map(function(plugin){
var link = plugin[2];
var name=`<a href="/${link}">${plugin[0]}</a>`;
var desc = plugin[1];
$("#plugins-table").append(`<tr><td>${name}</td><td>${desc}</td></tr>`)
})
}});
</script>
installation
configuration
plugins
Installation
============
All of the software repositories are available at
https://git.wattsworth.net/wattsworth. The software has been tested on
64 bit Ubuntu Linux. While it is possible to run on Arm-based Single
Board Computers (eg Raspberry Pi), the software works best on x86 systems
such as the Intel NUC.
Use the Puppet repository to install the complete Wattsworth stack
.. code-block:: bash
$> sudo apt-get update
$> sudo apt-get install puppet
$> git clone https://git.wattsworth.net/wattsworth/puppet.git
$> cd puppet
$> sudo puppet apply --modulepath=./modules --verbose site.pp
Plugins
=======
.. raw:: html
<p id="no-plugins"> No plugins are currently installed </p>
<div id="has-plugins">
<p> Click a plugin name below to view the documentation </p>
<table class="table">
<thead>
<tr><th>Name</th><th>Description</th></tr>
</thead>
<tbody id="plugins-table">
</tbody>
</table>
</div>
.. raw:: html
<script type="text/javascript">
//hide the plugins section by default (in case plugins.txt is missing)
$("#has-plugins").hide();
var plugins="";
var nonce=new Date().getTime(); //so we force the browser to get new data
$.ajax({url: `_static/plugins.txt?nonce=${nonce}`, success:
function(result){
plugins = result.split('\n')
.reduce(function(acc,line){
if(line==""||line[0]=="#")
return acc;
acc.push(line.split(',').map(function(x){return x.trim()}));
return acc;
},[])
if(plugins.length>0){
$("#has-plugins").show();
$("#no-plugins").hide();
}
plugins.map(function(plugin){
var link = plugin[2];
var name=`<a href="/${link}">${plugin[0]}</a>`;
var desc = plugin[1];
$("#plugins-table").append(`<tr><td>${name}</td><td>${desc}</td></tr>`)
})
}});
</script>
# append plugins to the list below, separate entries with commas
# name, description, documentation_folder
NILM, Non-Intrusive Load Monitoring, nilm
#LabJack, Acquire data from UE9 devices, labjack
#NILM, Non-Intrusive Load Monitoring, nilm
#SmartEE, Connect to Smart Plugs, smartee
......@@ -56,15 +56,35 @@
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo">
<a href="index.html">
<img class="logo" src="_static/logo.png" alt="Logo"/>
</a>
</p>
<div class="relations">
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration.html">Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="plugins.html">Plugins</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Installation &#8212; Wattsworth 1.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/custom.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '1.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Configuration" href="configuration.html" />
<link rel="prev" title="The Wattsworth Project" href="index.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head>
<body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="installation">
<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1>
<p>All of the software repositories are available at
<a class="reference external" href="https://git.wattsworth.net/wattsworth">https://git.wattsworth.net/wattsworth</a>. The software has been tested on
64 bit Ubuntu Linux. While it is possible to run on Arm-based Single
Board Computers (eg Raspberry Pi), the software works best on x86 systems
such as the Intel NUC.</p>
<p>Use the Puppet repository to install the complete Wattsworth stack</p>
<div class="highlight-bash"><div class="highlight"><pre><span></span>$&gt; sudo apt-get update
$&gt; sudo apt-get install puppet
$&gt; git clone https://git.wattsworth.net/wattsworth/puppet.git
$&gt; <span class="nb">cd</span> puppet
$&gt; sudo puppet apply --modulepath<span class="o">=</span>./modules --verbose site.pp
</pre></div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo">
<a href="index.html">
<img class="logo" src="_static/logo.png" alt="Logo"/>
</a>
</p>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration.html">Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="plugins.html">Plugins</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="index.html" title="previous chapter">The Wattsworth Project</a></li>
<li>Next: <a href="configuration.html" title="next chapter">Configuration</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<div><input type="text" name="q" /></div>
<div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2017, John Donnal, James Paris.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
<a href="_sources/installation.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Plugins &#8212; Wattsworth 1.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/custom.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '1.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="prev" title="Configuration" href="configuration.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head>
<body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="plugins">
<h1>Plugins<a class="headerlink" href="#plugins" title="Permalink to this headline"></a></h1>
<p id="no-plugins"> No plugins are currently installed </p>
<div id="has-plugins">
<p> Click a plugin name below to view the documentation </p>
<table class="table">
<thead>
<tr><th>Name</th><th>Description</th></tr>
</thead>
<tbody id="plugins-table">
</tbody>
</table>
</div>
.. raw:: html
<script type="text/javascript">
//hide the plugins section by default (in case plugins.txt is missing)
$("#has-plugins").hide();
var plugins="";
var nonce=new Date().getTime(); //so we force the browser to get new data
$.ajax({url: `_static/plugins.txt?nonce=${nonce}`, success:
function(result){
plugins = result.split('\n')
.reduce(function(acc,line){
if(line==""||line[0]=="#")
return acc;
acc.push(line.split(',').map(function(x){return x.trim()}));
return acc;
},[])
if(plugins.length>0){
$("#has-plugins").show();
$("#no-plugins").hide();
}
plugins.map(function(plugin){
var link = plugin[2];
var name=`<a href="/${link}">${plugin[0]}</a>`;
var desc = plugin[1];
$("#plugins-table").append(`<tr><td>${name}</td><td>${desc}</td></tr>`)
})
}});
</script></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo">
<a href="index.html">
<img class="logo" src="_static/logo.png" alt="Logo"/>
</a>
</p>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration.html">Configuration</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Plugins</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="configuration.html" title="previous chapter">Configuration</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<div><input type="text" name="q" /></div>
<div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2017, John Donnal, James Paris.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
<a href="_sources/plugins.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>
\ No newline at end of file
......@@ -78,7 +78,30 @@
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"><div class="relations">
<div class="sphinxsidebarwrapper">
<p class="logo">
<a href="index.html">
<img class="logo" src="_static/logo.png" alt="Logo"/>
</a>
</p>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration.html">Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="plugins.html">Plugins</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
......
Search.setIndex({docnames:["index"],envversion:52,filenames:["index.rst"],objects:{},objnames:{},objtypes:{},terms:{"static":0,"while":0,For:0,Use:0,add:0,all:0,appli:0,apt:0,arm:0,avail:0,base:0,been:0,best:0,bit:0,board:0,boot:0,click:0,clone:0,complet:0,comput:0,corrupt:0,data:0,databas:0,dev:0,directli:0,document:0,down:0,dump:0,edit:0,error:0,etc:0,exampl:0,ext4:0,file:0,follow:0,framework:0,frontend:0,fstab:0,get:0,git:0,has:0,http:0,index:0,inform:0,intel:0,interfac:0,joul:0,journal:0,journal_data:0,linux:0,loos:0,machin:0,make:0,modul:0,modular:0,modulepath:0,mount:0,must:0,name:0,namedescript:0,net:0,nilmdb:0,nuc:0,option:0,otherwis:0,page:0,parit:0,partit:0,pass:0,point:0,possibl:0,power:0,prevent:0,process:0,properli:0,puppet:0,raspberri:0,remount:0,repositori:0,root:0,run:0,sda2:0,search:0,see:0,set:0,shut:0,singl:0,site:0,stack:0,sudo:0,sure:0,test:0,thi:0,tune2f:0,type:0,ubuntu:0,updat:0,user:0,uuid:0,verbos:0,view:0,volum:0,web:0,well:0,without:0,work:0,x86:0,xxx:0,you:0,your:0},titles:["The Wattsworth Project"],titleterms:{The:0,activ:0,configur:0,indic:0,instal:0,plugin:0,project:0,softwar:0,system:0,tabl:0,wattsworth:0}})
\ No newline at end of file
Search.setIndex({docnames:["configuration","index","installation","plugins"],envversion:52,filenames:["configuration.rst","index.rst","installation.rst","plugins.rst"],objects:{},objnames:{},objtypes:{},terms:{"0hz":1,"72m":0,"871g":0,"917g":0,"case":[0,1],"class":0,"default":0,"final":0,"new":[0,1],"static":0,"try":1,"while":2,For:[0,1],LTS:[],The:[0,2],There:[0,1],Use:[0,2],Used:0,acceler:1,acquisit:1,across:[],activ:1,add:0,admin:1,administr:1,after:0,alert:0,all:2,alloc:1,alreadi:0,also:0,alwai:0,ani:1,api:1,appear:1,appli:[0,1,2],apt:[1,2],architectur:1,argument:1,arm:2,assign:0,avail:[0,2],averag:1,back:1,backend:1,base:2,bash:[],becom:0,been:2,befor:1,below:[0,1,3],best:2,between:[],bit:2,block:1,board:2,boot:0,both:1,bring:0,browser:1,build:1,built:1,button:1,call:1,can:[0,1],cannot:0,caption:0,captur:0,care:0,carefulli:0,central:[],chang:0,chown:0,cli:1,click:[0,1,3],client:1,clone:[1,2],close:0,cloud:[],code:1,col:0,collect:[0,1],column:1,combin:1,come:1,command:[0,1],complet:2,complex:[0,1],compon:[],compos:[],comput:[0,2],conf:1,confeder:1,configur:1,connect:[0,1],consum:[],content:1,continu:1,copi:1,correct:0,corrupt:0,creat:[0,1],ctrl:1,current:3,danger:0,data:0,databas:[0,1],datatyp:1,demo:1,destin:1,destroi:0,detail:1,dev:0,devic:0,dialog:0,directli:0,disk:[0,1],displai:1,distribut:[],div:0,document:3,down:0,drive:0,dropdown:0,dump:0,each:1,easi:0,easiest:0,easili:[],edit:0,element1:1,element2:1,element:1,engin:1,eras:0,error:0,etc:[0,1],everi:1,exampl:0,example_filt:[],example_read:[],exec_cmd:1,execut:1,expand:1,explain:0,ext4:0,extent:0,extern:[0,1],extra:0,face:1,file:[0,1],filesystem:[0,1],fill:[0,1],filtered1:1,filtered2:1,fine:0,first:0,flexibl:1,float32:1,follow:[0,1],format:0,fresh:1,from:[0,1],frontend:1,fstab:0,full:0,gear:1,gener:0,get:[1,2],git:[1,2],good:0,gpart:0,handl:[],hard:0,harddriv:0,has:[0,1,2],have:[0,1],hdd_gparted_1:0,hdd_gparted_2:0,hdd_gparted_3:0,header:1,help:1,highbandwidth:[],how:0,html:3,http:[1,2],icon:[0,1],idea:0,identifi:0,imag:[],image_tag:0,indent:0,individu:[],inform:[0,1],ini:1,input:1,instal:[0,3],instead:0,instruct:1,intel:2,interfac:1,intuit:1,involv:0,iot:1,its:1,joul:1,journal:0,journal_data:0,just:0,keep:1,label:[],lead:0,left:1,let:1,letter:0,like:0,line:[0,1],linux:2,list:1,local:1,locat:0,log:1,logo:1,look:0,loos:0,lsblk:0,mai:0,main:1,make:0,mani:[0,1],materi:0,mean:0,meet:0,menu:0,mesh:1,meter:0,modul:2,module_config:1,modulepath:[1,2],mono:0,more:[0,1],most:[0,1],mount:0,msdo:0,multipl:[0,1],must:[0,1],name:[0,1,3],namedescript:3,navig:1,need:0,net:[1,2],network:[0,1],next:1,nilm:0,nilmdb:0,node:[0,1],note:0,now:1,nuc:2,number:[0,1],offset:0,one:[0,1],onli:[0,1],open:1,oper:[],opt:0,option:0,order:0,other:[0,1],otherwis:0,our:1,out:0,output:[0,1],own:1,page:1,paramet:1,parit:0,parti:1,partit:0,pass:0,password:1,path:1,permiss:0,pipelin:1,place:0,plot:1,plugin:1,png:0,point:0,possibl:2,power:0,pre:0,prevent:[0,1],primari:0,print:0,problem:1,process:1,processor:0,produc:1,program:[0,1],properli:0,provid:1,puppet:[1,2],rand1:1,rand2:1,random:1,random_read:1,rang:1,raspberri:2,raw:3,read:1,reader:1,readi:1,recent:1,refer:0,refresh:1,remot:1,remount:0,repositori:2,resembl:0,resid:[],resolut:[],restart:1,result:1,retriev:0,root:0,row:0,run:[0,1,2],save:1,sda1:0,sda2:0,sdb:0,sdc1:0,sdx1:0,section:0,see:1,select:0,self:1,sensor:1,seper:0,seri:1,server:1,servic:[0,1],set:[0,1],setup:0,shell:[],should:[0,1],show:[0,1],shown:0,shut:0,sign:0,signal:1,similar:[0,1],simpl:1,simpli:0,sinc:0,singl:[1,2],site:[1,2],situat:[0,1],size:0,softwar:[1,2],solut:1,solv:1,sourc:1,span:0,special:0,specifi:1,stack:[1,2],start:[0,1],step:0,stop:[0,1],storag:1,store:1,stream:1,stream_config:1,sudo:[0,1,2],suffici:1,support:[],sure:0,swap:0,system:[0,2],systemd:[],tabl:0,take:1,tell:1,temperatur:1,termin:1,test:2,text:0,textarea:0,thei:0,thi:[0,1],third:1,through:0,thumbnail:0,time:1,timestamp:1,togeth:1,tool:0,tradit:1,tree:1,tune2f:0,tune:0,two:1,typc:[],type:[0,1],ubuntu:[1,2],uniqu:[0,1],unlik:1,until:1,unus:0,updat:[1,2],usabl:0,use:[0,1],used:0,user:[0,1],using:[0,1],usual:0,uuid:0,verbos:[1,2],veri:0,verifi:0,view:[0,3],visual:1,voltag:1,volum:0,want:0,warn:0,wattsworth:[0,2],web:1,week:1,well:0,when:[0,1],where:0,window:1,without:0,word:0,work:[0,1,2],write:1,written:1,x86:2,xxx:0,xxxx:0,xxxxx:0,xxxxxxxx:0,xxxxxxxxxxxx:0,you:[0,1],your:[0,1]},titles:["Configuration","The Wattsworth Project","Installation","Plugins"],titleterms:{The:1,add:1,configur:0,contribut:1,data:1,filter:1,gener:1,instal:[1,2],modul:1,plugin:3,project:1,quick:[],reader:[],start:[],step:1,storag:0,view:1,wattsworth:1}})
\ No newline at end of file
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