429 lines
23 KiB
HTML
429 lines
23 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="Advanced Configuration" href="advanced.html" /><link rel="prev" title="Create formula" href="formula.html" />
|
||
|
||
<meta name="generator" content="sphinx-4.4.0, furo 2022.03.04"/>
|
||
<title>Service Integration - GravityMon 0.8.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=935aa2abcc5c1da4283d1dc201fb1f0add16d23a" />
|
||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?digest=25ceb02ed1c46dc30f2321ff83e92799f69dfdb9" />
|
||
|
||
|
||
|
||
|
||
<style>
|
||
body {
|
||
--color-code-background: #f8f8f8;
|
||
--color-code-foreground: black;
|
||
|
||
}
|
||
@media not print {
|
||
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 stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||
</svg>
|
||
</symbol>
|
||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||
<title>Menu</title>
|
||
<svg xmlns="http://www.w3.org/2000/svg" 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" 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" 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" 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" 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.8.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.8.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="functionallity.html">Functionallity</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Getting started</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</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="configuration.html">Configuration</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="formula.html">Create formula</a></li>
|
||
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Service Integration</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="advanced.html">Advanced Configuration</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="api.html">REST API</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="data.html">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="troubleshooting.html">Troubleshooting</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="q_and_a.html">Q & A</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</aside>
|
||
<div class="main">
|
||
<div class="content">
|
||
<div class="article-container">
|
||
<a href="#" class="back-to-top muted-link">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||
</svg>
|
||
<span>Back to top</span>
|
||
</a>
|
||
<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="service-integration">
|
||
<span id="services"></span><h1>Service Integration<a class="headerlink" href="#service-integration" title="Permalink to this headline">#</a></h1>
|
||
<p>This chapter contains a list of targets and what configuration is needed to interact with them.</p>
|
||
<div class="section" id="brewfather">
|
||
<h2>Brewfather<a class="headerlink" href="#brewfather" title="Permalink to this headline">#</a></h2>
|
||
<p>Brewfather is an all in one service that allows you to manage you recepies and brews.</p>
|
||
<p>Just enter the http adress found on brewfather, not other settings are needed. The endpoint has the following format:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>http://log.brewfather.net/http://log.brewfather.net/stream?id=<yourid>
|
||
</pre></div>
|
||
</div>
|
||
<p>The URL is found under settings.</p>
|
||
</div>
|
||
<div class="section" id="fermentrack">
|
||
<h2>Fermentrack<a class="headerlink" href="#fermentrack" title="Permalink to this headline">#</a></h2>
|
||
<p><a class="reference external" href="https://www.fermentrack.com">Fermentrack</a> is a open source brewing software to monitor and control fermentation.</p>
|
||
<p>GravityMon can be installed and used as an iSpindle. Just register the device as an iSpindle and use the defined endpoint which normally is:</p>
|
||
<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="n">myservername</span><span class="o">/</span><span class="n">ispindel</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ubidots">
|
||
<h2>UBIdots<a class="headerlink" href="#ubidots" title="Permalink to this headline">#</a></h2>
|
||
<p><a class="reference external" href="https://www.ubidots.com">UBIdots</a> is a IoT service that display data collected various sources.</p>
|
||
<p>For this service there are two options to configure the integration. First you will need your default token which is found under <cite>API Credentials</cite> (<api-tokem> in the example below).
|
||
Swap the text <devicename> with the name you want to show in ubidots.</p>
|
||
<p><strong>Option 1</strong> - token as an URL parameter</p>
|
||
<p>Enter the following as URL:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>http://industrial.api.ubidots.com/api/v1.6/devices/<devicename>/?token=<api-token>
|
||
</pre></div>
|
||
</div>
|
||
<p>This is the less secure option.</p>
|
||
<p><strong>Option 2</strong> - token as the http header</p>
|
||
<p>Enter the following as URL, use either standard or ssl.</p>
|
||
<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="n">industrial</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">ubidots</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">api</span><span class="o">/</span><span class="n">v1</span><span class="mf">.6</span><span class="o">/</span><span class="n">devices</span><span class="o">/<</span><span class="n">devicename</span><span class="o">></span>
|
||
<span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">industrial</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">ubidots</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">api</span><span class="o">/</span><span class="n">v1</span><span class="mf">.6</span><span class="o">/</span><span class="n">devices</span><span class="o">/<</span><span class="n">devicename</span><span class="o">></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Under <cite>Headers</cite> (button after the http url in the UI) enter the following string:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">X</span><span class="o">-</span><span class="n">Auth</span><span class="o">-</span><span class="n">Token</span><span class="p">:</span> <span class="o"><</span><span class="n">api</span><span class="o">-</span><span class="n">token</span><span class="o">></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>This is the more secure option.</p>
|
||
<p>Even though ubidots can handle the default ispindle format it probably better to just post the data you want. This is an example of a
|
||
format template that can be used. For information on customizing the format see <a class="reference internal" href="advanced.html#format-editor"><span class="std std-ref">Format editor</span></a>.</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>{
|
||
"temperature": ${temp},
|
||
"gravity": ${gravity},
|
||
"angle": ${angle},
|
||
"battery": ${battery},
|
||
"rssi": ${rssi}
|
||
}
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="home-assistant">
|
||
<h2>Home Assistant<a class="headerlink" href="#home-assistant" title="Permalink to this headline">#</a></h2>
|
||
<p><a class="reference external" href="https://www.homeassistant.com">HomeAssistant</a> is a platform for home automation and can collect sensor data
|
||
from multiple devices.</p>
|
||
<p>This setup uses the MQTT integration with home assistant to collect values from the device.</p>
|
||
<p>This part of the configuration goes into the home assistant configuration.yaml file. The example assumes that the
|
||
device is named <cite>gravmon2</cite></p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sensor</span><span class="p">:</span>
|
||
<span class="o">-</span> <span class="n">platform</span><span class="p">:</span> <span class="n">mqtt</span>
|
||
<span class="n">name</span><span class="p">:</span> <span class="s2">"gravmon2_gravity"</span>
|
||
<span class="n">state_topic</span><span class="p">:</span> <span class="s2">"gravmon/gravmon2/gravity"</span>
|
||
<span class="o">-</span> <span class="n">platform</span><span class="p">:</span> <span class="n">mqtt</span>
|
||
<span class="n">name</span><span class="p">:</span> <span class="s2">"gravmon2_battery"</span>
|
||
<span class="n">state_topic</span><span class="p">:</span> <span class="s2">"gravmon/gravmon2/battery"</span>
|
||
<span class="o">-</span> <span class="n">platform</span><span class="p">:</span> <span class="n">mqtt</span>
|
||
<span class="n">name</span><span class="p">:</span> <span class="s2">"gravmon2_rssi"</span>
|
||
<span class="n">state_topic</span><span class="p">:</span> <span class="s2">"gravmon/gravmon2/rssi"</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Enter the name of the MQTT server in Home Assistant in the URL. You might need to install that option
|
||
first. This is the format needed to submit the data to the correct topics as needed above. You can add as
|
||
many sensors / topics as you want.</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>gravmon/${mdns}/tilt:${angle}|
|
||
gravmon/${mdns}/temperature:${temp}|
|
||
gravmon/${mdns}/temp_units:${temp-unit}|
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="brewer-s-friend">
|
||
<h2>Brewer’s Friend<a class="headerlink" href="#brewer-s-friend" title="Permalink to this headline">#</a></h2>
|
||
<p>Brewer’s friend is an all in one service that allows you to manage you recepies and brews.</p>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>I dont have an account for brewers friend so I have not been able to verfy this completely. Its based on
|
||
the available documentation. If this works please let</p>
|
||
</div>
|
||
<p>You can find you API key when logged in to the service. Follow these <a class="reference external" href="https://docs.brewersfriend.com/devices/ispindel">instructions</a></p>
|
||
<p><strong>Note there are different URLs if you are using plato or specific gravity!</strong></p>
|
||
<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="n">log</span><span class="o">.</span><span class="n">brewersfriend</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">ispindel</span><span class="o">/</span><span class="p">[</span><span class="n">API</span> <span class="n">KEY</span><span class="p">]</span>
|
||
<span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">log</span><span class="o">.</span><span class="n">brewersfriend</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">ispindel_sg</span><span class="o">/</span><span class="p">[</span><span class="n">API</span> <span class="n">KEY</span><span class="p">]</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>From what I can read in the documentation you need to add the API key as a token as well. This can be done using a custom
|
||
format for the endpoint. Just add you API key after token.</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>{
|
||
"name" : "${mdns}",
|
||
"ID": "${id}",
|
||
"token" : "[API KEY]",
|
||
"interval": ${sleep-interval},
|
||
"temperature": ${temp},
|
||
"temp-units": "${temp-unit}",
|
||
"gravity": ${gravity},
|
||
"angle": ${angle},
|
||
"battery": ${battery},
|
||
"rssi": ${rssi}
|
||
}
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="brewspy">
|
||
<h2>Brewspy<a class="headerlink" href="#brewspy" title="Permalink to this headline">#</a></h2>
|
||
<p>BrewSpy is a service that can show the history and manage the brew.</p>
|
||
<p>You need to enter the Token found in brewspy. The field is found under the field for http configuration.</p>
|
||
<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="n">brew</span><span class="o">-</span><span class="n">spy</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">api</span><span class="o">/</span><span class="n">ispindel</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="thingspeak">
|
||
<h2>Thingspeak<a class="headerlink" href="#thingspeak" title="Permalink to this headline">#</a></h2>
|
||
<p>Thingspeak is an IoT platform for receiving data which can be visualized.</p>
|
||
<p>In order to use this platform you need to create a channel (channel = device) and get the APIKEY for
|
||
writing to the channel. Each channel can handle up to 8 measurements. In the http field enter the following URL.</p>
|
||
<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="n">api</span><span class="o">.</span><span class="n">thingspeak</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">update</span><span class="o">.</span><span class="n">json</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>You also need to create a custom format for the selected endpoint where the field1-field8 contains the data
|
||
you want to include. The example below sends 5 different values to the channel identified by the API key.</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>{
|
||
"api_key": "<your write api key for channel>",
|
||
"field1": ${gravity},
|
||
"field2": ${temp},
|
||
"field3": ${angle},
|
||
"field4": ${battery},
|
||
"field5": ${rssi}
|
||
}
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</article>
|
||
</div>
|
||
<footer>
|
||
|
||
<div class="related-pages">
|
||
<a class="next-page" href="advanced.html">
|
||
<div class="page-info">
|
||
<div class="context">
|
||
<span>Next</span>
|
||
</div>
|
||
<div class="title">Advanced Configuration</div>
|
||
</div>
|
||
<svg><use href="#svg-arrow-right"></use></svg>
|
||
</a>
|
||
<a class="prev-page" href="formula.html">
|
||
<svg><use href="#svg-arrow-right"></use></svg>
|
||
<div class="page-info">
|
||
<div class="context">
|
||
<span>Previous</span>
|
||
</div>
|
||
|
||
<div class="title">Create formula</div>
|
||
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="bottom-of-page">
|
||
<div class="left-details">
|
||
<div class="copyright">
|
||
Copyright © 2021-2022, Magnus Persson
|
||
</div>
|
||
Made with <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</a>
|
||
|
||
</div>
|
||
<div class="right-details">
|
||
<div class="icons">
|
||
|
||
</div>
|
||
</div>
|
||
</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="#">Service Integration</a><ul>
|
||
<li><a class="reference internal" href="#brewfather">Brewfather</a></li>
|
||
<li><a class="reference internal" href="#fermentrack">Fermentrack</a></li>
|
||
<li><a class="reference internal" href="#ubidots">UBIdots</a></li>
|
||
<li><a class="reference internal" href="#home-assistant">Home Assistant</a></li>
|
||
<li><a class="reference internal" href="#brewer-s-friend">Brewer’s Friend</a></li>
|
||
<li><a class="reference internal" href="#brewspy">Brewspy</a></li>
|
||
<li><a class="reference internal" href="#thingspeak">Thingspeak</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> |