AmeriGas Propane Integration - Monitor Your Tank, Deliveries, and Energy Usage

Hey everyone! I’d like to share my AmeriGas Propane integration for Home Assistant. This integration lets you monitor your AmeriGas propane account directly in HA, including tank levels, delivery tracking, cost calculations, and full Energy Dashboard integration.

:dart: What It Does

This integration connects to your MyAmeriGas account and creates 37 sensors that track:

  • Tank level and gallons remaining
  • Delivery history - dates, amounts, and automatic pre-delivery capture
  • Usage tracking - daily average, consumption since delivery, days until empty
  • Cost monitoring - per gallon, total spend, estimated refill cost
  • Energy Dashboard - track propane consumption alongside electricity and gas
  • Account info - payments, balance, autopay status, service address

:bar_chart: Screenshots

yaml

# Example Dashboard Card
type: entities
title: Propane Tank
entities:
  - entity: sensor.amerigas_tank_level
    name: Tank Level
  - entity: sensor.amerigas_tank_gallons_remaining
    name: Gallons Remaining
  - entity: sensor.amerigas_used_since_last_delivery
    name: Used Since Delivery
  - entity: sensor.amerigas_daily_average_usage
    name: Daily Average
  - entity: sensor.amerigas_days_until_empty
    name: Days Until Empty
  - entity: sensor.amerigas_estimated_refill_cost
    name: Est. Refill Cost
  - entity: sensor.amerigas_last_delivery_date
    name: Last Delivery

:rocket: Latest Updates

v3.0.7 (Current) - Critical Race Condition Fix

Fixed a major bug where sensors weren’t updating when you manually set the pre-delivery level. Previously only the “Used Since Delivery” sensor would recalculate - now ALL dependent sensors update immediately.

Fixed sensors:

  • :white_check_mark: Daily Average Usage - no longer shows 0.0000 gal/day
  • :white_check_mark: Cost Since Last Delivery - uses correct usage values
  • :white_check_mark: Energy Consumption - calculates properly
  • :white_check_mark: Days Until Empty - works for ANY usage rate (even vacation homes!)

Before v3.0.7:

yaml

sensor.propane_daily_average_usage: 0.0000 gal/day ✗
sensor.propane_cost_since_last_delivery: $0.00 ✗
sensor.propane_days_until_empty: 9999 days ✗

After v3.0.7:

yaml

sensor.propane_daily_average_usage: 4.69 gal/day ✓
sensor.propane_cost_since_last_delivery: $526.50 ✓
sensor.propane_days_until_empty: 58 days ✓

v3.0.5 - Automatic Pre-Delivery Capture

The integration now automatically captures your exact tank level before each delivery, giving you 100% accurate consumption tracking for ANY delivery size (no more estimation!).

How it works:

  1. AmeriGas delivers propane
  2. Integration detects the delivery date changed
  3. Automatically calculates: Pre-delivery = Current - Delivery Amount
  4. All sensors immediately use this exact value

Example: 28 gallon delivery that used to show 0 gallons used now correctly shows 120 gallons used!

:package: Installation

Via HACS (Easiest)

  1. HACS → Integrations → ⋮ → Custom repositories
  2. Add: https://github.com/skircr115/ha-amerigas
  3. Category: Integration
  4. Click “Download”
  5. Restart Home Assistant
  6. Settings → Devices & Services → Add Integration → “AmeriGas”
  7. Enter your MyAmeriGas credentials

Manual Installation

  1. Download from GitHub releases
  2. Copy custom_components/amerigas to your config directory
  3. Restart HA
  4. Add integration via UI

:tada: Coming in v3.0.8

I have pending PRs for:

  • Brand icons/logos - proper AmeriGas branding in the UI
  • HACS default integration - will be directly visible in HACS storefront (no custom repo needed!)

This will make installation even easier for new users.

:chart_with_upwards_trend: From Pyscript to Native Integration

This project started as a pyscript-based solution (v2.x) but I completely rewrote it as a native custom component (v3.0+) to provide:

Why I moved away from pyscript:

  • :x: Required Pyscript dependency
  • :x: Manual YAML configuration
  • :x: Manual file updates
  • :x: Limited error handling
  • :x: No UI configuration

Benefits of native integration:

  • :white_check_mark: Zero dependencies
  • :white_check_mark: UI-based configuration
  • :white_check_mark: HACS one-click updates
  • :white_check_mark: Better error handling and diagnostics
  • :white_check_mark: Proper state restoration
  • :white_check_mark: Native coordinator pattern

If you’re still using the pyscript version, I’ve included a detailed migration guide.

:bulb: Cool Use Cases

Automations:

yaml

# Low propane alert
- alias: "Propane Low Alert"
  trigger:
    - platform: numeric_state
      entity_id: sensor.amerigas_tank_level
      below: 20
  action:
    - service: notify.mobile_app
      data:
        message: "Propane tank at {{ states('sensor.amerigas_tank_level') }}%"

Energy Dashboard: Track propane consumption over time alongside your other utilities. The integration provides proper state_class: total_increasing sensors that work perfectly with the Energy Dashboard.

Cost Tracking: See exactly how much you’ve spent on propane since your last delivery, and get realistic estimates for your next refill (based on 80% fill, not 100%).

:wrench: Technical Details

Update Schedule: 00:00, 06:00, 12:00, 18:00 daily (cron-based, no drift)

Manual Services:

  • amerigas.refresh_data - Force immediate API update
  • amerigas.set_pre_delivery_level - Manually set pre-delivery level for historical deliveries

Sensors include:

  • 15 base sensors from AmeriGas API
  • 11 calculated sensors (usage, cost, energy)
  • 2 lifetime tracking sensors (gallons, energy)
  • 1 diagnostic entity (pre-delivery level)

:books: Links

:warning: Disclaimer

This is an unofficial integration and is not affiliated with AmeriGas. Use at your own risk. Always verify propane levels manually.

:pray: Credits

Big thanks to @Ricket and other contributors who’ve helped with bug reports and fixes. The Home Assistant community has been incredibly helpful in testing and providing feedback!


If you use AmeriGas for propane and Home Assistant, give this integration a try! :star:

Questions? Issues? Feature requests? Drop a comment or open an issue on GitHub!