Skip to content

Releases: dadaloop82/ha-evershelf

v1.2.3 — API_TOKEN authentication

Choose a tag to compare

@dadaloop82 dadaloop82 released this 04 Jun 05:49

Summary

Fixes the integration after EverShelf security hardening (401 Unauthorized).

Changes

  • Supports EverShelf API_TOKEN (and legacy SETTINGS_TOKEN) via X-API-Token, Authorization: Bearer, and api_token query parameter
  • Config flow requires the token when the server reports api_token_required
  • Updated strings/translations (IT, EN, DE, FR, ES)

Upgrade notes

  1. Update via HACS or copy custom_components/evershelf/
  2. Reconfigure the integration with API_TOKEN from your EverShelf .env file
  3. Discovery (ha_info) still works without a token; full sensors require authentication

v1.2.2 — Fix quick_add unavailable state

Choose a tag to compare

@dadaloop82 dadaloop82 released this 29 May 11:07

Fixed

  • Quick Add text entity shows 'unavailable' — The entity had native_min=1 but its default value is an empty string (""). HA's TextEntity.state raises ValueError when len("") < min(1), causing the entity to appear as unavailable. Fixed by setting native_min=0 to allow the empty-string cleared state after each submission.

v1.2.1 — Coordinator safety-net

Choose a tag to compare

@dadaloop82 dadaloop82 released this 29 May 06:23

Fixed

  • Coordinator safety-nettotal_items is now guaranteed to be populated in coordinator data even if a future PHP API change restructures the response. Falls back to the response state value.

Notes (audit findings)

All other reported issues were investigated and confirmed to be non-issues:

  • expiring_soon key name is consistent between PHP and sensor.py ✅
  • shopping_total is already sent as a float by PHP; currency is handled dynamically via price_currency
  • Product lists (expiring_list, expired_list, low_stock_list) are passed through correctly ✅

v1.2.0 — expired_list and low_stock_list sensor attributes

Choose a tag to compare

@dadaloop82 dadaloop82 released this 29 May 06:07

What's new in v1.2.0

Added

  • expired_list attributesensor.evershelf_expired_items now exposes a full list of expired products with all details (name, quantity, unit, location, brand, category, days_remaining, opened_at, vacuum_sealed). Previously only the count was available.
  • low_stock_list attributesensor.evershelf_low_stock_items now exposes a full list of low-stock products (quantity ≤ 1) with all details.

Requirements

  • EverShelf ≥ v1.7.27 (new expired_list / low_stock_list sensor attributes were added in that release)

Example — Telegram alert with expired product details

automation:
  - alias: "Notify expired products"
    trigger:
      - platform: state
        entity_id: sensor.evershelf_expired_items
    condition:
      - condition: template
        value_template: "{{ trigger.to_state.state | int > 0 }}"
    action:
      - service: notify.telegram
        data:
          message: >
            Expired products:
            {% for item in state_attr('sensor.evershelf_expired_items', 'expired_list') %}
            - {{ item.name }} ({{ item.quantity }} {{ item.unit }}) — {{ item.location }}
            {% endfor %}

v1.1.0 — Calendar, Text Input, New Sensors & Services

Choose a tag to compare

@dadaloop82 dadaloop82 released this 23 May 20:23

What's new in v1.1.0

New Platforms

  • Calendar entityEverShelf Expiry Calendar: shows each product's expiry date as a calendar event. Compatible with the HA calendar card and any calendar automation.
  • Text entityQuick Add to Shopping: type a product name directly in HA to instantly add it to the EverShelf shopping list.

New Sensors (9)

Sensor Description
Items in Pantry Count of items in the dispensa location
Items in Fridge Count of items in frigo
Items in Freezer Count of items in freezer
Low Stock Items Items with quantity ≤ reorder threshold
Out of Stock Items Items with quantity = 0
AI Calls This Month Gemini API calls used this billing period
Last Backup Timestamp of the latest EverShelf backup
Days to Next Expiry Days remaining until the soonest expiry

New Binary Sensors (2)

Binary Sensor Description
Backup Overdue ON if no backup was made in the last 7 days
Bring! Connected ON if the Bring! shopping app is linked

New Buttons (4+1)

Button Action
Refresh Prices Recompute shopping total from price cache (no AI)
Suggest Recipe Ask EverShelf AI for a recipe using expiring items; result shown as HA notification
Sync Smart Shopping Trigger smart shopping AI analysis
Clear Expired Remove expired zero-stock inventory rows

New HA Services (3)

  • evershelf.suggest_recipe — optional location field (e.g. frigo); fires a persistent notification with the AI recipe
  • evershelf.refresh_prices — cache-only total recompute
  • evershelf.clear_expired — removes stale zero-stock expired rows

Translations

All new entities and services are translated in: 🇬🇧 English · 🇮🇹 Italian · 🇩🇪 German · 🇫🇷 French · 🇪🇸 Spanish

v1.0.3 — Expiring Today, automation examples

Choose a tag to compare

@dadaloop82 dadaloop82 released this 23 May 20:08

What's New

New Sensor: Expiring Today

  • sensor.evershelf_expiring_today — items expiring today or tomorrow (max urgency)
  • binary_sensor.evershelf_has_expiring_today — ON when something expires today/tomorrow

New Attributes

  • expiring_soon now carries next_expiry_name and next_expiry_date — use in automation messages
  • Each entry in expiring_list now has expires_today: true/false

Automation Examples

  • New file automations_examples.yaml with 4 ready-to-use automations:
    • Expiring Today urgent alert
    • Daily morning briefing
    • Shopping list reminder (> 10 items)
    • Shopping budget alert (> €50)
  • Also includes a Lovelace dashboard card example

Why does Shopping Total show Unknown?

The total is calculated by the app when you tap the price button in the Shopping List. Once done, HA updates on the next poll (5 min).

v1.0.2 — New sensors, official icon, hub name fix

Choose a tag to compare

@dadaloop82 dadaloop82 released this 23 May 20:00

What's New

New Sensors

  • Expiring in 3 Days — fixed 3-day expiry count (independent of the configurable threshold)
  • Opened Items — count of inventory items already opened
  • Shopping Total — estimated shopping list value in EUR (only available when Price Tracking is enabled on the server)

New Binary Sensors

  • Shopping List Active — ON when there is at least one item in the shopping list
  • Price Tracking — ON when the EverShelf price estimation feature is enabled

Fixes

  • Hub name now shows "EverShelf" instead of the server hostname (e.g. "webserver")
  • Official EverShelf icon in integration page and HACS

Backend (EverShelf ≥ 1.7.25)

The ha_sensor endpoint now returns: opened_items, shopping_total, price_tracking_enabled, price_currency, expiring_3d.

v1.0.1 — Improved setup UX

Choose a tag to compare

@dadaloop82 dadaloop82 released this 23 May 14:19

What's new in v1.0.1

Changed

  • Setup UX: HA now auto-probes http://evershelf.local when adding the integration, instead of showing a blank URL form
  • If auto-discovery fails, the UI shows a "Try again" / "Enter URL manually" menu
  • Discovery failure message explains that avahi-daemon (mDNS) must be running on the EverShelf server

Fixed

  • Removed info.md that was hiding the full README in HACS
  • HACS validation now fully passing (8/8 checks)

Full changelog: CHANGELOG.md

v1.0.0 — Initial Release

Choose a tag to compare

@dadaloop82 dadaloop82 released this 23 May 13:35

EverShelf for Home Assistant — v1.0.0

What's included

  • Auto-discovery via Zeroconf/mDNS (_evershelf._tcp.local.)
  • 4 Sensors: Expiring Soon, Expired Items, Total Items, Shopping Count
  • 2 Binary Sensors: has_expired_items, has_expiring_items (device_class: problem)
  • Todo entity: bidirectional shopping list sync
  • Refresh button
  • 3 Services: add_to_shopping, mark_used, refresh
  • 5 languages: English, Italian, German, French, Spanish
  • Configurable expiry threshold (1–30 days) and polling interval (60–3600 s)

Requirements

  • Home Assistant 2024.1.0+
  • EverShelf 1.7.0+ (self-hosted)

Installation

Install via HACS → Custom repositories → https://github.com/dadaloop82/ha-evershelf