Bitcoin / Cryptocurrency Dashboards

Just thought I’d share a screenshot of my bitcoin/crypto dashboard in case anyone is interested, happy to share templates, card config etc if anyone wants it.

This is mostly all powered by my own revamp of the cryptoinfo integration here

Which supports fetching data from a bunch more sources

4 Likes

Please, do share! It looks very complete!!! Even though I might not use everything in there, this looks awesome

Which bits would you like sir? :slight_smile:

This is my Bitcoin sensor config for the above cryptoinfo integration:

# BTC Price USD
- platform: cryptoinfo_advanced
  id: "BTC Price"
  cryptocurrency_name: "bitcoin"
  currency_name: "usd"
  unit_of_measurement: "$"
  update_frequency: 0.5
  extra_sensors:
    - property: "all_time_high"
      unit_of_measurement: "$"
    - property: "all_time_high_distance"
      unit_of_measurement: "$"
# BTC Price GBP
- platform: cryptoinfo_advanced
  id: "BTC Price GBP"
  cryptocurrency_name: "bitcoin"
  currency_name: "gbp"
  unit_of_measurement: "£"
  update_frequency: 0.5
# BTC Dom
- platform: cryptoinfo_advanced
  id: "BTC Dominance"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 0.5
  api_mode: "dominance"
# ETH Dom
- platform: cryptoinfo_advanced
  id: "ETH Dominance"
  cryptocurrency_name: "eth"
  unit_of_measurement: "%"
  update_frequency: 0.5
  api_mode: "dominance"
# BTC Chain Summary
- platform: cryptoinfo_advanced
  id: "BTC Height"
  cryptocurrency_name: "btc"
  unit_of_measurement: "Blks"
  update_frequency: 2
  api_mode: "chain_summary"
  extra_sensors:
    - property: hashrate_calc
      id: "BTC Hashrate EH"
      unit_of_measurement: EH
    - property: difficulty_block_progress
      id: "BTC Difficulty Block Progress"
      unit_of_measurement: "Blks"
      state_class: total_increasing
    - property: difficulty_retarget_height
      id: "BTC Difficulty Retarget Height"
      unit_of_measurement: "Blks"
    - property: block_time_in_seconds
      id: "BTC Block Time In Seconds"
      unit_of_measurement: "seconds"
    - property: difficulty_retarget_seconds
      id: "BTC Difficulty Retarget Seconds"
      unit_of_measurement: "seconds"
    - property: difficulty_retarget_percent_change
      id: "BTC Difficulty Retarget Percent Change"
      unit_of_measurement: "%"
    - property: difficulty_retarget_estimated_diff
      id: "BTC Difficulty Retarget Estimated Diff"
      unit_of_measurement: ""
    - property: halving_block_progress
      id: "BTC Halving Block Progress"
      unit_of_measurement: "Blks"
    - property: next_halving_height
      id: "BTC Next Halving Height"
      unit_of_measurement: "Blks"
    - property: total_halvings_to_date
      id: "BTC Total Halvings To Date"
      unit_of_measurement: "Halvings"
# BTC Hash Control
- platform: cryptoinfo_advanced
  id: "BTC Foundry USA Hash Control 100 Blocks"
  unique_id: "btc_cco_bc1qxh"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "FoundryUSA"
    - "bc1qxh"
- platform: cryptoinfo_advanced
  id: "BTC F2Pool Hash Control 100 Blocks"
  unique_id: "btc_cco_1KFHE7"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "F2Pool"
    - "1KFHE7"
- platform: cryptoinfo_advanced
  id: "BTC Binance Hash Control 100 Blocks"
  unique_id: "btc_cco_1Q8QR5"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "Binance"
    - "1Q8QR5"
    - "3L8Ck6"
- platform: cryptoinfo_advanced
  id: "BTC AntPool Hash Control 100 Blocks"
  unique_id: "btc_cco_AntPool38XnPv"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "AntPool"
    - "38XnPv"
- platform: cryptoinfo_advanced
  id: "BTC ViaBTC Hash Control 100 Blocks"
  unique_id: "btc_cco_ViaBTC"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "ViaBTC"
    - "18cBEM"
- platform: cryptoinfo_advanced
  id: "BTC BTC.Com Hash Control 100 Blocks"
  unique_id: "btc_cco_36cWgj"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "BTC.Com"
    - "36cWgj"
- platform: cryptoinfo_advanced
  id: "BTC MaraPool Hash Control 100 Blocks"
  unique_id: "btc_cco_15MdAH"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "MaraPool"
    - "15MdAH"
- platform: cryptoinfo_advanced
  id: "BTC Poolin Hash Control 100 Blocks"
  unique_id: "btc_cco_poolin"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "Poolin"
    - "33TbzA"
- platform: cryptoinfo_advanced
  id: "BTC Pegapool Hash Control 100 Blocks"
  unique_id: "btc_cco_pegapool"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "3GRKUV"
- platform: cryptoinfo_advanced
  id: "BTC Luxor Hash Control 100 Blocks"
  unique_id: "btc_cco_luxor"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "39bitU"
- platform: cryptoinfo_advanced
  id: "BTC EMCD.io Hash Control 100 Blocks"
  unique_id: "btc_cco_emcdio"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "3LwoXD"
- platform: cryptoinfo_advanced
  id: "BTC Slushpool Hash Control 100 Blocks"
  unique_id: "btc_cco_slush"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "1CK6KH"
- platform: cryptoinfo_advanced
  id: "BTC CarbonNegative Hash Control 100 Blocks"
  unique_id: "btc_cco_carbonnegative"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "3KZDwm"
- platform: cryptoinfo_advanced
  id: "BTC SBICrypto Hash Control 100 Blocks"
  unique_id: "btc_cco_sbicrypto"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "bc1qte"
- platform: cryptoinfo_advanced
  id: "BTC Ultimus Hash Control 100 Blocks"
  unique_id: "btc_cco_ultimus"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "3C9sAK"
- platform: cryptoinfo_advanced
  id: "BTC Terrapool Hash Control 100 Blocks"
  unique_id: "btc_cco_terrapool"
  cryptocurrency_name: "btc"
  unit_of_measurement: "%"
  update_frequency: 1
  api_mode: "chain_control"
  pool_prefix:
    - "bc1q39"
# BTC Last Diff
- platform: cryptoinfo_advanced
  id: "BTC Last Diff Timestamp"
  cryptocurrency_name: "btc"
  unit_of_measurement: "s"
  update_frequency: 1
  api_mode: "chain_block_time"
# BTC Orphans
- platform: cryptoinfo_advanced
  id: "BTC Orphans Today"
  cryptocurrency_name: "btc"
  unit_of_measurement: "Blks"
  update_frequency: 1
  api_mode: "chain_orphans"
# BTC Mempool
- platform: cryptoinfo_advanced
  id: "BTC Mempool Size"
  cryptocurrency_name: "btc"
  unit_of_measurement: "vB"
  update_frequency: 1
  api_mode: "mempool_stats"
  extra_sensors:
    - property: mempool_tx_count
      id: "BTC Mempool TX Count"
      unit_of_measurement: "tx"
    - property: mempool_total_fee
      id: "BTC Mempool Total Fees"
      unit_of_measurement: "satoshis"
    - property: mempool_size_calc
      id: "BTC Mempool Size MB"
      unit_of_measurement: "MB"

The cards I’m still tweaking but if there’s particular bits you’re interested in I’ll post the code

1 Like

Thank you so much for sharing!!!
Would you mind also sharing the code from your lovelace dashboard that you use it?

I have already installed Cryptoinfo_advanced, there is soooo much stuff in there to use, thanks!

This is the left bitcoin card with the main stats. It does use a couple of input_number entities for the price targets so either remove those or also make those up if you want to use that

type: custom:layout-card
layout_type: custom:horizontal-layout
cards:
  - type: custom:mushroom-title-card
    title: BTC
  - type: custom:layout-card
    layout_type: custom:horizontal-layout
    cards:
      - hours_to_show: 24
        graph: line
        type: sensor
        entity: sensor.cryptoinfo_btc_price_bitcoin_usd
        detail: 2
        name: BTC USD
      - hours_to_show: 24
        graph: line
        type: sensor
        entity: sensor.cryptoinfo_btc_price_bitcoin_gbp
        detail: 2
        name: BTC GBP
    layout:
      width: 190
      max_cols: 2
      margin: 0px 0px 0px 0px
      card_margin: 0px 0px 0px 0px
    view_layout:
      column: 1
  - type: custom:layout-card
    layout_type: custom:horizontal-layout
    cards:
      - hours_to_show: 24
        graph: line
        type: sensor
        entity: sensor.cryptoinfo_btc_mempool_size_mb
        detail: 2
        name: Mempool Size
      - hours_to_show: 24
        graph: line
        type: sensor
        entity: sensor.cryptoinfo_btc_mempool_tx_count
        detail: 2
        name: Mempool TXs
    layout:
      width: 190
      max_cols: 2
      margin: 0px 0px 0px 0px
      card_margin: 0px 0px 0px 0px
    view_layout:
      column: 1
  - type: custom:layout-card
    layout_type: custom:horizontal-layout
    cards:
      - type: conditional
        conditions:
          - entity: input_boolean.ui_always_on
            state: 'on'
        card:
          hours_to_show: 24
          graph: line
          type: sensor
          entity: sensor.cryptoinfo_btc_mempool_average_fee_per_tx
          detail: 2
          name: Mempool Avg Fee/TX
          unit: sats
      - type: conditional
        conditions:
          - entity: input_boolean.ui_crypto_toggle_btc_mempool_fee_unit
            state: 'on'
        card:
          hours_to_show: 24
          graph: line
          type: sensor
          entity: sensor.cryptoinfo_btc_mempool_total_fees
          detail: 2
          name: Mempool Total Fees
          unit: sats
      - type: conditional
        conditions:
          - entity: input_boolean.ui_always_on
            state: 'off'
        card:
          hours_to_show: 24
          graph: line
          type: sensor
          entity: sensor.cryptoinfo_btc_mempool_average_fee_per_tx
          detail: 2
          name: Mempool Avg Fee/TX
          unit: sats
      - type: conditional
        conditions:
          - entity: input_boolean.ui_crypto_toggle_btc_mempool_fee_unit
            state: 'off'
        card:
          hours_to_show: 24
          graph: line
          type: sensor
          entity: sensor.cryptoinfo_btc_mempool_total_fees_btc
          detail: 2
          name: Mempool Total Fees
          unit: BTC
          icon: mdi:bitcoin
    layout:
      width: 190
      max_cols: 2
      margin: 0px 0px 0px 0px
      card_margin: 0px 0px 0px 0px
    view_layout:
      column: 1
  - type: custom:layout-card
    layout_type: custom:horizontal-layout
    cards:
      - type: gauge
        entity: sensor.cryptoinfo_btc_dominance
        unit: '%'
        name: Dominance
        needle: false
        severity:
          green: 45
          yellow: 30
          red: 0
      - type: gauge
        entity: sensor.cryptoinfo_btc_difficulty_block_progress
        max: 2016
        needle: false
        severity:
          green: 0
          yellow: 1616
          red: 1916
        min: 0
        unit: Blks
        name: Diff Progress
      - type: gauge
        entity: sensor.cryptoinfo_btc_halving_block_progress
        max: 210000
        needle: false
        severity:
          green: 0
          yellow: 195000
          red: 205000
        name: Halving Progress
    layout:
      width: 130
      max_cols: 3
      margin: 0px 0px 0px 0px
      card_margin: 0px 0px 0px 0px
    view_layout:
      column: 1
  - type: custom:layout-card
    layout_type: custom:horizontal-layout
    cards:
      - type: custom:mushroom-template-card
        primary: >-
          {{
          "${0:,.0f}".format(states("sensor.cryptoinfo_bitcoin_all_time_high")|float)
          }}
        secondary: All Time High
        icon: mdi:bitcoin
        entity: input_boolean.ui_always_on
        badge_icon: ''
        multiline_secondary: true
        fill_container: true
        tap_action:
          action: call-service
          service: input_boolean.toggle
          target:
            entity_id: input_boolean.ui_crypto_toggle_btc_mempool_fee_unit
          data: {}
        icon_color: >-
          {% if (states('sensor.cryptoinfo_btc_price_bitcoin_usd') | float(0))
          >= (states('sensor.cryptoinfo_bitcoin_all_time_high') | float(0)) %}

          orange

          {% else %}

          white

          {% endif%}
      - type: custom:mushroom-template-card
        primary: >-
          {% set dist =
          (states("sensor.cryptoinfo_bitcoin_all_time_high_distance")|float) %}
          {{"-" if dist > 0 else "+" }}{{ "${0:,.0f}".format(dist) }}
        secondary: All Time High Distance
        icon: mdi:bitcoin
        entity: input_boolean.ui_always_on
        badge_icon: ''
        multiline_secondary: true
        fill_container: true
        tap_action:
          action: none
        icon_color: >-
          {% if (states('sensor.cryptoinfo_btc_price_bitcoin_usd') | float(0))
          >= (states('sensor.cryptoinfo_bitcoin_all_time_high') | float(0)) %}

          orange

          {% else %}

          white

          {% endif%}
      - type: custom:mushroom-template-card
        primary: >-

          {%- set low_dist = ((states('sensor.cryptoinfo_btc_price_bitcoin_usd')
          | float(0)) - (states('input_number.crypto_btc_price_trigger_under') |
          float(0))) -%} {{("+" if low_dist > 0 else "") + "$" + (low_dist |
          string) }}
        secondary: Low Target
        icon: mdi:bitcoin
        entity: sensor.cryptoinfo_bitcoin_all_time_high
        badge_icon: ''
        multiline_secondary: true
        fill_container: true
        tap_action:
          action: none
        icon_color: >-
          {% if (states('sensor.cryptoinfo_btc_price_bitcoin_usd') | float(0)) <
          (states('input_number.crypto_btc_price_trigger_under') | float(0)) %}

          orange

          {% else %}

          white

          {% endif%}
      - type: custom:mushroom-template-card
        primary: >-

          {%- set high_dist =
          -((states('input_number.crypto_btc_price_trigger_above') | float(0)) -
          (states('sensor.cryptoinfo_btc_price_bitcoin_usd') | float(0))) %}
          {{("+" if high_dist > 0 else "") + "$" + (high_dist | string) }}
        secondary: High Target
        icon: mdi:bitcoin
        entity: sensor.cryptoinfo_bitcoin_all_time_high
        badge_icon: ''
        multiline_secondary: true
        fill_container: true
        tap_action:
          action: none
        icon_color: >-
          {% if (states('sensor.cryptoinfo_btc_price_bitcoin_usd') | float(0)) >
          (states('input_number.crypto_btc_price_trigger_above') | float(0)) %}

          orange

          {% else %}

          white

          {% endif%}
      - type: custom:mushroom-template-card
        primary: >-
          {{ (states('sensor.cryptoinfo_btc_hashrate_eh')|float(0))|round(2) }}
          {{ state_attr('sensor.cryptoinfo_btc_hashrate_eh',
          'unit_of_measurement') }}
        secondary: Hashrate
        icon: mdi:bitcoin
        entity: sensor.cryptoinfo_btc_hashrate_eh
        badge_icon: ''
        multiline_secondary: true
        fill_container: true
        tap_action:
          action: more-info
        icon_color: white
      - type: custom:mushroom-template-card
        primary: >-
          {{ (state_attr('sensor.cryptoinfo_btc_height',
          'difficulty')|float(0)/1e12)|round(2) }} T
        secondary: Difficulty
        icon: mdi:bitcoin
        entity: sensor.cryptoinfo_btc_height
        badge_icon: ''
        multiline_secondary: true
        fill_container: true
        tap_action:
          action: more-info
        icon_color: white
      - type: custom:mushroom-template-card
        primary: >-
          {{ "{0:,.0f}".format(states('sensor.cryptoinfo_btc_height')|int(0)) }}
          Blks
        secondary: Height
        icon: mdi:bitcoin
        entity: sensor.cryptoinfo_btc_height
        badge_icon: ''
        multiline_secondary: true
        fill_container: true
        tap_action:
          action: more-info
        icon_color: white
      - type: custom:mushroom-template-card
        primary: >-
          {{ "₿{0:,.2f} Mil".format(state_attr('sensor.cryptoinfo_btc_height',
          'circulating_supply')|float(0)/1000000) }}
        secondary: Total BTC
        icon: mdi:bitcoin
        entity: sensor.cryptoinfo_btc_height
        badge_icon: ''
        multiline_secondary: true
        fill_container: true
        tap_action:
          action: none
        icon_color: white
    layout:
      width: 190
      max_cols: 2
      margin: 0px 0px 0px 0px
      card_margin: 0px 0px 0px 0px
    view_layout:
      column: 1
layout:
  max_cols: 1
  margin: 4px 0px 4px 0px
  padding: 0
  card_margin: 0px 0px 0px 0px
view_layout:
  column: 1

This is the block extraction pie chart using apexcharts thanks to @RomRider, which at the moment relies on a code change I’ve made to apexcharts-card to hide the empty values

type: custom:layout-card
layout_type: custom:horizontal-layout
cards:
  - type: custom:apexcharts-card
    chart_type: donut
    header:
      show: true
      title: BTC 100 Blocks Extraction
      show_states: true
      colorize_states: true
    apex_config:
      dataLabels:
        style:
          fontSize: 24px
      legend:
        show: false
    series:
      - entity: sensor.cryptoinfo_btc_foundry_usa_hash_control_100_blocks
        name: Foundry
      - entity: sensor.cryptoinfo_btc_antpool_hash_control_100_blocks
        name: AntPool
      - entity: sensor.cryptoinfo_btc_f2pool_hash_control_100_blocks
        name: F2Pool
      - entity: sensor.cryptoinfo_btc_binance_hash_control_100_blocks
        name: Binance
      - entity: sensor.cryptoinfo_btc_viabtc_hash_control_100_blocks
        name: ViaBTC
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_36cwgj_hash_control_100_blocks
        name: BTC.com
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_15mdah_hash_control_100_blocks
        name: MaraPool
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_poolin_hash_control_100_blocks
        name: Poolin
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_luxor_hash_control_100_blocks
        name: LuxorTech
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_emcd_io_hash_control_100_blocks
        name: EMCD.io
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_pegapool_hash_control_100_blocks
        name: Pegapool
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_slushpool_hash_control_100_blocks
        name: Slushpool
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_carbonnegative_hash_control_100_blocks
        name: CarbonNeg
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_ultimus_hash_control_100_blocks
        name: Ultimus
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_sbicrypto_hash_control_100_blocks
        name: SBICrypto
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.cryptoinfo_btc_terrapool_hash_control_100_blocks
        name: Terrapool
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
      - entity: sensor.btc_total_unknown_hash_control_100_blocks
        name: Unknown
        transform: 'return x == 0 ? null : x;'
        show:
          in_header: hide_null
layout:
  max_cols: 1
  margin: 0px 0px 0px 0px
  padding: 0
  card_margin: 0px 0px 0px 0px
view_layout:
  column: 2

PR for apexcharts-card which will hopefully get merged in:

Hey there, thanks for sharing your crypto dashboard! That looks really cool. I’m definitely interested in checking out the templates and card config. Also, thanks for mentioning the GitHub integration. I’m new to the whole cryptocurrency thing and I’m still learning the ropes. I’ve made a few trading mistakes already, so I’m trying to educate myself as much as possible. Anyway, thanks again for sharing and let me know if you have any other tips or tricks for a newbie like me.

No worries :slight_smile: let me know if you need help. I’ve started working on the README docs for the integration in the first post but they still aren’t complete for all the sensors/options yet so check the example config which should have almost the full range I think

Sharing the screenshot and offering templates and config details is a fantastic gesture. It’s a reminder of how collaborative and supportive communities can be. Your revamp of the cryptoinfo integration is noteworthy, especially considering the expanded data-fetching capabilities from various sources.
Speaking of the ever-evolving crypto landscape, have you ever delved into the realm of dogecoin casinos? They’ve been making waves in the digital world.

Your contributions to the community are commendable, and your dashboard project is a testament to your dedication.

That’s awesome. That dashboard looks very impressive!

That looks like a fantastic crypto dashboard! Thanks for sharing it with the community. It’s great to see how you’ve integrated data from various sources, including the cryptoinfo integration on GitHub.

If you’re into cryptocurrencies and want to stay updated on upcoming projects and ICOs, you might find presale.world quite useful. They provide valuable insights into ICOs and pre-sales, helping you discover new opportunities in the crypto space.

Keep up the great work with your dashboard, and your willingness to share templates and configurations is much appreciated by the crypto enthusiasts here!

I just set this up yesterday and it was working fine until I updated HA from 2023.9.x to 2023.10.0 and now the bitcoin price sensor is ‘unavailable’. Is anyone else having this issue or do I need to start digging deeper? So far I haven’t found anything relating to this in the error log.

EDIT: It turns out the sensor got updated with a _2 on the end, giving me two entities, one being the original and unavailable. Not sure why that happened.

Sorry been away with health issues, have you got this sorted now?

I will update my HA instance this week and check out any bugs

Yeah, all good. I have no idea why but for some strange reason the entity got a _2 put on the end so my automations and dashboard stopped working. I edited the entity_id back to normal and it has been fine since.

1 Like

Hi, first of all, thanks for this, using it already.

i can not find the possibility to insert the mempool average tx fee,

sensor cryptoinfo btc mempool average fee per tx

how to integrate that exactly?

I wanted some mempool-related sensors which weren’t in the addon, so I added them separately using the rest platform:

rest:
  - resource: https://mempool.space/api/v1/fees/recommended
    scan_interval: 60
    sensor:
      - name: "mempool_lowpriority"
        value_template: '{{ value_json.hourFee }}'
        device_class: monetary
        state_class: measurement
        unit_of_measurement: "sat/vB"
      - name: "mempool_mediumpriority"
        value_template: '{{ value_json.halfHourFee }}'
        device_class: monetary
        state_class: measurement
        unit_of_measurement: "sat/vB"
      - name: "mempool_highpriority"
        value_template: '{{ value_json.fastestFee }}'
        device_class: monetary
        state_class: measurement
        unit_of_measurement: "sat/vB"
1 Like

Thanks @Olie exactly what i was looking for. Now i have to figure out to send me a message when the sat/vB is lower than 20 so i can consolidate utxo’s

1 Like

Hey @Olie thanks for this, I’ll add it in my next update and let you know

1 Like

really nice one!!

Except mempool-stats I always wanted Clark Moodys dashboard in my home assistant.

I pulled some more info from the rest api.

 # mempool restapi
rest:
    #Recommended Fees
  - resource: https://mempool.space/api/v1/fees/recommended
    scan_interval: 60
    sensor:
      - name: "mempool_minimumpriority"
        value_template: >-
          {% if value_json.minimumFee == '' %}
            0  # or any default numeric value you want to set
          {% else %}
            {{ value_json.minimumFee }}
          {% endif %}
        device_class: monetary
        unit_of_measurement: "sat/vB"
      - name: "mempool_economypriority"
        value_template: >-
          {% if value_json.economyFee == '' %}
            0  # or any default numeric value you want to set
          {% else %}
            {{ value_json.economyFee }}
          {% endif %}
        device_class: monetary
        unit_of_measurement: "sat/vB"   
      - name: "mempool_lowpriority"
        value_template: >-
          {% if value_json.hourFee == '' %}
            0  # or any default numeric value you want to set
          {% else %}
            {{ value_json.hourFee }}
          {% endif %}
        device_class: monetary
        unit_of_measurement: "sat/vB"
      - name: "mempool_mediumpriority"
        value_template: >-
          {% if value_json.halfHourFee == '' %}
            0  # or any default numeric value you want to set
          {% else %}
            {{ value_json.halfHourFee }}
          {% endif %}
        device_class: monetary
        unit_of_measurement: "sat/vB"
      - name: "mempool_highpriority"
        value_template: >-
          {% if value_json.fastestFee == '' %}
            0  # or any default numeric value you want to set
          {% else %}
            {{ value_json.fastestFee }}
          {% endif %}
        device_class: monetary
        unit_of_measurement: "sat/vB"
    # TickTock Next Block
  - resource: https://mempool.space/api/v1/fees/mempool-blocks
    scan_interval: 60
    sensor:
      - name: "mempool_blockSize"
        value_template: >-
          {% if value_json[0].blockSize == '' %}
            0  # or any default numeric value you want to set
          {% else %}
            {{ '{:.2f} MB'.format(value_json[0].blockSize / 1e6) }}
          {% endif %}
      - name: "mempool_transaction"
        value_template: >-
          {% if value_json[0].nTx == '' %}
            0  # or any default numeric value you want to set
          {% else %}
            {{ value_json[0].nTx }}
          {% endif %}
      - name: "mempool_totalFees"
        value_template: >-
          {% if value_json[0].totalFees == '' %}
            0  # or any default numeric value you want to set
          {% else %}
            {{ '₿ {:.2f}'.format(value_json[0].totalFees / 1e8) }}
          {% endif %}
      - name: "mempool_medianFee"
        value_template: >-
          {% if value_json[0].medianFee == '' %}
            0  # or any default numeric value you want to set
          {% else %}
            {{ '{:.0f} sat/vB'.format(value_json[0].medianFee) }}
          {% endif %}
      - name: "mempool_feerange"
        value_template: >-
          {% if value_json[0].feeRange == '' %}
            0  # or any default numeric value you want to set
          {% else %}
            {{ '{:.0f} - {:.2f} sat/vB'.format(value_json[0].feeRange[0], value_json[0].feeRange[-1]) }}
          {% endif %}
        device_class: enum

Screen Shot 2023-12-22 at 16.40.40 PM

1 Like

1 Like