dotfiles/de/home/.config/eww/scripts/home/hass_weather
2025-05-06 14:08:20 -07:00

61 lines
1.8 KiB
Bash
Executable file

#!/bin/bash
hass_weather_cache="${HOME}/.cache/hass_weather.json"
update_cache_json(){
weather_summary="$( hass-cli -a states -i sensor.weather_summary | jq -r '.attributes' )"
condition="$( jq -r '.condition' <<< ""${weather_summary}"" )"
condition_code="$( jq -r '.condition_code' <<< ""${weather_summary}"" )"
current_temp="$( jq -r '.current_temp' <<< ""${weather_summary}"" )"
feels_temp="$( jq -r '.feels_temp' <<< ""${weather_summary}"" )"
min_temp="$( jq -r '.min_temp' <<< ""${weather_summary}"" )"
max_temp="$( jq -r '.max_temp' <<< ""${weather_summary}"" )"
humidity="$( jq -r '.humidity' <<< ""${weather_summary}"" )"
updated="$(date '+%Y-%m-%d, %H:%M')"
case "${condition_code}" in
#https://openweathermap.org/weather-conditions#Weather-Condition-Codes-2
(2[0-9][0-9])
condition_icon=''
;;
(3[0-9][0-9])
condition_icon=''
;;
(5[0-9][0-9])
condition_icon=''
;;
(6[0-9][0-9])
condition_icon=''
;;
(7[0-9][0-9])
condition_icon='▒'
;;
800)
condition_icon=''
;;
(80[0-9])
condition_icon=''
;;
esac
jq -n \
--arg condition "${condition}" \
--arg current_temp "${current_temp}" \
--arg feels_temp "${feels_temp}" \
--arg min_temp "${min_temp}" \
--arg max_temp "${max_temp}" \
--arg humidity "${humidity}" \
--arg icon "${condition_icon}" \
--arg updated "${updated}" \
'{condition: $condition,current_temp: $current_temp,feels_temp: $feels_temp,min_temp: $min_temp,max_temp: $max_temp,humidity: $humidity,icon: $icon,updated: $updated}' | tee "${hass_weather_cache}" >/dev/null
}
if [[ ! $(find "${hass_weather_cache}" -cmin -60 -print 2>/dev/null) ]]; then
# if ! ping -w 15 -c 5 hass.pogmom.me;then
# exit 1
# fi
update_cache_json
fi
cat "${hass_weather_cache}"