Update docs
This commit is contained in:
parent
fbc1eb4e31
commit
5d0f02eb18
@ -103,7 +103,7 @@ int createFormula(RawFormulaData &fd, char *formulaBuffer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
myLastErrors.addEntry(F("CALC: Deviation to large, formula rejected."));
|
myLastErrors.addEntry(F("CALC: Error validating created formula. Deviation to large, formula rejected."));
|
||||||
return ERR_FORMULA_UNABLETOFFIND;
|
return ERR_FORMULA_UNABLETOFFIND;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ double calculateGravity(double angle, double temp, const char *tempFormula) {
|
|||||||
return g;
|
return g;
|
||||||
}
|
}
|
||||||
|
|
||||||
myLastErrors.addEntry("CALC: Failed to parse expression " + String(err));
|
myLastErrors.addEntry("CALC: Failed to parse gravity expression " + String(err));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,7 +204,7 @@ double gravityTemperatureCorrectionC(double gravity, double tempC,
|
|||||||
}
|
}
|
||||||
|
|
||||||
myLastErrors.addEntry(
|
myLastErrors.addEntry(
|
||||||
"CALC: Failed to parse expression for gravity correction " + String(err));
|
"CALC: Failed to parse expression for gravity temperature correction " + String(err));
|
||||||
return gravity;
|
return gravity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ bool GyroSensor::setup() {
|
|||||||
// compilation difficulties
|
// compilation difficulties
|
||||||
|
|
||||||
if (!accelgyro.testConnection()) {
|
if (!accelgyro.testConnection()) {
|
||||||
myLastErrors.addEntry(F("GYRO: Failed to connect to gyro"));
|
myLastErrors.addEntry(F("GYRO: Failed to connect to gyro, is it connected?"));
|
||||||
_sensorConnected = false;
|
_sensorConnected = false;
|
||||||
} else {
|
} else {
|
||||||
#if !defined(GYRO_DISABLE_LOGGING)
|
#if !defined(GYRO_DISABLE_LOGGING)
|
||||||
@ -286,7 +286,7 @@ void GyroSensor::applyCalibration() {
|
|||||||
if ((_calibrationOffset.ax + _calibrationOffset.ay + _calibrationOffset.az +
|
if ((_calibrationOffset.ax + _calibrationOffset.ay + _calibrationOffset.az +
|
||||||
_calibrationOffset.gx + _calibrationOffset.gy + _calibrationOffset.gz) ==
|
_calibrationOffset.gx + _calibrationOffset.gy + _calibrationOffset.gz) ==
|
||||||
0) {
|
0) {
|
||||||
myLastErrors.addEntry(F("GYRO: No valid calibration values, aborting"));
|
myLastErrors.addEntry(F("GYRO: No valid calibration values, please calibrate the device."));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ void setup() {
|
|||||||
LOG_PERF_STOP("main-temp-setup");
|
LOG_PERF_STOP("main-temp-setup");
|
||||||
|
|
||||||
if (!myGyro.setup()) {
|
if (!myGyro.setup()) {
|
||||||
myLastErrors.addEntry(F("MAIN: Failed to initialize the gyro"));
|
myLastErrors.addEntry(F("MAIN: Failed to initialize the gyro, is it connected?"));
|
||||||
} else {
|
} else {
|
||||||
LOG_PERF_START("main-gyro-read");
|
LOG_PERF_START("main-gyro-read");
|
||||||
myGyro.read();
|
myGyro.read();
|
||||||
@ -252,7 +252,7 @@ bool loopReadGravity() {
|
|||||||
LOG_PERF_STOP("loop-push");
|
LOG_PERF_STOP("loop-push");
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
myLastErrors.addEntry(F("MAIN: No gyro value"));
|
Log.error(F("MAIN: No gyro value found, the device might be moving."));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ void PushTarget::send(float angle, float gravitySG, float corrGravitySG,
|
|||||||
#if defined(ESP8266)
|
#if defined(ESP8266)
|
||||||
if (ESP.getFreeContStack() < 1500) {
|
if (ESP.getFreeContStack() < 1500) {
|
||||||
if (!_memErrorReported) {
|
if (!_memErrorReported) {
|
||||||
myLastErrors.addEntry(F("PUSH: Low on memory, skipping push ") +
|
myLastErrors.addEntry("PUSH: Low on memory, skipping push " +
|
||||||
String(ESP.getFreeContStack()));
|
String(ESP.getFreeContStack()));
|
||||||
} else {
|
} else {
|
||||||
Log.error(F("PUSH: Low on memory, skipping push %d" CR),
|
Log.error(F("PUSH: Low on memory, skipping push %d" CR),
|
||||||
@ -193,7 +193,7 @@ void PushTarget::addHttpHeader(HTTPClient& http, String header) {
|
|||||||
value.c_str());
|
value.c_str());
|
||||||
http.addHeader(name, value);
|
http.addHeader(name, value);
|
||||||
} else {
|
} else {
|
||||||
myLastErrors.addEntry("PUSH: Invalid http header " + header);
|
myLastErrors.addEntry("PUSH: Unable to set header, invalid value " + header);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ SOFTWARE.
|
|||||||
// Use iSpindle format for compatibility
|
// Use iSpindle format for compatibility
|
||||||
const char iSpindleFormat[] PROGMEM =
|
const char iSpindleFormat[] PROGMEM =
|
||||||
"{"
|
"{"
|
||||||
"\"name\" : \"gravmon\", "
|
"\"name\" : \"${mdns}\", "
|
||||||
"\"ID\": \"${id}\", "
|
"\"ID\": \"${id}\", "
|
||||||
"\"token\" : \"gravmon\", "
|
"\"token\" : \"gravmon\", "
|
||||||
"\"interval\": ${sleep-interval}, "
|
"\"interval\": ${sleep-interval}, "
|
||||||
|
@ -38,7 +38,7 @@ This is the format template used to create the json above.
|
|||||||
.. code-block::
|
.. code-block::
|
||||||
|
|
||||||
{
|
{
|
||||||
"name" : "gravmon",
|
"name" : "${mdns}",
|
||||||
"ID": "${id}",
|
"ID": "${id}",
|
||||||
"token" : "gravmon",
|
"token" : "gravmon",
|
||||||
"interval": ${sleep-interval},
|
"interval": ${sleep-interval},
|
||||||
|
@ -7,7 +7,7 @@ Welcome to GravityMon's documentation!
|
|||||||
######################################
|
######################################
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
This documentation reflects **v0.7**. Last updated 2022-01-23
|
This documentation reflects **v0.8**. Last updated 2022-01-28
|
||||||
|
|
||||||
|
|
||||||
GravityMon is a replacement firmare for the iSpindle firmware, it uses the same hardware configuration so
|
GravityMon is a replacement firmare for the iSpindle firmware, it uses the same hardware configuration so
|
||||||
@ -132,6 +132,7 @@ the following libraries and without these this would have been much more difficu
|
|||||||
data
|
data
|
||||||
compiling
|
compiling
|
||||||
contributing
|
contributing
|
||||||
|
troubleshooting
|
||||||
q_and_a
|
q_and_a
|
||||||
|
|
||||||
Indices and tables
|
Indices and tables
|
||||||
|
@ -11,12 +11,14 @@ v0.8.0
|
|||||||
* Added instructions for how to configure integration with Fermentrack
|
* Added instructions for how to configure integration with Fermentrack
|
||||||
* Added instructions for how to configure integration with Ubidots
|
* Added instructions for how to configure integration with Ubidots
|
||||||
* Added instructions for how to configure integration with HomeAssistant
|
* Added instructions for how to configure integration with HomeAssistant
|
||||||
|
* Added instructions for how to configure integration with Brewers Friend (not verified)
|
||||||
|
|
||||||
v0.7.1
|
v0.7.1
|
||||||
------
|
------
|
||||||
|
|
||||||
* Defined mqtt port was ignored, used default values.
|
* Defined mqtt port was ignored, used default values.
|
||||||
* Extended length of HTTP url fields from 100 to 120 chars.
|
* Extended length of HTTP url fields from 100 to 120 chars.
|
||||||
|
* Fixed issue with default template so it now includes the device name correctly.
|
||||||
|
|
||||||
v0.7.0
|
v0.7.0
|
||||||
------
|
------
|
||||||
|
@ -8,6 +8,8 @@ This chapter contains a list of targets and what configuration is needed to inte
|
|||||||
Brewfather
|
Brewfather
|
||||||
++++++++++
|
++++++++++
|
||||||
|
|
||||||
|
Brewfather is an all in one service that allows you to manage you recepies and brews.
|
||||||
|
|
||||||
Just enter the http adress found on brewfather, not other settings are needed. The endpoint has the following format:
|
Just enter the http adress found on brewfather, not other settings are needed. The endpoint has the following format:
|
||||||
|
|
||||||
.. code-block::
|
.. code-block::
|
||||||
@ -117,3 +119,39 @@ many sensors / topics as you want.
|
|||||||
gravmon/${mdns}/temp_units:${temp-unit}|
|
gravmon/${mdns}/temp_units:${temp-unit}|
|
||||||
|
|
||||||
|
|
||||||
|
Brewer's Friend
|
||||||
|
+++++++++++++++
|
||||||
|
|
||||||
|
Brewer's friend is an all in one service that allows you to manage you recepies and brews.
|
||||||
|
|
||||||
|
.. 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.
|
||||||
|
|
||||||
|
You can find you API key when logged in to the service. Follow these `instructions <https://docs.brewersfriend.com/devices/ispindel>`_
|
||||||
|
|
||||||
|
**Note there are different URLs if you are using plato or specific gravity!**
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
http://log.brewersfriend.com/ispindel/[API KEY]
|
||||||
|
http://log.brewersfriend.com/ispindel_sg/[API KEY]
|
||||||
|
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
{
|
||||||
|
"name" : "${mdns}",
|
||||||
|
"ID": "${id}",
|
||||||
|
"token" : "[API KEY]",
|
||||||
|
"interval": ${sleep-interval},
|
||||||
|
"temperature": ${temp},
|
||||||
|
"temp-units": "${temp-unit}",
|
||||||
|
"gravity": ${gravity},
|
||||||
|
"angle": ${angle},
|
||||||
|
"battery": ${battery},
|
||||||
|
"rssi": ${rssi}
|
||||||
|
}
|
||||||
|
48
src_docs/source/troubleshooting.rst
Normal file
48
src_docs/source/troubleshooting.rst
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
.. _troubleshooting:
|
||||||
|
|
||||||
|
Troubleshooting
|
||||||
|
###############
|
||||||
|
|
||||||
|
Log errors
|
||||||
|
++++++++++
|
||||||
|
|
||||||
|
* Not enough values for deriving formula
|
||||||
|
|
||||||
|
To create a formula its required to have at least 3 measurements.
|
||||||
|
|
||||||
|
* Error validating created formula. Deviation to large, formula rejected
|
||||||
|
|
||||||
|
The device will try to create formulas with different complexities. It will try to
|
||||||
|
validate the formula using the supplied values. If the differnce is more than 1.6 SG on any point
|
||||||
|
the formula will be rejected. Check the entered values if they seams to be resonable.
|
||||||
|
|
||||||
|
* No valid calibration values, please calibrate the device.
|
||||||
|
|
||||||
|
The gyro needs to be calibrated at 90 degress (flat). This is done on the configration page.
|
||||||
|
|
||||||
|
* Low on memory, skipping push
|
||||||
|
|
||||||
|
The arduino libraries sometimes leak memory, this only occurs when running in configuration mode. To avoid
|
||||||
|
crashes the device will skip pushing data if the memory drops to much. Network connections seams to be connected
|
||||||
|
to memory leaks.
|
||||||
|
|
||||||
|
* Unable to set header, invalid value
|
||||||
|
|
||||||
|
Check the format for your custom header. This means it has not a correct format.
|
||||||
|
|
||||||
|
* Influxdb push failed response
|
||||||
|
* Brewfather push failed response
|
||||||
|
* HTTP push failed response
|
||||||
|
|
||||||
|
All these errors are standard http error codes. This are the commone ones;
|
||||||
|
|
||||||
|
* 400 - Bad request. Probably an issue with the post format. Check format in the format editor.
|
||||||
|
* 401 - Unathorized. The service needs an token or other means to authenticate the device.
|
||||||
|
* 403 - Forbidden. Could be an issue with token or URL.
|
||||||
|
* 404 - Not found. Probably a wrong URL.
|
||||||
|
|
||||||
|
* MQTT push on <topic> failed error
|
||||||
|
|
||||||
|
* -3 - Network failed connected
|
||||||
|
* -10 - Connection denied
|
||||||
|
|
Loading…
Reference in New Issue
Block a user