Docs updated

This commit is contained in:
Magnus Persson 2022-02-04 16:22:27 +01:00
parent 4bcacea9d7
commit cda3a87dd9
6 changed files with 121 additions and 61 deletions

View File

@ -12,8 +12,12 @@ The main features
angle/tile, temperature, calculates gravity and pushes the data to defined endpoints. angle/tile, temperature, calculates gravity and pushes the data to defined endpoints.
In ``configuration mode`` the device is always active and the webserver is active. Here you can view the In ``configuration mode`` the device is always active and the webserver is active. Here you can view the
angle/tilt values, change configuration options and more. When in this mode you can also interact with the device angle/tilt values, change configuration, update the gravity formula. When in this mode you can also interact
via an REST API so data can be pushed to the device via scripts (see API section for more information). with the device via an REST API so data can be pushed to the device via scripts (see API section for more information).
.. image:: images/index.png
:width: 700
:alt: UI example
You can force the device into ``configuration mode`` while measuring gravity. This is useful when calibrating You can force the device into ``configuration mode`` while measuring gravity. This is useful when calibrating
the device so you don't needs to wait for the device to wake up and push the data. The entire calibration the device so you don't needs to wait for the device to wake up and push the data. The entire calibration
@ -21,61 +25,83 @@ The main features
See the :ref:`setting-up-device` section for more information on how to trigger the configuration mode. See the :ref:`setting-up-device` section for more information on how to trigger the configuration mode.
* **Can send data to multiple endpoints at once** * **Can send data to multiple endpoints**
The original iSpindle can only have one destination, this software will push data to all defined endpoints so The original iSpindle can only have one destination, this software will push data to all defined endpoints so
in theory you can use them all. However this will consume more battery power so use only as many as needed. in theory you can use them all. However this will consume more battery power so use only as many as needed. Its much
more efficient to have the endpoints on your local network than on the internet.
Currently the device supports the following endpoints: http (2 different), influxdb2, Brewfather and MQTT. Currently the device supports the following endpoints.
If you want additional targets please raise a feature request in the github repo. * http or https
* influxdb v2
* Brewfather
* MQTT
* Home Assistant
* Brew Spy
* Brewers Friend
* Fermentrack
* Ubidots
* Thingsspeak
Under the :ref:`services` section you can find guides for how to connect GravityMon to these services. For a
description of what data is transmitted you can see :ref:`data-formats`.
The software support SSL endpoints but currently without CA validation, this means that the data is encrypted
but it does not validate if the remote endpoint is who it claims to be.
if you require CA validation please leave a comment on GitHub and I will make that a priority. Adding this function
will dramatically reduce the battery life of the device.
.. note::
Using SSL on a small device such as the esp8266 can be unstable since it requires a lot of RAM to work. And running out
of RAM will cause the device to crash. So enable SSL with caution and only when you really need it. GravityMon will try
to minimize the needed RAM but the remote service might not support that feature.
* **Create gravity formulas on the device** * **Create gravity formulas on the device**
Another big difference is that this software can create the gravity formula in the device, just enter the Another big difference is that this software can create the gravity formula in the device, just enter the
angle/gravity data that you have collected. You will also see a graph simulating how the formula would work. angle/gravity data that you have collected. You will also see a graph simulating how the formula would work.
.. note:: Currently the device can handle 5 data points which should be enough to get a accurate formula. At least 3 data points
is needed to get an accurate formula.
This feature needs more testing to be validated. If there is a need for more data points, raise a comment on github.
* **Customize the data format beeing sent to push targets** * **Customize the data format beeing sent to push targets**
In order to make it easier to support more targets there is a built in format editor that can be used to In order to make it easier to support more targets there is a built in format editor that can be used to
customize the data that is to be sent. This way you can easily adapt the software to new targets without coding. customize the data that is to be sent. This way you can easily adapt the software to new targets without coding.
If you have a good template please share it on the girhub repository and I will add it to the documentation If you have a good template please share it on the github repository and I will add it to the documentation
for other users to enjoy. See the :ref:`format-editor` for more information. for other users to enjoy. See the :ref:`format-editor` for more information. See :ref:`services` for a list of
services currently validated.
.. note::
This feature needs more testing to be validated.
* **Automatic temperature adjustment of gravity reading** * **Automatic temperature adjustment of gravity reading**
If you want to correct gravity based on beer temperature you can do this in the formula but here is a nice If you want to correct gravity based on beer temperature you can do this in the formula but here is a nice
feature that can correct the gravity as a second step making this independant of the formula. feature that can correct the gravity as a second step making this independant of the formula.
.. note:: * **OTA support from webserver**
This feature needs more testing to be validated. When starting up in configuration mode the device will check for a software update from a webserver. This is an easily
way to keep the software up to date. In the future I might add a hosted endpoint for providing updates.
* **OTA support from local webserver**
When starting up in configuration mode the device will check for a software update from a local webserver.
* **DS18B20 temperature adjustments** * **DS18B20 temperature adjustments**
You can adjust the temperature reading of the temperature sensor. You can adjust the temperature reading of the temperature sensor. In normal cases this should not be needed since
the sensors should be calibrated.
* **Gyro Movement** * **Gyro Movement**
The software will detect if the gyro is moving and if this is the case it will go back to sleep for 60seconds. The software will detect if the gyro is moving and if this is the case it will go back to sleep for 60seconds.
This way we should avoid faulty measurements. This way we should avoid faulty measurements and peaks in the graphs.
* **WIFI connection issues** * **WIFI connection issues**
The software will not wait indefiently for a wifi connection. If it takes longer than 20 seconds to connect then The software will not wait indefiently for a wifi connection. If it takes longer than 20 seconds to connect then
the device will go into deep sleep for 60 seoncds and then retry. the device will go into deep sleep for 60 seoncds and then retry later. This to conserve batter as much as possible.
* **Use gyro temperature sensor** * **Use gyro temperature sensor**
@ -93,21 +119,36 @@ The main features
:width: 800 :width: 800
:alt: Gyro temp vs DS18B20 :alt: Gyro temp vs DS18B20
Other features * **Celsius or Farenheigt**
--------------
* Support for Celcius and Farenheigt as temperature formats. You can switch between different temperature formats. GravityMon will always use C for it's internal calculations and
convert to F when displayed.
* Support SG (Plato is not yet supported) * **SG or Plato**
* Gyro data is read 50 times to ensure good accuracy You can switch between different gravity formats. GravityMon will always use SG for it's internal calculations and
convert to Plato when displayed.
Experimental features * **Stable gyro data**
---------------------
The device will read the gyro 50 times to get an accurate reading. If the standad deviation is to high it will not
use the data since this is inacurate and the device is probably moving, probably do to active fermentation or movement of
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.
* **Performance measurements** * **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 way I can find a good balance between performace and quality. I've also create a small library to measure execution code in some areas of the code that i know is time consuming. This
way I can find a good balance between performace and quality. This is a lot of help trying to figure out where bottlenecks
are in the code and where to put optimization efforts. Examples of real measurements:
* Reading the gyro: 885 ms
* Reading DS18B20 temperature sensor: 546 ms
* Connect to WIFI: 408 ms
* Send data to local influxdb v2: 25 ms
* Send data to local mqtt server: 35 ms
* Send data to local http server: 40 ms
* Send data to http server on internet: 0.2 - 5 seconds
See the :ref:`compiling-the-software` for more information. See the :ref:`compiling-the-software` for more information.

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -7,46 +7,55 @@ Welcome to GravityMon's documentation!
###################################### ######################################
.. note:: .. note::
This documentation reflects **v0.8**. Last updated 2022-01-28 This documentation reflects **v0.8**. Last updated 2022-02-04
GravityMon is used to measure gravity and temperature during fermentation of beer and report the progress. The graph below is
an example on how the fermentation process can be tracked. This is from my last brew that was over on a few days. The graph is rendered using
Fermentrack.
GravityMon is a replacement firmare for the iSpindle firmware, it uses the same hardware configuration so .. image:: images/fermentation.png
you can easily switch between them. :width: 500
:alt: Example fermentation
It's used to measure gravity in beer and show the progress of fermentation. GravityMon is a replacement firmare for the iSpindle and uses the same hardware configuration and is 100% compatible. It
implements a lot of the features that has been requested in the orginal iSpindle project but has been rejected for
For more information on this topic and function please visit `iSpindel Homepage <https://www.ispindel.de>`_ . various reasons. Here is a list of :ref:`main_features`.
I started GravityMon because i like to create software and wanted to do some low level programming. I had done a few I started GravityMon because i like to create software and wanted to do some low level programming. I had done a few
projects based on esp8266 and also started to brew beer so this combination was quite natural. projects based on esp8266 and also started to brew beer so this combination was quite natural.
The hardware design comes from the fantastic iSpindle project so that is not covered in this documentation. The hardware design comes from the fantastic iSpindle project so that is not covered in this documentation. For more
information on this topic and function please visit `iSpindel Homepage <https://www.ispindel.de>`_ .
My approach to this software is a little different from that the original ispindle firmware. The github repository can My approach to this software is a little different from that the original ispindle firmware. The github repository
be found here; `GravityMon on Github <https://github.com/mp-se/gravitymon>`_ can be found here; `GravityMon on Github <https://github.com/mp-se/gravitymon>`_
.. note:: .. note::
This software is in the early stages even though its more than one year old so if you find issues, please I dont take responsibility for any errors or issues caused by the software. The software is provided as-is. I will however
open a ticket on github. try my best to fix issues that might occur.
I dont take responsibility for any errors that can cause problems with the use. I have tested v0.4 on 5+ brews I have tested this software over the last year on 20+ brews with good results.
over the last 6 months without any issues.
The main differences: .. _main_features:
---------------------
* Operates in two modes gravity monitoring and configuration mode (simplify calibration) Main features:
* Modern web based UI for configuration (in config mode) --------------
* REST API
* Send data to multiple endpoints when pushing data (2xhttp, brewfather, influxdb v2, mqtt supported) * Operates in two modes gravity monitoring and configuration mode (simplify calibration). Gravity mode
is comparable to how the iSpindle works.
* Modern web based UI when in configuration mode. No need to start the access point changing settings.
* REST API to enable scripted configuration
* Send data to multiple endpoints and services at once
* Setup guides for how to send data to many popular services. Currently 8+ are documented.
* Automatic temperature adjustment of gravity reading * Automatic temperature adjustment of gravity reading
* OTA support from local webserver * OTA support from webserver
* Built in function to create gravity formulas, no need for additional software, just enter tilt/gravity. * Built in function to create gravity formulas, no need for additional software, just enter tilt/gravity and
* Visual graph showing how formula will be interpreted let GravityMon create the formula.
* Visual graph showing how formula will be interpreted based on entered values
* Using the temperature sensor in gyro instead of DS18B20 (faster) * Using the temperature sensor in gyro instead of DS18B20 (faster)
* Built in performance measurements (used to optimise code)
* SSL support in standard HTTP and MQTT connections. * SSL support in standard HTTP and MQTT connections.
* Option to customize data posted to endpoints using template from the UI. * Option to customize data posted to endpoints using template from the UI.
* Built in performance measurements (used to optimise code)
For a complete breakdown see the :ref:`functionallity` For a complete breakdown see the :ref:`functionallity`

View File

@ -40,8 +40,8 @@ Configuration - Device Settings - Device Name
Give your device a good name. Give your device a good name.
Configuration - Device Settings - Calibration Configuration - Device Settings - Gyro Calibration
+++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++
You need to place the device on a flat surface and then press the You need to place the device on a flat surface and then press the
calibrate button. It will take a few seconds for this to complete and the angle should be close to 90 degress. Without calibrate button. It will take a few seconds for this to complete and the angle should be close to 90 degress. Without
@ -49,8 +49,7 @@ calibration the device will not go into gravity mode.
Configuration - Push Settings Configuration - Push Settings
+++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
Add the endpoints where you want data to be transmitted. All URLs that contain a Add the endpoints where you want data to be transmitted. All URLs that contain a valid endpoint will receive the data.
valid endpoint will receive the data.
Calibration Calibration
+++++++++++ +++++++++++
@ -58,6 +57,11 @@ Calibration
I recommend to use the calibration feature to create a gravity formula. If you have values from a I recommend to use the calibration feature to create a gravity formula. If you have values from a
previous calibration then you can add them here, if not follow the calibration guidelines on the iSpindle site. previous calibration then you can add them here, if not follow the calibration guidelines on the iSpindle site.
There are several guides for how to calibrate the device (`iSpindle Calibration <https://www.ispindel.de/docs/Calibration_en.html>`_)
This will get the data points needed to create the formula, and the datapoints will be stored on the device so you can
adjust them when needed.
Step 4 - Completed Step 4 - Completed
------------------ ------------------

View File

@ -16,6 +16,12 @@ v0.8.0
* Logging the runtime, how long a measurement take (last 10 are stored). This can be * Logging the runtime, how long a measurement take (last 10 are stored). This can be
used to check how good the wifi connection is and estimate the lifetime when on battery. used to check how good the wifi connection is and estimate the lifetime when on battery.
Check the device page in the UI for this information. Check the device page in the UI for this information.
* Refactored code to free up more RAM to make SSL more stable.
* Before connecting to an SSL endpoint the device will try to use a new SSL feature
called MFLN (Maximum Fragment Length Negotiation) that allow us to reduce the buffers
from 16k to 2k. This can make a huge difference on a device with only 40k RAM. Not all
servers might support this feature.
* Updated documentation pages.
v0.7.1 v0.7.1
------ ------

View File

@ -126,7 +126,7 @@ Brewer's friend is an all in one service that allows you to manage you recepies
.. warning:: .. warning::
I dont have an account for brewers friend so I have not been able to verfy this completely. Its based on I dont have an account for brewers friend so I have not been able to verfy this completely. Its based on
the available documentation. the available documentation. If this works please let
You can find you API key when logged in to the service. Follow these `instructions <https://docs.brewersfriend.com/devices/ispindel>`_ You can find you API key when logged in to the service. Follow these `instructions <https://docs.brewersfriend.com/devices/ispindel>`_