Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solaredge new sensors #21047

Merged
merged 23 commits into from
Mar 27, 2019
Merged
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
9b297df
Remove unused hass parameter for SolarEdgeData
GidoHakvoort Dec 22, 2018
7fc82ad
Add factory to create different types of sensors
GidoHakvoort Dec 22, 2018
0230db6
Add SolarEdgeDetailsDataService to retrieve details data
GidoHakvoort Dec 22, 2018
cfd5e35
Combine multiple details sensor into one sensor with attributes
GidoHakvoort Dec 22, 2018
05bea84
Resolve conflict with solaredge component update
GidoHakvoort Feb 13, 2019
2b4134d
Fix pylint and flake8 errors
GidoHakvoort Dec 22, 2018
241d529
Add SolarEdgeInventoryDataService to retrieve inventory information
GidoHakvoort Dec 22, 2018
2e00885
Fix pylint and flake8 errors
GidoHakvoort Dec 24, 2018
950ae82
Add additional monitored variables for solaredge
GidoHakvoort Jan 18, 2019
8f11855
Add new sensors to solaredge component
GidoHakvoort Feb 13, 2019
334252b
Add SolarEdgePowerFlowDataService
GidoHakvoort Feb 16, 2019
1629285
Set entity_id for each sensor based on platform and sensor type
GidoHakvoort Feb 17, 2019
4556455
Fix flake8 and pylint errors
GidoHakvoort Feb 17, 2019
534db43
Add check for connections in return data
GidoHakvoort Feb 18, 2019
80761ae
Fix pylint and flake8 errors
GidoHakvoort Feb 18, 2019
a019dee
Renamed state_attributes to device_state_attributes
GidoHakvoort Mar 25, 2019
7f5c82c
Remove explicit definition of entity_id
GidoHakvoort Mar 25, 2019
f532bbb
Fix pylint and flake8 errors
GidoHakvoort Mar 25, 2019
71b3119
Add check for None before adding sensor
GidoHakvoort Mar 25, 2019
4595d9d
Update SolarEdgeSensorFactory with initial dict which maps sensor_key to
GidoHakvoort Mar 26, 2019
0c91692
Update attribute values to snakecase
GidoHakvoort Mar 26, 2019
50da041
Update requirements_all.txt to include stringcase for solaredge
GidoHakvoort Mar 27, 2019
f292aed
Update some initial values for data and unit_of_measurement
GidoHakvoort Mar 27, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 28 additions & 23 deletions homeassistant/components/solaredge/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,32 +113,31 @@ def __init__(self, platform_name, site_id, api):
"""Initialize the factory."""
self.platform_name = platform_name

self.overview_data_service = SolarEdgeOverviewDataService(api, site_id)
self.details_data_service = SolarEdgeDetailsDataService(api, site_id)
self.inventory_data_service = SolarEdgeInventoryDataService(api,
site_id)
self.power_flow_data_service = SolarEdgePowerFlowDataService(api,
site_id)
details = SolarEdgeDetailsDataService(api, site_id)
overview = SolarEdgeOverviewDataService(api, site_id)
inventory = SolarEdgeInventoryDataService(api, site_id)
flow = SolarEdgePowerFlowDataService(api, site_id)

self.services = {
'site_details': (SolarEdgeDetailsSensor, details)
}

for key in ['lifetime_energy', 'energy_this_year', 'energy_this_month',
'energy_today', 'current_power']:
self.services[key] = (SolarEdgeOverviewSensor, overview)

for key in ['meters', 'sensors', 'gateways', 'batteries', 'inverters']:
self.services[key] = (SolarEdgeInventorySensor, inventory)

for key in ['power_consumption', 'solar_power', 'grid_power',
'storage_power']:
self.services[key] = (SolarEdgePowerFlowSensor, flow)

def create_sensor(self, sensor_key):
"""Create and return a sensor based on the sensor_key."""
sensor = None

if sensor_key == 'site_details':
sensor = SolarEdgeDetailsSensor(self.platform_name, sensor_key,
self.details_data_service)
elif sensor_key in ['meters', 'sensors', 'gateways',
'batteries', 'inverters']:
sensor = SolarEdgeInventorySensor(self.platform_name, sensor_key,
self.inventory_data_service)
elif sensor_key in ['power_consumption', 'solar_power', 'grid_power',
'storage_power']:
sensor = SolarEdgePowerFlowSensor(self.platform_name, sensor_key,
self.power_flow_data_service)
else:
sensor = SolarEdgeOverviewSensor(self.platform_name, sensor_key,
self.overview_data_service)
return sensor
service = self.services[sensor_key]
GidoHakvoort marked this conversation as resolved.
Show resolved Hide resolved

return service[0](self.platform_name, sensor_key, service[1])


class SolarEdgeSensor(Entity):
Expand Down Expand Up @@ -306,6 +305,12 @@ def update(self):
class SolarEdgeDetailsDataService(SolarEdgeDataService):
"""Get and update the latest details data."""

def __init__(self, api, site_id):
"""Initialize the details data service."""
super().__init__(api, site_id)

self.data = None

@Throttle(DETAILS_UPDATE_DELAY)
def update(self):
"""Update the data from the SolarEdge Monitoring API."""
Expand Down