TiltBridge - Tilt-to-WiFi Device for Tilt Hydrometer

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
It seems I'm playing with all Thorrak's designs lately, but this one's almost anticlimactic. D32 Pro, TFT, and cable got here Tuesday, and a Tilt Pro today. Flashed the D32 using BrewFlasher Web, plugged in the TFT, and what do you know, it Just Worked™. Cool! Having a little trouble getting the case (especially the lid) to print, but it's working nicely. Haven't tried getting it to report to Fermentrack, BrewFather, or anything else yet, but one thing at a time.
 
For some reason, I am unable to reset my password for tilt bridge.. I am unable to access the configuration page for my latest brew and all of my previous files are not accessible.... can I get a proper reset..?
 
Yeah, just choose that option in BrewFlasher
Are you implying that I need to completely reflash my controller? For the past 9 months All I've had to do is go into the web portal and change the beer name and it would automatically update the Google doc...
 
Are you implying that I need to completely reflash my controller? For the past 9 months All I've had to do is go into the web portal and change the beer name and it would automatically update the Google doc...
Right, but you’re having issues accessing the controller’s webpage, are you not? The easiest solution would be to just reflash it, depending on what the underlying issue is. Is the problem entirely with Google Sheets?
 
Right, but you’re having issues accessing the controller’s webpage, are you not? The easiest solution would be to just reflash it, depending on what the underlying issue is. Is the problem entirely with Google Sheets?
When I go to the web app, it does not allow me to log in. I have entered my email in the forgotten password and I never receive an email.. my controller is plugged in and running (never stopped the last run) and when I access the Google sheets of previous brews, there are errors .)
 

Attachments

  • Screenshot_20231031_094840_Chrome.jpg
    Screenshot_20231031_094840_Chrome.jpg
    204.3 KB · Views: 0
  • Screenshot_20231031_095117_Sheets.jpg
    Screenshot_20231031_095117_Sheets.jpg
    310.1 KB · Views: 0
When I go to the web app, it does not allow me to log in. I have entered my email in the forgotten password and I never receive an email.. my controller is plugged in and running (never stopped the last run) and when I access the Google sheets of previous brews, there are errors .)
OH. I apologize - I didn’t realize that is what you were referring to. The TiltBridge web app is actually maintained by @UncleD so he would have to jump in on that.

The errors you see in Google Sheets indicate that you can’t access the individual sheets for each individual brew from the master sheet. You don’t need the links if you can see the sheets themselves in your Google drive. If you can’t see the sheets themselves, then the data unfortunately isn’t saved there.
 
Has anyone had any luck using an external OLED display with a non-pro Lolin D32? I had ordered a couple for a since-abandoned project that I was planning on re-purposing to use with TiltBridge. I know that the Lolin D32 Pro/TFT is the recommended hardware, but I was hoping that there's a way to use a screen with what I've got.
 
Has anyone had any luck using an external OLED display with a non-pro Lolin D32? I had ordered a couple for a since-abandoned project that I was planning on re-purposing to use with TiltBridge. I know that the Lolin D32 Pro/TFT is the recommended hardware, but I was hoping that there's a way to use a screen with what I've got.
Link to the display?
 
Yes, that display will more than likely work with the OLED version of the firmware. It's not one that I recommend, mostly because there is no uniformity between manufacturers of the preassembled modules, but as it just so happens that is actually the exact screen that I originally used when developing TiltBridge. You have four options for wiring:

Option A:
SDA: Pin 21
SCK: Pin 22

Option B:
SDA: Pin 5
SCK: Pin 4

Option C:
SDA: Pin 4
SCK: Pin 15
Backlight Power*: Pin 16

Option D:
SDA: Pin 17
SCK: Pin 18
Backlight Power*: Pin 21

* - Backlight power is required for certain preassembled modules, but shouldn't be something that you need with this screen. If you need to use pins 4/15, or 17/18, you do not need to hook anything up to pins 16/21 unless your module requires a pin to be explicitly powered to work.

I will note that - as I mentioned - I don't officially support this configuration any more, but while there isn't a guarantee of forward compatibility, I'm not planning on ripping any code out any time soon. You might need to upgrade at some point in the future to get new features, but your board as built will continue to work without issue.
 
Good morning!

This is my first post on this thread.

I've been using the Tilt Bridge for a long time in a compact 3D box that I designed from scratch. It has the following features:
  • It can be powered by a USB Type-C cable.
  • It can also be powered by a Li-Ion 18650B Battery.
  • The battery can be charged wirelessly.
  • There's some space for customizing the box with your own logo.
Currently, I'm working on a version 2 with the following goals:
  • Use inserts to secure the screws more effectively.
  • Attempt to further reduce the size of the box.
If you find it valuable, I can upload the 3D files and share the Bill of Materials (BOM) I've used to build this simple yet enjoyable project based on TiltBridge.

I also want to take this opportunity to express my gratitude to Thorrak for sharing this project.
 

Attachments

  • photo_2023-11-30_10-26-07.jpg
    photo_2023-11-30_10-26-07.jpg
    114.2 KB · Views: 0
  • photo_2023-11-30_10-32-57.jpg
    photo_2023-11-30_10-32-57.jpg
    76.4 KB · Views: 0
Oh, thank you for your support! I really appreciate it.

TL; DR;
Battery lasts between 24-32h



OK but give me some more details:

Let me take a couple of hours, and I'll publish the Bill of Materials (BOM) along with uploading the 3D files on Thingiverse or Printables.

By the way, I've tested the battery lifespan several times, and it lasts between 24-32 hours until it finally dies. Honestly, it's shorter than I expected. I've expected to lasts at least one or two weeks. (That tests were made with a brand new battery, so it's not damaged or used for a long time).

I think it's related to the fact that TiltBridge is running all the algorithms constantly (scanning for new Tilts, checking Tilt status, serving the website, integrating with MQTT, Brewfather, or other services, etc.).

I've been thinking for a while about applying an ESP32 sleeping strategy that:
  • Wakes up every 15 minutes
  • Reads Tilt values
  • Sends the values through the configured services
  • Sleeps again
However, I'm not that experienced in coding in C++, and it's been almost 12 years since I last wrote firmware code. Furthermore, there's a challenging drawback to solve - you'll lose the web interface. We need to figure out how to deal with both worlds. I was thinking of adding an extra button to switch between a "configuration mode" and a "runtime mode".

I have some other ideas to increase the TiltBridge capabilities, so @Thorrak if you feel brave I'll be happy to share it with you.

Well, sorry to bother you all with my thoughts. I hope to bring some value by documenting my tiny project with the BOM, 3D parts, and hopefully, some light instructions.

Thank you!
 
That sounds about right. The ESP32 uses between ~95-240 mA while active, and I've seen estimates that the screen can use up to ~90 mA. For a 3600 mAh battery, I’d expect 20ish hours depending on radio use and screen draw. I’d be curious how much more life you could get if you disconnected the screen.

I’ve got no objections to an asynchronous mode, but it would require a number of changes - including either a switched configuration portal like you are thinking or a control console that could sit on a server somewhere. A switched mode would work great, but would potentially require additional hardware which I’d prefer not become mandatory (I like the single component builds!) The control console could be its own thing, or could be baked into Fermentrack. That said, either would be a lot of work, so it would be pretty far down the list (but pull requests are always welcome ;) ).

I’m always open to suggestions/requests! I can’t promise to implement any/all of them, but opening issues on GitHub (or talking through them here so I can then open an issue) is the best way to make sure they get tracked/don’t get lost. Next on my list for TiltBridge is a UI refactor (similar to the latest BrewPi-ESP UI), implementing a targeted cloud solution other than Google sheets, and creating a version that can be legally distributed as a preconfigured unit rather than needing to be distributed exclusively as a kit. All are coming soon, but for me that probably means 2024 (or, uh, later).
 
Sounds reasonable, and I liked what I saw in your leaked easter eggs in your last post.

In my opinion, the deal is not that big in terms of functionality. Now it's cool; I have time to move the fermenter, purge, or do whatever I need with the battery. And for sure, it sounds like a big chunk of work, and honestly, trying to code a bit in your code scared me a lot. I'm not brave enough to publish a PR (yet!).

Sharing in advance some other improvements I've been thinking about for a while:
  • Taking advantage of the Brewfather API capabilities and sending the Tilt battery in the battery attribute. Tilt is sending the "week battery age," and TiltBridge is rendering this value in the UI. So the goal is to send this value through the Brewfather custom stream service request and also as an attribute through MQTT.
  • Installing a temperature sensor (optional), such as a DS18B20 or LM35 (my preference is to go with the first option), on the digital GPIOs in the D32 chip (pin 34, for instance), and capturing the room temperature. Send it through the "ext_temp" attribute to monitor the room temperature in Brewfather or through MQTT.
Let me know if this sounds good and I'll publish an issue in Github.

JSON:
{
  "name": "YourDeviceName", // Required field, this will be the ID in Brewfather
  "temp": 20.32,
  "aux_temp": 15.61, // Fridge Temp
  "ext_temp": 6.51, // Room Temp
  "temp_unit": "C", // C, F, K
  "gravity": 1.042,
  "gravity_unit": "G", // G, P
  "pressure": 10,
  "pressure_unit": "PSI", // PSI, BAR, KPA
  "ph": 4.12,
  "bpm": 123, // Bubbles Per Minute
  "comment": "Hello World",
  "beer": "Pale Ale",
  "battery": 4.98
}



(By the way, I'm currently working in the BOM + documenting a bit the thing. Sorry for the delay and thanks for your patience).
 

Attachments

  • d32_pro_v2.0.0_3_16x9.jpg
    d32_pro_v2.0.0_3_16x9.jpg
    49.4 KB · Views: 0
Sounds reasonable, and I liked what I saw in your leaked easter eggs in your last post.

In my opinion, the deal is not that big in terms of functionality. Now it's cool; I have time to move the fermenter, purge, or do whatever I need with the battery. And for sure, it sounds like a big chunk of work, and honestly, trying to code a bit in your code scared me a lot. I'm not brave enough to publish a PR (yet!).

Sharing in advance some other improvements I've been thinking about for a while:
  • Taking advantage of the Brewfather API capabilities and sending the Tilt battery in the battery attribute. Tilt is sending the "week battery age," and TiltBridge is rendering this value in the UI. So the goal is to send this value through the Brewfather custom stream service request and also as an attribute through MQTT.
  • Installing a temperature sensor (optional), such as a DS18B20 or LM35 (my preference is to go with the first option), on the digital GPIOs in the D32 chip (pin 34, for instance), and capturing the room temperature. Send it through the "ext_temp" attribute to monitor the room temperature in Brewfather or through MQTT.
Let me know if this sounds good and I'll publish an issue in Github.

JSON:
{
  "name": "YourDeviceName", // Required field, this will be the ID in Brewfather
  "temp": 20.32,
  "aux_temp": 15.61, // Fridge Temp
  "ext_temp": 6.51, // Room Temp
  "temp_unit": "C", // C, F, K
  "gravity": 1.042,
  "gravity_unit": "G", // G, P
  "pressure": 10,
  "pressure_unit": "PSI", // PSI, BAR, KPA
  "ph": 4.12,
  "bpm": 123, // Bubbles Per Minute
  "comment": "Hello World",
  "beer": "Pale Ale",
  "battery": 4.98
}



(By the way, I'm currently working in the BOM + documenting a bit the thing. Sorry for the delay and thanks for your patience).
Yeah, definitely for the battery age. I love the Brewfather guys, and am always happy to better integrate with them!

The DS18b20 I’d be somewhat on the fence about for three reasons: It requires hardware that isn’t built into most of these modules, would require integrating another third party library (which is one I’ve ended up having to maintain from my side in the past), and knowing the room temperature doesn’t result in better beer. If you want to build it from your side, I’m happy to answer any questions you might have, but it probably wouldn’t be something I would integrate back into the main codebase.
 
Cool!

By the way, I've finally had some time to gather information about the project and have uploaded the parts on Printables. Sharing this early with you so you can take a look.

https://www.printables.com/model/666888-tiltbridge-box-with-screen-and-battery
I've included the 3D parts, Bill of Materials and some pictures. I'm currently working on the wiring diagram and, hopefully, putting together concise instructions for assembling everything.
 
Hi, really enjoy using my TiltBridge and have been using it to upload data to Google sheets successfully for some time now. Thought I'd have a play with Brewfather and Grainfather integration. Got Brewfather working fine however I can't get the TiltBridge to send data to Grainfather?

TiltBridge is running v1.2.1

In the Grainfather portal, I go to equipment > Add fermentation device > Tilt Wireless Hydrometer and Thermometer and then select the colour I have.

I can then click on the 'i' to get the URL for that device. https://community.grainfather.com/iot/xxx-xxx/tilt etc.

Then in the TiltBridge web interface, I go to settings, Target Settings > Grainfather and paste the URL into the appropriate field for the colour Tilt I setup.

Seems pretty straightforward however no data is sent to Grainfather. "last heard never"

Am I missing something?

I also tried the Custom Fermentation Device option in Grainfather but same result.

Any advice appreciated.

Cheers
 
I bought myself a LILYGO ESP32 T-Display Module for Arduino Development Board TTGO LCD Wi-Fi BLE CH9102F Chip
that worked great for one lager fermentation. I left it plugged in far a week or two after fermentation was done and, when I finally went to unplug it, I noticed the display wasn't displaying what it should. I didn't care too much at the time, because my batch was done.
I just went to plug it in to start monitoring a new batch, and all of the magic smoke came out! Something on the back got very hot and started smoking like mad. I unplugged it quickly and laid it to rest.

What do you folks recommend for a reliable ESP32?

THANKS!
 
I bought myself a LILYGO ESP32 T-Display Module for Arduino Development Board TTGO LCD Wi-Fi BLE CH9102F Chip
that worked great for one lager fermentation. I left it plugged in far a week or two after fermentation was done and, when I finally went to unplug it, I noticed the display wasn't displaying what it should. I didn't care too much at the time, because my batch was done.
I just went to plug it in to start monitoring a new batch, and all of the magic smoke came out! Something on the back got very hot and started smoking like mad. I unplugged it quickly and laid it to rest.

What do you folks recommend for a reliable ESP32?

THANKS!
My recommendation (currently!) is the Lolin D32 Pro + Lolin D32 Screen + the associated cable, but that can be hard to come by.

As an alternative, people have had a lot of success with the TFT ESPI boards. I thought I had one in my amazon order history that I could confirm worked, but I'm struggling to find it. This one might work, but I can't guarantee it (and it's expensive).
 
My recommendation (currently!) is the Lolin D32 Pro + Lolin D32 Screen + the associated cable, but that can be hard to come by.

As an alternative, people have had a lot of success with the TFT ESPI boards. I thought I had one in my amazon order history that I could confirm worked, but I'm struggling to find it. This one might work, but I can't guarantee it (and it's expensive).
I just ordered the one you linked to. We'll see what happens.

THANKS!

Jay
 
I just sat down with my new ESP32 TTGO and tried flashing it with TiltBridge. Unfortunately, every time I try to do so, I get the error in the screen shot attached. Any thoughts?

1702513110797.png
 
I can see my Tilt Hydrometer gravity on the OLED display, and at Tiltbridge.local, but the logging disappeared on Fermentrack, after I closed up the conical lid from an open ferment Weizen beer, to now a closed blow-off.
The RSSI of the Tilt that is in the Coni is not very strong at -92, and I have another Tilt (different color, RSSI -70) sitting out in the open, and it shows up fine in Fermentrack.
If I see the hydrometer reading on the OLED and tiltbridge.local, why does it now not show up on Fermentrack? It did fine until I closed up the conical...
I did the "Plumber Tricks" - uninstall the hydrometer and reinstall it, reboot, bound it to the proper conical, unbound it.....
 

Attachments

  • Screenshot (37).png
    Screenshot (37).png
    240.4 KB · Views: 0
  • Screenshot (36).png
    Screenshot (36).png
    148.3 KB · Views: 0
I can see my Tilt Hydrometer gravity on the OLED display, and at Tiltbridge.local, but the logging disappeared on Fermentrack, after I closed up the conical lid from an open ferment Weizen beer, to now a closed blow-off.
The RSSI of the Tilt that is in the Coni is not very strong at -92, and I have another Tilt (different color, RSSI -70) sitting out in the open, and it shows up fine in Fermentrack.
If I see the hydrometer reading on the OLED and tiltbridge.local, why does it now not show up on Fermentrack? It did fine until I closed up the conical...
I did the "Plumber Tricks" - uninstall the hydrometer and reinstall it, reboot, bound it to the proper conical, unbound it.....
I have the same problem, it is most likely the weak signal coming form the Tilt itself. The conical blocks the signal once it is closed up and the Tiltbridge is not designed to increase the signal strength, it only converts it from one form to another (Bluetooth to WiFi). Tilt's solution it to buy a repeater that increases the signal strength or to buy a pro series that is designed to work inside conical's.
 
I have the same problem, it is most likely the weak signal coming form the Tilt itself. The conical blocks the signal once it is closed up and the Tiltbridge is not designed to increase the signal strength, it only converts it from one form to another (Bluetooth to WiFi). Tilt's solution it to buy a repeater that increases the signal strength or to buy a pro series that is designed to work inside conical's.
I had similar issues using stainless conical fermenters inside refrigerators. I would have trouble getting a signal outside the fridge. But. I have had good luck with a tilt repeater project I found on GitHub that uses an ESP-32 board. @Thorrak has added it to Brewflasher in a Fast Delay" version for a plugged in board, or regular which repeats much less often for a board powered by batteries. Here are the last boards I used, and they work great. I put them in a small plastic project box and power them with a 5v wall wort and mount them right next to my conical fermenters inside the fridge. I have no trouble getting the signal on the other side of the garage now.
 
I have the same problem, it is most likely the weak signal coming form the Tilt itself. The conical blocks the signal once it is closed up and the Tiltbridge is not designed to increase the signal strength, it only converts it from one form to another (Bluetooth to WiFi). Tilt's solution it to buy a repeater that increases the signal strength or to buy a pro series that is designed to work inside conical's.
@IDMaynard
I thought that once the Tiltbridge captured the weak signal, the conversion to Wi-Fi would be a full strength of what the ESP32 was capable of...
So, you are saying - the Tiltbridge only converts whatever strength it gets of the Bluetooth signal, and only converts it, keeping the new Wi-Fi broadcast, the same crappy signal it got from inside the Coni?
Im more confused now..... Maybe @Thorrak can asplane it to this Plumber?
Doesn't the Tiltbridge have the "Repeater" programming as part of the Script? Do I have to have two ESP-32 - one running the conversion, and another , repeating the signal?

Thanks for your reply
Ed
 
Last edited:
The TiltBridge has two* radios on it - one for Bluetooth and one for WiFi. The Bluetooth signal from the tilt is only so strong - the TiltBridge has to be in range to pick it up. Similarly, the TiltBridge’s WiFi radio is only so strong and must be close enough to the WiFi router that it can be picked up.

The TiltBridge does “boost” the signal in the sense that it “hears” the Bluetooth broadcast and rebroadcasts it freshly over WiFi. (Think criers posted along a wall, just within earshot of each other. Crier #3 cant hear Crier #1, but if Crier #2 yells what Crier #1 said, Crier #3 can hear the message)

If you imagine a scenario where you have a stainless conical inside a kegerator, you have two metal walls you’re trying to get through. If you place the TiltBridge outside the conical but inside the fridge, the Tilt’s signal should be able to be heard by the TiltBridge, but the TiltBridge’s signal may not be able to be heard by the router. An option would be to do what @IDMaynard suggests, and place a dedicated repeater in between the conical and fridge wall, which would then retransmit the signal fresh and allow it to be heard by a TiltBridge outside the fridge. That TiltBridge then would - hopefully! - be in range of the WiFi router since it wouldn’t have any metal walls to traverse.
 
The TiltBridge has two* radios on it - one for Bluetooth and one for WiFi. The Bluetooth signal from the tilt is only so strong - the TiltBridge has to be in range to pick it up. Similarly, the TiltBridge’s WiFi radio is only so strong and must be close enough to the WiFi router that it can be picked up.

The TiltBridge does “boost” the signal in the sense that it “hears” the Bluetooth broadcast and rebroadcasts it freshly over WiFi. (Think criers posted along a wall, just within earshot of each other. Crier #3 cant hear Crier #1, but if Crier #2 yells what Crier #1 said, Crier #3 can hear the message)

If you imagine a scenario where you have a stainless conical inside a kegerator, you have two metal walls you’re trying to get through. If you place the TiltBridge outside the conical but inside the fridge, the Tilt’s signal should be able to be heard by the TiltBridge, but the TiltBridge’s signal may not be able to be heard by the router. An option would be to do what @IDMaynard suggests, and place a dedicated repeater in between the conical and fridge wall, which would then retransmit the signal fresh and allow it to be heard by a TiltBridge outside the fridge. That TiltBridge then would - hopefully! - be in range of the WiFi router since it wouldn’t have any metal walls to traverse.
@Thorrak , But why does the OLED display on the ESP32 sitting on top of the fermentor,outside, show the Tilt's gravity that is in the conical? Also, Tiltbridge.local shows the Tilt hydrometer reading on any computer on my home network. But, Fermentrack does not show the reading of the Tilt (see my post above)
This readout diapered as soon as I closed up the fermentor from Open to a closed fermentation. I tried uninstall and then reinstall but still no reading on Fermentrack dashboards,
Thanks for your input and explaining this to me!
 
New Release Announcement

I just released v1.2.2 of the TiltBridge firmware for all existing devices. This firmware release incorporates a handful of new features primarily targeted at Home Assistant users, as well as new data sending code which enables a number of new features and bugfixes:
  • All HTTP endpoints now support the use of HTTPS
  • Fixed the data sender for Grainfather
  • Resolved a number of stability issues with MQTT support
  • Resolved bug that would cause TiltBridge to crash when setting up an MQTT broker
  • Added/enhanced MQTT Home Assistant auto discovery messages
  • Added new "Weeks on Battery" data point to MQTT message (Thanks, @mjardiEnz on GitHub)

This release is recommended for any users who use MQTT (especially those who also use Home Assistant) as well as anyone who uses Grainfather as a data target. This release is optional for all other users. This new version is available via BrewFlasher, Brewflasher Web, BrewFlasher CLI edition, and for direct download at GitHub.

On a separate but related note, for those who may not have heard the news, I'm working on a new release of Fermentrack which enables use in the cloud. Although I haven't yet built gravity support, these changes (e.g. HTTPS support) are made in part to help support/enable that transition. If this sounds like something you're interested in, then I recommend signing up for email notifications at fermentrack.net to be made aware as TiltBridge support progresses, and new features come online.
 
Back
Top