1040 lines
78 KiB
HTML
1040 lines
78 KiB
HTML
<!doctype html>
|
||
<html class="no-js">
|
||
<head><meta charset="utf-8"/>
|
||
<meta name="viewport" content="width=device-width,initial-scale=1"/>
|
||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="Compiling the software" href="compiling.html" /><link rel="prev" title="Installation" href="installation.html" />
|
||
|
||
<meta name="generator" content="sphinx-4.4.0, furo 2022.01.02"/>
|
||
<title>Setting up device - GravityMon 0.7.0 documentation</title>
|
||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?digest=df49af52631e7917044a9c21a57f7b83170a6dd0" />
|
||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?digest=fade93df149f7c5fedb3ff897f799dc7d283b420" />
|
||
|
||
|
||
|
||
|
||
<style>
|
||
body {
|
||
--color-code-background: #f8f8f8;
|
||
--color-code-foreground: black;
|
||
|
||
}
|
||
body[data-theme="dark"] {
|
||
--color-code-background: #202020;
|
||
--color-code-foreground: #d0d0d0;
|
||
|
||
}
|
||
@media (prefers-color-scheme: dark) {
|
||
body:not([data-theme="light"]) {
|
||
--color-code-background: #202020;
|
||
--color-code-foreground: #d0d0d0;
|
||
|
||
}
|
||
}
|
||
</style></head>
|
||
<body>
|
||
<script>
|
||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||
</script>
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||
<title>Contents</title>
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
||
<path stroke="none" d="M0 0h24v24H0z" />
|
||
<line x1="4" y1="6" x2="20" y2="6" />
|
||
<line x1="10" y1="12" x2="20" y2="12" />
|
||
<line x1="6" y1="18" x2="20" y2="18" />
|
||
</svg>
|
||
</symbol>
|
||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||
<title>Menu</title>
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||
</svg>
|
||
</symbol>
|
||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||
<title>Expand</title>
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||
<polyline points="9 18 15 12 9 6"></polyline>
|
||
</svg>
|
||
</symbol>
|
||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||
<title>Light mode</title>
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||
<circle cx="12" cy="12" r="5"></circle>
|
||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||
</svg>
|
||
</symbol>
|
||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||
<title>Dark mode</title>
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||
</svg>
|
||
</symbol>
|
||
<symbol id="svg-sun-half" viewBox="0 0 24 24">
|
||
<title>Auto light/dark mode</title>
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-shadow">
|
||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||
<circle cx="12" cy="12" r="9" />
|
||
<path d="M13 12h5" />
|
||
<path d="M13 15h4" />
|
||
<path d="M13 18h1" />
|
||
<path d="M13 9h4" />
|
||
<path d="M13 6h1" />
|
||
</svg>
|
||
</symbol>
|
||
</svg>
|
||
|
||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation">
|
||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc">
|
||
<label class="overlay sidebar-overlay" for="__navigation">
|
||
<div class="visually-hidden">Hide navigation sidebar</div>
|
||
</label>
|
||
<label class="overlay toc-overlay" for="__toc">
|
||
<div class="visually-hidden">Hide table of contents sidebar</div>
|
||
</label>
|
||
|
||
|
||
|
||
<div class="page">
|
||
<header class="mobile-header">
|
||
<div class="header-left">
|
||
<label class="nav-overlay-icon" for="__navigation">
|
||
<div class="visually-hidden">Toggle site navigation sidebar</div>
|
||
<i class="icon"><svg><use href="#svg-menu"></use></svg></i>
|
||
</label>
|
||
</div>
|
||
<div class="header-center">
|
||
<a href="index.html"><div class="brand">GravityMon 0.7.0 documentation</div></a>
|
||
</div>
|
||
<div class="header-right">
|
||
<div class="theme-toggle-container theme-toggle-header">
|
||
<button class="theme-toggle">
|
||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
|
||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg>
|
||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||
</button>
|
||
</div>
|
||
<label class="toc-overlay-icon toc-header-icon" for="__toc">
|
||
<div class="visually-hidden">Toggle table of contents sidebar</div>
|
||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i>
|
||
</label>
|
||
</div>
|
||
</header>
|
||
<aside class="sidebar-drawer">
|
||
<div class="sidebar-container">
|
||
|
||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||
|
||
|
||
<span class="sidebar-brand-text">GravityMon 0.7.0 documentation</span>
|
||
|
||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||
<input type="hidden" name="check_keywords" value="yes">
|
||
<input type="hidden" name="area" value="default">
|
||
</form>
|
||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="license.html">Licence</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="releases.html">Releases</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="functionallity.html">Functionallity</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
|
||
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Setting up device</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="#format-editor">Format editor</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="#create-formula">Create formula</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="#rest-api">REST API</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="#data-formats">Data Formats</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="q_and_a.html">Q & A</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="backlog.html">Backlog of changes</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</aside>
|
||
<div class="main">
|
||
<div class="content">
|
||
<div class="article-container">
|
||
<div class="content-icon-container">
|
||
<div class="theme-toggle-container theme-toggle-content">
|
||
<button class="theme-toggle">
|
||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
|
||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg>
|
||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||
</button>
|
||
</div>
|
||
<label class="toc-overlay-icon toc-content-icon" for="__toc">
|
||
<div class="visually-hidden">Toggle table of contents sidebar</div>
|
||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i>
|
||
</label>
|
||
</div>
|
||
<article role="main">
|
||
<div class="section" id="setting-up-device">
|
||
<span id="id1"></span><h1>Setting up device<a class="headerlink" href="#setting-up-device" title="Permalink to this headline">¶</a></h1>
|
||
<p>The device can operate in two modes and must be in <code class="docutils literal notranslate"><span class="pre">configuration</span> <span class="pre">mode</span></code> in order for the web server to be active.</p>
|
||
<p>One of the following conditions will place the device in <code class="docutils literal notranslate"><span class="pre">configuration</span> <span class="pre">mode</span></code>:</p>
|
||
<ul class="simple">
|
||
<li><p>Gyro has not been calibrated</p></li>
|
||
<li><p>Sleep mode has been disabled in the web interface</p></li>
|
||
<li><p>Placed in horizontal mode 85-90 degrees</p></li>
|
||
<li><p>Charger connected >4.15V</p></li>
|
||
</ul>
|
||
<div class="section" id="status">
|
||
<h2>Status<a class="headerlink" href="#status" title="Permalink to this headline">¶</a></h2>
|
||
<p>URL: (<a class="reference external" href="http://gravmon.local">http://gravmon.local</a>)</p>
|
||
<a class="reference internal image-reference" href="_images/index.png"><img alt="Index page" src="_images/index.png" style="width: 800px;"/></a>
|
||
<p>Configuration is accessed by entering the URL for the device, this will be the mDNS name <em>device.local</em> or the IP adress. The following chapter assumes the device name is <em>gravmon</em>.</p>
|
||
<p>The main page shows the device readings; gravity, angle, temperature and battery charge. If the checkbox is active then the device will never go into sleep mode. This is useful if
|
||
you are collecting angle/tilt for calibration. If this is unchecked the device will change mode as explained before.</p>
|
||
<div class="admonition tip">
|
||
<p class="admonition-title">Tip</p>
|
||
<p>If you are connected to the device via a serial console (speed: 115200) you can see the connection sequence and get the Unique ID and IP adress from there.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="device">
|
||
<h2>Device<a class="headerlink" href="#device" title="Permalink to this headline">¶</a></h2>
|
||
<p>URL: (<a class="reference external" href="http://gravmon.local/device">http://gravmon.local/device</a>)</p>
|
||
<a class="reference internal image-reference" href="_images/device.png"><img alt="Device Settings" src="_images/device.png" style="width: 800px;"/></a>
|
||
<ul>
|
||
<li><p><strong>Version:</strong></p>
|
||
<blockquote>
|
||
<div><p>Installed version of the code and html files.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Device name:</strong></p>
|
||
<blockquote>
|
||
<div><p>This is unique name of the device.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Device ID:</strong></p>
|
||
<blockquote>
|
||
<div><p>This is unique identifier for the device (ESP8266 id), this is required when using the API as an API Key to safeguard against faulty requests.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="configuration">
|
||
<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h2>
|
||
<p>URL: (<a class="reference external" href="http://gravmon.local/config">http://gravmon.local/config</a>)</p>
|
||
<div class="section" id="device-setting">
|
||
<h3>Device Setting<a class="headerlink" href="#device-setting" title="Permalink to this headline">¶</a></h3>
|
||
<a class="reference internal image-reference" href="_images/config1.png"><img alt="Device Settings" src="_images/config1.png" style="width: 800px;"/></a>
|
||
<ul>
|
||
<li><p><strong>Device name:</strong></p>
|
||
<blockquote>
|
||
<div><p>This is unique name for the device. It will be used in pushing data as well as mDNS name on the network (<name>.local)</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Temperature format:</strong></p>
|
||
<blockquote>
|
||
<div><p>Choose between Celsius and Farenheight</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Interval:</strong></p>
|
||
<blockquote>
|
||
<div><p>This defines how long the device should be sleeping between the readings when in <cite>gravity monitoring</cite> mode. You will also see the values in minutes/seconds to easier set the interval. 900s is a recommended interval.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>The sleep interval can be set between 10 - 3600 seconds (60 minutes).</p>
|
||
</div>
|
||
<ul>
|
||
<li><p><strong>Calibration values:</strong></p>
|
||
<blockquote>
|
||
<div><p>These are calibration data for the gyro. Place the device flat on a table and press the button to save the default orientation values. Without this calibration we cannot calculate the correct angle/tilt.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>The device will <strong>not</strong> go into <cite>gravity monitoring</cite> mode unless calibrated</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="push-settings">
|
||
<h3>Push Settings<a class="headerlink" href="#push-settings" title="Permalink to this headline">¶</a></h3>
|
||
<a class="reference internal image-reference" href="_images/config2.png"><img alt="Push Settings" src="_images/config2.png" style="width: 800px;"/></a>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>When enabling SSL this will not validate the root CA of the remote service, this is a design decision based on two aspects. Enabling CA validation will take 3-4s extra on each connection which means way less
|
||
battery life, so the decision is to prioritize battery life over security. The data transmitted is not really that sensitive anyway so I belive this is a good balance.</p>
|
||
</div>
|
||
<ul>
|
||
<li><p><strong>HTTP URL 1:</strong></p>
|
||
<blockquote>
|
||
<div><p>Endpoint to send data via http. Default format used Format used <a class="reference internal" href="#data-formats-ispindle"><span class="std std-ref">iSpindle format</span></a>. You can customize the format using <a class="reference internal" href="#format-editor"><span class="std std-ref">Format editor</span></a>.</p>
|
||
<p>If you add the prefix <cite>https://</cite> then the device will use SSL when sending data.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>HTTP URL 2:</strong></p>
|
||
<blockquote>
|
||
<div><p>Endpoint to send data via http. Default format used <a class="reference internal" href="#data-formats-ispindle"><span class="std std-ref">iSpindle format</span></a>. You can customize the format using <a class="reference internal" href="#format-editor"><span class="std std-ref">Format editor</span></a>.</p>
|
||
<p>If you add the prefix <cite>https://</cite> then the device will use SSL when sending data.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Brewfather URL:</strong></p>
|
||
<blockquote>
|
||
<div><p>Endpoint to send data via http to brewfather. Format used <a class="reference internal" href="#data-formats-brewfather"><span class="std std-ref">Brewfather format</span></a></p>
|
||
<p>SSL is not supported for this target.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Influx DB v2 URL:</strong></p>
|
||
<blockquote>
|
||
<div><p>Endpoint to send data via http to InfluxDB. Format used <a class="reference internal" href="#data-formats-influxdb2"><span class="std std-ref">Influx DB v2</span></a>. You can customize the format using <a class="reference internal" href="#format-editor"><span class="std std-ref">Format editor</span></a>.</p>
|
||
<p>SSL is not supported for this target. Raise a issue on github if this is wanted.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Influx DB v2 Organisation:</strong></p>
|
||
<blockquote>
|
||
<div><p>Name of organisation in Influx.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Influx DB v2 Bucket:</strong></p>
|
||
<blockquote>
|
||
<div><p>Identifier for bucket.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Influx DB v2 Token:</strong></p>
|
||
<blockquote>
|
||
<div><p>Token with write access to bucket.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>MQTT server:</strong></p>
|
||
<blockquote>
|
||
<div><p>IP or name of server to send data to. Default format used <a class="reference internal" href="#data-formats-mqtt"><span class="std std-ref">MQTT</span></a>. You can customize the format using <a class="reference internal" href="#format-editor"><span class="std std-ref">Format editor</span></a>.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>MQTT Port:</strong></p>
|
||
<blockquote>
|
||
<div><p>Which port should be used for communication, default is 1883 (standard port). For SSL use 8883 (any port over 8000 is treated as SSL).</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>MQTT user:</strong></p>
|
||
<blockquote>
|
||
<div><p>Username or blank if anonymous is accepted</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>MQTT password:</strong></p>
|
||
<blockquote>
|
||
<div><p>Password or blank if anonymous is accepted</p>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="gravity-settings">
|
||
<h3>Gravity Settings<a class="headerlink" href="#gravity-settings" title="Permalink to this headline">¶</a></h3>
|
||
<a class="reference internal image-reference" href="_images/config3.png"><img alt="Gravity Settings" src="_images/config3.png" style="width: 800px;"/></a>
|
||
<ul>
|
||
<li><p><strong>Gravity format:</strong></p>
|
||
<blockquote>
|
||
<div><p>Gravity format can be eihter <cite>SG</cite> or <cite>Plato</cite>. The device will use SG Internally and convert to Plato when displaying data.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Gravity formula:</strong></p>
|
||
<blockquote>
|
||
<div><p>Gravity formula is compatible with standard iSpindle formulas so any existing calculation option can be used. You can also use
|
||
the feature to create the formula by supplying the raw data. See <a class="reference internal" href="#create-formula"><span class="std std-ref">Create formula</span></a></p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Temperature correct gravity:</strong></p>
|
||
<blockquote>
|
||
<div><p>Will apply a temperature calibration formula to the gravity as a second step.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>This formula assumes that the calibration has been done at 20°C / 68°F.</p>
|
||
</div>
|
||
<p>Formula used in temperature correction.</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">gravity</span><span class="o">*</span><span class="p">((</span><span class="mf">1.00130346</span><span class="o">-</span><span class="mf">0.000134722124</span><span class="o">*</span><span class="n">temp</span><span class="o">+</span><span class="mf">0.00000204052596</span><span class="o">*</span><span class="n">temp</span><span class="o">^</span><span class="mi">2</span><span class="o">-</span><span class="mf">0.00000000232820948</span><span class="o">*</span><span class="n">temp</span><span class="o">^</span><span class="mi">3</span><span class="p">)</span><span class="o">/</span>
|
||
<span class="p">(</span><span class="mf">1.00130346</span><span class="o">-</span><span class="mf">0.000134722124</span><span class="o">*</span><span class="n">cal</span><span class="o">+</span><span class="mf">0.00000204052596</span><span class="o">*</span><span class="n">cal</span><span class="o">^</span><span class="mi">2</span><span class="o">-</span><span class="mf">0.00000000232820948</span><span class="o">*</span><span class="n">cal</span><span class="o">^</span><span class="mi">3</span><span class="p">))</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="hardware-settings">
|
||
<h3>Hardware Settings<a class="headerlink" href="#hardware-settings" title="Permalink to this headline">¶</a></h3>
|
||
<a class="reference internal image-reference" href="_images/config4.png"><img alt="Hardware Settings" src="_images/config4.png" style="width: 800px;"/></a>
|
||
<ul>
|
||
<li><p><strong>Voltage factor:</strong></p>
|
||
<blockquote>
|
||
<div><p>Factor used to calcualate the battery voltage. If you get a too low/high voltage you can adjust this value.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Temperature correction:</strong></p>
|
||
<blockquote>
|
||
<div><p>This value will be added to the temperature reading (negative value will reduce temperature reading). This is applied
|
||
when the device starts. So changing this will not take affect until the device is restarted.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>Gyro Temperature:</strong></p>
|
||
<blockquote>
|
||
<div><p>Enable this feature will use the temp sensor i the gyro instead of the DS18B20, the benefit is shorter run time and
|
||
longer battery life (this is an experimental feature). The value used is the first temperature reading from when the
|
||
device is activated, since the gyro should be cool this is reflecting the surronding temperature. After it has
|
||
been running the value would be totally off.</p>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p><strong>OTA URL:</strong></p>
|
||
<blockquote>
|
||
<div><p>Should point to a URL where the .bin file + version.json file is located.</p>
|
||
<p>For the OTA to work, place the following files (version.json + firmware.bin) at the location that you pointed out in OTA URL. If the version number in the json file is newer than in the
|
||
code the update will be done during startup.</p>
|
||
<p>If you have the previx <cite>https://</cite> then the device will use secure transfer without CA validation.</p>
|
||
<p>Example; OTA URL (don’t forget trailing dash), the name of the file should be firmware.bin</p>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="mf">192.168.1.1</span><span class="o">/</span><span class="n">firmware</span><span class="o">/</span><span class="n">gravmon</span><span class="o">/</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="format-editor">
|
||
<span id="id2"></span><h1>Format editor<a class="headerlink" href="#format-editor" title="Permalink to this headline">¶</a></h1>
|
||
<p>To reduce the need for adding custom endpoints for various services there is an built in format editor that allows the user to customize the format being sent to the push target.</p>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>Since the format templates can be big this function can be quite slow on a small device such as the esp8266.</p>
|
||
</div>
|
||
<a class="reference internal image-reference" href="_images/format.png"><img alt="Format editor" src="_images/format.png" style="width: 800px;"/></a>
|
||
<p>You enter the format data in the text field and the test button will show an example on what the output would look like. If the data cannot be formatted in json it will just be displayed as a long string.
|
||
The save button will save the current formla and reload the data from the device.</p>
|
||
<div class="admonition tip">
|
||
<p class="admonition-title">Tip</p>
|
||
<p>If you save a blank string the default template will be loaded.</p>
|
||
</div>
|
||
<p>These are the format keys available for use in the format.</p>
|
||
<div class="table-wrapper"><table class="colwidths-given docutils align-default" id="id6">
|
||
<caption><span class="caption-text">Directory structure</span><a class="headerlink" href="#id6" title="Permalink to this table">¶</a></caption>
|
||
<colgroup>
|
||
<col style="width: 30%"/>
|
||
<col style="width: 50%"/>
|
||
<col style="width: 20%"/>
|
||
</colgroup>
|
||
<thead>
|
||
<tr class="row-odd"><th class="head"><p>key</p></th>
|
||
<th class="head"><p>description</p></th>
|
||
<th class="head"><p>example</p></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="row-even"><td><p>${mdns}</p></td>
|
||
<td><p>Name of the device</p></td>
|
||
<td><p>gravmon2</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p>${id}</p></td>
|
||
<td><p>Unique id of the device</p></td>
|
||
<td><p>e422a3</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p>${sleep-interval}</p></td>
|
||
<td><p>Seconds between data is pushed</p></td>
|
||
<td><p>900</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p>${temp}</p></td>
|
||
<td><p>Temperature in format configured on device, one decimal</p></td>
|
||
<td><p>21.2</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p>${temp-c}</p></td>
|
||
<td><p>Temperature in C, one decimal</p></td>
|
||
<td><p>21.2</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p>${temp-f}</p></td>
|
||
<td><p>Temperature in F, one decimal</p></td>
|
||
<td><p>58.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p>${temp-unit}</p></td>
|
||
<td><p>Temperature format <cite>C</cite> or <cite>F</cite></p></td>
|
||
<td><p>C</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p>${battery}</p></td>
|
||
<td><p>Battery voltage, two decimals</p></td>
|
||
<td><p>3.89</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p>${rssi}</p></td>
|
||
<td><p>Wifi signal strength</p></td>
|
||
<td><p>-75</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p>${run-time}</p></td>
|
||
<td><p>How long the last measurement took, two decimals</p></td>
|
||
<td><p>3.87</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p>${angle}</p></td>
|
||
<td><p>Angle of the gyro, two decimals</p></td>
|
||
<td><p>28.67</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p>${tilt}</p></td>
|
||
<td><p>Same as angle.</p></td>
|
||
<td><p>28.67</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p>${gravity}</p></td>
|
||
<td><p>Calculated gravity, 4 decimals for SG and 1 for Plato.</p></td>
|
||
<td><p>1.0456</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p>${gravity-sg}</p></td>
|
||
<td><p>Calculated gravity in SG, 4 decimals</p></td>
|
||
<td><p>1.0456</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p>${gravity-plato}</p></td>
|
||
<td><p>Calculated gravity in Plato, 1 decimal</p></td>
|
||
<td><p>8.5</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p>${corr-gravity}</p></td>
|
||
<td><p>Temperature corrected gravity, 4 decimals for SG and 1 for Plato.</p></td>
|
||
<td><p>1.0456</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p>${corr-gravity-sg}</p></td>
|
||
<td><p>Temperature corrected gravity in SG, 4 decimals</p></td>
|
||
<td><p>1.0456</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p>${corr-gravity-plato}</p></td>
|
||
<td><p>Temperature corrected gravity in Plato, 1 decimal</p></td>
|
||
<td><p>8.5</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p>${gravity-unit}</p></td>
|
||
<td><p>Gravity format, <cite>G</cite> or <cite>P</cite></p></td>
|
||
<td><p>G</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table></div>
|
||
</div>
|
||
<div class="section" id="create-formula">
|
||
<span id="id3"></span><h1>Create formula<a class="headerlink" href="#create-formula" title="Permalink to this headline">¶</a></h1>
|
||
<a class="reference internal image-reference" href="_images/formula1.png"><img alt="Formula data" src="_images/formula1.png" style="width: 800px;"/></a>
|
||
<p>Here you can enter up to 5 values (angles + gravity) that is then used to create the formula. Angles equal to zero will be regarded as empty even if there is a gravity reading.</p>
|
||
<a class="reference internal image-reference" href="_images/formula2.png"><img alt="Formula graph" src="_images/formula2.png" style="width: 800px;"/></a>
|
||
<p>Once the formula is created a graph over the entered values and a simulation of the formula will give you a nice overview on how the formula will work.</p>
|
||
</div>
|
||
<div class="section" id="rest-api">
|
||
<span id="id4"></span><h1>REST API<a class="headerlink" href="#rest-api" title="Permalink to this headline">¶</a></h1>
|
||
<p>All the API’s use a key called <code class="docutils literal notranslate"><span class="pre">ID</span></code> which is the unique device id (chip id). This is used as an API key when sending requests to the device.</p>
|
||
<div class="section" id="get-api-config">
|
||
<h2>GET: /api/config<a class="headerlink" href="#get-api-config" title="Permalink to this headline">¶</a></h2>
|
||
<p>Retrive the current configuation of the device via an HTTP GET command. Payload is in JSON format.</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">temp-format</span></code> can be either <code class="docutils literal notranslate"><span class="pre">C</span></code> or <code class="docutils literal notranslate"><span class="pre">F</span></code></p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">gravity-format</span></code> is always <code class="docutils literal notranslate"><span class="pre">G</span></code> (plato is not yet supported)</p></li>
|
||
</ul>
|
||
<p>Other parameters are the same as in the configuration guide.</p>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mdns"</span><span class="p">:</span><span class="w"> </span><span class="s2">"gravmon"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ee1bfc"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ota-url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://192.168.1.50:80/firmware/gravmon/"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temp-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"brewfather-push"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://log.brewfather.net/stream?id=Qwerty"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"http-push"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://192.168.1.50:9090/api/v1/Qwerty/telemetry"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"http-push2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://192.168.1.50/ispindel"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"influxdb2-push"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://192.168.1.50:8086"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"influxdb2-org"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Qwerty"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"influxdb2-bucket"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Qwerty"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"influxdb2-auth"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Qwerty"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mqtt-push"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.50"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mqtt-port"</span><span class="p">:</span><span class="w"> </span><span class="mi">1883</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mqtt-user"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Qwerty"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mqtt-pass"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Qwerty"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"sleep-interval"</span><span class="p">:</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"voltage-factor"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.59</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity-formula"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.0*tilt^3+0.0*tilt^2+0.0017978*tilt+0.9436"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"G"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temp-adjustment-value"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity-temp-adjustment"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gyro-temp"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gyro-calibration-data"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ax"</span><span class="p">:</span><span class="w"> </span><span class="mi">-330</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ay"</span><span class="p">:</span><span class="w"> </span><span class="mi">-2249</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"az"</span><span class="p">:</span><span class="w"> </span><span class="mi">1170</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gx"</span><span class="p">:</span><span class="w"> </span><span class="mi">99</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gy"</span><span class="p">:</span><span class="w"> </span><span class="mi">-6</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gz"</span><span class="p">:</span><span class="w"> </span><span class="mi">4</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">},</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"angle"</span><span class="p">:</span><span class="w"> </span><span class="mf">90.93</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.105</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"battery"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.04</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="get-api-device">
|
||
<h2>GET: /api/device<a class="headerlink" href="#get-api-device" title="Permalink to this headline">¶</a></h2>
|
||
<p>Retrive the current device settings via an HTTP GET command. Payload is in JSON format.</p>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"app-name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"GravityMon "</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"app-ver"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.0.0"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ee1bfc"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mdns"</span><span class="p">:</span><span class="w"> </span><span class="s2">"gravmon"</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="get-api-status">
|
||
<h2>GET: /api/status<a class="headerlink" href="#get-api-status" title="Permalink to this headline">¶</a></h2>
|
||
<p>Retrive the current device status via an HTTP GET command. Payload is in JSON format.</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">temp-format</span></code> can be either <code class="docutils literal notranslate"><span class="pre">C</span></code> or <code class="docutils literal notranslate"><span class="pre">F</span></code></p></li>
|
||
</ul>
|
||
<p>Other parameters are the same as in the configuration guide.</p>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ee1bfc"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"angle"</span><span class="p">:</span><span class="w"> </span><span class="mf">89.86</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.1052</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity-tempcorr"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.1031</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temp-c"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temp-f"</span><span class="p">:</span><span class="w"> </span><span class="mi">32</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"battery"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temp-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"sleep-mode"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rssi"</span><span class="p">:</span><span class="w"> </span><span class="mi">-56</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="get-api-config-formula">
|
||
<h2>GET: /api/config/formula<a class="headerlink" href="#get-api-config-formula" title="Permalink to this headline">¶</a></h2>
|
||
<p>Retrive the data used for formula calculation data via an HTTP GET command. Payload is in JSON format.</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">a1</span></code>-<code class="docutils literal notranslate"><span class="pre">a4</span></code> are the angles/tilt readings (up to 5 are currently supported)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">g1</span></code>-<code class="docutils literal notranslate"><span class="pre">g4</span></code> are the corresponding gravity reaadings in SG or Plato depending on the device-format.</p></li>
|
||
</ul>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ee1bfc"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a1"</span><span class="p">:</span><span class="w"> </span><span class="mf">22.4</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a2"</span><span class="p">:</span><span class="w"> </span><span class="mf">54.4</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a3"</span><span class="p">:</span><span class="w"> </span><span class="mi">58</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a4"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a5"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"g1"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"g2"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.053</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"g3"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.062</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"g4"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"g5"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"G"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity-formula"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.0*tilt^3+0.0*tilt^2+0.0017978*tilt+0.9436"</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="post-api-config-device">
|
||
<h2>POST: /api/config/device<a class="headerlink" href="#post-api-config-device" title="Permalink to this headline">¶</a></h2>
|
||
<p>Used to update device settings via an HTTP POST command. Payload is in JSON format.</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">temp-format</span></code> can be either <code class="docutils literal notranslate"><span class="pre">C</span></code> (Celcius) or <code class="docutils literal notranslate"><span class="pre">F</span></code> (Farenheight)</p></li>
|
||
</ul>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ee1bfc"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mdns"</span><span class="p">:</span><span class="w"> </span><span class="s2">"gravmon"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temp-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"sleep-interval"</span><span class="p">:</span><span class="w"> </span><span class="mi">30</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="post-api-config-push">
|
||
<h2>POST: /api/config/push<a class="headerlink" href="#post-api-config-push" title="Permalink to this headline">¶</a></h2>
|
||
<p>Used to update push settings via an HTTP POST command. Payload is in JSON format.</p>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ee1bfc"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"http-push"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://192.168.1.50/ispindel"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"http-push2"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"brewfather-push"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"influxdb2-push"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://192.168.1.50:8086"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"influxdb2-org"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Qwerty"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"influxdb2-bucket"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Qwerty"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"influxdb2-auth"</span><span class="p">:</span><span class="w"> </span><span class="nt">"Qwerty"</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mqtt-push"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.50"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mqtt-port"</span><span class="p">:</span><span class="w"> </span><span class="mi">1883</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mqtt-user"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Qwerty"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"mqtt-pass"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Qwerty"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="post-api-config-gravity">
|
||
<h2>POST: /api/config/gravity<a class="headerlink" href="#post-api-config-gravity" title="Permalink to this headline">¶</a></h2>
|
||
<p>Used to update gravity settings via an HTTP POST command. Payload is in JSON format.</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">gravity-formula</span></code> keywords <code class="docutils literal notranslate"><span class="pre">temp</span></code> and <code class="docutils literal notranslate"><span class="pre">tilt</span></code> are supported.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">gravity-format</span></code> can be either <code class="docutils literal notranslate"><span class="pre">G</span></code> (SG) or <code class="docutils literal notranslate"><span class="pre">P</span></code> (PLATO)</p></li>
|
||
</ul>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">gravity-temp-adjustment</span></code> is defined as “on” or “off” when posting since this is the output values
|
||
from a checkbox, when reading data it’s sent as boolean (true,false).</p>
|
||
</div>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ee1bfc"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity-formula"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.0*tilt^3+0.0*tilt^2+0.0017978*tilt+0.9436"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"P"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity-temp-adjustment"</span><span class="p">:</span><span class="w"> </span><span class="s2">"off"</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="post-api-config-hardware">
|
||
<h2>POST: /api/config/hardware<a class="headerlink" href="#post-api-config-hardware" title="Permalink to this headline">¶</a></h2>
|
||
<p>Used to update hardware settings via an HTTP POST command. Payload is in JSON format.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">gyro-temp</span></code> is defined as “on” or “off” when posting since this is the output values from a checkbox, when
|
||
reading data it’s sent as boolean (true,false).</p>
|
||
</div>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ee1bfc"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"voltage-factor"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.59</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temp-adjustment"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gyro-temp"</span><span class="p">:</span><span class="w"> </span><span class="s2">"off"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ota-url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://192.168.1.50/firmware/gravmon/"</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="post-api-config-formula">
|
||
<h2>POST: /api/config/formula<a class="headerlink" href="#post-api-config-formula" title="Permalink to this headline">¶</a></h2>
|
||
<p>Used to update formula calculation data via an HTTP POST command. Payload is in JSON format.</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">a1</span></code>-<code class="docutils literal notranslate"><span class="pre">a4</span></code> are the angles/tilt readings (up to 5 are currently supported)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">g1</span></code>-<code class="docutils literal notranslate"><span class="pre">g4</span></code> are the corresponding gravity reaadings (in SG)</p></li>
|
||
</ul>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ee1bfc"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a1"</span><span class="p">:</span><span class="w"> </span><span class="mf">22.4</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a2"</span><span class="p">:</span><span class="w"> </span><span class="mf">54.4</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a3"</span><span class="p">:</span><span class="w"> </span><span class="mi">58</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a4"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"a5"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"g1"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.000</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"g2"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.053</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"g3"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.062</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"g4"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"g5"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="calling-the-api-s-from-python">
|
||
<h2>Calling the API’s from Python<a class="headerlink" href="#calling-the-api-s-from-python" title="Permalink to this headline">¶</a></h2>
|
||
<p>Here is some example code for how to access the API’s from a python script. Keys should always be
|
||
present or the API call will fail.</p>
|
||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">requests</span>
|
||
<span class="kn">import</span> <span class="nn">json</span>
|
||
|
||
<span class="n">host</span> <span class="o">=</span> <span class="s2">"192.168.1.1"</span> <span class="c1"># IP adress (or name) of the device to send these settings to</span>
|
||
<span class="nb">id</span> <span class="o">=</span> <span class="s2">"ee1bfc"</span> <span class="c1"># Device ID (shown in serial console during startup or in UI)</span>
|
||
|
||
<span class="k">def</span> <span class="nf">set_config</span><span class="p">(</span> <span class="n">url</span><span class="p">,</span> <span class="n">json</span> <span class="p">):</span>
|
||
<span class="n">headers</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"ContentType"</span><span class="p">:</span> <span class="s2">"application/json"</span> <span class="p">}</span>
|
||
<span class="nb">print</span><span class="p">(</span> <span class="n">url</span> <span class="p">)</span>
|
||
<span class="n">resp</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span> <span class="n">url</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">json</span> <span class="p">)</span>
|
||
<span class="k">if</span> <span class="n">resp</span><span class="o">.</span><span class="n">status_code</span> <span class="o">!=</span> <span class="mi">200</span> <span class="p">:</span>
|
||
<span class="nb">print</span> <span class="p">(</span> <span class="s2">"Failed "</span> <span class="p">)</span>
|
||
<span class="k">else</span> <span class="p">:</span>
|
||
<span class="nb">print</span> <span class="p">(</span> <span class="s2">"Success "</span> <span class="p">)</span>
|
||
|
||
<span class="n">url</span> <span class="o">=</span> <span class="s2">"http://"</span> <span class="o">+</span> <span class="n">host</span> <span class="o">+</span> <span class="s2">"/api/config/device"</span>
|
||
<span class="n">json</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"id"</span><span class="p">:</span> <span class="nb">id</span><span class="p">,</span>
|
||
<span class="s2">"mdns"</span><span class="p">:</span> <span class="s2">"gravmon"</span><span class="p">,</span> <span class="c1"># Name of the device</span>
|
||
<span class="s2">"temp-format"</span><span class="p">:</span> <span class="s2">"C"</span><span class="p">,</span> <span class="c1"># Temperature format C or F</span>
|
||
<span class="s2">"sleep-interval"</span><span class="p">:</span> <span class="mi">30</span> <span class="c1"># Sleep interval in seconds</span>
|
||
<span class="p">}</span>
|
||
<span class="n">set_config</span><span class="p">(</span> <span class="n">url</span><span class="p">,</span> <span class="n">json</span> <span class="p">)</span>
|
||
|
||
<span class="n">url</span> <span class="o">=</span> <span class="s2">"http://"</span> <span class="o">+</span> <span class="n">host</span> <span class="o">+</span> <span class="s2">"/api/config/push"</span>
|
||
<span class="n">json</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"id"</span><span class="p">:</span> <span class="nb">id</span><span class="p">,</span>
|
||
<span class="s2">"http-push"</span><span class="p">:</span> <span class="s2">"http://192.168.1.1/ispindel"</span><span class="p">,</span>
|
||
<span class="s2">"http-push2"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
||
<span class="s2">"brewfather-push"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
||
<span class="s2">"influxdb2-push"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
||
<span class="s2">"influxdb2-org"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
||
<span class="s2">"influxdb2-bucket"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
||
<span class="s2">"influxdb2-auth"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
||
<span class="s2">"mqtt-push"</span><span class="p">:</span> <span class="s2">"192.168.1.50"</span><span class="p">,</span>
|
||
<span class="s2">"mqtt-port"</span><span class="p">:</span> <span class="mi">1883</span><span class="p">,</span>
|
||
<span class="s2">"mqtt-user"</span><span class="p">:</span> <span class="s2">"Qwerty"</span><span class="p">,</span>
|
||
<span class="s2">"mqtt-pass"</span><span class="p">:</span> <span class="s2">"Qwerty"</span>
|
||
<span class="p">}</span>
|
||
<span class="n">set_config</span><span class="p">(</span> <span class="n">url</span><span class="p">,</span> <span class="n">json</span> <span class="p">)</span>
|
||
|
||
<span class="n">url</span> <span class="o">=</span> <span class="s2">"http://"</span> <span class="o">+</span> <span class="n">host</span> <span class="o">+</span> <span class="s2">"/api/config/gravity"</span>
|
||
<span class="n">json</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"id"</span><span class="p">:</span> <span class="nb">id</span><span class="p">,</span>
|
||
<span class="s2">"gravity-formula"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
||
<span class="s2">"gravity-format"</span><span class="p">:</span> <span class="s2">"P"</span><span class="p">,</span>
|
||
<span class="s2">"gravity-temp-adjustment"</span><span class="p">:</span> <span class="s2">"off"</span> <span class="c1"># Adjust gravity (on/off)</span>
|
||
<span class="p">}</span>
|
||
<span class="n">set_config</span><span class="p">(</span> <span class="n">url</span><span class="p">,</span> <span class="n">json</span> <span class="p">)</span>
|
||
|
||
<span class="n">url</span> <span class="o">=</span> <span class="s2">"http://"</span> <span class="o">+</span> <span class="n">host</span> <span class="o">+</span> <span class="s2">"/api/config/hardware"</span>
|
||
<span class="n">json</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"id"</span><span class="p">:</span> <span class="nb">id</span><span class="p">,</span>
|
||
<span class="s2">"voltage-factor"</span><span class="p">:</span> <span class="mf">1.59</span><span class="p">,</span> <span class="c1"># Default value for voltage calculation</span>
|
||
<span class="s2">"temp-adjustment"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="c1"># If temp sensor needs to be corrected</span>
|
||
<span class="s2">"gyro-temp"</span><span class="p">:</span> <span class="s2">"on"</span><span class="p">,</span> <span class="c1"># Use the temp sensor in the gyro instead (on/off)</span>
|
||
<span class="s2">"ota-url"</span><span class="p">:</span> <span class="s2">""</span> <span class="c1"># if the device should seach for a new update when active</span>
|
||
<span class="p">}</span>
|
||
<span class="n">set_config</span><span class="p">(</span> <span class="n">url</span><span class="p">,</span> <span class="n">json</span> <span class="p">)</span>
|
||
|
||
<span class="n">url</span> <span class="o">=</span> <span class="s2">"http://"</span> <span class="o">+</span> <span class="n">host</span> <span class="o">+</span> <span class="s2">"/api/formula"</span>
|
||
<span class="n">json</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"id"</span><span class="p">:</span> <span class="nb">id</span><span class="p">,</span>
|
||
<span class="s2">"a1"</span><span class="p">:</span> <span class="mf">22.4</span><span class="p">,</span>
|
||
<span class="s2">"a2"</span><span class="p">:</span> <span class="mf">54.4</span><span class="p">,</span>
|
||
<span class="s2">"a3"</span><span class="p">:</span> <span class="mi">58</span><span class="p">,</span>
|
||
<span class="s2">"a4"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||
<span class="s2">"a5"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||
<span class="s2">"g1"</span><span class="p">:</span> <span class="mf">1.000</span><span class="p">,</span>
|
||
<span class="s2">"g2"</span><span class="p">:</span> <span class="mf">1.053</span><span class="p">,</span>
|
||
<span class="s2">"g3"</span><span class="p">:</span> <span class="mf">1.062</span><span class="p">,</span>
|
||
<span class="s2">"g4"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||
<span class="s2">"g5"</span><span class="p">:</span> <span class="mi">1</span>
|
||
<span class="p">}</span>
|
||
<span class="n">set_config</span><span class="p">(</span> <span class="n">url</span><span class="p">,</span> <span class="n">json</span> <span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="data-formats">
|
||
<span id="id5"></span><h1>Data Formats<a class="headerlink" href="#data-formats" title="Permalink to this headline">¶</a></h1>
|
||
<div class="section" id="ispindle-format">
|
||
<span id="data-formats-ispindle"></span><h2>iSpindle format<a class="headerlink" href="#ispindle-format" title="Permalink to this headline">¶</a></h2>
|
||
<p>This is the format used for standard http posts.</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">corr-gravity</span></code> is an extended parameter containing a temperature corrected gravity reading.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">gravity-format</span></code> is an extended parameter containing the gravity format (G or P).</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">run-time</span></code> is an extended parameter containing the number of seconds the execution took.</p></li>
|
||
</ul>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"name"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"gravmon"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"ID"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2E6753"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"token"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"gravmon"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"interval"</span><span class="p">:</span><span class="w"> </span><span class="mi">900</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temperature"</span><span class="p">:</span><span class="w"> </span><span class="mf">20.5</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temp-units"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.0050</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"angle"</span><span class="p">:</span><span class="w"> </span><span class="mf">45.34</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"battery"</span><span class="p">:</span><span class="w"> </span><span class="mf">3.67</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"rssi"</span><span class="p">:</span><span class="w"> </span><span class="mi">-12</span><span class="p">,</span><span class="w"></span>
|
||
|
||
<span class="w"> </span><span class="nt">"corr-gravity"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.0050</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity-unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"G"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"run-time"</span><span class="p">:</span><span class="w"> </span><span class="mi">6</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>This is the format template used to create the json above.</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>{
|
||
"name" : "gravmon",
|
||
"ID": "${id}",
|
||
"token" : "gravmon",
|
||
"interval": ${sleep-interval},
|
||
"temperature": ${temp},
|
||
"temp-units": "${temp-unit}",
|
||
"gravity": ${gravity},
|
||
"angle": ${angle},
|
||
"battery": ${battery},
|
||
"rssi": ${rssi},
|
||
"corr-gravity": ${corr-gravity},
|
||
"gravity-unit": "${gravity-unit}",
|
||
"run-time": ${run-time}
|
||
}
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="brewfather-format">
|
||
<span id="data-formats-brewfather"></span><h2>Brewfather format<a class="headerlink" href="#brewfather-format" title="Permalink to this headline">¶</a></h2>
|
||
<p>This is the format for Brewfather. See: <a class="reference external" href="https://docs.brewfather.app/integrations/custom-stream">Brewfather API docs</a></p>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"name"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"gravmon"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temp"</span><span class="p">:</span><span class="w"> </span><span class="mf">20.5</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"temp_unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"battery"</span><span class="p">:</span><span class="w"> </span><span class="mf">3.67</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.0050</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"gravity_unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"G"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="influx-db-v2">
|
||
<span id="data-formats-influxdb2"></span><h2>Influx DB v2<a class="headerlink" href="#influx-db-v2" title="Permalink to this headline">¶</a></h2>
|
||
<p>This is the format for InfluxDB v2</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">measurement</span><span class="p">,</span><span class="n">host</span><span class="o">=<</span><span class="n">mdns</span><span class="o">></span><span class="p">,</span><span class="n">device</span><span class="o">=<</span><span class="nb">id</span><span class="o">></span><span class="p">,</span><span class="n">temp</span><span class="o">-</span><span class="nb">format</span><span class="o">=<</span><span class="n">C</span><span class="o">|</span><span class="n">F</span><span class="o">></span><span class="p">,</span><span class="n">gravity</span><span class="o">-</span><span class="nb">format</span><span class="o">=</span><span class="n">SG</span><span class="p">,</span><span class="n">gravity</span><span class="o">=</span><span class="mf">1.0004</span><span class="p">,</span><span class="n">corr</span><span class="o">-</span><span class="n">gravity</span><span class="o">=</span><span class="mf">1.0004</span><span class="p">,</span><span class="n">angle</span><span class="o">=</span><span class="mf">45.45</span><span class="p">,</span><span class="n">temp</span><span class="o">=</span><span class="mf">20.1</span><span class="p">,</span><span class="n">battery</span><span class="o">=</span><span class="mf">3.96</span><span class="p">,</span><span class="n">rssi</span><span class="o">=-</span><span class="mi">18</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>This is the format template used to create the json above.</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>measurement,host=${mdns},device=${id},temp-format=${temp-unit},gravity-format=${gravity-unit} gravity=${gravity},corr-gravity=${corr-gravity},angle=${angle},temp=${temp},battery=${battery},rssi=${rssi}
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="mqtt">
|
||
<span id="data-formats-mqtt"></span><h2>MQTT<a class="headerlink" href="#mqtt" title="Permalink to this headline">¶</a></h2>
|
||
<p>This is the format used to send data to MQTT. Each of the lines are specific topics</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ispindel</span><span class="o">/</span><span class="n">device_name</span><span class="o">/</span><span class="n">tilt</span> <span class="mf">89.96796</span>
|
||
<span class="n">ispindel</span><span class="o">/</span><span class="n">device_name</span><span class="o">/</span><span class="n">temperature</span> <span class="mf">21.375</span>
|
||
<span class="n">ispindel</span><span class="o">/</span><span class="n">device_name</span><span class="o">/</span><span class="n">temp_units</span> <span class="n">C</span>
|
||
<span class="n">ispindel</span><span class="o">/</span><span class="n">device_name</span><span class="o">/</span><span class="n">battery</span> <span class="mf">0.04171</span>
|
||
<span class="n">ispindel</span><span class="o">/</span><span class="n">device_name</span><span class="o">/</span><span class="n">gravity</span> <span class="mf">33.54894</span>
|
||
<span class="n">ispindel</span><span class="o">/</span><span class="n">device_name</span><span class="o">/</span><span class="n">interval</span> <span class="mi">1</span>
|
||
<span class="n">ispindel</span><span class="o">/</span><span class="n">device_name</span><span class="o">/</span><span class="n">RSSI</span> <span class="o">-</span><span class="mi">58</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>This is the format template used to create the json above.</p>
|
||
<div class="admonition tip">
|
||
<p class="admonition-title">Tip</p>
|
||
<p>Each line in the format is treated as one topic. The <cite>|</cite> is used as separator between lines and the first <cite>:</cite> is used as separator between topic and value. Each line is formatted as <cite><topic>:<value></cite></p>
|
||
</div>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>ispindel/${mdns}/tilt:${angle}|
|
||
ispindel/${mdns}/temperature:${temp}|
|
||
ispindel/${mdns}/temp_units:${temp-unit}|
|
||
ispindel/${mdns}/battery:${battery}|
|
||
ispindel/${mdns}/gravity:${gravity}|
|
||
ispindel/${mdns}/interval:${sleep-interval}|
|
||
ispindel/${mdns}/RSSI:${rssi}|
|
||
</pre></div>
|
||
</div>
|
||
<p>This is a format template that is compatible with v0.6. Just replace the <cite>topic</cite> with the topic you want to post data to.</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>topic:{"name":"gravmon","ID":"${id}","token":"gravmon","interval": ${sleep-interval},"temperature": ${temp},"temp-units": "${temp-unit}","gravity":${gravity},"angle": ${angle},"battery":${battery},"rssi": ${rssi},"corr-gravity":${corr-gravity},"gravity-unit": "${gravity-unit}","run-time": ${run-time}}|
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="version-json">
|
||
<h2>version.json<a class="headerlink" href="#version-json" title="Permalink to this headline">¶</a></h2>
|
||
<p>Contents version.json. The version is used by the device to check if the this version is newer. The html files will also be downloaded if the are present on the server. This way it’s easy to
|
||
upgrade to a version that serve the html files from the file system. If they dont exist nothing will happen, the OTA flashing will still work. If the html files are missing from the file system
|
||
they can be uploaded manually afterwards.</p>
|
||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"project"</span><span class="p">:</span><span class="s2">"gravmon"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="s2">"0.7.0"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="nt">"html"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
|
||
<span class="w"> </span><span class="s2">"index.min.htm"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="s2">"device.min.htm"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="s2">"config.min.htm"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="s2">"format.min.htm"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="s2">"calibration.min.htm"</span><span class="p">,</span><span class="w"></span>
|
||
<span class="w"> </span><span class="s2">"about.min.htm"</span><span class="w"></span>
|
||
<span class="w"> </span><span class="p">]</span><span class="w"></span>
|
||
<span class="p">}</span><span class="w"></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</article>
|
||
</div>
|
||
<footer>
|
||
|
||
<div class="related-pages">
|
||
<a class="next-page" href="compiling.html">
|
||
<div class="page-info">
|
||
<div class="context">
|
||
<span>Next</span>
|
||
</div>
|
||
<div class="title">Compiling the software</div>
|
||
</div>
|
||
<svg><use href="#svg-arrow-right"></use></svg>
|
||
</a>
|
||
<a class="prev-page" href="installation.html">
|
||
<svg><use href="#svg-arrow-right"></use></svg>
|
||
<div class="page-info">
|
||
<div class="context">
|
||
<span>Previous</span>
|
||
</div>
|
||
|
||
<div class="title">Installation</div>
|
||
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
<div class="related-information">
|
||
Copyright © 2021-2022, Magnus Persson |
|
||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||
<a href="https://github.com/pradyunsg/furo">Furo theme</a>.
|
||
</div>
|
||
|
||
</footer>
|
||
</div>
|
||
<aside class="toc-drawer">
|
||
|
||
|
||
<div class="toc-sticky toc-scroll">
|
||
<div class="toc-title-container">
|
||
<span class="toc-title">
|
||
Contents
|
||
</span>
|
||
</div>
|
||
<div class="toc-tree-container">
|
||
<div class="toc-tree">
|
||
<ul>
|
||
<li><a class="reference internal" href="#">Setting up device</a><ul>
|
||
<li><a class="reference internal" href="#status">Status</a></li>
|
||
<li><a class="reference internal" href="#device">Device</a></li>
|
||
<li><a class="reference internal" href="#configuration">Configuration</a><ul>
|
||
<li><a class="reference internal" href="#device-setting">Device Setting</a></li>
|
||
<li><a class="reference internal" href="#push-settings">Push Settings</a></li>
|
||
<li><a class="reference internal" href="#gravity-settings">Gravity Settings</a></li>
|
||
<li><a class="reference internal" href="#hardware-settings">Hardware Settings</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#format-editor">Format editor</a></li>
|
||
<li><a class="reference internal" href="#create-formula">Create formula</a></li>
|
||
<li><a class="reference internal" href="#rest-api">REST API</a><ul>
|
||
<li><a class="reference internal" href="#get-api-config">GET: /api/config</a></li>
|
||
<li><a class="reference internal" href="#get-api-device">GET: /api/device</a></li>
|
||
<li><a class="reference internal" href="#get-api-status">GET: /api/status</a></li>
|
||
<li><a class="reference internal" href="#get-api-config-formula">GET: /api/config/formula</a></li>
|
||
<li><a class="reference internal" href="#post-api-config-device">POST: /api/config/device</a></li>
|
||
<li><a class="reference internal" href="#post-api-config-push">POST: /api/config/push</a></li>
|
||
<li><a class="reference internal" href="#post-api-config-gravity">POST: /api/config/gravity</a></li>
|
||
<li><a class="reference internal" href="#post-api-config-hardware">POST: /api/config/hardware</a></li>
|
||
<li><a class="reference internal" href="#post-api-config-formula">POST: /api/config/formula</a></li>
|
||
<li><a class="reference internal" href="#calling-the-api-s-from-python">Calling the API’s from Python</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#data-formats">Data Formats</a><ul>
|
||
<li><a class="reference internal" href="#ispindle-format">iSpindle format</a></li>
|
||
<li><a class="reference internal" href="#brewfather-format">Brewfather format</a></li>
|
||
<li><a class="reference internal" href="#influx-db-v2">Influx DB v2</a></li>
|
||
<li><a class="reference internal" href="#mqtt">MQTT</a></li>
|
||
<li><a class="reference internal" href="#version-json">version.json</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</aside>
|
||
</div>
|
||
</div><script data-url_root="./" id="documentation_options" 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/scripts/furo.js"></script>
|
||
</body>
|
||
</html> |