Hey all,
I've got a Traeger on my deck and and wanted it properly integrated with Hubitat. After some reverse engineering the WiFire API and github sleuthing I got something working that I'm pretty happy with, so sharing it here.
What it does:
Real-time grill state via MQTT — not polling. The Traeger app uses AWS IoT under the hood with pre-signed WebSocket URLs, so I used the same approach as my Mysa thermostat driver — using interfaces.webSocket with manual MQTT framing.
Attributes you get:
- Grill temperature, target temp, probe temperature, probe target
- Pellet level (%)
- Grill state — idle, igniting, preheating, cooking, cool down, offline
- Heating state, SuperSmoke, KeepWarm, timer remaining
- MQTT connection status
Commands:
- Set grill temperature
- Set probe target temperature
- Shutdown grill
- Toggle SuperSmoke / KeepWarm
- Set/cancel cook timer
PushableButton events for Rule Machine automations:
- Button 1: Preheat complete (grill hit set temp)
- Button 2: Probe at target temp
- Button 3: Pellets low (< 20%)
- Button 4: Grill offline or error
- Button 5: Cook timer complete
So you can do things like "when button 2 is pushed → send notification: your brisket is ready" which is honestly the main thing I wanted.
How it's structured:
It's a parent app + child driver. The app handles AWS Cognito auth, grill discovery, and REST commands. The driver owns the WebSocket/MQTT connection and all the state. Multiple grills should work fine since each gets its own child device, though I only have one to test with.
Requirements:
- Traeger WiFire-enabled grill (any model with the app)
- Your Traeger app login credentials
Code is on GitHub: GitHub - craigde/hubitat-traeger: Traeger integration for Hubitat. I will add it to HPM later this week.
Happy to answer questions. Would love to hear from anyone with multiple grills or different models — my payload field names may vary across firmware versions and debug logging is there to help sort that out.