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.