Git Product home page Git Product logo

Comments (35)

nilsbenson avatar nilsbenson commented on September 26, 2024 1

My dad is all into this kind of stuff. I can ask him if he could recommend a home-brew thermometer setup that can withstand smoking temps and supports bluetooth. Anything hotter than probably 100 degC and you enter into a whole new level of electronics to support high temp. 85 degC is easy without shielding, but hotter than that and solder fails, batteries pop, etc.

I was thinking about this kind of functionality for the smoke mode - dropping connection is ok a lot of the time but to have it discover the temperature when you're close enough and report it back would be pretty cool.

Biggest differences between ANT and BT:

  • range. BT has a greater range at the expense of more power usage
  • generic channels: BT is very generic with specific protocols sitting on top of the base transport layer (think rfcomm for serial connections or AVRMC for controlling volume, skipping tracks). ANT does have generic channels but is geared highly towards time-series data point transmission
  • ease of use: ANT is actually probably easier to use from a developer perspective, but as you've seen beyond something like the garmin tempe the hardware options are limited.

I'll ask and see what he recommends. Worst case, a garmin tempe is $29.99 and if it gets blown up in the smoker I'm not going to cry over it.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024 1

I did find this project on github that communicates with a tenergy solis:

https://github.com/gleeds/cloudbbq/blob/master/app.js

https://www.amazon.com/Tenergy-Thermometer-Controlled-Bluetooth-Stainless/dp/B077821Z4C/ref=sr_1_2?dchild=1&hvadid=78683931515283&hvbmt=be&hvdev=c&hvqmt=e&keywords=tenergy+solis&qid=1592329199&sr=8-2&tag=mh0b-20

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024 1

Great, I was able to find it thorugh a BLE scanning in the apple store.
image

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024 1

In this case, not really. The BT implementation on the probe side is really basic. You basically have to search for all devices, look at them, see if the name is null, see if it exposes a service with a guid that starts with "0000 FFF0" and get that service to look at its characteristics. The service should expose 6 of characteristics, one for each probe on the module.

Once you have a device you think is it, you then pair with it.

You then read from the appropriate characteristic and it returns a byte array that you convert into a number. this is the temp of the probe in deg C. The byte order should be big endian. The CloudBBQ project shows how to convert the value.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024 1

I had not considered that, but for smoking large pieces (brisket, port butt, etc) more than one probe could be very useful to make sure it's not over/undercooked based on the cut.

I'll hand draw some ideas. I'm just too slow mocking up images.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024 1

Here's a basic flow for configuring the tenergy device. With some easy modifications it can be extended to support other devices if/when we do that.

20200708_142005

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

The FR235 is awful in keeping the bluetooth connection to the app. The default Weather widgets are hit and miss with the phone connection. Most of the time I never get the temperature from the phone even if the phone is in my pocket.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

That's great. Yes, let's see what a real maker recommends. Most thermometers have a metal probe and wire that plug into the electronics (sitting outside of the grill and hot area). I'll investigate in parallel what DIY hacks people have reported and we can converge later. I didn't know about the Garmin tempe.

Yes, smoking is a good use-case. Some time ago one of our users pointed out to the Multi-Timer app (https://apps.garmin.com/en-US/apps/d5a1a49f-3196-475b-ad61-eff15692ed14) and I think they have the sourcecode somewhere availble (https://bitbucket.org/jvoj/multitimer/src/master/). The interesting thing about this app is that it continues running even when the user closes it.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

Dude good find on keeping the timers running. I have been trying to figure out if it's possible. The method they use is very simple to implement.

They run a background service that wakes up periodically, checks the app settings for stored running timers, and decrements them based on how long it's been since the last wake-up.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

The cleanest implementation would be a phone app that hosts the CloudBBQ functionality, and serves as the bridge between the Tenergy thermometer and the watch.

Introducing yet another device (RaspberryPi) sounds problematic because you need to set it up somewhere, establish conenction, make sure it has power, etc.

I haven't done any research on this, but it looks like the watch-phone connectivity is good for Garmin specific purpose. I wonder if pairing the watch to a random phone app for data exchange is straightforward.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

On CIQ 3.1 devices, we have access to the Bluetooth API. So these devices could pair and communicate directly with the device.

For older CIQ devices, things get messy. For <= 1.3 it's mailbox/message and for >= 1.4 it's PhoneAppMessage. They both look straight forward, but it does mean that on both the device side and the phone side we have to support up to two different APIs. Or pick 1.4 as the minimum for the functionality and use it.

Also, adding a phone app means picking a platform. I don't have any iOS devices so all I can do is Android. I have a full visual studio subscription so Xamarin could be used for cross-platform mobile development but that's $$$. Not sure what you are using for phone / environment / etc. The free Android SDK and tools are pretty good these days.

As an alternative, given the low user count a free tier AWS or Azure setup would work and could mean:

  • phone app connects to device, posts current temperature to the cloud
  • watch app makes http requests via the http API (uses phone internet) and reads the value

The project I linked really is just instructional on how to communicate with that specific device. We wouldn't have to use it directly, he's just already figured out the services/characteristics of the device on bluetooth and how to interpret the data from it.

My dad said he'd hack something together with the stuff he has lying around for a simple temperature probe. I'll see what he puts together but might buy one of these Tenergy setups too.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

My dad has ordered a couple of things to build a simple meat probe. I'm probably also going to purchase the Tenergy setup from Amazon.

It's looking more and more like we will need a companion app for this. I bought the Nordic devkit dongle and I have it working in the simulator, but the watch(es) no matter what CIQ version only speak Bluetooth LE and not "legacy" bluetooth. It may be difficult for us to get either a homebrew or commercial probe setup talking directly to the watch, but is very easy to do on the phone (Android for sure, unsure about iOS).

I can get the watch and sim to find my Bose bluetooth headphones, but cannot get them to find my Garmin GLO (gen 1) bluetooth GPS. The phone is able to find/pair/use both of them. I can't find any data on the GLO any more, but it looks like it's non-LE "legacy" so it won't work.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

As a quick follow-up to the previous comment, if we did a companion app to manage these kinds of devices (probes or whatever) then all Garmin CIQ devices that can work with phoneAppMessage should be able to support them with the phone acting as a bridge between the watch and the device.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

Let me see if I get what you are saying. There are two options to connect a thermometer (e.g., Tenergy) to the watch: (1) using a Nordic devkit dongle type of device, and (2) companion phone app. Assuming the Tenergy can be easily interfaced to the Nordic devkit, this could be a self-contained alternative. Meaning that a Tenergy+Nordic small package could talk to the watch directy.

I use iOS devices, if we make the app I can take care of that branch. Although I have never really developed a phone app, it should be straightforward.

I'm ordering my Tenergy right now.

Another question, is there a way to develop an HTML app that looks the same in Android and iOS? And just write the Bluetooth-specific code native to the platform?

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

These are related links from Hackaday:

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

So there's really only two ways of connecting the probe:

  1. direct Bluetooth 5 LE to the watch
  2. connecting with the phone, and transferring the temperature to the watch via CIQ in a companion app

#1 may or may not work regardless of the watch CIQ version because it only supports Bluetooth 5 LE and I'm not sure if any of the existing wireless probes out there support anything beyond Bluetooth 4 LE. This method also means it can't be supported on devices without the Bluetooth API which is CIQ 3.1+

#2 will work with all devices as long as the probe can be paired with the phone and communicated with. The phone + companion app does all of the communication with the probe, and then uses something like phoneAppMessage to send the readings to the watch where we can make use of them.

The nordic dongle is really just there to give bluetooth access to the garmin simulator. It can be used for more than that (it's a full bluetooth 5/ant+/... development kit) but for our purposes it's not useful outside the simulator unless we are building the meat probe.

So basically, if we want to support meat probes and we want to be able to do it across the widest set of Garmin devices and widest set of existing wireless meat probes we pretty much have to use approach 2.

There are some other snags, in particular with the iOS app store. You will have to register as a developer, pay them, etc. It's not a high wall to climb (I think it's $99) but just be aware that it exists.

For developing cross-platform stuff there are several options but I'm not sure which is the best. Will have to look harder at them to see what's the best way to go these days. I have access to Xamarin Forms through my Visual Studio subscription, but I'm not sure if they've made that available in the Community Edition or if it's paid - also would require Windows to run Visual Studio. There is react native which allows us to do HTML and then wrap up the platform-specific code behind it (this is what the facebook mobile app uses) but I've never used it.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

So there is now Visual Studio for Mac, including the Community Edition. This allows free use of it and Xamarin Forms for open source projects. This is probably the easiest way to go - it's C# and cross platform Window/Mac/iOS/Android.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

Related to this:

So basically, if we want to support meat probes and we want to be able to do it across the widest set of Garmin devices and widest set of existing wireless meat probes we pretty much have to use approach 2.

It will be interesting to see if people would be willing to pay for such functionality. Most thermometer/cook aid apps are tightly coupled to that brand. Meaning that Thermometer Brand A provides an app from Brand A. A multi-probe app and multi-watch app does not exist (to the best of my knowledge). Perhaps an opportunity to launch a commercial app.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

I got my Tenergy today. I'll try some Pybluez tonight.

Specific to iOS, but here a nice guide to get started

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

Mine came in today. I was able to successfully discover it- the device is BLE and compatible with watches with BLE support!

We will still need to have a companion app to support devices without direct BT access, but this is promising!

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

Are you aware of a list of Garmin watches with BLE support? I'll consider a modern watch seriously.

The Pybluez in Mac does not seem to work very well and cannot even find the device. It found my bluetooth speaker but not the thermometer. The BLE funtionality seems to be not supported in Mac devices; only win/linux.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

Some watches have explicit Bluetooth connectivity like this: https://buy.garmin.com/en-US/US/p/621922#specs
And some others don't: https://buy.garmin.com/en-US/US/p/541225#specs

But hard to tell which one has BLE support. They don't seem to mention this explicitly.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

Is there a special procedure to put the Tenergy into "pairing" mode? I tried pushing the button as per the manual but cannot find it in the nearby devices.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

It's using BLE "broadcast". I don't think there is a special pairing mode for it, but your bluetooth adapter in the computer or phone needs to support it.

Try finding it with your phone if you are using your computer. Also, try installing nrfConnect mobile on your phone if it's available. It should find it as "iBBQ"

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

Here a relevant discussion.

(f5, 935, va3) allow sensors that are BLE or ANT to be paired at the system level

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

It might be an issue with the device not advertising its name "correctly". My watch and the simulator both find it, but report the name as "null". See if you're getting anything with a null name and service FFF0. that's the service we're going to be reading from for the first temp probe.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

ok, the tool that I'm using also reports "null" and FFF0 service. I'm hoping to get some code running to interrogate this further. I'd love to see the temperature being received in the app.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

Can you distinguish between the different services and their UUID? The tool I got only dumps the Peripheral Id "C2E8..." as above. But the FFF0 service give me any info about its UUID.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

Xcode and the Swift language for iOS development is 100x higher complexity than Monkey-C/ConnectIQ. Crazy I don't even know where to start. But at least I got a hello world project compiled and simulated after 2 hours.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

Success! I managed to connect my computer to the thermometer using the peripheral UUID FFF0.
image

Later this week I'll figure out how to read the data. I noticed that the connection drops after a few seconds (~5s). Perhaps this is the low power mode? The BTE centralManager keeps reconnecting.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

I can't do anything with the grafflr file so here's my low tech idea on smoking. I think that we should keep the two functions distinct so that it's simpler and so the full set of flip items can be used at the same time as the full set of smoke slots.
I pushed low-n-slow-mockup with a first pass at what it might look like. It's very incomplete.
20200708_124433

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

The two separate functions/screens for smoking/grilling makes sense. Fortunately we had an available option in the welcomeScreen. I also like the mockup with Menu2 is very intuitive to configure.

We need to come up with an intuitive way to assign more than one probe per steak.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

Yes, hand drawn is best. The graffle file is from OmniGraffle, a Mac software. I don't think they have for other platforms. Let's do by hand; it is faster.

from barbecueboss.

nilsbenson avatar nilsbenson commented on September 26, 2024

I have integrated the bluetooth stuff and refactored a lot of it to make is a little cleaner to use in the app. I also had to switch to linking the files directly into the project instead of using it as a stand-alone barrel. There's all kinds of issues with pre CIQ 2 devices that make barrels hard to support on them.

Doing it this way instead of the original way makes it a little bit easier to work with in Eclipse, and allows us to just annotate stuff and exclude them from devices that don't support the bluetooth API. Currently, the pushed code annotates all bluetooth-related functionality with (:btle) and the build for the vivoactive device excludes that annotation.

from barbecueboss.

arquicanedo avatar arquicanedo commented on September 26, 2024

I think this is done. All the basic functionality is merged and working on the simulator and the device. Closing and tracking any specific issues independently. This was a great thread.

from barbecueboss.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.