Skip to content

Commit

Permalink
v2.0.1
Browse files Browse the repository at this point in the history
Fix issue 18 - Max days can be less than backload days
Fix issue 15 - Daily API count not resetting
Fix issue 16 - Sensor Type not included in translation
  • Loading branch information
petergridge authored May 15, 2023
1 parent 93c57f9 commit bb922c1
Show file tree
Hide file tree
Showing 7 changed files with 218 additions and 122 deletions.
65 changes: 55 additions & 10 deletions custom_components/openweathermaphistory/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
CONF_STATECLASS,
CONF_SENSORCLASS,
DOMAIN,
CONF_DEVICE_CLASS,
CONST_PROXIMITY,
CONF_UID
)
Expand Down Expand Up @@ -65,6 +64,8 @@ async def async_step_user(
errors[CONF_NAME] = "duplicate_name"
if errors:
break
if user_input[CONF_MAX_DAYS] < user_input[CONF_INTIAL_DAYS]:
user_input[CONF_MAX_DAYS] = user_input[CONF_INTIAL_DAYS]

lat = user_input[CONF_LOCATION][CONF_LATITUDE]
lon = user_input[CONF_LOCATION][CONF_LONGITUDE]
Expand Down Expand Up @@ -158,7 +159,18 @@ async def async_step_add(self, user_input=None):
vol.Required(CONF_NAME,default=default_input.get(CONF_NAME,'')): cv.string,
vol.Required(CONF_FORMULA,default=''): sel.TemplateSelector({}),
vol.Optional(CONF_ATTRIBUTES,default=default_input.get(CONF_ATTRIBUTES,'')): cv.string,
vol.Optional(CONF_SENSORCLASS,default=default_input.get(CONF_SENSORCLASS,'None')): vol.In(CONF_DEVICE_CLASS),
vol.Optional(CONF_SENSORCLASS,default=default_input.get(CONF_SENSORCLASS,'NONE')): sel.SelectSelector(
sel.SelectSelectorConfig(
translation_key="sensor_class",
options=[
{"label":"None", "value":"NONE"},
{"label":"Humidity", "value":"HUMIDITY"},
{"label":"Precipitation", "value":"PRECIPITATION"},
{"label":"Precipitation Intensity", "value":"PRECIPITATION_INTENSITY"},
{"label":"Temperature", "value":"TEMPERATURE"},
{"label":"Pressure", "value":"PRESSURE"}
]
)),
}
)

Expand Down Expand Up @@ -256,9 +268,20 @@ async def async_step_modify(self, user_input=None):

schema = vol.Schema(
{
vol.Required(CONF_FORMULA,default = this_sensor.get(CONF_FORMULA,this_sensor.get(CONF_FORMULA))): sel.TemplateSelector({}),
vol.Optional(CONF_ATTRIBUTES,default = this_sensor.get(CONF_ATTRIBUTES,this_sensor.get(CONF_ATTRIBUTES,None))): cv.string,
vol.Optional(CONF_SENSORCLASS,default = this_sensor.get(CONF_SENSORCLASS,this_sensor.get(CONF_SENSORCLASS,'None'))): vol.In(CONF_DEVICE_CLASS),
vol.Required(CONF_FORMULA,default = this_sensor.get(CONF_FORMULA,None)): sel.TemplateSelector({}),
vol.Optional(CONF_ATTRIBUTES,default = this_sensor.get(CONF_ATTRIBUTES,None)): cv.string,
vol.Optional(CONF_SENSORCLASS,default = this_sensor.get(CONF_SENSORCLASS,'None')): sel.SelectSelector(
sel.SelectSelectorConfig(
translation_key="sensor_class",
options=[
{"label":"None", "value":"NONE"},
{"label":"Humidity", "value":"HUMIDITY"},
{"label":"Precipitation", "value":"PRECIPITATION"},
{"label":"Precipitation Intensity", "value":"PRECIPITATION_INTENSITY"},
{"label":"Temperature", "value":"TEMPERATURE"},
{"label":"Pressure", "value":"PRESSURE"}
]
)),
}
)

Expand Down Expand Up @@ -286,8 +309,6 @@ async def async_step_finalise(self, user_input=None):
title=self._data.get(CONF_NAME), data=self._data
)



#--- Options Flow ----------------------------------------------
@staticmethod
@callback
Expand Down Expand Up @@ -357,6 +378,8 @@ async def async_step_update(self, user_input=None):
errors[CONF_API_KEY] = "invalid_api_key"
except APIRequestError:
errors[CONF_API_KEY] = "cannot_connect"
if user_input[CONF_MAX_DAYS] < user_input[CONF_INTIAL_DAYS]:
user_input[CONF_MAX_DAYS] = user_input[CONF_INTIAL_DAYS]

if not errors:
newdata[CONF_NAME] = self._data.get(CONF_NAME)
Expand Down Expand Up @@ -471,8 +494,19 @@ async def async_step_modify(self, user_input=None):
{
vol.Required(CONF_FORMULA,default = this_sensor.get(CONF_FORMULA,this_sensor.get(CONF_FORMULA))): sel.TemplateSelector({}),
vol.Optional(CONF_ATTRIBUTES,default = this_sensor.get(CONF_ATTRIBUTES,this_sensor.get(CONF_ATTRIBUTES,None))): cv.string,
vol.Optional(CONF_SENSORCLASS,default = this_sensor.get(CONF_SENSORCLASS,this_sensor.get(CONF_SENSORCLASS,'None'))): vol.In(CONF_DEVICE_CLASS),
}
vol.Optional(CONF_SENSORCLASS,default=this_sensor.get(CONF_SENSORCLASS,'None')): sel.SelectSelector(
sel.SelectSelectorConfig(
translation_key="sensor_class",
options=[
{"label":"None", "value":"NONE"},
{"label":"Humidity", "value":"HUMIDITY"},
{"label":"Precipitation", "value":"PRECIPITATION"},
{"label":"Precipitation Intensity", "value":"PRECIPITATION_INTENSITY"},
{"label":"Temperature", "value":"TEMPERATURE"},
{"label":"Pressure", "value":"PRESSURE"}
]
)),
}
)

return self.async_show_form(
Expand Down Expand Up @@ -526,7 +560,18 @@ async def async_step_add(self, user_input=None):
vol.Required(CONF_NAME,default=default_input.get(CONF_NAME,'')): cv.string,
vol.Required(CONF_FORMULA,default=default_input.get(CONF_FORMULA,'')): sel.TemplateSelector({}),
vol.Optional(CONF_ATTRIBUTES,default=default_input.get(CONF_ATTRIBUTES,'')): cv.string,
vol.Optional(CONF_SENSORCLASS,default=default_input.get(CONF_SENSORCLASS,'None')): vol.In(CONF_DEVICE_CLASS),
vol.Optional(CONF_SENSORCLASS,default=default_input.get(CONF_SENSORCLASS,'NONE')): sel.SelectSelector(
sel.SelectSelectorConfig(
translation_key="sensor_class",
options=[
{"label":"None", "value":"NONE"},
{"label":"Humidity", "value":"HUMIDITY"},
{"label":"Precipitation", "value":"PRECIPITATION"},
{"label":"Precipitation Intensity", "value":"PRECIPITATION_INTENSITY"},
{"label":"Temperature", "value":"TEMPERATURE"},
{"label":"Pressure", "value":"PRESSURE"}
]
)),
}
)

Expand Down
3 changes: 1 addition & 2 deletions custom_components/openweathermaphistory/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@
CONF_STATECLASS = "state_class"
CONF_SENSORCLASS = "sensor_class"
CONF_UID = "unique_id"
CONF_DEVICE_CLASS = ["HUMIDITY","PRECIPITATION","PRECIPITATION_INTENSITY","TEMPERATURE","PRESSURE","None"]
CONF_STATE_CLASS = ["MEASUREMENT","TOTAL","TOTAL_INCREASING"]
#CONF_STATE_CLASS = ["MEASUREMENT","TOTAL","TOTAL_INCREASING"]

#prevent accidental duplicate instances
CONST_PROXIMITY = 1000
Expand Down
2 changes: 1 addition & 1 deletion custom_components/openweathermaphistory/manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"domain": "openweathermaphistory",
"name": "Open Weather Map History",
"name": "OpenWeatherMap History",
"codeowners": ["@petergridge","@tsbernar"],
"config_flow": true,
"dependencies": [],
Expand Down
5 changes: 2 additions & 3 deletions custom_components/openweathermaphistory/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@
DOMAIN
)

SCAN_INTERVAL = timedelta(seconds=90)
DEFAULT_NAME = "Home"
SCAN_INTERVAL = timedelta(seconds=600)

_LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -175,7 +174,7 @@ def native_unit_of_measurement(self):
return 'mm/h'
case 'TEMPERATURE':
return '°C'
case 'TEMPERATURE':
case 'PRESSURE':
return 'hPa'

@property
Expand Down
123 changes: 75 additions & 48 deletions custom_components/openweathermaphistory/strings.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,28 @@
{
"title": "OWM History",
"selector" : {
"sensor_class": {
"options" :{
"HUMIDITY":"Humidity",
"PRECIPITATION": "Precipitation",
"PRECIPITATION_INTENSITY": "Precipitation Intensity",
"TEMPERATURE":"Temperature",
"PRESSURE":"Pressure",
"NONE": "None"
}
}
},
"config": {
"abort": {
"already_configured": "Location is already configured"
},
"error": {
"base": "Cannot connect, possible invalid_api_key",
"invalid_api_key": "Cannot connect, possible invalid_api_key",
"formula": "Invalid formula, check the log for details",
"formula_variable": "A variable used is undefined, check the log for details",
"duplicate_name": "This name has already been used",
"close_proximity": "A location is already configured with 1km"
"close_proximity": "A location is already configured with 1km",
"cannot_connect": "Could not connect to OpenWeatherMap"
},
"step": {
"user": {
Expand Down Expand Up @@ -62,55 +75,69 @@
}
},
"options": {
"error": {
"base": "Cannot connect, possible invalid_api_key",
"formula": "Invalid formula, check the log for details",
"formula_variable": "A variable used is undefined, check the log for details",
"duplicate_name": "This name has already been used"
},
"step": {
"user": {
"menu_options": {
"update":"Update API",
"add":"Add Sensor",
"list_modify":"Modify Sensor",
"delete":"Delete Sensor",
"finalise":"Save changes"
}
},
"update": {
"title": "Modify API",
"data": {
"api_key": "API key",
"max_days": "Days to keep data",
"initial_days": "Days to backload",
"max_calls": "Max API calls per day"
}
},
"add": {
"title": "Add Sensor",
"data": {
"name": "Sensor name",
"formula": "Jinja2 Template to expose the sensor",
"attributes": "Attributes to expose on the sensor",
"sensor_class": "The type of sensor"
}
},
"modify": {
"title": "Modify Sensor",
"description": "select a sensor",
"data": {
"formula": "Jinja2 Template to expose the sensor",
"attributes": "Attributes to expose on the sensor",
"sensor_class": "The type of sensor"
"selector" : {
"sensor_class": {
"options" :{
"HUMIDITY":"Humidity",
"PRECIPITATION": "Precipitation",
"PRECIPITATION_INTENSITY": "Precipitation Intensity",
"TEMPERATURE":"Temperature",
"PRESSURE":"Pressure",
"NONE": "None"
}
}
},
"delete": {
"title": "Select Sensor to Delete"
"error": {
"invalid_api_key": "Cannot connect, possible invalid_api_key",
"formula": "Invalid formula, check the log for details",
"formula_variable": "A variable used is undefined, check the log for details",
"duplicate_name": "This name has already been used",
"close_proximity": "A location is already configured with 1km",
"cannot_connect": "Could not connect to OpenWeatherMap"
},
"list_modify": {
"title": "Select Sensor to Modify"
"step": {
"user": {
"menu_options": {
"update":"Update API",
"add":"Add Sensor",
"list_modify":"Modify Sensor",
"delete":"Delete Sensor",
"finalise":"Save changes"
}
},
"update": {
"title": "Modify API",
"data": {
"api_key": "API key",
"max_days": "Days to keep data",
"initial_days": "Days to backload",
"max_calls": "Max API calls per day"
}
},
"add": {
"title": "Add Sensor",
"data": {
"name": "Sensor name",
"formula": "Jinja2 Template to expose the sensor",
"attributes": "Attributes to expose on the sensor",
"sensor_class": "The type of sensor"
}
},
"modify": {
"title": "Modify Sensor",
"description": "select a sensor",
"data": {
"formula": "Jinja2 Template to expose the sensor",
"attributes": "Attributes to expose on the sensor",
"sensor_class": "The type of sensor"
}
},
"delete": {
"title": "Select Sensor to Delete"
},
"list_modify": {
"title": "Select Sensor to Modify"
}
}
}
}
}
Loading

0 comments on commit bb922c1

Please sign in to comment.