61 lines
1.8 KiB
Bash
Executable file
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}"
|