I have added a lot of changes from various ai sessions
This commit is contained in:
+63
@@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
# discover-home-assistant.sh — Query Home Assistant REST API for entity metadata
|
||||
# Usage: ./discover-home-assistant.sh
|
||||
# Requires: curl, jq
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
HA_URL="https://hass.moritzgraf.de"
|
||||
HA_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI2NDMyZTI1MDIzZjU0ZmFiYTU3OTc0ODYyMzg3M2ExZSIsImlhdCI6MTc4MjczMTY4NiwiZXhwIjoyMDk4MDkxNjg2fQ.u8kFHoYL2kdhVenfe3BiWcNkN_en3yn91MRGSVJvbmw"
|
||||
|
||||
echo "=== Home Assistant Entity Discovery ==="
|
||||
echo "URL: $HA_URL"
|
||||
echo ""
|
||||
|
||||
# Get all entities
|
||||
echo "→ Fetching all entities..."
|
||||
ENTITIES=$(curl -s -H "Authorization: Bearer $HA_TOKEN" "$HA_URL/api/states")
|
||||
|
||||
if [ -z "$ENTITIES" ] || echo "$ENTITIES" | jq -e '. == null' >/dev/null 2>&1; then
|
||||
echo "ERROR: Failed to fetch entities. Check token and connectivity."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== Entity Summary ==="
|
||||
echo "$ENTITIES" | jq -r '
|
||||
[.[] | {
|
||||
entity_id,
|
||||
state,
|
||||
friendly_name: (.attributes.friendly_name // ""),
|
||||
unit: (.attributes.unit_of_measurement // ""),
|
||||
device_class: (.attributes.device_class // ""),
|
||||
domain: (.entity_id | split(".")[0])
|
||||
}]
|
||||
| sort_by(.domain, .entity_id)
|
||||
| .[]
|
||||
| "\(.entity_id) | state=\(.state) | name=\(.friendly_name) | unit=\(.unit) | class=\(.device_class) | domain=\(.domain)"
|
||||
'
|
||||
|
||||
echo ""
|
||||
echo "=== Domains (entity types) ==="
|
||||
echo "$ENTITIES" | jq -r '[.[].entity_id | split(".")[0]] | unique | .[]'
|
||||
|
||||
echo ""
|
||||
echo "=== Entities with unit_of_measurement (likely sensor data in InfluxDB) ==="
|
||||
echo "$ENTITIES" | jq -r '
|
||||
[.[] | select(.attributes.unit_of_measurement != null) | {
|
||||
entity_id,
|
||||
unit: .attributes.unit_of_measurement,
|
||||
friendly_name: (.attributes.friendly_name // ""),
|
||||
device_class: (.attributes.device_class // "")
|
||||
}]
|
||||
| sort_by(.unit, .entity_id)
|
||||
| .[]
|
||||
| "\(.entity_id) | \(.unit) | \(.device_class) | \(.friendly_name)"
|
||||
'
|
||||
|
||||
echo ""
|
||||
echo "=== Device classes ==="
|
||||
echo "$ENTITIES" | jq -r '[.[].attributes.device_class | select(. != null)] | unique | .[]'
|
||||
|
||||
echo ""
|
||||
echo "=== Discovery complete ==="
|
||||
Reference in New Issue
Block a user