Docs updated
This commit is contained in:
parent
4bcacea9d7
commit
cda3a87dd9
@ -12,8 +12,12 @@ The main features
|
||||
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
|
||||
angle/tilt values, change configuration options and more. When in this mode you can also interact with the device
|
||||
via an REST API so data can be pushed to the device via scripts (see API section for more information).
|
||||
angle/tilt values, change configuration, update the gravity formula. When in this mode you can also interact
|
||||
with the device via an REST API so data can be pushed to the device via scripts (see API section for more information).
|
||||
|
||||
.. 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
|
||||
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.
|
||||
|
||||
* **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
|
||||
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**
|
||||
|
||||
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.
|
||||
|
||||
.. 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**
|
||||
|
||||
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.
|
||||
If you have a good template please share it on the girhub repository and I will add it to the documentation
|
||||
for other users to enjoy. See the :ref:`format-editor` for more information.
|
||||
|
||||
.. note::
|
||||
|
||||
This feature needs more testing to be validated.
|
||||
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. See :ref:`services` for a list of
|
||||
services currently validated.
|
||||
|
||||
* **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
|
||||
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.
|
||||
|
||||
* **OTA support from local webserver**
|
||||
|
||||
When starting up in configuration mode the device will check for a software update from a local webserver.
|
||||
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.
|
||||
|
||||
* **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**
|
||||
|
||||
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**
|
||||
|
||||
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**
|
||||
|
||||
@ -93,21 +119,36 @@ The main features
|
||||
:width: 800
|
||||
: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**
|
||||
|
||||
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.
|
||||
|
||||
|
BIN
src_docs/source/images/fermentation.png
Normal file
BIN
src_docs/source/images/fermentation.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
@ -7,46 +7,55 @@ Welcome to GravityMon's documentation!
|
||||
######################################
|
||||
|
||||
.. 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
|
||||
you can easily switch between them.
|
||||
.. image:: images/fermentation.png
|
||||
:width: 500
|
||||
:alt: Example fermentation
|
||||
|
||||
It's used to measure gravity in beer and show the progress of fermentation.
|
||||
|
||||
For more information on this topic and function please visit `iSpindel Homepage <https://www.ispindel.de>`_ .
|
||||
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
|
||||
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
|
||||
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
|
||||
be found here; `GravityMon on Github <https://github.com/mp-se/gravitymon>`_
|
||||
My approach to this software is a little different from that the original ispindle firmware. The github repository
|
||||
can be found here; `GravityMon on Github <https://github.com/mp-se/gravitymon>`_
|
||||
|
||||
.. note::
|
||||
This software is in the early stages even though its more than one year old so if you find issues, please
|
||||
open a ticket on github.
|
||||
|
||||
I dont take responsibility for any errors that can cause problems with the use. I have tested v0.4 on 5+ brews
|
||||
over the last 6 months without any issues.
|
||||
.. note::
|
||||
I dont take responsibility for any errors or issues caused by the software. The software is provided as-is. I will however
|
||||
try my best to fix issues that might occur.
|
||||
|
||||
The main differences:
|
||||
---------------------
|
||||
I have tested this software over the last year on 20+ brews with good results.
|
||||
|
||||
* Operates in two modes gravity monitoring and configuration mode (simplify calibration)
|
||||
* 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)
|
||||
.. _main_features:
|
||||
|
||||
Main features:
|
||||
--------------
|
||||
|
||||
* 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
|
||||
* OTA support from local webserver
|
||||
* Built in function to create gravity formulas, no need for additional software, just enter tilt/gravity.
|
||||
* Visual graph showing how formula will be interpreted
|
||||
* OTA support from webserver
|
||||
* Built in function to create gravity formulas, no need for additional software, just enter tilt/gravity and
|
||||
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)
|
||||
* Built in performance measurements (used to optimise code)
|
||||
* SSL support in standard HTTP and MQTT connections.
|
||||
* 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`
|
||||
|
||||
|
@ -40,8 +40,8 @@ Configuration - Device Settings - Device 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
|
||||
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
|
||||
+++++++++++++++++++++++++++++
|
||||
Add the endpoints where you want data to be transmitted. All URLs that contain a
|
||||
valid endpoint will receive the data.
|
||||
Add the endpoints where you want data to be transmitted. All URLs that contain a valid endpoint will receive the data.
|
||||
|
||||
Calibration
|
||||
+++++++++++
|
||||
@ -58,6 +57,11 @@ Calibration
|
||||
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.
|
||||
|
||||
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
|
||||
------------------
|
||||
|
||||
|
@ -16,6 +16,12 @@ v0.8.0
|
||||
* 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.
|
||||
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
|
||||
------
|
||||
|
@ -126,7 +126,7 @@ Brewer's friend is an all in one service that allows you to manage you recepies
|
||||
|
||||
.. warning::
|
||||
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>`_
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user