I forgot to mention that the AFM format is correct and the extension will handle it (in this particular case for MDZ005 and for MDZ006) if I force the scanner/parser to ignore the 'Including' line. I'm pretty sure that 'cheat' will fail though on MDZ013 and MDZ014 in that same dataset. Perhaps need to check the line splits to 7 tokens and the first token is a numeric value or a numeric value less than 1300 before passing it to date2ts() and not worry about first token is 'Including'?
Mike/AJ9X On Thursday, October 8, 2020 at 1:49:03 PM UTC-4 Michael Bruski wrote: > > I attached a text file containing one of the latest results from URL > https://forecast.weather.gov/product.php?site=NWS&product=AFM&format=txt&issuedby=LWX > . > > These are the options I have configured in my weewx.conf file: > > # Options for extension 'forecast' > [Forecast] > data_binding = forecast_binding > [[XTide]] > location = "INSERT_LOCATION_HERE (e.g., Boston)" > [[Zambretti]] > hemisphere = NORTH > [[NWS]] > lid = "MDZ005" > foid = "LWX" > url = > http://forecast.weather.gov/product.php?site=NWS&product=AFM&format=txt&issuedby=LWX > [[WU]] > api_key = INSERT_WU_API_KEY_HERE > [[OWM]] > api_key = INSERT_OWM_API_KEY_HERE > [[UKMO]] > api_key = INSERT_UKMO_API_KEY_HERE > location = INSERT_UK_LOCATION_HERE > [[Aeris]] > client_id = INSERT_AERIS_CLIENT_ID_HERE > client_secret = INSERT_AERIS_CLIENT_SECRET_HERE > [[WWO]] > api_key = INSERT_WWO_API_KEY_HERE > [[DS]] > api_key = INSERT_DS_API_KEY_HERE > > I appreciate any effort you put into resolving this. It will be nice to > see the extension handle these instead of silently failing. > > Also, a thank you to the other group member who supplied a link to the > AFM_format.pdf document. I mentioned to Chris at NWS Balt/Wash this > morning that it is difficult to find any specifications for the AFM/PFM on > the NWS web site. Perhaps that will get addressed in the future as well. > > Mike/AJ9X > > On Thursday, October 8, 2020 at 11:24:50 AM UTC-4 jo...@johnkline.com > wrote: > >> This is all very helpful. >> >> Would you please send your NWS configuration for the problem AFM report >> as well as sample output from the URL you specified that the extension >> chokes on? >> >> Have you determined if the output is valid as specified by the AFM format >> doc? >> >> I’ll add proper support for AFM in the coming week or so. >> >> Cheers, >> John >> >> On Oct 8, 2020, at 6:08 AM, Michael Bruski <michael...@gmail.com> wrote: >> >> >> >> I queried the NWS Baltimore/Washington D.D. forecast office about the >> differences between AFM and PFM and received this reply: >> >> Hello, >> >> Thanks for writing. The AFMs and PFMs are set to a national >> standard. So they should be the same across all the forecast offices. >> >> Our Directive that talks about these products, as well as links to >> format decoding, are in this NWS Directive >> <https://www.nws.noaa.gov/directives/sym/pd01005003curr.pdf> between >> pages 10-12. >> >> Hope that helps. >> >> Chris Strong >> NWS Baltimore/Washington >> >> The reference Chris sites contains links to AFM/PFM format PDFs and the >> element specifications PDF for both reports. The only difference between >> the two that I could detect was in lines 2 and 3 of the report (Description >> and Location in the PFM; zone and included cities in the AFM). >> >> On Wednesday, October 7, 2020 at 8:28:01 PM UTC-4 etji...@gmail.com >> wrote: >> >>> Here is the spec on AFMs from the NWS: >>> https://www.weather.gov/media/notification/dir/AFM_Format.pdf >>> >>> >>> On Wed, Oct 7, 2020 at 5:57 PM John Kline <jo...@johnkline.com> wrote: >>> >>>> Absent a spec on area forecast matrices, and absent any problem reports >>>> on point forecast matrices, there isn’t much to go on here. >>>> >>>> On Oct 7, 2020, at 2:35 PM, Michael Bruski <michael...@gmail.com> >>>> wrote: >>>> >>>> >>>> Hi John, >>>> >>>> I've looked at several forecast matrices from my local and surrounding >>>> NWS forecast offices and haven't seen anything format wise that would lead >>>> me to think they would cause a problem for the forecast extension. I have >>>> selected several different AFMs and see they parse fine. But I ran into >>>> this issue with my local AFM and spent several hours trying to track down >>>> the cause. The issue is not with the matrix itself but with text >>>> preceeding the DTG. To test further, I put a cheap hack into the parse >>>> loop so that date2ts() isn't called if the first word in 'line' is >>>> 'Including'. This actually works (in this specific instance) and a valid >>>> forecast is produced. What other lines of text might NWS put in the >>>> header >>>> preceeding the DTG, I just don't know. The URLs mentioned in >>>> forecast.py >>>> are dead links so I couldn't find any specifics on decoding the reports. >>>> >>>> I'm not terribly comfortable programming in python so I'm not sure the >>>> best approach to work this issue but sending bad data to time.mktime() via >>>> date2ts() is probably bad unless there is a way to trap the error. Not >>>> meant to criticize... just my thoughts on how to make it better. >>>> >>>> Mike/AJ9X >>>> >>>> On Wednesday, October 7, 2020 at 4:24:56 PM UTC-4 jo...@johnkline.com >>>> wrote: >>>> >>>>> Perhaps Area Forecast Matrix responses can’t be treated just like >>>>> Point Forecast Matrix responses. AFMs are only supported to the extent >>>>> that they provide an identically formatted response as the PFM response. >>>>> >>>>> What do you know about AFMs and the differences between them and PFMs? >>>>> >>>>> On Oct 7, 2020, at 12:18 PM, Michael Bruski <michael...@gmail.com> >>>>> wrote: >>>>> >>>>> >>>>> >>>>> >>>>> Hi all, >>>>> >>>>> First of all, I am running WeeWX 4.1.1 with forecast extension >>>>> 3.4.0b10. >>>>> >>>>> I had recently managed to use a Area Forecast Matrix for one location >>>>> and that is working fine. Recently I tried to setup a second location >>>>> to >>>>> use the AFM (different LID and FOID) and it fails to get a forecast even >>>>> though I see it in the web browser using the URL that forecast.py uses. >>>>> After careful application of some trace print statements, I see the >>>>> forecast is succesfully download from the FOID and that the forecast for >>>>> the specified LID is also located and extracted but nothing gets parsed. >>>>> Below is a copy of my trace output from the log: >>>>> >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> forecast downloaded successfully from ' >>>>> http://forecast.weather.gov/product.php?site=NWS&product=AFM&format=txt&issuedby=LWX >>>>> ' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'MDZ005-072100-' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Carroll-' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Including the cities of Eldersburg and Westminster' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> '137 PM EDT Wed Oct 7 2020' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> '' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Date Wed 10/07/20 Thu 10/08/20 Fri >>>>> 10/09/20' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'EDT 3hrly 05 08 11 14 17 20 23 02 05 08 11 14 17 20 23 02 05 08 11 >>>>> 14 >>>>> 17 20' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'UTC 3hrly 09 12 15 18 21 00 03 06 09 12 15 18 21 00 03 06 09 12 15 >>>>> 18 >>>>> 21 00' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> '' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Max/Min 75 77 80 47 48 52 65 67 70 42 44 48 >>>>> 68 >>>>> 70 73' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Temp 76 76 68 61 56 51 50 60 65 64 55 50 47 45 45 61 >>>>> 68 >>>>> 67 59' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Dewpt 52 52 53 50 48 46 45 45 43 42 43 42 41 40 41 45 >>>>> 45 >>>>> 46 47' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'RH 43 43 59 67 74 83 83 58 45 45 64 74 79 82 86 56 >>>>> 43 >>>>> 47 64' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Wind dir W W NW NW NW NW NW NW NW NW NW NW W W W SW >>>>> SW >>>>> SW S' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Wind spd 19 17 10 6 5 5 6 11 12 10 5 3 1 2 1 4 >>>>> 6 >>>>> 8 4' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Wind gust 33 31' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Clouds CL CL SC FW FW CL CL FW CL CL CL CL FW FW FW FW >>>>> FW >>>>> FW SC' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'PoP 12hr 20 20 0 >>>>> 0 0' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'QPF 12hr 0 0 0 >>>>> 0 0' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Rain shwrs S S' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> '' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> '' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Date Sat 10/10/20 Sun 10/11/20 Mon 10/12/20 Tue 10/13/20' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'EDT 6hrly 02 08 14 20 02 08 14 20 02 08 14 20 02 08 14 20' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'UTC 6hrly 06 12 18 00 06 12 18 00 06 12 18 00 06 12 18 00' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> '' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Min/Max 54 75 56 69 53 66 54 68' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Temp 55 56 73 66 61 58 66 60 56 55 63 59 56 56 65 61' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Dewpt 50 54 59 60 59 56 55 54 54 53 56 56 56 56 58 57' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'PWind dir S SW SW SE E E E SE' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Wind char LT GN LT LT GN GN LT LT' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Avg clouds SC B1 B1 B1 B1 B1 B1 B1 B2 B2 B2 B2 B2 B2 B2 B1' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'PoP 12hr 5 20 30 30 40 40 30 30' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> 'Rain shwrs S C C C C C C C C C C C C' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> '' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> '$$' >>>>> Oct 7 14:36:45 server weewx[3014] INFO user.forecast: NWSThread: NWS: >>>>> successfully extracted forecast for 'MDZ005' >>>>> >>>>> Examining NWSParseForecast, nothing is parsed until the Date/Time >>>>> Group (a line with 7 tokens) is located. In the above AFM another line >>>>> preceeds the DTG which also happens to have 7 tokens. I think this line >>>>> is >>>>> being passed to date2ts() which in turn fails and causes the parser to >>>>> stop >>>>> looking for further input. I didn't see a way to raise the issue on >>>>> GitHub >>>>> so I thought I would bring this up here. >>>>> >>>>> Mike/AJ9X >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "weewx-user" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to weewx-user+...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/weewx-user/05fa293c-659c-4619-9b06-9ed97a30efa4o%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/weewx-user/05fa293c-659c-4619-9b06-9ed97a30efa4o%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "weewx-user" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to weewx-user+...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/weewx-user/3936dc80-0d29-414f-a5b9-5f286bd659b1n%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/weewx-user/3936dc80-0d29-414f-a5b9-5f286bd659b1n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "weewx-user" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to weewx-user+...@googlegroups.com. >>>> >>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/weewx-user/85F7E477-9A8C-4AF3-8713-4A121E5AE3A3%40johnkline.com >>>> >>>> <https://groups.google.com/d/msgid/weewx-user/85F7E477-9A8C-4AF3-8713-4A121E5AE3A3%40johnkline.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "weewx-user" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to weewx-user+...@googlegroups.com. >> >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/weewx-user/05c0fc4d-63d1-4e42-acc5-590605ae924en%40googlegroups.com >> >> <https://groups.google.com/d/msgid/weewx-user/05c0fc4d-63d1-4e42-acc5-590605ae924en%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> -- You received this message because you are subscribed to the Google Groups "weewx-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/8e330107-4462-4d0c-ab87-ce12f9760f81n%40googlegroups.com.