{"id":6191,"date":"2019-09-29T09:53:49","date_gmt":"2019-09-29T16:53:49","guid":{"rendered":"https:\/\/www.corbinstreehouse.com\/blog\/?p=6191"},"modified":"2019-09-29T09:53:49","modified_gmt":"2019-09-29T16:53:49","slug":"fermentationtracker-tracking-beer-fermentation-with-a-tilt","status":"publish","type":"post","link":"https:\/\/www.corbinstreehouse.com\/blog\/2019\/09\/fermentationtracker-tracking-beer-fermentation-with-a-tilt\/","title":{"rendered":"FermentationTracker &#8211; Tracking Beer Fermentation with a Tilt"},"content":{"rendered":"<p id=\"top\" \/>\n<p>I&#8217;ve been brewing beer for the past few years, and it is a lot of fun. As a programmer, I want to play around with code to track data. One of the things that frustrated me with brewing is knowing when the beer is \u201cdone\u201d. To do it correctly, you have to find out when the yeast has finished eating the available sugars. This is done by testing the gravity of the beer, which measures how much sugars are left in the liquid. Traditionally, people would do this with a hydrometer. You pull out a bit of the fermenting beer and see where a piece of (calibrated) glass floats to determine the gravity. This is difficult to do with traditional homebrew glass carboys because you have to open up the top and somehow pull out some of the liquid without contaminating the beer. \u00a0You are basically looking for a period in time when the gravity doesn\u2019t change; that means the beer is done fermenting. But, we never did this; it was too cumbersome, and I hated using a hydrometer. We also have a refractometer to measure the sugars in a beer\u2026which only needs a few drops of liquid\u2026.but it is still cumbersome to get those few drops and accuracy isn\u2019t all that great (it is hard to accurately read the line). I need a small stainless steel conical fermenter that allows pulling small samples, but I haven\u2019t been able to find a used one at a reasonable price yet.<\/p>\n<p>A while back I discovered the \u201c<a href=\"http:\/\/www.ispindel.de\">iSpindel<\/a>\u201d. Some ingenious germans made a little device that can measure the tilted angle of a floating tube. The angle varies depending on the amount of sugars in the beer, so you can fairly accurately determine the gravity as a beer is fermenting. Cool! I instantly wanted to make one, but never got around to it. I have too many hobbies and projects.<\/p>\n<p>Fast forward a while, and I stumble upon the <a href=\"https:\/\/tilthydrometer.com\">Tilt Hydrometer<\/a>. Someone took the iSpindel concept and made a commercial product out of it. I forked over the $135 bucks for one and started using it.\u00a0<\/p>\n<p>The Tilt is pretty cool. There is an iOS app that lets you check the gravity and logs it to a Google spreadsheet. This sheet will tell you all the logged values over time, and show you a cool graph of the gravity and temperature. But, it also does an ABV and apparent attenuation calculation. The sucky thing about the app is that you have to launch it to get it to log the values. I want something that always logs the values.<\/p>\n<p>So, I started an app that logs the Tilt values into a CoreData backed database and called it FermentationTracker. You can download the Swift source at\u00a0<a href=\"https:\/\/github.com\/corbinstreehouse\/FermentationTracker\/tree\/master\/FermentationTracker\">https:\/\/github.com\/corbinstreehouse\/FermentationTracker\/tree\/master\/FermentationTracker<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"display: block; margin-left: auto; margin-right: auto;\" title=\"FermentationTracker_screeen_shot.png\" src=\"https:\/\/www.corbinstreehouse.com\/blog\/wp-content\/uploads\/2019\/09\/FermentationTracker_screeen_shot.png\" alt=\"FermentationTracker app\" width=\"1462\" height=\"857\" border=\"0\" \/><\/p>\n<p>\u00a0<\/p>\n<p>I figured out how to read the Tilt\u2019s BLE beacon data, and toss it into my own database. I didn\u2019t get very far with this app, and I quickly realized my primary Mac was too far away from the Tilt to actually read the BLE data. So, I had to run it on my laptop\u2026.and I don\u2019t like keeping my laptop plugged in 24-7 due to battery life issues (that\u2019s another topic in itself based on my EV understanding of lithium ion cells).\u00a0<\/p>\n<p>Fast forward again, and I ran across <a href=\"https:\/\/www.fermentrack.com\">Fermentrack<\/a>. An open source project that does what I wanted, but has a web based interface. It lacks a few features, but being OSS, I can tweak it. So far, I already added ABV calculations, and I plan on adding a more beer-centric presentation.<\/p>\n<p>So, I&#8217;m going to stop working on FermentationTracker, and pursue some work on Fermentrack.\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been brewing beer for the past few years, and it is a lot of fun. As a programmer, I want to play around with code to track data. One of the things that frustrated&#8230; <a class=\"read-more\" href=\"https:\/\/www.corbinstreehouse.com\/blog\/2019\/09\/fermentationtracker-tracking-beer-fermentation-with-a-tilt\/\">[read more]<\/a><\/p>\n","protected":false},"author":1,"featured_media":6190,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6,86],"tags":[76,87,200],"class_list":["post-6191","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cocoa","category-coding","tag-beer","tag-coding","tag-swift"],"jetpack_featured_media_url":"https:\/\/www.corbinstreehouse.com\/blog\/wp-content\/uploads\/2019\/09\/FermentationTracker_screeen_shot.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/posts\/6191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/comments?post=6191"}],"version-history":[{"count":1,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/posts\/6191\/revisions"}],"predecessor-version":[{"id":6192,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/posts\/6191\/revisions\/6192"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/media\/6190"}],"wp:attachment":[{"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/media?parent=6191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/categories?post=6191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.corbinstreehouse.com\/blog\/wp-json\/wp\/v2\/tags?post=6191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}