Pit Meter - iPhone app for the HeaterMeter


 

DarrenE

TVWBB Member
I've been working on an iPhone app for the LinkMeter/HeaterMeter. It won't be generally available just yet, but I am looking for some volunteers to use the current beta version and provide feedback. If you are interested, please send me a PM and I'll work with you to get it installed.

There will be 4 core functions for the initial release:

1) The ability to see the current temp on the pit and the meat probes, and visually compare them to the set point and alarms.
2) Change basic HeaterMeter settings like pit temp, probe names, alarm low/high, and fan min/max.
3) See the graph of your current cook, very similar to the web interface.
4) Receive push notifications for alarms. This last piece poses a lot of logistical issues, and will probably remain in the experimental (read: unsupported) stage indefinitely.

I can probably only support the HeaterMeter v4.0 for now, but if you're on an older version we can try to work through issues.

Updated 11/19/2013: Beta 7 available with these changes:

* App store release candidate 1
* Moved pid display text
* Alarm silence feature fixes
* Target times feature fixes
* Changed push notification alarm sound
* Fixed crash in settings

Updated 10/13/2013: Beta 5 available with these changes:

* Attempt to fix streaming.
* Added custom thermo scale in settings.
* Added probe tap to show target finish times.
* Added ability to click the history graph to show point in time details.
* Added alarm silence action sheet (Streaming on is required to receive alarm event).
* Added PID info toggle in response to shake gesture (Streaming on is required to receive pidint event).

Updated 10/5/2013: Beta 4 available with these changes:

* Fixed navigation bugs on the settings screen.

Updated 10/4/2013: Beta 3 available with these changes:

* Added PID settings to heatermeter config.
* Added archive to graph view. You can now view prior saved graphs or store the current graph.
* Moved heatermeter config and appsettings config into separate buttons on main screen nav bar.

Updated 9/30/2013: Beta 2 available with these changes:

* You can now register for push notifications, and send push notifications to the phone from your LM alarm scripts.
* Updated app icon.
* Added "L" and "H" letters on dial at locations where low and high alarms are set.
* Added on/off toggles for low and high alarms.
* iPhone 4s and lower (3.5" inch screens) now include numeric pit display in the top most temp bar if there is an unused probe.
* HM config is now read from /lm/conf instead of screen scraping /admin/lm.
* There is no more login to /admin/lm/home. Instead username/password are POSTed to /admin/lm/set.

Screenshots:

PitMeter1_Springboard_zps6828bfab.png
PitMeter1a_Connect_zps4cd93130.png
PitMeter2_MainScreen_zps32e47d4b.png

PitMeter3_HeaterMeter_zps96ae12b0.png
PitMeter4_Graph_zps7d330534.png
 
Last edited:
Darren,

First of all, thanks for doing this, a native iOS app for the HM will be awesome!

Will the analog gauge be fixed with a max of what looks like 350F? There's a few folks here looking to do high heat cooks, so the 350F limit would be somewhat limiting in this case.
 
Yep, there are actually 3 presents right now. I could fairly easily make it user customizable too.

Low n slow - 100-350
Medium Temp - 100-500
High Temp - 0-800

PitMeter5_TempPresets_zps53ff3924.png
PitMeter6_HighHeat_zps43c26f1b.png
 
This is really excellent, DarrenE. I've been waiting to reply to this thread since I saw it this morning, but I had to wait for registration approval first.

I'm a registered Apple Developer, but also an all-around Software Developer with an eye for UX Design. Building a HeaterMeter v4 and eventually putting something like this together has been on my list for a while. If you need help, please let me know. The biggest issue at the moment is that I do not have the HeaterMeter v4 PCB built out, and I am not sure I have the time to invest to improve my soldering skills and build one all while helping take care of my 7 week old daughter.

Is anyone willing to sell me an assembled HeaterMeter v4 PCB? I'm prepared to purchase and assemble everything else (Raspberry Pi, probes, fan, etc). It'd go a long way to getting DarrenE the help he needs.

DarrenE, are you going to use HockeyApp to distribute the beta?
 
Joel, I'm using testflight for distribution. I have a little prior experience with iOS dev but mostly code .NET/C# in my day job. Don't be discouraged by the soldering bit, I used a $10 radio shack iron and had little prior skills. I honestly was half surprised when it powered up that first time, but it did. If I can build one you can too. I have little ones at home too, so worked on it for a few nights starting after they went to bed and that's all it took. Congrats on the 7 week old.
 
Yeah, I'll be doing it eventually. I have no doubt that I can build one, time is at an incredible premium right now. Someone has offered to build one for me, which is huge and incredibly generous. If anyone has a HeaterMeter v4 PCB already built that they'd want to sell me, just let me know.
 
I just noticed how nifty the icon for the app is too. I know trying to put text in the LCD area is a bad idea, but what about filling it with a light blue and having a little pit-probe orange mock graph line going on it? Adds a little life to the image.
 
Great idea Bryan. I had been thinking about what to do for the LCD screen in the icon and tried putting some text in there but never really liked. I updated it with your suggestion. See the updated screenshot on the first post.
 
Push Notifications

In the first post I categorized this as experimental (unsupported). Here's the long winded reason why.

For the app I wanted a new facility to warn us when a temp alarm is raised. Emails and even SMS messages are easy to miss if you're sleeping on an overnight cook. I wanted a way to play an obnoxious alarm sound that's sure to wake me up. The problem is that on iOS, apps don't run in the background. Apple gave us push notifications which allow custom sounds up to 30 seconds long.

Push notifications present issues because if we want the LinkMeter to be able to send push notifications it needs to communicate with Apple's servers. It needs to use a client cert and follow certain protocols, like the feedback service. I didn't think it would be a good idea to be sharing my APNS client cert private key with everyone, plus the binary interface would be hard to script. My solution is to host the push notification service on a central computer.

Here's the concept:
1) In the app, you register on the Push Notifications screen.
2) You provide an email address and contact name. The app sends those to my server and I save them in a DB. I email you the instructions and script code required for you to use.
3) You open the email, and follow the instructions.
4) First step is to install openssl on your LinkMeter. This is easy using opkg (OpenWRT package manager).
5) Next step is to configure your alarm scripts. Basically the script code needs to create json and send it to my server using openssl.
6) When an alarm is reached, your LinkMeter sends the alarm details to my server, and my server sends a push notification through APNS.
7) An obnoxious alarm sound plays if the app isn't running or is in the background. For now I'm using the School Fire Alarm sound from here: http://soundbible.com/2022-School-Fire-Alarm.html.
8) You open the app and it shows you the offending probe and details.

The main reason this needs to be experimental and unsupported is that I don't have a hosted environment. I'm using an always-on closet server on my home network. But if I have network issues or hardware issues, you won't receive your alerts, and I can't dish out the kind of monthly cost involved to pay a hosting company for this level of uptime. So we'll have to still rely on fallbacks to SMS or email.

Any feedback on this approach?

My latest beta has everything working except for #8.
 
Hey! Even better looking icon now.

Push notifications present issues because if we want the LinkMeter to be able to send push notifications it needs to communicate with Apple's servers. It needs to use a client cert and follow certain protocols, like the feedback service. I didn't think it would be a good idea to be sharing my APNS client cert private key with everyone, plus the binary interface would be hard to script. My solution is to host the push notification service on a central computer.
This is the same reason I've never done Google Cloud Messaging (push) support or added the ability to login automatically using your google / facebook / OAuth2 account. The issue being every LinkMeter would have to be considered one of your servers, using your no-longer-secret API key which would be a terrible idea. The only workaround is like you say, to host an intermediate service that can proxy the request to the Apple / Google servers which is more work than I'd want to do.
 
I'd love to have an iPhone app :)
Still on IOS 6 because of jailbreak. Ipad on IOS 6 too (jailbreak).
Would you be willing to share the source too ? I'm beginning with IOS development and am very curious how everything works.
 
Darren, the app is great! I've been waiting for an ios solution like this. One question, is there a way to save an image of your graph from the graph view?
 
Steve, thanks for the AWS lead. I hadn't realized they released this and wish I had seen it sooner to give it a proper evaluation before starting the "roll your own" option. I had looked into a couple of other alternatives like pushwoosh, urban airship, and boxcar, but they all had some limitation or other, or required a monthly fee. I'll probably investigate AWS more just to see if it can give us a better guaranteed availability.

Ivo, you're not the only one not upgrading because of a jailbreak. PM me your email address if you'd like to join the testflight team. To be honest I hadn't given the open source aspect of this project much thought. I have no immediate plans for that right now, but I wouldn't put it off the table once this moves from beta to release state.

Tom, thanks for the feedback. Short answer is no there is not an option for that right now. Were you interested in pinch and zoom capabilities for a saved graph? You could easily take a screenshot by pressing home+power at the same time. To provide pinch and zoom we've have to provide a way to save the underlying graph data returned by /lm/hist. I'd probably have to put in a DB. Let me think about this some more and research options. I do think it would be cool to be able to save the graph data and tag it with some notes.
 
You might get in trouble with using "Big Green Egg" in plain text for the background color. How about "Forest Green Golf Ball" for something less infringementy? :D

Also, I have your full email address and name in the Push Notifications config (under demo), you might not want to hard code that and instead show tooltips. Unless you want me to Push Notification you like crazy.
 
Last edited:
You might get in trouble with using "Big Green Egg" in plain text for the background color. How about "Forest Green Golf Ball" for something less infringementy? :D

Also, I have your full email address and name in the Push Notifications config (under demo), you might not want to hard code that and instead show tooltips. Unless you want me to Push Notification you like crazy.

Thanks Joel, I had thought about the Big Green Egg name usage, and might go the Bobby Flay route and refer to that color scheme as a "Green Ceramic Cooker"

Oops, I did not mean to keep my hard-coded name and email. D'oh! That should be reading from NSUserDefaults instead. Thanks for the heads up!
 
@DarrenE, I signed up for testflight and PMed you my mail addy.

Accepted the invite but I keep getting, there are no available builds.
 
Last edited:
@DarrenE, I signed up for testflight and PMed you my mail addy.

Accepted the invite but I keep getting, there are no available builds.

Sorry about that Ivo. I wish Apple didn't make us jump through these hoops. The reason for that is there is a ping pong set of steps involved:

1. I send a testflight invite to your email address.
2. You accept the invitation and register a device.
3. I take the device ID and update my Apple account and testflight which allows you access to the build.
4. You receive an updated email that a build is available and can finally install the app.
 

 

Back
Top