Releases: dadaloop82/ha-evershelf
Releases · dadaloop82/ha-evershelf
Release list
v1.2.3 — API_TOKEN authentication
Summary
Fixes the integration after EverShelf security hardening (401 Unauthorized).
Changes
- Supports EverShelf
API_TOKEN(and legacySETTINGS_TOKEN) viaX-API-Token,Authorization: Bearer, andapi_tokenquery parameter - Config flow requires the token when the server reports
api_token_required - Updated strings/translations (IT, EN, DE, FR, ES)
Upgrade notes
- Update via HACS or copy
custom_components/evershelf/ - Reconfigure the integration with
API_TOKENfrom your EverShelf.envfile - Discovery (
ha_info) still works without a token; full sensors require authentication
v1.2.2 — Fix quick_add unavailable state
Fixed
- Quick Add text entity shows 'unavailable' — The entity had
native_min=1but its default value is an empty string (""). HA'sTextEntity.stateraisesValueErrorwhenlen("") < min(1), causing the entity to appear as unavailable. Fixed by settingnative_min=0to allow the empty-string cleared state after each submission.
v1.2.1 — Coordinator safety-net
Fixed
- Coordinator safety-net —
total_itemsis now guaranteed to be populated in coordinator data even if a future PHP API change restructures the response. Falls back to the responsestatevalue.
Notes (audit findings)
All other reported issues were investigated and confirmed to be non-issues:
expiring_soonkey name is consistent between PHP and sensor.py ✅shopping_totalis already sent as a float by PHP; currency is handled dynamically viaprice_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
What's new in v1.2.0
Added
expired_listattribute —sensor.evershelf_expired_itemsnow 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_listattribute —sensor.evershelf_low_stock_itemsnow exposes a full list of low-stock products (quantity ≤ 1) with all details.
Requirements
- EverShelf ≥ v1.7.27 (new
expired_list/low_stock_listsensor 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
What's new in v1.1.0
New Platforms
- Calendar entity — EverShelf Expiry Calendar: shows each product's expiry date as a calendar event. Compatible with the HA calendar card and any calendar automation.
- Text entity — Quick 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
locationfield (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
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_soonnow carriesnext_expiry_nameandnext_expiry_date— use in automation messages- Each entry in
expiring_listnow hasexpires_today: true/false
Automation Examples
- New file
automations_examples.yamlwith 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
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
What's new in v1.0.1
Changed
- Setup UX: HA now auto-probes
http://evershelf.localwhen 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.mdthat was hiding the full README in HACS - HACS validation now fully passing (8/8 checks)
Full changelog: CHANGELOG.md
v1.0.0 — Initial Release
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