-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscripts.yaml
More file actions
93 lines (90 loc) · 3.84 KB
/
Copy pathscripts.yaml
File metadata and controls
93 lines (90 loc) · 3.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
generate_claude_snapshot:
alias: "Generate Claude Snapshot"
description: "Creates a live snapshot of HA state for Claude Desktop"
icon: mdi:robot
sequence:
- service: shell_command.generate_claude_snapshot
- service: persistent_notification.create
data:
title: "Claude Snapshot Generated"
message: >
Snapshot saved to /local/claude_snapshot.md
Access at: https://home.sandholdt.se:8123/local/claude_snapshot.md
notification_id: claude_snapshot
# =============================================================================
# KÄLLAREN
# =============================================================================
kallaren_drick_upp:
alias: "Källaren - Drick upp flaska"
description: "Konsumerar valda flaskan i Grocy och kommer ihåg den för betygsättning"
icon: mdi:glass-wine
mode: single
sequence:
- variables:
# Labeln i väljaren byggs av grocy_kallaren.py och är unik per produkt.
flaska: >
{{ (state_attr('sensor.kallaren_grocy', 'items') or [])
| selectattr('label', 'eq', states('input_select.kallaren_flaska'))
| list | first | default(none, true) }}
# Stoppar på sentinelvärdena ("— välj flaska —"/"— källaren är tom —")
# och om beståndet ändrats sedan väljaren fylldes — men säger nu ifrån
# i stället för att bara vara tyst.
- choose:
- conditions:
- condition: template
value_template: "{{ flaska is mapping }}"
sequence:
- action: rest_command.grocy_consume
data:
product_id: "{{ flaska.id }}"
# Kapat mot faktiskt bestånd — annars svarar Grocy 400 på ett
# för högt antal, rest_command loggar bara en varning och
# sekvensen fortsätter som om flaskan konsumerats.
amount: "{{ [states('input_number.kallaren_antal') | int(1), flaska.amount | int(1)] | min }}"
- action: input_text.set_value
target:
entity_id: input_text.kallaren_senast_druckit
data:
value: "{{ flaska.id }}|{{ flaska.name }}"
# Hämta beståndet direkt i stället för att vänta på nästa 5-minutersavläsning.
- action: homeassistant.update_entity
target:
entity_id: sensor.kallaren_grocy
default:
- action: persistent_notification.create
data:
title: "Källaren"
message: "Ingen flaska vald — inget gjordes."
notification_id: kallaren_drick_upp_fel
kallaren_satt_betyg:
alias: "Källaren - Sätt betyg på senast druckna"
description: "Skriver betyg och smaknotering till Grocys userfields"
icon: mdi:star-outline
mode: single
sequence:
- variables:
product_id: "{{ states('input_text.kallaren_senast_druckit').split('|')[0] | int(0) }}"
- choose:
- conditions:
- condition: template
value_template: "{{ product_id > 0 }}"
sequence:
- action: rest_command.grocy_set_userfields
data:
product_id: "{{ product_id }}"
rating: "{{ states('input_number.kallaren_betyg') | float(3) }}"
notes: "{{ states('input_text.kallaren_smaknotering') }}"
- action: input_text.set_value
target:
entity_id: input_text.kallaren_smaknotering
data:
value: ""
- action: homeassistant.update_entity
target:
entity_id: sensor.kallaren_grocy
default:
- action: persistent_notification.create
data:
title: "Källaren"
message: "Ingen flaska att betygsätta — drick upp en flaska först."
notification_id: kallaren_satt_betyg_fel