Hoi Arend,

Thanks for your efforts.

Now changed back to the original file and (of cours) the EQ data is back, 
as expected in 'mijl'.
In the log there is no related error, the only recursive error is a Failed 
to publish record .... to WOW.
Undermentioned you may find the earthquake section of belchertown.py with 
the recommended changes. Between empty lines the original lines ar 
commented out with #25-10.1 (#date and 1 is the line-number as suggested in 
your GitHub post), following the line copied from GitHub.

Regards, Keimpe

 
        """
        Earthquake Data
        """
        # Only process if Earthquake data is enabled
        if self.generator.skin_dict['Extras']['earthquake_enabled'] == "1":
            earthquake_file = html_root + "/json/earthquake.json"
            earthquake_stale_timer = 
self.generator.skin_dict['Extras']['earthquake_stale']
            latitude = self.generator.config_dict['Station']['latitude']
            longitude = self.generator.config_dict['Station']['longitude']

#25-10.1    distance_unit = converter.group_unit_dict["group_distance"]
            distance_unit = 
self.generator.converter.group_unit_dict["group_distance"]

            eq_distance_label = 
self.generator.skin_dict['Units']['Labels'].get(distance_unit, "")
            eq_distance_round = 
self.generator.skin_dict['Units']['StringFormats'].get(distance_unit, 
"%.1f")
            earthquake_maxradiuskm = 
self.generator.skin_dict['Extras']['earthquake_maxradiuskm']
            #Sample URL from Belchertown Weather: 
http://earthquake.usgs.gov/fdsnws/event/1/query?limit=1&lat=42.223&lon=-72.374&maxradiuskm=1000&format=geojson&nodata=204&minmag=2
            if self.generator.skin_dict['Extras']['earthquake_server'] == 
"USGS":
                earthquake_url = 
"http://earthquake.usgs.gov/fdsnws/event/1/query?limit=1&lat=%s&lon=%s&maxradiuskm=%s&format=geojson&nodata=204&minmag=2";
 
% ( latitude, longitude, earthquake_maxradiuskm )
            elif self.generator.skin_dict['Extras']['earthquake_server'] == 
"GeoNet":
                earthquake_url = "https://api.geonet.org.nz/quake?MMI=4";
            earthquake_is_stale = False
            
            # Determine if the file exists and get it's modified time
            if os.path.isfile( earthquake_file ):
                if ( int( time.time() ) - int( os.path.getmtime( 
earthquake_file ) ) ) > int( earthquake_stale_timer ):
                    earthquake_is_stale = True
            else:
                # File doesn't exist, download a new copy
                earthquake_is_stale = True
            
            # File is stale, download a new copy
            if earthquake_is_stale:
                # Download new earthquake data
                try:
                    try:
                        # Python 3
                        from urllib.request import Request, urlopen
                    except ImportError:
                        # Python 2
                        from urllib2 import Request, urlopen
                    user_agent = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 
10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 
Safari/534.3'
                    headers = { 'User-Agent' : user_agent }
                    req = Request( earthquake_url, None, headers )
                    response = urlopen( req )
                    page = response.read()
                    response.close()
                    if weewx.debug:
                        logdbg( "Downloading earthquake data using urllib2 
was successful" )
                except Exception as forecast_error:
                    if weewx.debug:
                        logdbg( "Error downloading earthquake data with 
urllib2, reverting to curl and subprocess. Full error: %s" % forecast_error 
)
                    # Nested try - only execute if the urllib2 method fails
                    try:
                        import subprocess
                        command = 'curl -L --silent "%s"' % earthquake_url
                        p = subprocess.Popen(command, shell=True, 
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
                        page = p.communicate()[0]
                        if weewx.debug:
                            logdbg( "Downloading earthquake data with curl 
was successful." )
                    except Exception as error:
                        raise Warning( "Error downloading earthquake data 
using urllib2 and subprocess curl. Your software may need to be updated, or 
the URL is incorrect. You are trying to use URL: %s, and the error is: %s" 
% ( earthquake_url, error ) )

                # Save earthquake data to file. w+ creates the file if it 
doesn't exist, and truncates the file and re-writes it everytime
                try:
                    with open( earthquake_file, 'wb+' ) as file:
                        # Python 2/3
                        try:
                            file.write( page.encode('utf-8') )
                        except:
                            file.write( page )
                        if weewx.debug:
                            logdbg( "Earthquake data saved to %s" % 
earthquake_file )
                except IOError as e:
                    raise Warning( "Error writing earthquake data to %s. 
Reason: %s" % ( earthquake_file, e) )

            # Process the earthquake file        
            with open( earthquake_file, "r" ) as read_file:
                try:
                    eqdata = json.load( read_file )
                except:
                    eqdata = ""
            
            try:
                if self.generator.skin_dict['Extras']['earthquake_server'] 
== "USGS":
                    eqtime = eqdata["features"][0]["properties"]["time"] / 
1000
                    equrl = eqdata["features"][0]["properties"]["url"]
                    eqplace = eqdata["features"][0]["properties"]["place"]

#25-10.3            eqmag = eqdata["features"][0]["properties"]["mag"]
                    eqmag = locale.format("%g", 
float(eqdata["features"][0]["properties"]["mag"]) )

                elif 
self.generator.skin_dict['Extras']['earthquake_server'] == "GeoNet":
                    eqtime = eqdata["features"][0]["properties"]["time"]
                    #convert time to UNIX format
                    eqtime = eqtime.replace("Z","")
                    eqtime = datetime.datetime.fromisoformat(eqtime)
                    eqtime = 
int(eqtime.replace(tzinfo=datetime.timezone.utc).timestamp())
                    equrl = ("https://www.geonet.org.nz/earthquake/"; +
                            eqdata["features"][0]["properties"]["publicID"])
                    eqplace = 
eqdata["features"][0]["properties"]["locality"]

#25-10.4        eqmag = 
round(eqdata["features"][0]["properties"]["magnitude"],1)
                eqmag = locale.format("%g", 
float(round(eqdata["features"][0]["properties"]["magnitude"],1)) )

                eqlat = str( round( 
eqdata["features"][0]["geometry"]["coordinates"][1], 4 ) )
                eqlon = str( round( 
eqdata["features"][0]["geometry"]["coordinates"][0], 4 ) )
                eqdistance_bearing = 
self.get_gps_distance((float(latitude), float(longitude)), 
                                                           (float(eqlat), 
float(eqlon)), 
                                                            distance_unit)

#25-10.2        eqdistance = eq_distance_round % eqdistance_bearing[0]
                eqdistance = locale.format("%g", float(eq_distance_round % 
eqdistance_bearing[0]) )
                
                eqbearing = eqdistance_bearing[1]
                eqbearing_raw = eqdistance_bearing[2]
            except:
                # No earthquake data
                eqtime = label_dict["earthquake_no_data"]
                equrl = ""
                eqplace = ""
                eqmag = ""
                eqlat = ""
                eqlon = ""
                eqdistance = ""
                eqbearing = ""
                eqbearing_raw = ""
            
        else:
            eqtime = ""
            equrl = ""
            eqplace = ""
            eqmag = ""
            eqlat = ""
            eqlon = ""
            eqdistance = ""
            eqbearing = ""
            eqbearing_raw = ""
            eq_distance_label = ""
            

Op dinsdag 27 oktober 2020 om 22:54:22 UTC+1 schreef Arend:

> I am going to make a pull request out of this issue, hopefully Pat will 
> incorporate this fix into the master. That way you will be able to download 
> it from the repository.
> In the mean time you could try to replace the modified file with the 
> original from the repo and see what happens. Did you check your logs for 
> errors?
>
> Mvg, Arend
>
> Op dinsdag 27 oktober 2020 om 21:36:04 UTC+1 schreef [email protected]:
>
>> Hi Arend,
>>
>> Thanks for the suggestions.
>>
>> - The JSON tels me about an eartquake  6 km E of Belle-Plagne in France, 
>> and lat=53.254&lon=5.895&maxradiuskm=2000 as set in my config, seems OK to 
>> me.
>> - The config is same as yours
>> - I checked the changes in belchertown.py, the only difference with your 
>> fixes is the order of the 4 lines, they do not come across these 
>> consecutively from top to bottom as you suggested, but first 1 (line 1060), 
>> then 3 (line 1139), then 4 (line 1152) and finally 2 (line 1161). I 
>> copy/pasted the lines (again) from GitHub in the editor.
>>
>> And still no data...
>>
>> Regards, Keimpe   
>>
>> Op dinsdag 27 oktober 2020 om 20:51:31 UTC+1 schreef Arend:
>>
>>> Goedenavond Keimpe,
>>>
>>> You can check your earthquake file typing this into your browser:
>>>
>>> http://oentsjerk.eu/json/earthquake.json
>>>
>>> It shows the same data as mine which means it is loaded/updated 
>>> correctly, check the epoch timestamp to verify when it was 
>>> downloaded/updated.
>>> Are you sure you copied the changes the right way (without additional 
>>> tabs or spaces)?
>>> Are there no errors in your logs?
>>> My configuration shows this:
>>>
>>>             # Earthquake defaults
>>>             earthquake_enabled = 1
>>>             earthquake_maxradiuskm = 2000
>>>             earthquake_stale = 10740
>>>             earthquake_server = USGS
>>>
>>> Does it match yours?
>>>
>>> Mvg, Arend
>>>
>>> Op dinsdag 27 oktober 2020 om 19:30:46 UTC+1 schreef [email protected]:
>>>
>>>> Hi Arend,
>>>>
>>>> Stil no recent earthquake data avilable (http://oentsjerk.eu). Can I 
>>>> have your URL to check the actuality?
>>>>
>>>> Regards, Keimpe
>>>>  
>>>>
>>>> Op zondag 25 oktober 2020 om 11:46:06 UTC+1 schreef [email protected]:
>>>>
>>>>> Goedemiddag Arend,
>>>>>
>>>>> Thnx, changes made!
>>>>> At this time it says 'no recent data avilabale' so I have to wait for 
>>>>> een eartqauke data-update.
>>>>> Keep you informed.
>>>>>
>>>>> Regards, Keimpe
>>>>>
>>>>> Op zaterdag 24 oktober 2020 om 21:46:02 UTC+2 schreef Arend:
>>>>>
>>>>>> Hi Keimpe,
>>>>>>
>>>>>> I had the same problem and created an issue about this in the repo. 
>>>>>> You can use the fix, let me know if it works for you.
>>>>>>
>>>>>> https://github.com/poblabs/weewx-belchertown/issues/422
>>>>>>
>>>>>> Mvg, Arend
>>>>>>
>>>>>> Op zaterdag 24 oktober 2020 om 21:04:04 UTC+2 schreef 
>>>>>> [email protected]:
>>>>>>
>>>>>>> Thnx Vince, Strange, also on mobile, WLAN and 4G network, the same 
>>>>>>> problem so it can't be a localization issue related to the network.
>>>>>>>
>>>>>>>
>>>>>>> Op zaterdag 24 oktober 2020 om 20:49:37 UTC+2 schreef vince:
>>>>>>>
>>>>>>>> On Saturday, October 24, 2020 at 10:47:03 AM UTC-7, 
>>>>>>>> [email protected] wrote:
>>>>>>>>>
>>>>>>>>> I'm facing just a minor issue: in the skin.conf is defined 
>>>>>>>>> 'earthquake_maxradiuskm = 2000'. Therefore I'm expecting a distance 
>>>>>>>>> in 
>>>>>>>>> km's, but the actual distance as well as the units are still in miles 
>>>>>>>>> (mijl 
>>>>>>>>> in Dutch). How to resolve this? (http://oentsjerk.eu/)
>>>>>>>>>
>>>>>>>>>
>>>>>>>> I see km when I look at your page. 
>>>>>>>>
>>>>>>>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/db87d2a4-a8ec-4c5d-95af-686c2678b82an%40googlegroups.com.

Reply via email to