Generic "Traeger" Smoker/Grill controller

This project is for a generic ESP32 Based Traeger Pellet Smoker/Grill controller that can be used on any smoker/grill that has an auger, hotrod and fan used for control. Full Home Assistant control completes it and the sky is the limit on what can be done with it using automations.

The inspiration for much of this project came from the excellent work done be @Nebhead and the PiSmoker project (GitHub - nebhead/PiFire: PiFire is a Smart WiFi enabled controller for your pellet smoker / grill.) based on the Raspberry Pi. Their Discord channel is here Discord

While I respect the platform for what it is, I’m not a huge Raspberry Pi fan and I wanted something based on an ESP32 and ESPHome that would integrate seamlessly into Home Assistant. So, this project was born.

I started this project by writing a very complex and proprietary controller for a gigantic commercial Traeger COM200 3 burn pot pellet smoker. This version is significantly scaled down.

Like my rain proofing? It’s winter and the show must go on…

This monster commercial smoker can smoke/cook up to 40 full size briskets. That project has a life of its own and had been very successful. So I decided to take the literally hundreds of hours of work I put into that project and scale it down so it can be used on a single burn pot, generic Traeger style backyard pellet smoker/grill. Some key attributes of this scaled down version:

  • its written in ESPHome, so its easy to understand and modify
  • it integrates seamlessly with Home Assistant and all functions are controllable via a LoveLace dashboard both on a PC and in the Home Assistant app.
  • it emulates the existing new Trager controllers in all functions and adds several new functions
  • it controls 1 auger, 1 hot rod & 1 fan found on the vast majority of pellet smokers
  • it uses solid state relays for control
  • it uses the existing PT1000 temperature sensor (can be adapted to a PT100)
  • it adds a Smith-Predicting, PID temperature compensating control
  • it controls the chamber temperature within approximately +/- 5F vs the +/- 25F for existing controllers
  • rotary encoder support so you can control your grill temp with a spinny knob
  • it has an interactive, touch screen ili9341 display
  • it adds 3 optional configurable wired meat probes
  • it allows dynamic configuration of ALL parameters so it is infinitely tunable for any size/brand of pellet smoker
  • it also allows for both touch screen control of all functions as well as optional individual buttons for control.
  • it adds an optional VL53L0X Time of Flight (TOF) Sensor sensor to measure hopper pellet levels
  • Circuit board for scaled down version should be approximately the same size as the Traeger controller allowing easy retrofit installation.

Very little overshoot when adjusting temperatures (Smith Predictor).

Precise temp control from startup to set temp.

Fully adjustable PID Params (advanced)

Lovelace Dashboards with animated icons for fans, auger & hotrod

This is a work in progress. I’m not affiliated with Traeger or any other BBQ or smoker company. The design may or may not work with your grill, so, your mileage may vary. The chip Im using in this design is an ESP32 D1 Mini. Its small size, wide availability, and versatility makes it ideal for this use. You can probably use any ESP32 based dev board, but I cannot guarantee it will work. My larger project uses an ESP32-S3 as I needed every single available GPIO on that chip, and then some. Plus I needed to use the ESP-IDF framework for that project and also needed PSRAM, hence the S3 based board choice.

I will publish circuit board designs for this scaled down version as time permits. I may offer them for sale in the future as well.

.

This project has been a ton of fun. It’s about 1400 lines of ESPHome code so it’s not a “beginner” project by any definition. But if you study the code long enough, you’ll begin to make sense of it all - that’s what I love about ESPHome. It’s easily approachable by novice users.

Also, because this controller offers the ability to completely customize literally everything, it will take time for you to realize its full potential. The PID tuning is especially complex, but after many days of testing, I’ve settled on PID value parameters that do a reasonable job of keeping the chamber temps within 5F or so, a far cry from the +/-25F of the current controllers. Adding the Smith Predictor to the PID controller eliminates overshoots from wide temperature changes. Many kudos must go to @dogtreatfairy for many hours spent helping me tune the PID controller.

ESPHome firmware source code and KiCad schematics are published on my GitHub.

Circuit board is exactly the same size as the one in the Traeger.

9 Likes

This is awesome! I am going to try - and can be classified as in between a beginner and novice.

I’m going to upload new docs now. I had major trouble w/ the ESP32WROOM chip and migrated it to an ESP32S3. it just wasnt powerful enough to run a display with touch effectively. Everything works great now.

I’ll have new circuit boards in a few weeks - they’re on order w/ JLCPCB.

2 Likes

New circuit boards arrived. I ran into a very interesting and frustrating issue assembling Rev 2 of my board… it turns out that 2 of the modules I designed into the circuit board had slightly different pin outs than the physical module. The MAX6675 module had MISO and CLK reversed. The MAX31865 module had GND and 3v3 reversed. Needless to say, this caused issues.

The lesson here is to not trust a KICAD footprint for these “breakout” boards. They can all be different. Get them in your hands and design with them that way. Also check the pin spacing by using the measurement tool in KICAD. That will eliminate frustration during assembly. A couple cut traces and 2 jumper wires and all was good.

I’ll update my Guthub with the new files soon.

3 Likes

I just want to say a huge thanks for providing an esphome PID implementation with smith predictor which looks quite good from a first glance. I plan on using the PID for controlling a solar battery (Marstek Venus to be precise). If I get it working and publish it on github, I will obviously give a shout-out to you. :slight_smile:

Did you write all the code yourself or was it based on something else?

I started with a project called PiFire. It a Raspberry Pi based pellet controller. Their PID controller was working, so I ported it to ESPHome. It’s not as easy as it sounds, I assure you :wink: but here we are.

Control a Solar battery how? A heater? I wrote a PID controller for that as well. Here’s a link to that post:

And finally, if you feed your graphs and code to Grok ,you’ll be absolutely amazed at how helpful it is in tuning all the params AND tweaking the code.

Jeff

… not the heater but the actual AC output of the solar battery. Basically the inbuilt regulator/controller is at best okay-ish (overshooting, slow reaction time, etc.). Fortunately it can be integrated into HA & controlled completely via Modbus/RS485 with e.g. an ESP device and the internal regulator can be disabled. Right now I am using a simple exponential smoothing function for my self-built modbus regulator which is slightly better but I believe PID + Smith predictor is a better choice.

Thanks for the hint with AI, definitely planning on using some LLM for initial optimizing/tuning the params :slight_smile:

1 Like

that certainly is an interesting use case. Have you discovered Cursor AI yet for ESPHome coding?

This is excellent work!

My smoker controller is having some button issues. I’m replacing the buttons for now. Thinking about controlling my controller (HA!) with a ESP32 brought me here. This might be a future project!

1 Like

I’m very interested in building this controller. The files on github seem old and not updated to the new layout that uses the esp32s3. Any chance you could update them?

Also - can you document all the external parts used like the rotary encoder and thouch screen? Can you also confirm a generated BOM from KiCAD contains all the part numbers that can be looked up at Digikey or Mouser?

FWIW - I do have a fair amount of electronics and PCB design experience, but I’m happy to use what you have built and just follow it, similar to building a lego set. :slight_smile:

Can you do my traeger? lol

Sure,happy to update the repository. I have a couple of recent mods, but I use this smoker a couple times a week and it works really well. There’s a gotcha with the MAX31865. Depends on where you get it from and which version - the pin outs on the breakout board are slightly different, but enough to make it not work.

Files updated with what I’m using.