mp-se / gravitymon Goto Github PK
View Code? Open in Web Editor NEWiSpindle replacement firmware for beer brewing/fermenting
License: MIT License
iSpindle replacement firmware for beer brewing/fermenting
License: MIT License
Add feature to check if remote server supports reducing buffer from 16k to 512bytes to reduce memory usage
Upgrade to v2 of the esp32 framework. Waiting for this to be supported by platformio
Create a section in the documentation around hardware and how to build an iSpindle using an ESP32
Store errors on flash and make it possible to view them in the ui. This will make it easier to see issues connected to sending data without the need for serial connection.
It should be possible to calculate abv, but we need to have the user set a og and perhaps brew name.
The standard format for normal http does not include the device name properly. This is a corrected format template fixing the bug.
{
"name" : "${mdns}",
"ID": "${id}",
"token" : "gravmon",
"interval": ${sleep-interval},
"temperature": ${temp},
"temp-units": "${temp-unit}",
"gravity": ${gravity},
"angle": ${angle},
"battery": ${battery},
"rssi": ${rssi},
"corr-gravity": ${corr-gravity},
"gravity-unit": "${gravity-unit}",
"run-time": ${run-time}
}
See if we can locate the memory leak when sending data in config mode. More frequent when using ssl. Low memory causes crash when ssl is used (ssl needs lots of memory to work).
This is not an issue when in gravity mode since we then start from reset state.
Only basic validation is added in ui (using form params only). Would be good to do more advanced checks to avoid input errors.
Today the apis needs to have all variables or they are set to empty. Update apis to handle incomplete requests and also more data validation.
Based on processing time it should be possible to estimate the batterylife since runtime is the main impact on battery life. The basic functionallity is there so this is an UI update.
The current version sends a json payload over mqtt which is not compatible with how iSpindle sends data. iSpindle sends data over several topics like below. Update the MQTT target to support multiple topics. Also add so the port number can be edited.
ispindel/iSpindel000/tilt/89.96796
ispindel/iSpindel000/temperature/21.375
ispindel/iSpindel000/temp_units/C
ispindel/iSpindel000/battery/0.04171
ispindel/iSpindel000/gravity/33.54894
ispindel/iSpindel000/interval/1
ispindel/iSpindel000/RSSI/-58
The port value is ignored in the code, will use standard ports instead of user defined.
The tilt is not always correct, in some cases when the device has rotated it's not calculated correctly.
Document how to connect to ubidots.
http://industrial.api.ubidots.com/api/v1.6/devices/[device]/?token=[mytoken]
WIth the current URL lenght the device name cannot be longer than 5 chars.. See #8
This is an example of a custom format to post a few values to ubidots.
{ "temperature": ${temp}, "gravity": ${gravity}, "angle": ${angle}, "battery": ${battery}, "rssi": ${rssi} }
Update html to bootstrap v5
It would be good to have proper validation of SSL certificates. Uploading all current CA is not an option, it takes to long to load them from disk ~3 seconds.
Adding on CA for each service is probably a better approach to validate the endpoint certificate. Doing validation would also mean that we need to perform an NTP sync for the validation to be successful.
The following libraries needs to be updated:
Handle for next release.
Add a few more points for the gravity formula
Add ssl support for influxdb
The firmware currently only support SG as gravity format. I would be good to also support plato. I plan to use SG as the internal format and just present the data in plato on UI and when sending data to other targets. This would make it easy to switch between the two.
Parts affected:
Add possibility to test push endpoints from UI
If the angles are not entered in order the graph is not correct, need to sort data for graph based on angle
Brewfather works with the standard http endpoint, no need for duplicated options. The current one can be used with a custom format templete anyway.
Adjust the default voltage factor on esp32 target, now showing the correct voltage.
I found this new ESP32 in the same formfactor/pinout as the ESP8266. It would be interresting to see if this will give better performance and/or battery life.
Some services are using HTTP get like ubidots and blynk so this can be useful to support more services.
Increase the lenght of the http fields.
Its currently to short to support a URL to ubidots when including token in URL. The device name is limited to 5 chars.
Add a feature on ESP32 target to send data over BLE simulating a Tilt.
Token can be set in the format templates but to simplify this it should be possible to set this as a field and have the ispindle format use this by default.
Add a section on contribution to this project. Probably need to have a section describing the software setup and how to add an new push target.
If the esp32 is set to only send data over ble, skip the wifi connection step.
Combine the index and device pages in the UI to have a complete overview of data and device information in one place.
Update documentation to show how brewflasher is used to install firmware.
Many services uses http headers for authentication and format defintions, having the possibility to define these would increase support for more services.
For example:
Content-Type: application/json
Authorization: Basic
X-Auth-Token: MtRbM7ipKUsjRh6RwJE0ofIQo0KqoG
Add button and api to restore to factory defaults.
On initial setup I found that the IP address generated by the interface was incorrect ( 192.168.4.1
and it was quite hard to find either :
<devicename>.local
as documented : https://mp-se.github.io/gravitymon/configuration.htmlhttp://<devicename>ABCDEF.local
Add support for SSL. This should cover most targets.
Options:
Need to investigate what the different libraries support.
Hello.
I changed my OTA Base URL to:
https://github.com/mp-se/gravitymon/tree/master/bin/
(Not sure if this is correct or not)
And the Temp Sensor Adj value automatically goes to -17.77778.
I tried changing it to 0 but it just goes back to that value.
Even after removing the OTA value I cannot set the Temp Sensor value back to 0.
I tried in both Chrome and Firefox.
This is on the 0.8.0 version.
EDIT:
By entering in +32 for the Temp Sensor Adj value it has reset back to 0.
After restarting the device it seems to be showing the correct temperature.
Hello.
I just installed GravityMon and it seems to be working well but I noticed the temperature recorded in Fermentrack is 30 degrees F or more higher than what the GravityMon web server page shows. Is this a push configuration error?
Thanks for any advice or information.
EDIT:
Okay I just figured out that GravityMon is detecting the temperature as 68F but it's sending it to Fermentrack as 68C.
Any idea how I can correct this?
I dont have an account for brewers friend so I have not been able to verfy this completely. Its based on the available documentation. Need help to verfiy these instructions.
Brewer's friend is an all in one service that allows you to manage you recepies and brews.
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!
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.
{
"name" : "${mdns}",
"ID": "${id}",
"token" : "[API KEY]",
"interval": ${sleep-interval},
"temperature": ${temp},
"temp-units": "${temp-unit}",
"gravity": ${gravity},
"angle": ${angle},
"battery": ${battery},
"rssi": ${rssi}
}
Its also possible to update via the ispindle firmware upload
When the device is moving the angle is not updated in the UI if there is movement, relay
Add this to the format template, also add a comment that blank data will revert to default.
It would be nice to estimate how long the device will last based on sleep/push interval.
We know that the battery is typically 2200mAh and the main power is drained when aware. Since we are measuring the run time we can store this and estimate an average for the last 10 wakeups. This should be sufficient to estimate how long the device can operate.
We need to:
The documentation for brewfather was not really showing how to configure it, update documentation to cover the two options.
Add possibility to test pushing data from ui so that we know the setup is valid.
Use real data when testing format template
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.