Update documentation

This commit is contained in:
GitHub Action 2022-11-20 19:07:21 +00:00
parent 7da9f91cd4
commit 5ecfd6ddc2
22 changed files with 288 additions and 61 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

BIN
docs/_images/8266_pins.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

View File

@ -84,7 +84,7 @@ GET: /api/status
Retrieve the current device status via an HTTP GET command. Payload is in JSON format.
* ``temp-format`` can be either ``C`` or ``F``
* ``platform`` can be either ``esp8266``, ``esp32c3``, ``esp32s2`` or ``esp32``
* ``platform`` can be either ``esp8266``, ``esp32c3``, ``esp32s2``, ``esp32`` or ``esp32lite`` (floaty hardware)
* ``temp-c`` will be set to -273 C if there is no temp sensor
* ``angle`` will be set to 0 if no valid angle is found and -1 if there is no gyro

View File

@ -32,6 +32,7 @@ In the platformio config there are 3 targets defined
* gravity32-release: Version for ESP32 mini.
* gravity32-c3-release: Version for ESP32 C3 mini.
* gravity32-s2-release: Version for ESP32 S2 mini.
* gravity32-lite-release: Version for ESP32 lite (Floaty hardware).
.. warning::
The debug target can be unstable and crash the device under certain circumstanses. Excessive logging to the serial port can cause corruption and crashes.
@ -114,4 +115,7 @@ This is a list of C++ defines that is used to enable/disable functions in the co
- Defines the version of the compiled software
* - USE_SERIAL_PINS
- Will send the serial console to the TX/RX pins on an ESP32 target so that debugging can be done when on battery
* - REDUCE_WIFI_POWER
- Will reduce wifi power to support the ESP32C3 v1.0 which has a bad antenna
* - FLOATY
- Build for the ESP32lite FLOATY hardware option (no DS18B20 and no battery monitor)

View File

@ -10,7 +10,7 @@ One of the following conditions will place the device in ``configuration mode``:
- Gyro has not been calibrated
- Sleep mode has been disabled in the web interface
- Placed in horizontal mode 85-90 degrees
- Charger connected >4.15V (or the value that is configured)
- Charger connected >4.15V (or the value that is configured). This does not work on the Floaty variant due to lack of hardware support.
Status

View File

@ -136,6 +136,11 @@ The main features
fermentation vessel. This sequence takes 900 ms seconds to execute and besides wifi connection this is what consumes the most
battery. With more testing this might be changes to either speed up or provide more stable readings.
* **Crash detection and Error Logging**
There is a build in logging function so that errors that occurs can be detected and logged to a file. On the ESP8266 crashes will also
be logged so that these problems can be detected and fixed. Crash logging is not available on the ESP32 variants.
* **Performance measurements**
I've also create a small library to measure execution code in some areas of the code that i know is time consuming. This
@ -152,20 +157,45 @@ The main features
See the :ref:`compiling-the-software` for more information.
* **Power measurements**
I've also create a project to measure the power consumption of the device, but more on this later.
Battery life
------------
The long term battery test has now been completed. Using a 2200 mA battery and sending data every 5 minutes to a local server on my network. The battery lasted 47 days which is excellent battery life.
For the 1.2 version I have been running some long term battery tests on a few of the boards and also comparing wifi vs Bluetooth. I was using a standard 2200 mA battery
that was fully charged at the start of the tests. All devices started with factory settings with only a change in push destination and sleep interval.
In another test I had a device running with an sleep interval of only 30s with ok wifi connection. The device lasted 12 days which i think is excellent considering the short sleep interval.
For the wifi tests, I was pushing data every 30 seconds to a local influxdb2 server to reduce errors connected to slow response on the server side. The devices
was placed 2 meters from the wifi AP to ensure a good and stable wifi connection (so ideal conditions).
From what I have discovered it's the WIFI connection or latency to internet hosted that has the most impact on the battery life. The typical runtime in the tests above was around 2 seconds.
For the Bluetooth tests I was pusing data every 10 seconds to a linux server.
To make this comparable I measured how many times the device was able to wake up and push data before the battery was dead. I theory the power consumption when in
deep sleep is to low it can almost be ignored for the calculations. So the impact on battery is mainly caused by how long the device is awake. In the most optimal case
this can be as low as 1.5-2.0 seconds but in reality its probably around 3-4 seconds. Wifi consumes a lot of power so Bluetooth is a better option for long battery life.
.. list-table:: Battery power
:widths: 30 20 20 20
:header-rows: 1
* - Device
- Transmissions
- 30s
- 300s / 15min
* - ESP 8266 (wifi)
- 26,000
- 9 days
- 90 days
* - ESP32 c3 (wifi)
- 12,000
- 4 days
- 43 days
* - ESP32 d1 (ble)
- 56,000
- 20 days
- 196 days
As you can see from the table above there is quite some differences between the boards and connection methods.
Performance
-----------

View File

@ -20,6 +20,7 @@ Schema for esp8266 build
:width: 700
:alt: Schema esp8266
iSpindle based on esp32
=======================
@ -85,7 +86,7 @@ Schema for esp32 build
:alt: Schema esp32
Adding a reed (magnetic) reset switch
=====================================
+++++++++++++++++++++++++++++++++++++
A reed switch is a switch that reacts to magnetic fields. The ones I have tested are normally open and close in proximity to
a magnet.
@ -104,3 +105,35 @@ The reed switch is the glass tube visible under the esp8266.
:alt: Reed build
Floaty Hydrometer DIY based on esp32 lite
=========================================
Here we have another projects that has build a device similar to the iSpindel but based on an ESP32 instead.
The setup is much simpler and attaches the GYRO to an ESP32 with a build in charger chip. GravityMon works on
this hardware platform as well but there are a few limitations:
* Temperature is read from the GYRO and cannot be changed. This works fine when measuring gravity but when in configuration mode the temperature will increase since it shows the chip temperature.
* No possibility to measure battery level (can be added with additional hardware).
Hardware extensions
===================
GravityMon has implemented a few additions to the standard iSpindel hardware. It's possible to channel the serial console to the TX/RX pins on the chip (these position also applies to all the
ESP32 chips for iSpindel). You need a USB to TTL converter for this to work. This enables you to read the serial console even when on battery (newer chips dont have a diode to remove).
.. note::
You need to compile the software using the -DUSE_SERIAL_PINS option to enable this feature.
Its also possible to force the device into configuration mode by connecting D7/D8 on the board during the startup sequence. This will enable the feature "gravity mode enabled during float".
.. image:: images/8266_pins.jpg
:width: 500
:alt: iSpindel pins
For the floaty device pins 16/17 are used as TX/RX pins and the 13/15 pins are used to force the device into configuration mode. Pin 35 can also be connected to the battery voltage via an voltage divider to be able to read the battery voltage.
.. image:: images/32lite_pins.jpg
:width: 500
:alt: Floaty pins

View File

@ -7,7 +7,7 @@ Welcome to GravityMon
#####################
.. note::
This documentation reflects **v1.2 - beta 1**. Last updated 2022-11-04
This documentation reflects **v1.2 - beta 2**. Last updated 2022-11-19
What is GravityMon?
--------------------
@ -25,7 +25,7 @@ implements a lot of the features that has been requested in the original iSpindl
various reasons.
The firmware also supports a iSpindle built using an ESP32 which is pin compatible with esp8266, currently there are 3 options that are
supported ESP32-D1 mini, ESP32-C3 mini and ESP32-S2 mini. See :ref:`hardware`. The more modern hardware will allow better support for SSL and
supported ESP32-D1 mini, ESP32-C3 mini, ESP32-S2 mini, ESP32 lite (floaty). See :ref:`hardware`. The more modern hardware will allow better support for SSL and
other memory intensive functions.
I started GravityMon because I like to create software and wanted to do some microcontroller programming. I had done a few

View File

@ -53,6 +53,9 @@ In the /bin directory you will find 4 different firmware builds;
This is the release build for an ESP32s2-mini variant. When flashing an ESP32 you also need the *partition32s2.bin* file that outlines the flash memory structure. Due to
the size of the firmware we are using a custom partition setup.
* **firmware32lite.bin**
This is the release build for an ESP32lite which is used by the floaty build (clone).
Esptool (esp8266)
=================

View File

@ -3,6 +3,20 @@
Releases
########
v1.2.0 - beta2
==============
Features
++++++++
* Added function to calcualate voltage factor based on measured value.
* Updated battery estimation for the various esp32 boards.
* Added support for the ESP32 lite board which is used in the Floaty Hydrometer variant.
Documentation
+++++++++++++
* Added section about the Floaty hardware.
v1.2.0 - beta1
==============

View File

@ -35,7 +35,8 @@ div.highlight {
position: relative;
}
.highlight:hover button.copybtn {
/* Show the copybutton */
.highlight:hover button.copybtn, button.copybtn.success {
opacity: 1;
}

View File

@ -102,18 +102,25 @@ const clearSelection = () => {
}
}
// Changes tooltip text for two seconds, then changes it back
// Changes tooltip text for a moment, then changes it back
// We want the timeout of our `success` class to be a bit shorter than the
// tooltip and icon change, so that we can hide the icon before changing back.
var timeoutIcon = 2000;
var timeoutSuccessClass = 1500;
const temporarilyChangeTooltip = (el, oldText, newText) => {
el.setAttribute('data-tooltip', newText)
el.classList.add('success')
setTimeout(() => el.setAttribute('data-tooltip', oldText), 2000)
setTimeout(() => el.classList.remove('success'), 2000)
// Remove success a little bit sooner than we change the tooltip
// So that we can use CSS to hide the copybutton first
setTimeout(() => el.classList.remove('success'), timeoutSuccessClass)
setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon)
}
// Changes the copy button icon for two seconds, then changes it back
const temporarilyChangeIcon = (el) => {
el.innerHTML = iconCheck;
setTimeout(() => {el.innerHTML = iconCopy}, 2000)
setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon)
}
const addCopyButtonToCodeCells = () => {
@ -125,7 +132,8 @@ const addCopyButtonToCodeCells = () => {
}
// Add copybuttons to all of our code cells
const codeCells = document.querySelectorAll('div.highlight pre')
const COPYBUTTON_SELECTOR = 'div.highlight pre';
const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR)
codeCells.forEach((codeCell, index) => {
const id = codeCellId(index)
codeCell.setAttribute('id', id)
@ -141,10 +149,25 @@ function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
/**
* Removes excluded text from a Node.
*
* @param {Node} target Node to filter.
* @param {string} exclude CSS selector of nodes to exclude.
* @returns {DOMString} Text from `target` with text removed.
*/
function filterText(target, exclude) {
const clone = target.cloneNode(true); // clone as to not modify the live DOM
if (exclude) {
// remove excluded nodes
clone.querySelectorAll(exclude).forEach(node => node.remove());
}
return clone.innerText;
}
// Callback when a copy button is clicked. Will be passed the node that was clicked
// should then grab the text and replace pieces of text that shouldn't be used in output
function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") {
var regexp;
var match;
@ -199,7 +222,12 @@ function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onl
var copyTargetText = (trigger) => {
var target = document.querySelector(trigger.attributes['data-clipboard-target'].value);
return formatCopyText(target.innerText, '', false, true, true, true, '', '')
// get filtered text
let exclude = '.linenos, .gp';
let text = filterText(target, exclude);
return formatCopyText(text, '', false, true, true, true, '', '')
}
// Initialize with a callback so we can modify the text before copy

View File

@ -2,10 +2,25 @@ function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
/**
* Removes excluded text from a Node.
*
* @param {Node} target Node to filter.
* @param {string} exclude CSS selector of nodes to exclude.
* @returns {DOMString} Text from `target` with text removed.
*/
export function filterText(target, exclude) {
const clone = target.cloneNode(true); // clone as to not modify the live DOM
if (exclude) {
// remove excluded nodes
clone.querySelectorAll(exclude).forEach(node => node.remove());
}
return clone.innerText;
}
// Callback when a copy button is clicked. Will be passed the node that was clicked
// should then grab the text and replace pieces of text that shouldn't be used in output
export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") {
var regexp;
var match;

View File

@ -277,7 +277,7 @@
<p>Retrieve 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>
<li><p><code class="docutils literal notranslate"><span class="pre">platform</span></code> can be either <code class="docutils literal notranslate"><span class="pre">esp8266</span></code>, <code class="docutils literal notranslate"><span class="pre">esp32c3</span></code>, <code class="docutils literal notranslate"><span class="pre">esp32s2</span></code> or <code class="docutils literal notranslate"><span class="pre">esp32</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">platform</span></code> can be either <code class="docutils literal notranslate"><span class="pre">esp8266</span></code>, <code class="docutils literal notranslate"><span class="pre">esp32c3</span></code>, <code class="docutils literal notranslate"><span class="pre">esp32s2</span></code>, <code class="docutils literal notranslate"><span class="pre">esp32</span></code> or <code class="docutils literal notranslate"><span class="pre">esp32lite</span></code> (floaty hardware)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">temp-c</span></code> will be set to -273 C if there is no temp sensor</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">angle</span></code> will be set to 0 if no valid angle is found and -1 if there is no gyro</p></li>
</ul>

View File

@ -231,6 +231,7 @@
<li><p>gravity32-release: Version for ESP32 mini.</p></li>
<li><p>gravity32-c3-release: Version for ESP32 C3 mini.</p></li>
<li><p>gravity32-s2-release: Version for ESP32 S2 mini.</p></li>
<li><p>gravity32-lite-release: Version for ESP32 lite (Floaty hardware).</p></li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
@ -334,6 +335,12 @@ with the option <strong>DUSE_SERIAL_PINS</strong> and attach as USB to TTL cable
<tr class="row-odd"><td><p>USE_SERIAL_PINS</p></td>
<td><p>Will send the serial console to the TX/RX pins on an ESP32 target so that debugging can be done when on battery</p></td>
</tr>
<tr class="row-even"><td><p>REDUCE_WIFI_POWER</p></td>
<td><p>Will reduce wifi power to support the ESP32C3 v1.0 which has a bad antenna</p></td>
</tr>
<tr class="row-odd"><td><p>FLOATY</p></td>
<td><p>Build for the ESP32lite FLOATY hardware option (no DS18B20 and no battery monitor)</p></td>
</tr>
</tbody>
</table></div>
</div>

View File

@ -209,7 +209,7 @@
<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 &gt;4.15V (or the value that is configured)</p></li>
<li><p>Charger connected &gt;4.15V (or the value that is configured). This does not work on the Floaty variant due to lack of hardware support.</p></li>
</ul>
<div class="section" id="status">
<h2>Status<a class="headerlink" href="#status" title="Permalink to this headline"></a></h2>

View File

@ -312,6 +312,10 @@ use the data since this is inaccurate and the device is probably moving, probabl
fermentation vessel. This sequence takes 900 ms seconds to execute and besides wifi connection this is what consumes the most
battery. With more testing this might be changes to either speed up or provide more stable readings.</p>
</li>
<li><p><strong>Crash detection and Error Logging</strong></p>
<p>There is a build in logging function so that errors that occurs can be detected and logged to a file. On the ESP8266 crashes will also
be logged so that these problems can be detected and fixed. Crash logging is not available on the ESP32 variants.</p>
</li>
<li><p><strong>Performance measurements</strong></p>
<p>Ive also create a small library to measure execution code in some areas of the code that i know is time consuming. This
way I can find a good balance between performance and quality. This is a lot of help trying to figure out where bottlenecks
@ -327,16 +331,52 @@ are in the code and where to put optimization efforts. Examples of real measurem
</ul>
<p>See the <a class="reference internal" href="compiling.html#compiling-the-software"><span class="std std-ref">Compiling the software</span></a> for more information.</p>
</li>
<li><p><strong>Power measurements</strong></p>
<p>Ive also create a project to measure the power consumption of the device, but more on this later.</p>
</li>
</ul>
</div>
<div class="section" id="battery-life">
<h2>Battery life<a class="headerlink" href="#battery-life" title="Permalink to this headline"></a></h2>
<p>The long term battery test has now been completed. Using a 2200 mA battery and sending data every 5 minutes to a local server on my network. The battery lasted 47 days which is excellent battery life.</p>
<p>In another test I had a device running with an sleep interval of only 30s with ok wifi connection. The device lasted 12 days which i think is excellent considering the short sleep interval.</p>
<p>From what I have discovered its the WIFI connection or latency to internet hosted that has the most impact on the battery life. The typical runtime in the tests above was around 2 seconds.</p>
<p>For the 1.2 version I have been running some long term battery tests on a few of the boards and also comparing wifi vs Bluetooth. I was using a standard 2200 mA battery
that was fully charged at the start of the tests. All devices started with factory settings with only a change in push destination and sleep interval.</p>
<p>For the wifi tests, I was pushing data every 30 seconds to a local influxdb2 server to reduce errors connected to slow response on the server side. The devices
was placed 2 meters from the wifi AP to ensure a good and stable wifi connection (so ideal conditions).</p>
<p>For the Bluetooth tests I was pusing data every 10 seconds to a linux server.</p>
<p>To make this comparable I measured how many times the device was able to wake up and push data before the battery was dead. I theory the power consumption when in
deep sleep is to low it can almost be ignored for the calculations. So the impact on battery is mainly caused by how long the device is awake. In the most optimal case
this can be as low as 1.5-2.0 seconds but in reality its probably around 3-4 seconds. Wifi consumes a lot of power so Bluetooth is a better option for long battery life.</p>
<div class="table-wrapper"><table class="colwidths-given docutils align-default" id="id2">
<caption><span class="caption-text">Battery power</span><a class="headerlink" href="#id2" title="Permalink to this table"></a></caption>
<colgroup>
<col style="width: 33%"/>
<col style="width: 22%"/>
<col style="width: 22%"/>
<col style="width: 22%"/>
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Device</p></th>
<th class="head"><p>Transmissions</p></th>
<th class="head"><p>30s</p></th>
<th class="head"><p>300s / 15min</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>ESP 8266 (wifi)</p></td>
<td><p>26,000</p></td>
<td><p>9 days</p></td>
<td><p>90 days</p></td>
</tr>
<tr class="row-odd"><td><p>ESP32 c3 (wifi)</p></td>
<td><p>12,000</p></td>
<td><p>4 days</p></td>
<td><p>43 days</p></td>
</tr>
<tr class="row-even"><td><p>ESP32 d1 (ble)</p></td>
<td><p>56,000</p></td>
<td><p>20 days</p></td>
<td><p>196 days</p></td>
</tr>
</tbody>
</table></div>
<p>As you can see from the table above there is quite some differences between the boards and connection methods.</p>
</div>
<div class="section" id="performance">
<h2>Performance<a class="headerlink" href="#performance" title="Permalink to this headline"></a></h2>

View File

@ -259,9 +259,8 @@ The ESP8266 has a built in resistor thats not visible on the schema and this act
</div>
<a class="reference internal image-reference" href="_images/schema_esp32.png"><img alt="Schema esp32" src="_images/schema_esp32.png" style="width: 700px;"/></a>
</div>
</div>
<div class="section" id="adding-a-reed-magnetic-reset-switch">
<h2>Adding a reed (magnetic) reset switch<a class="headerlink" href="#adding-a-reed-magnetic-reset-switch" title="Permalink to this headline"></a></h2>
<h3>Adding a reed (magnetic) reset switch<a class="headerlink" href="#adding-a-reed-magnetic-reset-switch" title="Permalink to this headline"></a></h3>
<p>A reed switch is a switch that reacts to magnetic fields. The ones I have tested are normally open and close in proximity to
a magnet.</p>
<a class="reference internal image-reference" href="_images/reed.jpg"><img alt="Reed switch" src="_images/reed.jpg" style="width: 400px;"/></a>
@ -270,6 +269,30 @@ I mounted the iSPINDLE PCB v4.0 just under the cap. The lower red circle shows t
<p>The reed switch is the glass tube visible under the esp8266.</p>
<a class="reference internal image-reference" href="_images/reed_build.jpg"><img alt="Reed build" src="_images/reed_build.jpg" style="width: 400px;"/></a>
</div>
</div>
<div class="section" id="floaty-hydrometer-diy-based-on-esp32-lite">
<h2>Floaty Hydrometer DIY based on esp32 lite<a class="headerlink" href="#floaty-hydrometer-diy-based-on-esp32-lite" title="Permalink to this headline"></a></h2>
<p>Here we have another projects that has build a device similar to the iSpindel but based on an ESP32 instead.</p>
<p>The setup is much simpler and attaches the GYRO to an ESP32 with a build in charger chip. GravityMon works on
this hardware platform as well but there are a few limitations:</p>
<ul class="simple">
<li><p>Temperature is read from the GYRO and cannot be changed. This works fine when measuring gravity but when in configuration mode the temperature will increase since it shows the chip temperature.</p></li>
<li><p>No possibility to measure battery level (can be added with additional hardware).</p></li>
</ul>
</div>
<div class="section" id="hardware-extensions">
<h2>Hardware extensions<a class="headerlink" href="#hardware-extensions" title="Permalink to this headline"></a></h2>
<p>GravityMon has implemented a few additions to the standard iSpindel hardware. Its possible to channel the serial console to the TX/RX pins on the chip (these position also applies to all the
ESP32 chips for iSpindel). You need a USB to TTL converter for this to work. This enables you to read the serial console even when on battery (newer chips dont have a diode to remove).</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You need to compile the software using the -DUSE_SERIAL_PINS option to enable this feature.</p>
</div>
<p>Its also possible to force the device into configuration mode by connecting D7/D8 on the board during the startup sequence. This will enable the feature “gravity mode enabled during float”.</p>
<a class="reference internal image-reference" href="_images/8266_pins.jpg"><img alt="iSpindel pins" src="_images/8266_pins.jpg" style="width: 500px;"/></a>
<p>For the floaty device pins 16/17 are used as TX/RX pins and the 13/15 pins are used to force the device into configuration mode. Pin 35 can also be connected to the battery voltage via an voltage divider to be able to read the battery voltage.</p>
<a class="reference internal image-reference" href="_images/32lite_pins.jpg"><img alt="Floaty pins" src="_images/32lite_pins.jpg" style="width: 500px;"/></a>
</div>
</div>
</article>
@ -329,9 +352,11 @@ I mounted the iSPINDLE PCB v4.0 just under the cap. The lower red circle shows t
<li><a class="reference internal" href="#esp32s2-mini">ESP32s2 mini</a></li>
<li><a class="reference internal" href="#esp32-d1-mini">ESP32 d1 mini</a></li>
<li><a class="reference internal" href="#schema-for-esp32-build">Schema for esp32 build</a></li>
<li><a class="reference internal" href="#adding-a-reed-magnetic-reset-switch">Adding a reed (magnetic) reset switch</a></li>
</ul>
</li>
<li><a class="reference internal" href="#adding-a-reed-magnetic-reset-switch">Adding a reed (magnetic) reset switch</a></li>
<li><a class="reference internal" href="#floaty-hydrometer-diy-based-on-esp32-lite">Floaty Hydrometer DIY based on esp32 lite</a></li>
<li><a class="reference internal" href="#hardware-extensions">Hardware extensions</a></li>
</ul>
</li>
</ul>

View File

@ -205,7 +205,7 @@
<h1>Welcome to GravityMon<a class="headerlink" href="#welcome-to-gravitymon" title="Permalink to this headline"></a></h1>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This documentation reflects <strong>v1.2 - beta 1</strong>. Last updated 2022-11-04</p>
<p>This documentation reflects <strong>v1.2 - beta 2</strong>. Last updated 2022-11-19</p>
</div>
<div class="section" id="what-is-gravitymon">
<h2>What is GravityMon?<a class="headerlink" href="#what-is-gravitymon" title="Permalink to this headline"></a></h2>
@ -217,7 +217,7 @@ The graph below is an example on how the fermentation process can be tracked. Th
implements a lot of the features that has been requested in the original iSpindle project but never implemented for
various reasons.</p>
<p>The firmware also supports a iSpindle built using an ESP32 which is pin compatible with esp8266, currently there are 3 options that are
supported ESP32-D1 mini, ESP32-C3 mini and ESP32-S2 mini. See <a class="reference internal" href="hardware.html#hardware"><span class="std std-ref">Hardware</span></a>. The more modern hardware will allow better support for SSL and
supported ESP32-D1 mini, ESP32-C3 mini, ESP32-S2 mini, ESP32 lite (floaty). See <a class="reference internal" href="hardware.html#hardware"><span class="std std-ref">Hardware</span></a>. The more modern hardware will allow better support for SSL and
other memory intensive functions.</p>
<p>I started GravityMon because I like to create software and wanted to do some microcontroller programming. I had done a few
projects based on esp8266 and also started to brew beer so this combination was quite natural.</p>
@ -329,6 +329,7 @@ the following libraries and without these this would have been much more difficu
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="releases.html">Releases</a><ul>
<li class="toctree-l2"><a class="reference internal" href="releases.html#v1-2-0-beta2">v1.2.0 - beta2</a></li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#v1-2-0-beta1">v1.2.0 - beta1</a></li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#v1-1-1">v1.1.1</a></li>
<li class="toctree-l2"><a class="reference internal" href="releases.html#v1-1-0">v1.1.0</a></li>
@ -345,7 +346,8 @@ the following libraries and without these this would have been much more difficu
<li class="toctree-l1"><a class="reference internal" href="hardware.html">Hardware</a><ul>
<li class="toctree-l2"><a class="reference internal" href="hardware.html#ispindle-based-on-esp8266">iSpindle based on esp8266</a></li>
<li class="toctree-l2"><a class="reference internal" href="hardware.html#ispindle-based-on-esp32">iSpindle based on esp32</a></li>
<li class="toctree-l2"><a class="reference internal" href="hardware.html#adding-a-reed-magnetic-reset-switch">Adding a reed (magnetic) reset switch</a></li>
<li class="toctree-l2"><a class="reference internal" href="hardware.html#floaty-hydrometer-diy-based-on-esp32-lite">Floaty Hydrometer DIY based on esp32 lite</a></li>
<li class="toctree-l2"><a class="reference internal" href="hardware.html#hardware-extensions">Hardware extensions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="formula.html">Create formula</a></li>

View File

@ -243,6 +243,9 @@ the size of the firmware we are using a custom partition setup.</p>
<p>This is the release build for an ESP32s2-mini variant. When flashing an ESP32 you also need the <em>partition32s2.bin</em> file that outlines the flash memory structure. Due to
the size of the firmware we are using a custom partition setup.</p>
</li>
<li><p><strong>firmware32lite.bin</strong></p>
<p>This is the release build for an ESP32lite which is used by the floaty build (clone).</p>
</li>
</ul>
</div>
</div>

View File

@ -203,13 +203,30 @@
<article role="main">
<div class="section" id="releases">
<span id="id1"></span><h1>Releases<a class="headerlink" href="#releases" title="Permalink to this headline"></a></h1>
<div class="section" id="v1-2-0-beta2">
<h2>v1.2.0 - beta2<a class="headerlink" href="#v1-2-0-beta2" title="Permalink to this headline"></a></h2>
<div class="section" id="features">
<h3>Features<a class="headerlink" href="#features" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Added function to calcualate voltage factor based on measured value.</p></li>
<li><p>Updated battery estimation for the various esp32 boards.</p></li>
<li><p>Added support for the ESP32 lite board which is used in the Floaty Hydrometer variant.</p></li>
</ul>
</div>
<div class="section" id="documentation">
<h3>Documentation<a class="headerlink" href="#documentation" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Added section about the Floaty hardware.</p></li>
</ul>
</div>
</div>
<div class="section" id="v1-2-0-beta1">
<h2>v1.2.0 - beta1<a class="headerlink" href="#v1-2-0-beta1" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p>Changes to 1.2.0 only affect the ESP32 hardware, the ESP8266 is the same as for v1.1.1</p></li>
</ul>
<div class="section" id="features">
<h3>Features<a class="headerlink" href="#features" title="Permalink to this headline"></a></h3>
<div class="section" id="id2">
<h3>Features<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Added support for the ESP32 C3 mini board</p></li>
<li><p>Added support for the ESP32 S2 mini board</p></li>
@ -222,8 +239,8 @@
<li><p>BUG: The first portion of a format template was lost when doing conversion.</p></li>
</ul>
</div>
<div class="section" id="documentation">
<h3>Documentation<a class="headerlink" href="#documentation" title="Permalink to this headline"></a></h3>
<div class="section" id="id3">
<h3>Documentation<a class="headerlink" href="#id3" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Updated hardware section with options for ESP32 boards</p></li>
<li><p>Updated installation instructions.</p></li>
@ -238,8 +255,8 @@
</div>
<div class="section" id="v1-1-0">
<h2>v1.1.0<a class="headerlink" href="#v1-1-0" title="Permalink to this headline"></a></h2>
<div class="section" id="id2">
<h3>Features<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h3>
<div class="section" id="id4">
<h3>Features<a class="headerlink" href="#id4" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Added information to error log about abnormal resets (for instance crashes) to detect and fix those</p></li>
<li><p>Changed storage mode so that the device will go into deep sleep until reset (sleep forever)</p></li>
@ -289,8 +306,8 @@
<li><p>User can now edit the voltage level that forces the device into config mode (device detects charging)</p></li>
</ul>
</div>
<div class="section" id="id3">
<h3>Documentation<a class="headerlink" href="#id3" title="Permalink to this headline"></a></h3>
<div class="section" id="id5">
<h3>Documentation<a class="headerlink" href="#id5" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Added documentation for Brewpiless as target</p></li>
<li><p>Added documentation for BVrewblox as target</p></li>
@ -314,8 +331,8 @@
</div>
<div class="section" id="v1-0-0">
<h2>v1.0.0<a class="headerlink" href="#v1-0-0" title="Permalink to this headline"></a></h2>
<div class="section" id="id4">
<h3>Documentation<a class="headerlink" href="#id4" title="Permalink to this headline"></a></h3>
<div class="section" id="id6">
<h3>Documentation<a class="headerlink" href="#id6" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Update documentation to match v1.0</p></li>
<li><p>Installation instructions updated on how to find the device after wifi has been configured.</p></li>
@ -324,8 +341,8 @@
<li><p>Added additional http error codes to troubleshooting documentation</p></li>
</ul>
</div>
<div class="section" id="id5">
<h3>User interface<a class="headerlink" href="#id5" title="Permalink to this headline"></a></h3>
<div class="section" id="id7">
<h3>User interface<a class="headerlink" href="#id7" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Upgraded to bootstrap v5.1 for web pages.</p></li>
<li><p>Added button on index page to direct to github issues.</p></li>
@ -336,8 +353,8 @@
<li><p>Added function on format page so that its easy to copy a format template from the docs (simplify service integration).</p></li>
</ul>
</div>
<div class="section" id="id6">
<h3>Features<a class="headerlink" href="#id6" title="Permalink to this headline"></a></h3>
<div class="section" id="id8">
<h3>Features<a class="headerlink" href="#id8" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Added advanced setting to ignore angles that are lower than water. This is disabled by default.</p></li>
<li><p>Added support for MPU6500 (standard is MPU6050).</p></li>
@ -354,8 +371,8 @@
<li><p>Advanced settings: Adjust resolution of temp sensor (9 bits to 12 bits), higher resolution takes longer thus reducing battery life</p></li>
</ul>
</div>
<div class="section" id="id7">
<h3>Issues addressed<a class="headerlink" href="#id7" title="Permalink to this headline"></a></h3>
<div class="section" id="id9">
<h3>Issues addressed<a class="headerlink" href="#id9" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>BUG: Fixed issue in formula calculation in case there were a gap in the data series</p></li>
<li><p>BUG: Field name for wifi strength changed from “rssi” to “RSSI”</p></li>
@ -532,27 +549,32 @@ the behaviour in v0.6 is wanted this can be done via the format editor.</p></li>
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Releases</a><ul>
<li><a class="reference internal" href="#v1-2-0-beta1">v1.2.0 - beta1</a><ul>
<li><a class="reference internal" href="#v1-2-0-beta2">v1.2.0 - beta2</a><ul>
<li><a class="reference internal" href="#features">Features</a></li>
<li><a class="reference internal" href="#issues-adressed">Issues adressed</a></li>
<li><a class="reference internal" href="#documentation">Documentation</a></li>
</ul>
</li>
<li><a class="reference internal" href="#v1-2-0-beta1">v1.2.0 - beta1</a><ul>
<li><a class="reference internal" href="#id2">Features</a></li>
<li><a class="reference internal" href="#issues-adressed">Issues adressed</a></li>
<li><a class="reference internal" href="#id3">Documentation</a></li>
</ul>
</li>
<li><a class="reference internal" href="#v1-1-1">v1.1.1</a></li>
<li><a class="reference internal" href="#v1-1-0">v1.1.0</a><ul>
<li><a class="reference internal" href="#id2">Features</a></li>
<li><a class="reference internal" href="#id4">Features</a></li>
<li><a class="reference internal" href="#known-issues-not-yet-fixed">Known issues, not yet fixed</a></li>
<li><a class="reference internal" href="#issues-addressed">Issues addressed</a></li>
<li><a class="reference internal" href="#user-interface">User interface</a></li>
<li><a class="reference internal" href="#id3">Documentation</a></li>
<li><a class="reference internal" href="#id5">Documentation</a></li>
<li><a class="reference internal" href="#other">Other</a></li>
</ul>
</li>
<li><a class="reference internal" href="#v1-0-0">v1.0.0</a><ul>
<li><a class="reference internal" href="#id4">Documentation</a></li>
<li><a class="reference internal" href="#id5">User interface</a></li>
<li><a class="reference internal" href="#id6">Features</a></li>
<li><a class="reference internal" href="#id7">Issues addressed</a></li>
<li><a class="reference internal" href="#id6">Documentation</a></li>
<li><a class="reference internal" href="#id7">User interface</a></li>
<li><a class="reference internal" href="#id8">Features</a></li>
<li><a class="reference internal" href="#id9">Issues addressed</a></li>
</ul>
</li>
<li><a class="reference internal" href="#v0-9-0">v0.9.0</a></li>

File diff suppressed because one or more lines are too long