Espress for HeaterMeter Module (wifi with no Pi/Linkmeter needed)

those are nice gauges as well....I prefer the 'simple' google ones, but those do look sexier! good thing is that it would be super easy to change the dashboard to use whatever theme/gauge/chart you want....

Also, forgot another important update. ALARMS are now implemented too....You can set the alarms remotely and you will get alarms via MQTT or ThingSpeak. With thingspeak you'll be able to react anyway youd like. It was very quick to add a React to my twitter account. Worked just fine....added a small item to espress(probably linkmeter has it already, but its a alarm reset countdown, so if you set 30 seconds....the HM box will 'beep' for 30 seconds on alarm, and then espress will reset the alarm).

I'll be releasing updated docs and I'm going to release a public link for the files soon.....if anyone has html5/javascipt experience and would like to help with the dashboard....shoot me a pm.
Turning out to be an interesting project. Spent a couple of hours setting this up today and seems to be on the right path. I have had it logging data for a couple of hours total and it hasn't missed a beat.

Espress v1.0 NOW RELEASED!!!!

I'm happy to release a version for anyone to try out today... Download the Espress for HeaterMeter Software here.

Read the include PDF on how to setup your Module to work with HeaterMeter.

Features include:

Super Easy to configure! You simply use your phone/tablet to connect to the access point of the module to setup internet/cloud connections.

Works with internet cloud services (thingspeak & mqtt). You do NOT require any port forwarding or open ports on your router for it to work from the outside.

MQTT support allows it to work with many existing home automation systems....

The Espress Module supports firmware updating of itself and of the attached HM. (HM requires optiboot bootloader)

Remote Pit Temp/Alarms setting and support. Took me just a couple of minutes to setup thingspeak to send me an alarm through twitter!

Super Value! Yes you can get a decent nodemcu board for under $5 shipped for ebay/ali! Also because it's all flash based SOC, it starts up and connects within seconds!

Thanks for Charles/Will for helping me test out the's still in try it out and let me know how it works for you!

I've also worked on an 'improved' dashboard (just started playing with bootstrap): Try the link here (it's a demo account so you can play around)..... try dashboard

Almost set up to give it a go. Spent this afternoon etching a quick one sided board for my hookup. I'll get all the firmware and sundries set up tonight, and I plan on doing a cook tomorrow to try it out. I'll be happy to post the Eagle board file if anyone is interested, once I try it and make sure it doesn't let out the "magic blue smoke".

looks good....although it doesn't make a difference....was there any reason why you 'turned' the nodemcu so that the logic pins are away from header?

forgot to mention that the prototype boards I used was from this pack....

let me know how the testing goes.....
I turned the board to make the routing of the power and ground a bit easier. Pardon my ghetto tinning job.

I have it all set up, and no "blue smoke". So good so far. I have noticed that my dashboard doesn't update automatically? I have to refresh the page to get an update. I'm using stupid Windows 10 with Chrome. Won't work on Explorer. Any ideas?
Im using windows 10/chrome as well....are you using it via the web or are you using a local file? The config form on dashboard has the interval to refresh....should be 10 seconds..

also, works in IE for me....but I'm using the the url I know that local files act differently (security)...
oops....had a typo in the dashboard html that was treating 10 seconds as 100 seconds, so it was slow to update.....dashboard file is fixed, so you should see your updates...let me know.
OK, so it is updating, but on both local and the "nailbuster" sub-domain it updates every 1 minute 39 seconds. I have the update in the config set to 10 seconds.

EDIT: must have posted at the same time. All good now.
Last edited:
Hi David, thanks for all of your work on this! I was able to build your code in Arduino 1.6.12 and load it on my Amica NodeMCU (esp8266 esp-12e) and everything seems to be working great. I wasn't sure exactly how to use the older espsoftwareserial-2.1.1, but I copied it into my "C:\Users\<user>\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries" folder (and temporarily moved out the existing SoftwareSerial folder). I have since moved the original SoftwareSerial folder back and compiled/loaded and everything still seems to be working fine. Perhaps the 2.1.1 version of SoftwareSerial is no longer needed? Also, I am using a different version of the PubSubClient (the default one when searching under Library Manager) in my other sketches, so that caused some small issues (I ended up just renaming the header file for the version you are using to be PubSubClient2.h, and updated necessary references).

Some of the names of the configuration items on the HeaterMeter web config page seemed to be different than what shows up on the raspberry pi based HM config page. For example, I have Version 20160118B and here is an example line under the PID parameters section (items in parentheses are configurable):
Fan output (Voltage) on above(xx)% min(xx)% max(xx)% startup max(xx)%

It is possible I have an older version of the rPI HM code, and this is why things aren't matching up. Is it possible to set or view the Espress HM configuration via a configuration URL like on the rPI HM?

I especially like how you have added support for MQTT. I am using Home Assistant for home automation, so I'm sure this will come in handy. I have pushbullet setup in Home Assistant already, so it should be pretty easy to push notifications for temperature alarms. With some work it should even be possible to use voice commands to set the temperature with an Echo, although I don't like the idea of jokesters being able to change the temp on my smoker!

I have the thingspeak stuff setup on your nailbuster site, but I was wondering if there were any plans to have a simple webserver that runs directly on the esp8266 that could display a very simple web page (similar to /luci/lm/light) which shows current set point and temps. I believe you already have a webserver that allows for configuring the heatermeter, so perhaps this would be fairly simple to add? Also, it would be really useful to be able to query the heatermeter status (/luci/lm/hmstatus). I have an app that is fetching heatermeter JSON data by issuing a http GET request to /luci/lm/hmstatus, so it would be great if this was consistent with the raspberry pi based heatermeter. Also, my Pebble watch would not longer be able to display smoker temps, although Pebble got bought by Fitbit so not sure how much longer I will be able to use the Pebble HM app anyway. I'm not sure how the android-based Heatermeter app (PitDroid) is working, but I'm guessing it uses the same interface. FYI, on my esp-12e Arudino indicates only 32% of program storage is being used for the EspressHeater project... so that is good:
Sketch uses 337,235 bytes (32%) of program storage space. Maximum is 1,044,464 bytes.
Global variables use 43,636 bytes (53%) of dynamic memory, leaving 38,284 bytes for local variables. Maximum is 81,920 bytes.

Here is some info about accessing HM data remotely:

I have also seen your recent updates on your thermocouple HM-min thread. That looks very promising in terms of a very cost effective HM and I am looking forward to building one.

Thanks again for all of your great work on this.