"Import" all unit variables from custom program
[infoex-autowx.git] / infoex-autowx.py
index 3598b1701f61dbc7259011a70062f13b3da64b32..86f0475fb9cb8e298605d595edb2414abbbfd23d 100755 (executable)
@@ -43,7 +43,7 @@ import zeep
 import zeep.cache
 import zeep.transports
 
 import zeep.cache
 import zeep.transports
 
-__version__ = '3.4.0'
+__version__ = '3.4.3'
 
 LOG = logging.getLogger(__name__)
 LOG.setLevel(logging.NOTSET)
 
 LOG = logging.getLogger(__name__)
 LOG.setLevel(logging.NOTSET)
@@ -101,7 +101,7 @@ def setup_config(config):
         # NOTE: custom providers don't require units to be specified
         #       because they can do whatever they please with the units
         #       within their own program
         # NOTE: custom providers don't require units to be specified
         #       because they can do whatever they please with the units
         #       within their own program
-        if station['provider'] != "custom":
+        if station['provider'] != "python":
             station['units'] = config['station']['units']
 
             if station['units'] not in ['metric', 'english', 'american']:
             station['units'] = config['station']['units']
 
             if station['units'] not in ['metric', 'english', 'american']:
@@ -117,7 +117,9 @@ def setup_config(config):
 
         # massage provider config items
         if station['provider'] == 'nrcs':
 
         # massage provider config items
         if station['provider'] == 'nrcs':
-            station['source'] = 'https://www.wcc.nrcs.usda.gov/awdbWebService/services?WSDL'
+            #station['source'] = 'https://www.wcc.nrcs.usda.gov/awdbWebService/services?WSDL'
+            station['source'] = 'https://wcc.sc.egov.usda.gov/awdbWebService/services?WSDL'
+
             station['station_id'] = config['station']['station_id']
             station['desired_data'] = config['station']['desired_data'].split(',')
 
             station['station_id'] = config['station']['station_id']
             station['desired_data'] = config['station']['desired_data'].split(',')
 
@@ -342,7 +344,7 @@ def main():
         if station['provider'] == 'nrcs' and station['units'] == 'metric':
             infoex['wx_data'][element_cd] = convert_nrcs_units_to_metric(element_cd, infoex['wx_data'][element_cd])
 
         if station['provider'] == 'nrcs' and station['units'] == 'metric':
             infoex['wx_data'][element_cd] = convert_nrcs_units_to_metric(element_cd, infoex['wx_data'][element_cd])
 
-        if station['provider'] != 'custom' and station['units'] == 'american':
+        if station['provider'] != 'python' and station['units'] == 'american':
             infoex['wx_data'][element_cd] = convert_units_to_american(element_cd, infoex['wx_data'][element_cd])
 
         # Massage precision of certain values to fit InfoEx's
             infoex['wx_data'][element_cd] = convert_units_to_american(element_cd, infoex['wx_data'][element_cd])
 
         # Massage precision of certain values to fit InfoEx's
@@ -478,15 +480,24 @@ def setup_infoex_counterparts_mapping(provider):
     elif provider == 'python':
         # we expect Python programs to use the InfoEx data type names
         iemap['precipitationGauge'] = 'precipitationGauge'
     elif provider == 'python':
         # we expect Python programs to use the InfoEx data type names
         iemap['precipitationGauge'] = 'precipitationGauge'
+        iemap['precipitationGaugeUnit'] = 'precipitationGaugeUnit'
         iemap['tempPres'] = 'tempPres'
         iemap['tempPres'] = 'tempPres'
+        iemap['tempPresUnit'] = 'tempPresUnit'
         iemap['tempMaxHour'] = 'tempMaxHour'
         iemap['tempMaxHour'] = 'tempMaxHour'
+        iemap['tempMaxHourUnit'] = 'tempMaxHourUnit'
         iemap['tempMinHour'] = 'tempMinHour'
         iemap['tempMinHour'] = 'tempMinHour'
+        iemap['tempMinHourUnit'] = 'tempMinHourUnit'
         iemap['hS'] = 'hS'
         iemap['hS'] = 'hS'
+        iemap['hsUnit'] = 'hsUnit'
         iemap['baro'] = 'baro'
         iemap['rH'] = 'rH'
         iemap['windSpeedNum'] = 'windSpeedNum'
         iemap['baro'] = 'baro'
         iemap['rH'] = 'rH'
         iemap['windSpeedNum'] = 'windSpeedNum'
+        iemap['windSpeedUnit'] = 'windSpeedUnit'
         iemap['windDirectionNum'] = 'windDirectionNum'
         iemap['windGustSpeedNum'] = 'windGustSpeedNum'
         iemap['windDirectionNum'] = 'windDirectionNum'
         iemap['windGustSpeedNum'] = 'windGustSpeedNum'
+        iemap['dewPointUnit'] = 'dewPointUnit'
+        iemap['hn24AutoUnit'] = 'hn24AutoUnit'
+        iemap['hstAutoUnit'] = 'hstAutoUnit'
 
     return iemap
 
 
     return iemap
 
@@ -811,9 +822,9 @@ def convert_units_to_american(element_cd, value):
     # if element_cd in ['TMAX', 'TMIN', 'TOBS', 'air_temp', 'air_temp_high_24_hour', 'air_temp_low_24_hour']:
     #     value = c_to_f(value)
 
     # if element_cd in ['TMAX', 'TMIN', 'TOBS', 'air_temp', 'air_temp_high_24_hour', 'air_temp_low_24_hour']:
     #     value = c_to_f(value)
 
-    # # snow values
-    # if element_cd in ['SNWD', 'snow_depth']:
-    #     value = cm_to_in(mm_to_cm(value))
+    # mesowest provides HS in mm, not cm; we want cm
+    if element_cd == 'snow_depth':
+        value = mm_to_cm(value)
 
     # baro values also arrive in metric, so convert to imperial
     if element_cd in ['PRES', 'pressure']:
 
     # baro values also arrive in metric, so convert to imperial
     if element_cd in ['PRES', 'pressure']: