Using to integrate Personal Weather Stations


@Gene I set up wufyi and a cron job. The URL returns “Data Logged and posted in METAR mirror.” but looking at my station’s page on PWS it looks like the data is sometimes 15+ minutes delayed, sometimes posts 2 minutes after the previous post, and sometimes just does not show up. I am not sure how to debug since the response says everything is fine. Is there anything I can do to try to get to the bottom of it? Thanks!

For example, it is now 12:50am local time April 3 but my PWS shows the last data point as 12:36am (and the cron job timing vs data points are not in sync)

my PWS shows only the following data points:

Latest Conditions Updated 12:36:40 AM PDT Monday, Apr 3, 2017

Hour	Temp	Dew Point	Humidity	Winds	Wind Gusts	Pressure	Precip	Precip Rate	Daily Precip Total
12:36 AM	51.3°F	48.0°F	88%	0.6 mph SSW	1.2 mph	29.93 in	0.00 in	0.00 in	0.00 in
12:35 AM	51.6°F	48.0°F	87%	0.6 mph SW	1.2 mph	29.93 in	0.00 in	0.00 in	0.00 in
12:17 AM	51.6°F	48.0°F	87%	0.6 mph SW	1.2 mph	29.93 in	0.00 in	0.00 in	0.00 in
12:15 AM	51.8°F	48.0°F	87%	0.6 mph SSW	1.2 mph	29.93 in	0.00 in	0.00 in	0.00 in

cron-job shows several successful posts (none at 12:17… I am in california and it looks like it is reporting in GMT)
Today, 09:39:59 Today, 09:40:00 -0,60 s 2,99 s Successful 200 OK
Today, 09:35:01 Today, 09:35:00 1,12 s 0,94 s Successful 200 OK
Today, 09:30:06 Today, 09:30:00 6,49 s 7,77 s Successful 200 OK
Today, 09:25:02 Today, 09:25:00 2,36 s 8,35 s Successful 200 OK
Today, 09:20:01 Today, 09:20:00 1,54 s 8,56 s Successful 200 OK
Today, 09:15:00 Today, 09:15:00 0,84 s 5,04 s Successful 200 OK
Today, 09:10:00 Today, 09:10:00 0,54 s 3,21 s Successful 200 OK
Today, 09:05:01 Today, 09:05:00 1,31 s 3,31 s Successful 200 OK
Today, 09:00:05 Today, 09:00:00 5,80 s 5,61 s Successful 200 OK


While it is natural to think that a datapoint will be added each time a cron-job is successful, the script was actually designed to avoid “cloned” updates.

For this explanation a cloned update is an update using the same data, but with a different timestamp.

A successful cron-job means that the latest data was successfully transferred from weather underground to pwsweather. Data coming from weather underground includes a timestamp representing when the data was actually received from the actual weather station, this timestamp is used within update to pwsweather, so it is possible to transfer the same data point several times and this is why all of the script executions made between actual updates from the weather station will show up as one datapoint.

In your example it seems that cron-jobs executed prior to 09:15 (GMT + 2, is a german service) where getting the last data from the previous day. 09:15 got your 12:15 update, 09:20 to 09:30 got 12:17 update, 09:35 got 12:35 update and 09:39 got your 12:36 update.

Triggering the cron-job too often is not a problem as long as you stay within 500 free api daily hit limit (enough for one update every 3 minutes or so). What you want to avoid is insufficient updates, whereas too many weather station updates occur between successive cron-jobs.

If you wish me to take a closer look at your situation, feel free to email me your weather underground and pwsweather station IDs to



@Gene makes total sense, thanks for taking the time to explain it!


Thank you very much for doing this!

It is working great!

Will this weather station hook up to my rachio?
Just Installed Rachio, Considering My Own Weather Station

Gene: Great job. I set up PWS and a CRON job to use my own stable WU pws. Much easier than I expected. Readings - especially rain - are usually much different at our home than at the local airport location we’d been using for the last year (I’m in Florida where everything is weird.) Now my system is truly integrated with weather conditions as they exist at my home. Thanks for all the work you put into this. The Rachio system has been fabulous.


@Gene, you are the best!

Thanks so much! =)


This is setup yet my pws hasnt shown up yet…


Please make sure you have “Show Personal Weather Stations” turned ON when choosing the weather station within rachio.

Edit: Upon further review, it seems that your PWSweather station was incorrectly setup to be located in China. Please make sure you update your station coordinates with a local address to see it nearby within rachio.


I noticed the precipitation on WU doesn’t exactly match that recorded to PWSWeather. Like yesterday PWSWeather says I had .24" of rain while WU says .06" (which matches what my Acurite app says).

What could cause this - should I lower down the frequency pulling from WU (I have it set to every 10 minutes I believe).


It is almost as though it is pulling the cumulative from WU but then PWSWeather is adding together each of the cumulatives.


Hi cbl1, can you please email your wu id and pws id to Please also mention the date(s) for which you noticed that it is happening.

There is currently a known issue with seemingly false data coming from WU, I’ll let you know if that is what is happening if you email me your IDs.



I’ve set it all up. Thanks for all the work you’ve put into it.

I think rachio needs to update with psw weather. I changed the lat and long, and it’s showing up in the right location now. Will give it a chance to catch up!

Thanks again.


With my Vantage Vue, I use a simple Raspberry Pi solution which is not that hard to set up. Only cost is the Pi since I am using Weewx which is free open source software. See There are instructions for using different weather stations on the weewx site. I took it a step further and installed a web sever on the Pi (instruction on weewx site) so I can get daily, weekly, monthly, etc. reports on my local network.

I get Wunderground rapid fire support and CWOP support and the Pi is very stable. It is an inexpensive and very functional solution.


I was actually considering a weewx rPi solution as well to use with my AcuRite, but I didn’t have the required USB port (the kit I bought didn’t come with a display version supporting it). I’m glad you were able to make use of such a flexible little gadget.


Super easy to setup, Gene. Thank your service to the Rachio community by putting in your time to develop this!

One hint to some others who may also try…parsing of the information you put into the http POST doesn’t like spaces. I had inadvertently added a space between one of the parameters and it took me a few minutes to see it. Just be sure you don’t have spaces and it should work just fine, if you’ve provided the right information. My data showed up on PWS site within 10 minutes. Now I wait for Rachio to pick up my PWS for use, now that there’s data.


Thank you Scott, especially for taking the time and sharing your troubleshooting experience. I have plans to improve error detection and reporting in the future and your feedback is very helpful. :vulcan:


First of all Gene, thank you so much for all you’ve done. I really appreciate the efforts.

I’m not sure what I’ve done wrong, but…

When I use your with the URL params it works.

If I use the PHP on my site I get:
“ERROR: Not a vailid Station ID”

I’ve copied the params from the wufyi url to make sure I was using the same info.

Any help is appreciated.


Error seems to indicate that your $pwsID variable was wrong, one difference between wufyi and hard coded variables is that wufyi uses a “sanitized” string, meaning that special characters where encoded to comply with URL standards, you may need to change your $pwsID declaration into something like this:

$pwsID = filter_var(“FexampleER”, FILTER_SANITIZE_STRING); // change contents, keep quotes

I’ve updated source code (link) just now, to include the fixes I’ve done since initial release. If you are interested in running it on your own, I recommend you download the updated code version.



That did the trick.

Thanks again, Gene!!


@laminack let me know if your server supports SQL, the fix I’m working on now would require it.

I’m also considering adding support for local .log file instead of the database (good if your server does not support many users), but that will take sometime to implement.