I’ve added a feature on beemind.me to have a goal that is composed out of other beeminder goals’ datapoints. A typical use case of it might be combining running, walking, cycling, and weight-lifting into a one meta-goal. Another might be to sum the time spent reading and watching lectures. I plan to use it to combine different activities that are measured by rescuetime into one.
In the same vein, there is now a metric on the app that calculates all the time spent in physical activity during each hour. That would include random walks during the day for android users, manual entries in their app/website or any other app that syncs to google fit.
I have an odometer goal or cycling and I’d like to update my exercise with a 1 if I did cycle that day.
But it currently auto-submits the entire odometer value. I’d like to only submit 1.
How do I achieve this?
At the moment aggregating as binary would not solve the problem because it does not change the datapoints values in the api.
It’s possible to take that into consideration and aggregate by day. The downside for that approach would be that it would mess up the generated graph on beeminder and I’d also have to deal with timezones.
I’m considering adding a metric that counts the number of datapoints per hour for selected goals. Would that solve the problem?
You might get two points if you update the odometer twice in the same day but maybe its even better.
This feature is something that I’ve wanted for a long time, but hadn’t put much thought into trying to accomplish. Thanks for making it happen!
Just as a warning, the syncing currently seems to be incompatible with also adding data manually to the meta-goal. This afternoon, I made some new goals and composed them with an existing one. During one of the syncs, data points disappeared that I had earlier put manually in my older (now meta) goal.
Yes, It is an application wide design concern. The app deletes overlapping timestamps. I think keeping overlapping datapoints might cause confusion in other situations.
What I did to deal with manual input into meta goal is to have another goal just for manual input and compose it with the others.
That’s why I suggested that @insti might be able to solve this particular case by putting his Beeminder goal into binary; no matter how many datapoints are received by it, his exercise goal would increment by exactly one, on each day with at least one contributing exercise.
@philip, You are right that binary is exactly what @insti wanted. The integration works by reading goals’ datapoints and the datapoints are not affected by this setting. I really don’t want to duplicate that logic so it might make sense to also expose datapoints after aggregation in beeminder api. @bee, @dreev What do you think?
Unfortunately that would not work either. The datapoints in beemind.me are calculated hourly which means cycling twice in the same day would lead to two datapoints in the target goal.
At the moment I have no access to the ‘correct’ values. One way to get it is to duplicate the logic of aggregations: min, max, last, binary, etc. Preferably, I could get the aggregated value from beeminder’s API.
If you don’t mind getting two datapoint for a day with two cycling session. I think my previous suggestion of having a metric that just counts datapoints is better. You could have a cycling goal that is transformed to cycling_count goal (with the help of the metric yet to be implemented). Then you could use the current “compose” metric to add cycling_count to the current target goal.
My reason for this preference is to reduce the complexity the UI for editing goal integrations.