Successfully Integrating Goal Zero Yeti with Home Assistant

After some research and experimentation, I successfully integrated my Goal Zero Yeti 3000 with Home Assistant! This was a fun project that I wanted to share in case anyone else is looking to do the same. Here’s how I did it:

First, I discovered that the Yeti has a built-in Wi-Fi module and a REST API. I found a fantastic blog post by Nick that detailed how to interact with the Yeti using HTTP requests. The blog post provided a clear breakdown of the endpoints and how to use them, which was super helpful.

I started by pinging the Yeti’s local IP address to confirm connectivity. Once I had a successful response, I moved on to testing different API endpoints. I was able to retrieve the device status, battery level, and even control the 12V and USB ports. It was exciting to see everything working in the browser!

The next step was integrating this into Home Assistant. I decided to use the REST sensor integration to pull data from the Yeti. I created a new sensor configuration in my configuration.yaml file to monitor the battery percentage and charging status. Here’s a snippet of what I added:

yaml
sensor:

  • platform: rest
    resource: http://192.168.0.10/state
    name: yeti_battery
    value_template: ‘{{ value_json.state.battery_level }}’
    scan_interval: 60
  • platform: rest
    resource: http://192.168.0.10/state
    name: yeti_charging
    value_template: ‘{{ value_json.state.charging }}’
    scan_interval: 60

I also wanted to control the outlets programmatically. I set up some automations using the rest_command component. For example, I created an automation that turns off the 12V port at night to conserve power. Here’s how I did it:

yaml
rest_command:
yeti_12v_off:
url: http://192.168.0.10/relay/12v
method: POST
headers:
Content-Type: application/json
body: ‘{“state”: “off”}’

automation:

  • alias: “Turn off Yeti 12V at night”
    trigger:
    • platform: time
      at: “23:00:00”
      action:
    • service: rest_command.yeti_12v_off

One challenge I faced was authentication. The Yeti requires a unique API key for each endpoint, which I had to extract from the device’s settings. Once I had the key, I added it to my REST sensor and command configurations using the Authorization header.

I also reached out to Goal Zero support and was pleasantly surprised when they provided me with a Postman collection of all the supported endpoints. This was incredibly useful for testing and ensuring that my integration was comprehensive.

After a few hours of tweaking, everything was up and running smoothly. I now have real-time monitoring of my Yeti’s status and can control it from within Home Assistant. It’s a great feeling to have this level of integration and control!

If anyone else is looking to do this, I highly recommend checking out Nick’s blog post and the Goal Zero developer documentation. The community support has been amazing, and I couldn’t have done this without the resources they provided.

Happy tinkering! :rocket: