Closed philipabbey closed 8 months ago
Example API call that I have working locally on a light bulb. Actually 3 LEDs @JosephAbbey put on a RP2040 to provide brightness levels 0-3 via a Home Assistant template that does some translation.
#!/bin/bash
#
# brightness%
# ./service_param.bash 19
#
API_KEY="<Your API Key>"
URL="<Your API URL>"
level=${1:-50}
echo "Brightness level: ${level}"
json='{
"entity_id": "light.<your light>",
"brightness_pct": '${level}'
}'
curl -s -X POST \
-H "Authorization: Bearer ${API_KEY}" \
-H "Content-Type: application/json" \
-d "${json}" \
${URL}/services/light/turn_on
echo ""
As can be seen from the JSON, it is actually just a case of extracting the proposed tap_action
's data
field to augment the JSON in the API request as siblings of entity_id
. So this change is relatively simple.
Awaiting the code churn from #26 as the changes will collide.
Within the data
parts of the JSON we are unable to provide schema checking. This means the application can crash if the parameters are wrong. For instance I mistakenly added "confirm": true
inside data
and on the 4th tap we application crashed.
{
"$schema": "https://raw.githubusercontent.com/house-of-abbey/GarminHomeAssistant/main/config.schema.json",
"title": "Home",
"items": [
{
"entity": "script.configurable_item",
"name": "Set Volume",
"type": "tap",
"tap_action": {
"service": "script.send_message",
"data": {
"message": "This is a message",
"volume": 0.7
}
}
}
]
}
Request from thebogeyman (Marc Schermann) at https://community.home-assistant.io/t/home-assistant-app-for-garmin/637348/107:
This would suggest a JSON format along the lines of:
So the changes required are to store the parameters in the local menu item to be included in the
makeWebRequest()
call. This might be best done as keeping thedata
part of the JSON object as aLang.Dictionary
Monkey C object in order to include just one additional item into the HTTP call.