HeaterMeter Monitor and ESP8266/ESP32 Streaming Library


 

Bryan Mayland

TVWBB Hall of Fame
A long time ago someone had an idea to make a giant 7-segment LED display panel that showed the temperatures from their HeaterMeter in a standalone unit. They never did, and after I priced checked bigger LEDs ($3-5 per digit) I cheaped out and didn't want to make one either. I still had it in the back of my mind and though and I thought it would be fun to put one together.
DSC07399.JPG

This is a wifi-connected display that updates in real-time just like the web page does. Of course, the LED displays I bought were the "clock display" variety and not the "decimal display" variety so only the smartest geniuses in the world can decipher what temperatures it is showing. Can you?

I'm publishing the source code for this along with the Arduino library that makes integrating whatever you want easy as can be
Code:
#include <HeaterMeterClient.h>

#define WIFI_SSID       "network"
#define WIFI_PASSWORD   "password"
#define HEATERMEATER_IP "192.168.2.54"

static HeaterMeterClient hm(HEATERMEATER_IP);

static void onHmStatus()
{
  // Called every 1-5s as new data comes pushed
  Serial.print(hm.state.Probes[0].Name);
  Serial.print('=');
  Serial.println(hm.state.Probes[0].Temperature);
}

void setup()
{
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.begin(115200);

  hm.onHmStatus = &onHmStatus;
}

void loop()
{
  hm.update();
}

I've also got a video of it doing what it does

What sets the library apart from most "Display a website's information" programs is that this doesn't poll the HeaterMeter to get the data, it uses the same mechanism that the website does to stream the data in real-time. The updates come as fast as the HeaterMeter puts them out. I'm just displaying the temperatures, but the library also has the PID/fan/servo output, alarm information, and probe names.

I haven't uploaded it to GitHub yet but it will be there in the next day or two. This project took a day start to finish and cost about $11 in parts from China. If you've got an idea for how you'd like to display the live HeaterMeter data in your own special way, it will take you almost no time to get started by just using the library. It doesn't support mDNS discovery because I've found that the mDNS implementation we use is horribly flawed and I need to get it fixed upstream, but maybe we don't even need that.

What can you do with this?!
 
Last edited:
Love this. You know my feelings on the 4 line. I'd love to have a stack on so I could have the LED temps attached to my HM. How do they do in direct sunlight?
 
That’s pretty nice!

Looking forward to the HM having some more native MQTT support then you could surface these stats and more in real-time on other devices/platforms as well.
 
Love this. You know my feelings on the 4 line. I'd love to have a stack on so I could have the LED temps attached to my HM. How do they do in direct sunlight?
That's one of the other reasons I wanted to build it too, to have a big ole display you can set up by the grill for easily seeing all the temps at once. Unfortunately, even at the highest brightness level, it gets really washed out even under a desk lamp. Outdoor viewing is pretty much not an option unless you're in some heavy shade. It might be possible to add on some little shades above each of the displays to make it more visible. The current draw is less than 200mA though so powering it with a USB power bank and carrying it around is an option, even for a long cook on a tiny powerbank.

Also, do you know how awesome this would be on an old split flap display? :cool:
Before I started building this one, I looked at building my own giant 3D printed 7-segment displays which quickly lead me to split flap displays. Both were more work than I felt like I wanted to put into the hardware despite how awesome they are. Maybe with the library someone might be inspired to make one of them though.

The MQTT integration is going to wait until after the OpenWrt platform upgrade so I wanted to put something out that's interesting before getting started on that. This is something that someone can look at and say "Cool!" as opposed to what will be 10x more work that not a single person will care about but has to be done.
 
If you want an easy to read display in the sun, check out the recently released MagTag e-ink unit from Adafruit. It’s even got 4 neopixels and 4 buttons on it.

 
This isn’t just a display, it’s a full ESP32 with an e-ink display. Since Bryan is in the process of releasing the HeaterMeter Monitor library, this is something that could be used with it.

You could even use it as a remote HM controller, using the buttons to change the set point, etc.
 
If you want an easy to read display in the sun, check out the recently released MagTag e-ink unit from Adafruit. It’s even got 4 neopixels and 4 buttons on it.

Those are awesome and I can't wait for the price to drop to a more affordable range as they become more ubiquitous. With just a 2.9" diagonal it is pretty small to see from any distance away though so it would be similar to a 4-line LCD I think. Unless you had 4x of them forming a larger display!

Oh it also says the update rate is about a second so maybe that's not so great for data that updates every 1-5 seconds. The normal push interval from linkmeterd is 2s, but it will wait up to 5s if nothing has changed since the previous update. It will also push out a single 1s interval update if the last update was 2s or more. The idea being to reduce the amount of graph points being added and recalculated constantly. I was thinking last night I should change it to update every second but then have the graph only update on a 2-5s interval. That would make the webui seem more real-time without changing existing graph behavior.
 
What I like is that it is dot matrix so yes, the overall size is relatively small, but it does open up better options for 'big' character modes. For instance you could have the Pit temp really large, then have the 3 other probes in small stacked vertically. In addition, with a small additional board, you could have a self contained 'lite' heatermeter without all the graphing and intelligence like we spoke of. That is a nice all in one unit for ease but you should be able to put together an e-ink display and ESP32 yourself for cheaper, albeit with more work. I for one though would pay more for it.
 
That is a nice all in one unit for ease but you should be able to put together an e-ink display and ESP32 yourself for cheaper, albeit with more work

I was looking for a similar setup for a different project and the price of an e-ink display + ESP8266 or ESP32 works out to a very similar price. The magtag also has the 4 onboard RGB LEDs, 4 buttons, threaded mounting holes and a nice little spot on the back for a li-ion battery pack.
 
:) It is a cool device but assuming you'd need a board to control the probe IO anyway, you could get a 2.9" display and ESP32 raw components for $25 or so in single qty. Now if you needed the RGB pixels and switches it makes it very attractive. Don't get me wrong, it's a great little device but I think there has always a preference here for using raw components to help ensure longer term parts availability. That said, I'll probably buy one to play with, I bought an M5Stack Fire and Atom and ended up using them for Pixel controllers.
 
Yeah it's pretty great because it can run off a battery and has a built-in charger, but it just is going to be an awful experience to use it for data that is constantly changing-- as fast as the screen can refresh. It isn't like an LCD display either where the slow refresh just looks like slow drawing, it is e-ink that goes completely black and completely white and the fades to the right display so most of the time you can't see anything at all. Being readable in full sunlight doesn't mean much if 50% of the time the display doesn't have anything on it. A $10 "TTGO Display" 1.14" IPS LCD with ESP32 and a built in charger is probably a better fit and then you'd just strap it to your wrist like a Pip-Boy 2000. Only 400 cd/m2 but updates with lickedy speed.
 
Last edited:
I'm not suggesting this as a replacement to the HM, just as a remote display for the HM. Since this unit it has buttons and leds, you could also use it as a remote control mechanism for the HM, using the buttons to change the setpoint and using the LEDS for things like status alarms, lid open, etc. There's nothing inherently proprietary about the magtag. The code that would run on the magtag would run just fine on another ESP32 board + display as well.
 
The code for the library is up on github in the arduino/libraries directory, the panel's source code is in arduino/MeterMonitor, and the scad file for the 3D printed panel is in the 3d directory and on thingiverse.
 

 

Back
Top