-
-
Save kennedyshead/180aaffc17a76b195451f364e38e4f07 to your computer and use it in GitHub Desktop.
| import logging | |
| from homeassistant.helpers.entity import Entity | |
| class nooa: | |
| URL = "https://services.swpc.noaa.gov/products/noaa-scales.json" | |
| @staticmethod | |
| async def fetch(session, url): | |
| import json | |
| async with session.get(url) as response: | |
| return json.loads(await response.text()) | |
| @staticmethod | |
| async def get_data(): | |
| import aiohttp | |
| async with aiohttp.ClientSession() as session: | |
| html = await nooa.fetch(session, nooa.URL) | |
| return html | |
| _LOGGER = logging.getLogger(__name__) | |
| STATIC_DATA = { | |
| "S": ("Solar Radiation Storms",), | |
| "R": ("Radio Blackouts",), | |
| "G": ("Geomagnetic Storms",), | |
| } | |
| async def async_setup_platform( | |
| hass, config, async_add_entities, discovery_info=None): | |
| """Set up the sensors.""" | |
| data = await nooa.get_data() | |
| entities = [ | |
| NooaSensor(data, "R"), | |
| NooaSensor(data, "S"), | |
| NooaSensor(data, "G"), | |
| ] | |
| async_add_entities(entities) | |
| class NooaSensor(Entity): | |
| """Representation of sensor.""" | |
| def __init__(self, data, sensor_type): | |
| """Init the sensor.""" | |
| self._unit = sensor_type | |
| self._attributes = {} | |
| self._state = data["0"][sensor_type]["Scale"] | |
| self.filter_attributes(data) | |
| self._name = STATIC_DATA[sensor_type][0] | |
| @property | |
| def unit_of_measurement(self): | |
| """Return the unit of measurement.""" | |
| return self._unit | |
| @property | |
| def state(self): | |
| """Property for the state attributes.""" | |
| return self._state | |
| @property | |
| def name(self): | |
| """Name property for sensor.""" | |
| return self._name | |
| @property | |
| def state_attributes(self): | |
| """Property for the state attributes.""" | |
| return self._attributes | |
| def filter_attributes(self, data): | |
| """Filter out data for this Sensor.""" | |
| self._attributes = { | |
| "Yesterday": data["-1"][self._unit]["Scale"], | |
| "Tomorrow": data["1"][self._unit]["Scale"], | |
| "Day after tomorrow": data["2"][self._unit]["Scale"], | |
| "In three days": data["3"][self._unit]["Scale"] | |
| } | |
| async def async_update(self): | |
| """Fetch new state data for the sensor.""" | |
| data = await nooa.get_data() | |
| self._state = data["0"][self._unit]["Scale"] | |
| self.filter_attributes(data) |
kennedyshead
commented
Apr 7, 2022
via email
I'm have some trouble getting this working and was wondering if there are any further instructions?
(I used https://techcode7821332.wordpress.com/2018/12/19/custom-nooa-space-weather-component-for-homeassistant/)
I'm using the latest version of HASS IO on a Pi.
I created a folder under /custom_components called sensors (/custom_components/sensors) and copied the py file to that folder (/config/custom_components/sensors/nooa_space_weather.py)
I'm assuming I add the
sensors:
– platform: nooa_space_weather
to my configuration.yaml?
I did this, which results in:
Setup failed for sensors: Integration not found.
22:42:49 – (ERROR) setup.py
Any thoughts on how to proceed?
Hi! it should look like this: /custom_components/nooa_space_weather/sensors.py There are also some more stuff needed nowadays to make the component work, I could upload a zip to put in custom_components if you want?
Unzip this in custom_components: https://cloud.mknutas.se/s/geN5iztFrMn8D92 and then add config to yaml and reload hass.
Thank you! That was very helpful. It seems to be working.
I just need to wait for some solar activity as everything is clear at the moment.
Appreciate your help and making this available!
Hi!
May I ask to upload that zip again? The old url dosn't working and it make me happy to use this tool.
Thank you