PowerShell/Scripts/ping-weather.ps1

47 lines
2.0 KiB
PowerShell
Raw Normal View History

2022-06-28 15:49:36 +02:00
<#
.SYNOPSIS
Ping the currrent weather conditions
.DESCRIPTION
This PowerShell script continuously shows the current weather conditions (similar to htop, 10 min update interval by default).
.PARAMETER Location
Specifies the location to use (determined automatically per default)
.EXAMPLE
2022-12-22 14:31:58 +01:00
PS> ./ping-weather
Current weather conditions at Paris (Ile-de-France), updating every 10 min...
🕗10:24 AM UTC 🌡23°C 0.0mm 💨9km/h from S 0% 💧41% UV6 1020hPa Sunny
2022-06-28 15:49:36 +02:00
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz | License: CC0
#>
2022-12-22 14:31:58 +01:00
param([string]$Location = "", [int]$UpdateInterval = 600)
2022-06-28 15:49:36 +02:00
try {
2022-12-22 14:31:58 +01:00
$Weather = (Invoke-WebRequest -URI http://wttr.in/${Location}?format=j1 -userAgent "curl" -useBasicParsing).Content | ConvertFrom-Json
$Area = $Weather.nearest_area.areaName.value
$Region = $Weather.nearest_area.region.value
"Current weather conditions at $Area ($Region), updating every $($UpdateInterval / 60) min..."
2022-06-28 15:49:36 +02:00
do {
2022-12-22 14:31:58 +01:00
2022-06-28 15:49:36 +02:00
$Description = $Weather.current_condition.WeatherDesc.value
$TempC = $Weather.current_condition.temp_C
$PrecipMM = $Weather.current_condition.precipMM
$WindSpeed = $Weather.current_condition.windspeedKmph
$WindDir = $Weather.current_condition.winddir16Point
$Clouds = $Weather.current_condition.cloudcover
$Humidity = $Weather.current_condition.humidity
2022-06-28 16:09:41 +02:00
$UV = $Weather.current_condition.uvIndex
$Visib = $Weather.current_condition.visibility
2022-06-28 15:49:36 +02:00
$Pressure = $Weather.current_condition.pressure
$Time = $Weather.current_condition.observation_time
2022-12-22 14:31:58 +01:00
"🕗$Time UTC 🌡$($TempC)°C ☂️$($PrecipMM)mm 💨$($WindSpeed)km/h from $WindDir ☁️$($Clouds)% 💧$($Humidity)% ☀UV$UV 👀$($Visib)km $($Pressure)hPa $Description"
Start-Sleep -s $UpdateInterval
$Weather = (Invoke-WebRequest -URI http://wttr.in/${Location}?format=j1 -userAgent "curl" -useBasicParsing).Content | ConvertFrom-Json
2022-06-28 15:49:36 +02:00
} while ($true)
exit 0 # success
} catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
exit 1
}