Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Public Pool - Exergy Home Assistant Integration

Monitor your self-hosted Public Pool instance directly in Home Assistant. Compatible with Start9 and other self-hosted deployments.

Before You Start

Before installing this integration:

  1. Home Assistant with HACS installed - This is a custom integration distributed via HACS. See our system configuration guide if you need to set up Home Assistant and HACS.

  2. Self-hosted Public Pool running - You need a Public Pool instance running (self-hosted or Start9).

  3. Pool URL - The URL where your Public Pool instance is accessible.

  4. Your Bitcoin address - The address you’re mining to (for address-level stats).

What is Public Pool?

Public Pool is open-source mining pool software designed for self-hosting. Key features:

  • Self-sovereign - Run your own pool infrastructure
  • Start9 compatible - Easy deployment on Start9 servers
  • Privacy-focused - Your data stays on your infrastructure
  • Solo mining - Mine blocks directly to your wallet
  • No fees - You control everything

Integration Features

The Exergy Public Pool integration provides multi-level monitoring:

Pool-Level Sensors

SensorEntity ExampleDescription
Pool Hashratesensor.public_pool_hashrateTotal pool hashrate in TH/s
Miner Countsensor.public_pool_miner_countNumber of connected miners
Block Heightsensor.public_pool_block_heightCurrent block being worked on

Network-Level Sensors

SensorEntity ExampleDescription
Network Difficultysensor.public_pool_network_difficultyCurrent bitcoin network difficulty
Network Hashratesensor.public_pool_network_hashrateNetwork hashrate in EH/s
Blockchain Heightsensor.public_pool_blockchain_heightCurrent blockchain height

Address-Level Sensors

Sensors for your specific mining address:

SensorEntity ExampleDescription
Best Difficultysensor.public_pool_address_best_difficultyBest difficulty share found
Worker Countsensor.public_pool_address_worker_countNumber of workers for this address
Address Hashratesensor.public_pool_address_hashrateYour address hashrate in GH/s

Per-Worker Sensors

For each worker detected, these sensors are created dynamically:

SensorEntity ExampleDescription
Worker Hashratesensor.public_pool_worker_{name}_hashrateWorker hashrate in GH/s
Worker Best Difficultysensor.public_pool_worker_{name}_best_difficultyWorker’s best difficulty share
Worker Last Activitysensor.public_pool_worker_{name}_last_activityTimestamp of last activity

Note: Entity IDs are automatically generated. Find your actual entity IDs at Settings > Devices & Services > Public Pool > [your device].

Installation

Step 1: Install via HACS

  1. Open Home Assistant
  2. Navigate to HACS > Integrations
  3. Click + Explore & Download Repositories
  4. Search for “Public Pool” or “Exergy Public Pool”
  5. Click Download
  6. Restart Home Assistant

Step 2: Add Integration

  1. Go to Settings > Devices & Services
  2. Click + Add Integration
  3. Search for “Public Pool”
  4. Enter your configuration:
SettingDefaultDescription
Pool URLURL to your Public Pool instance
Bitcoin AddressYour mining address for address-level stats
Scan Interval60 secHow often to poll for updates
SSL VerificationOnToggle SSL certificate verification
  1. Click Submit

Step 3: Verify

The integration creates sensors at pool, network, address, and worker levels. Check the device page to see all available entities.

Configuration

Pool URL Examples

  • Local Start9: http://public-pool.embassy:3334
  • Local network: http://192.168.1.100:3334
  • Remote with SSL: https://pool.example.com
  • Tor (Start9): Use local embassy address for better performance

Bitcoin Address

Enter the address your miners are configured to mine to. This enables:

  • Address-specific hashrate tracking
  • Best difficulty monitoring
  • Per-worker statistics

Scan Interval

Default is 60 seconds. Range: 30-300 seconds.

  • Lower intervals = more responsive but more API load
  • Higher intervals = less load but delayed updates

Start9 Integration

If running Public Pool on Start9:

  1. Find your pool’s local address in Start9’s interface
  2. Use the local embassy address: http://public-pool.embassy:3334
  3. This avoids Tor latency for local access
  4. For remote access, configure Tor proxy settings

Dashboard Integration

Display your Public Pool stats:

type: vertical-stack
cards:
  - type: entities
    title: My Public Pool
    entities:
      - entity: sensor.public_pool_hashrate
        name: Pool Hashrate
      - entity: sensor.public_pool_miner_count
        name: Connected Miners
      - entity: sensor.public_pool_address_hashrate
        name: My Hashrate
      - entity: sensor.public_pool_address_best_difficulty
        name: Best Difficulty

  - type: entities
    title: Network Stats
    entities:
      - entity: sensor.public_pool_network_difficulty
        name: Network Difficulty
      - entity: sensor.public_pool_network_hashrate
        name: Network Hashrate
      - entity: sensor.public_pool_blockchain_height
        name: Block Height

Automation Ideas

Worker Offline Alert

automation:
  - alias: "Public Pool worker offline"
    trigger:
      - platform: template
        value_template: >
          {{ (now() - states.sensor.public_pool_worker_miner1_last_activity.last_changed).total_seconds() > 600 }}
    action:
      - service: notify.mobile_app
        data:
          message: "Worker miner1 appears offline - no activity for 10 minutes"

New Best Difficulty Celebration

automation:
  - alias: "New best difficulty found"
    trigger:
      - platform: state
        entity_id: sensor.public_pool_address_best_difficulty
    condition:
      - condition: template
        value_template: "{{ trigger.to_state.state | float > trigger.from_state.state | float }}"
    action:
      - service: notify.mobile_app
        data:
          message: "New best difficulty: {{ states('sensor.public_pool_address_best_difficulty') }}!"

Low Hashrate Alert

automation:
  - alias: "Public Pool low hashrate"
    trigger:
      - platform: numeric_state
        entity_id: sensor.public_pool_address_hashrate
        below: 100
        for:
          minutes: 30
    action:
      - service: notify.mobile_app
        data:
          message: "Public Pool hashrate dropped below 100 GH/s"

Daily Mining Summary

automation:
  - alias: "Daily Public Pool summary"
    trigger:
      - platform: time
        at: "20:00:00"
    action:
      - service: notify.mobile_app
        data:
          message: >
            Public Pool Stats:
            Hashrate: {{ states('sensor.public_pool_address_hashrate') }} GH/s
            Best Diff: {{ states('sensor.public_pool_address_best_difficulty') }}
            Workers: {{ states('sensor.public_pool_address_worker_count') }}

Solo Mining Considerations

Public Pool is designed for solo mining:

  • Variance is high - You may go long periods without finding a block
  • Best difficulty matters - Track your progress toward a block
  • Patience required - Small hashrate means low probability per block

Probability Calculations

Your chance of finding a block depends on:

  • Your hashrate vs network hashrate
  • Current network difficulty
  • Time

At 1 TH/s against ~600 EH/s network, expect very long times between blocks. Public Pool is best suited for users who:

  • Value sovereignty over consistent payouts
  • Have significant hashrate
  • Want to learn about mining without third-party pools

Troubleshooting

No data appearing

  1. Verify Pool URL is correct and accessible
  2. Check that your bitcoin address is actively mining
  3. Wait for workers to appear (they show after mining activity)
  4. Check Home Assistant logs for API errors

Workers not showing

  1. Workers appear dynamically based on mining activity
  2. Inactive workers may not appear immediately
  3. Verify workers are configured with the correct bitcoin address
  4. Check miner is actually submitting work

SSL/Certificate errors

  1. Start9 uses self-signed certificates by default
  2. Disable SSL verification if using self-signed certs
  3. Use local embassy address to avoid certificate issues

Stale data

  1. Check pool is receiving work from miners
  2. Verify scan interval isn’t too long
  3. Reload the integration to force refresh

What’s Next?

Connect Your Miners

Build a Dashboard

Resources

Source Code & Support