Below is script I made.
You can change the script for different Weather Locations by going here:
http://w1.weather.gov/xml/current_obs
Then select a state and look at the "Call Signs" for the different locations.
Example:
California
Auburn Muni Airport (KAUN)
Avalon, Catalina Airport (KAVX)
Bakersfield/Meadows (KBFL)
"Call Signs" are KAUN, KAVX and KBFL.
Then change the line in the script where KAVX is located to your new choice.
Then in your Yealink DSS Key programing area, make one of the DSS buttons "XML Browser" and put in the Server info where you are going to have the script.
To make it an Idle Screen, I am not 100% sure how to do it.
But you can use an "Action URL" like "On Hook" and put in the Server info where you are going to have the script.
That way when you hang up on a call, the Action URL "On Hook" sends the request for the script automatically.
GetWX.php
<?php
// GetWX.php
//Get XML from web page
$url = "http://w1.weather.gov/xml/current_obs/KAVX.xml" ;
$xml = simplexml_load_file($url) ;
//Parse out fields
$temp = $xml->temp_f ;
$weather = $xml->weather ;
$humidity= $xml->relative_humidity ;
$wind_dir= $xml->wind_dir ;
$wind_mph= $xml->wind_mph ;
$location= $xml->location ;
//Push to Phone
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>".
"<YealinkIPPhoneFormattedTextScreen Beep=\"yes\" Timeout=\"10\" LockIn=\"no\">".
"<Scroll>".
"<Line Size=\"normal\" Align=\"center\"> $location </Line>".
"<Line Size=\"normal\"> Weather: $weather </Line>".
"<Line Size=\"normal\"> Temperature: $temp </Line>".
"<Line Size=\"normal\"> Humidity: $humidity </Line>".
"<Line Size=\"normal\"> Wind Dir.: $wind_dir / $wind_mph MPH</Line>".
"</Scroll>".
"</YealinkIPPhoneFormattedTextScreen>";
?>