mp-se / gravitymon

iSpindle replacement firmware for beer brewing/fermenting

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add skip interval for gyro measurements

DMT07 opened this issue · comments

commented

Is your feature request related to a problem? Please describe.
The gyro uses a lot more energy than the DS18B20 temperature sensor. For applications where you want to use the iSpindel as the beer temperature sensor, you ideally want more regular temperature updates than tilt angle updates. If there was an option to set a skip interval for the gyro measurements, more frequent temperature readings can be sent for the same battery life.

Describe the solution you'd like
In the configuration, under the "Advanced Software Settings" tab, add an option "Skip interval - gyro update". When the skip interval > 0, the gyro reading is treated as sample and hold (last actual reading is reported during the skipped cycles).

If you use the temperature sensor on 12 bits it will consume as much power as the gyro, its not the sensors that consume power its the esp itself. But I like your Idea of having the possibility to send updates for one or the other sensor more frequent.

Would a setting to disable the qyro always make sense if a user wants to use the device as a temperature probe`?

The challenge is probably what data format to use when there is no angle or gravity data. Should there be different format templates with and without angle/gravity? Should the value be set to a zero? How would the server side interpret the data ?

commented

I have not personally considered using the iSpindel as a temperature sensor only, but now that you mention it, it might be useful for something like temperature control while ageing?

In the case where the angle/gravity readings are skipped, a "sample and hold" approach should be fine. But it's a good question, what happens when no angle/gravity readings are present at all. I'll have to go look in detail how brewpiless consumes the data but at first glance I can see that it will reject the update if the tilt angle field is missing from the http post. I don't see any range/validity check being done on the incoming tilt value, but there is a #define INVALID_TILT -1 and #define INVALID_GRAVITY -1.

Let me dig a bit and come back to you. I'll check how BLE data is consumed as well and see what I can find about the other services like Brewfather etc.

I actually created a fork that only works as a temp sensor. This was a request by a user. So it would be good to get that fork archived.

The problem with missing data is that the server might throw an exception of the field is missing. The format template would not know what data to omit either. So sending a dummy value (or perhaps the last known gravit) is probably the easiest option