196 lines
11 KiB
HTML
196 lines
11 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" >
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Functionallity — GravityMon 0.5.0 documentation</title><link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||
<!--[if lt IE 9]>
|
||
<script src="_static/js/html5shiv.min.js"></script>
|
||
<![endif]-->
|
||
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||
<script src="_static/jquery.js"></script>
|
||
<script src="_static/underscore.js"></script>
|
||
<script src="_static/doctools.js"></script>
|
||
<script src="_static/language_data.js"></script>
|
||
<script src="_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
<link rel="next" title="Installation" href="installation.html" />
|
||
<link rel="prev" title="Releases" href="releases.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
<a href="index.html" class="icon icon-home"> GravityMon
|
||
</a>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="releases.html">Releases</a></li>
|
||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Functionallity</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="#the-main-differences">The main differences</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#other-features">Other features</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#experimental-features">Experimental features</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#battery-life">Battery life</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#performance">Performance</a></li>
|
||
</ul>
|
||
</li>
|
||
<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="compiling.html">Compiling the software</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="backlog.html">Backlog of changes</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="index.html">GravityMon</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="index.html" class="icon icon-home"></a> »</li>
|
||
<li>Functionallity</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="_sources/functionallity.rst.txt" rel="nofollow"> View page source</a>
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<div class="section" id="functionallity">
|
||
<h1>Functionallity<a class="headerlink" href="#functionallity" title="Permalink to this headline">¶</a></h1>
|
||
<div class="section" id="the-main-differences">
|
||
<h2>The main differences<a class="headerlink" href="#the-main-differences" title="Permalink to this headline">¶</a></h2>
|
||
<ul>
|
||
<li><p><strong>Operates in two modes gravity monitoring and configuration mode</strong></p>
|
||
<p>In <code class="docutils literal notranslate"><span class="pre">gravity</span> <span class="pre">monitoring</span></code> mode it behaves just like the iSpindle, it wakes up at regular intervals, measure angle/tile, temperature, calculates gravity and pushes the data to defined endpoints.</p>
|
||
<p>In <code class="docutils literal notranslate"><span class="pre">configuration</span> <span class="pre">mode</span></code> the device is always active and the webserver is active. Here you can view the angle/tilt values, change configuration options and more. When in this mode you can also interact with the device
|
||
via an REST API so data can be pushed to the device via scripts (see API section for more information)</p>
|
||
<p>You can force the device into <code class="docutils literal notranslate"><span class="pre">configuration</span> <span class="pre">mode</span></code> while measuring gravity. This is useful when calibrating the device so you dont needs to wait for the device to wake up and push the data. The entire calibration
|
||
sequence can be handled via the web interface without need for additional software tools.</p>
|
||
<p><em>See the configuration section for more information on how to trigger the configuration mode.</em></p>
|
||
</li>
|
||
<li><p><strong>Can send data to multiple endpoints at once</strong></p>
|
||
<p>The original iSpindle can only have one destination, this software will push data to all defined endpoints so in theory you can use them all. However this will consume a lot of battery power so use only as many as needed.</p>
|
||
<p>Currently the device supports the following endpoints: http (2 differnt), influxdb2 and Brewfather</p>
|
||
<p>If you want additional targets please raise a feature request in the github repo.</p>
|
||
</li>
|
||
<li><p><strong>Build in function to create gravity formulas, so no need for using other tools for this part</strong></p>
|
||
<p>Another big difference is that this software can create the gravity formula in the device, just enter the angle/gravity data that you have collected. You will also see a graph simulating how the formula would work.</p>
|
||
</li>
|
||
<li><p><strong>Automatic temperature adjustment of gravity reading</strong></p>
|
||
<p>If you want to correct gravity based on beer temperature you can do this in the formula but here is a nice feature that can correct the gravity as a second step making this independant of the formula.</p>
|
||
</li>
|
||
</ul>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>This feature needs more testing to be validated.</p>
|
||
</div>
|
||
<ul>
|
||
<li><p><strong>OTA support from local webserver</strong></p>
|
||
<p>When starting up in configuration mode the device will check for a software update from a local webserver.</p>
|
||
</li>
|
||
<li><p><strong>DS18B20 temperature adjustments</strong></p>
|
||
<p>You can adjust the temperature reading of the temperature sensor.</p>
|
||
</li>
|
||
<li><p><strong>Gyro Movement</strong></p>
|
||
<p>The software will detect if the gyro is moving and if this is the case it will go back to sleep for 60seconds. This way we should avoid faulty measurements.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="other-features">
|
||
<h2>Other features<a class="headerlink" href="#other-features" title="Permalink to this headline">¶</a></h2>
|
||
<ul class="simple">
|
||
<li><p>Support for Celcius and Farenheigt as temperature formats.</p></li>
|
||
<li><p>Support SG (Plato is not yet supported)</p></li>
|
||
<li><p>Gyro data is read 50 times to ensure good accuracy</p></li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="experimental-features">
|
||
<h2>Experimental features<a class="headerlink" href="#experimental-features" title="Permalink to this headline">¶</a></h2>
|
||
<ul>
|
||
<li><p>Use the temperature sensor in the gyro instead of DS18B20</p>
|
||
<p>This works fine when the device has time to cool down between measurements and it saves a few milliseconds (reduced battery consumption). My testing shows that this is quite accurate.
|
||
There is lots of battery power to save, reading the temp sensor takes almost as long as the gyro. This could reduce the run time by 40-50% and probly extend battery life with the same.
|
||
However more testing is required. Might add this as an option in the UI.</p>
|
||
</li>
|
||
</ul>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>This is not enabled by default.</p>
|
||
</div>
|
||
<ul>
|
||
<li><p>Performance measurements</p>
|
||
<p>I’ve also create a small library to measure execution code in some areas of the code that i know is time consuming. This way I can find a good balance between performace and quality.</p>
|
||
<p><em>See the compile section for more information.</em></p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="battery-life">
|
||
<h2>Battery life<a class="headerlink" href="#battery-life" title="Permalink to this headline">¶</a></h2>
|
||
<p>I’m currently measuring battery life of v0.5 but previous versions have been able to measure gravity for a 2-3 weeks without issues. Using 900 seconds as interval.</p>
|
||
<p><em>More on this topics once my tests are done</em></p>
|
||
</div>
|
||
<div class="section" id="performance">
|
||
<h2>Performance<a class="headerlink" href="#performance" title="Permalink to this headline">¶</a></h2>
|
||
<p>Since I have the possibility to measure the performance of different function in the code this is what I have been able to gather.</p>
|
||
<p>The typical runtime in a measurement cycle is approx 2 seconds and in some cases it can take up to 6-8 seconds but this is mainly related to establishing the WIFI connection. So stable wifi is
|
||
essential for long batterylife. Out of the 2 seconds of run-time the major time is spent on gyro readings (1.3s) and temperature measurements of (0.6s) so using the gyro sensor for measureing
|
||
temperature would reduce the total runtime with 25%. Sending data over http takes less than 100ms (on my local network) so this is not drawing much power.</p>
|
||
<p>The image below shows how the run-time varies over time. The pink line is the wifi connection time and this is why the time varies.</p>
|
||
<a class="reference internal image-reference" href="_images/perf1.png"><img alt="Performance view" src="_images/perf1.png" style="width: 800px;" /></a>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="releases.html" class="btn btn-neutral float-left" title="Releases" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="installation.html" class="btn btn-neutral float-right" title="Installation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2021-2022, Magnus Persson.</p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |