Create ABV widget for me Please

https://www.brewersfriend.com/abv-calculator/

pretty simple google

Please read the OP. He knows how to find the ABV, he wants a widget to display it live.

Hi, I’ve tried to create this variable on a STEM account but then get “an error has occurred and variable cannot be created”. Was this functionality allowed for all STEM accounts?

Hi @407255,

I hope you are doing well.

Unfortunately, as explain in my previous note these types of data range expressions are only available in Ubidots paid licenses. Nonetheless, I’ve already added a feature request for the product team to consider enable an expression that allows you make this calculation. For the time being, I don’t have an ETA, but as soon as I have an update I will let you know.

Best,
-Isabel

Any update, this would be great.

I current have a box with the highest gravity and one with the lowest, just need to add a sum for it to calculate.

Hi @jamesesmith,

I hope all is well.

Unfortunately, I don’t have any updates yet from the product team on where this expression for calculating the ABV value will be added. Nonetheless, I added a “+1” to this feature request and hope to have new in the coming months.

Best,
-Isabel

1 Like

I’ve got it to work with the formula above ((76.08 * (og- insert your gravity variable ) / (1.775-og)) * (insert your gravity variable / 0.794)).

It’s a pain to have to update the OG value each time you start a new brew off so I thought I could create a new variable called OG, with a widget to enter the value.

My thought was, when I start the brew off I would enter this value (along with a context of brew name) and then the above calculation could use that variable plus the current SG variable to show the current ABV. The formula says it’s correct but it does not return a value.

Anyone have an idea why this does not work?

Good day @stripeyjoe,

Can you please send us an image of this synthetic expression you are mentioned? In that way, we can investigate the reason why is not returning any value. Additionally please keep in mind that you can use the context of a variable to make a calculation only when the context is a numerical value.

All the best,
-Isabel

Hi @isalogi
For some reason I’m not able to upload screen shots…

I am using a synthetic expression to calculate the current alcohol level in my fermenting beer, using two variables:
gravity - This comes from my iSpindel device every 15 minutes
OG - this one is set at the beginning of each brewing session, (this is the first gravity reading when I start my brew off), I enter this via a manual entry widget, writing to the OG variable I created in my iSpindel Device.

Both gravity and OG are numerical values in the range 1.000 to 1.200

The formula is:
(76.08*( OG - gravity )/(1.775- OG ))*( gravity /0.794)

When I use this in the synthetic expression to show the current alcohol level the formula validates but I get no values.

If I substitute OG for it’s numerical value (eg, 1.066), then I get a calculated value (eg 5.05%)

Good day @stripeyjoe,

Thank you for your response. Sorry to hear you are unable to upload images. Based on your explanation as the synthetic expression involves more than one variable is necessary that all variables have the same timestamp otherwise you need to wrap up the expression with the fill_missing() function, which is not supported in the free version. A way to achieve your goal under the STEM account is by setting the variables to have the same timestamp.

Best,
–Isabel.

my OG = 10.80 so the formular is …

(1.080 - gravity) * 133.75

Hello @pongsak,

In this case, since the OG is a set value that is only configured at the beginning of each brewing I’d recommend you to simply type the value in the Synthetic Expression as you did here:

This way you won’t need the fill_missing() function. Then, for each brew you’ll have to update this value.

Does this make sense?

Best regards,
Sebastián

Hi @Sebastian,
Thanks for reply, I’m totally novice, so I can’t find the way how to get first value of gravity then I don’t need to correct every batch of brewing.
Would you mind to show me how to do that? Thank you

Hello @pongsak ,

To get the first value of gravity, you’ll have to go to the variable and get the see the value there.

Firtst click on Devices from the Navbar, then select the device where the Gravity value is, and go to the variable.

From there, you should be able to view the graph and determine which was the first value for the Gravity value. One important thing to mention, is that if you recall the date at which the brew was setup, you could set the Date Picker only to show the data for that day (therefore you won’t request too many data and possibly hit the Daily Dots out extraction).

Does this make sense?

Best regards,
Sebastián

Good afternoon @Sebastian,

I do want to know how to create syntax that can automatic pull data on the first time record in any specific variable, so I can use this syntax in other formulars.

Hello @pongsak ,

Actually, I’d rather recommend that you manually input the value for the first reading of Gravity in the Synthetic expression. The reason for that, is that the expression for obtaining the first Dot of a range requires for you to know the range itself. For example, the functions don’t allow to get the first Dot from the 29th of January, instead, these functions require a set of seconds, minutes, days or months (for example, get the first Dot of the past 3 Months, or the first Dot of the past days).

In that sense, I’d strongly recommend you simply type in the initial value for the Gravity value, since you can easily find it in your variables and that this is a one time setup per brew.

In the case that you were to use the range functions (provided you have a paid plan), you’d have to match the amount of days when typing the expression to the date of the first Dot. So lets say the first Dot was received 16 days ago, then the expression would be:

fill_missing(first(gravity,"16D")-gravity)*133.75

I’ll be attentive to your comments.

All the best,
Sebastián

Hello @Sebastian

Thank you very much for educating me, that all I need. I’m very appreciated.
In Ubidots syntax tutorial or community I searched have no anything about “first”.
I seen “last” so I thought myself why there is no “first”. :smiley:

Hello, @pongsak

I hope you’re doing well,

I would like to let you know that we are currently working on the documentation of synthetic variables in a place where they can be easily accessed by our IoT developers community. There you will find all functions available with examples. Once we have the documentation ready we will let you know immediately.

Regards,

-Santiago

1 Like

Thank you all. :slightly_smiling_face: