1818CONF_ALLDOMINANT = 'all_dominant'
1919CONF_ATTRIBUTION = "Data provided by antsz.hu"
2020CONF_NAME = 'name'
21+ CONF_POLLENS = 'pollens'
2122
2223DEFAULT_ALLDOMINANT = False
2324DEFAULT_ICON = 'mdi:blur'
2829PLATFORM_SCHEMA = PLATFORM_SCHEMA .extend ({
2930 vol .Optional (CONF_NAME , default = DEFAULT_NAME ): cv .string ,
3031 vol .Optional (CONF_ALLDOMINANT , default = DEFAULT_ALLDOMINANT ): cv .boolean ,
32+ vol .Optional (CONF_POLLENS , default = []): vol .All (cv .ensure_list , [cv .string ]),
3133})
3234
3335async def async_setup_platform (hass , config , async_add_devices , discovery_info = None ):
3436 name = config .get (CONF_NAME )
3537 alldominant = config .get (CONF_ALLDOMINANT )
38+ pollens = config .get (CONF_POLLENS )
3639
3740 async_add_devices (
38- [PollenHUSensor (hass , name , alldominant )],update_before_add = True )
41+ [PollenHUSensor (hass , name , alldominant , pollens )],update_before_add = True )
3942
4043async def async_get_pdata (self ):
41- pjson = {}
44+ pjson = {"pollens" : []}
45+ pjson1 = {}
4246
4347 url = 'https://efop180.antsz.hu/polleninformaciok/'
4448 async with self ._session .get (url ) as response :
@@ -59,18 +63,29 @@ async def async_get_pdata(self):
5963 .replace (" \" " ,"\" ,\" " ) \
6064 .replace ("\" ,\" name" ,"\" },{\" name" ) \
6165 .replace (">" , "{\" pollens\" :[{" ) + "\" }]}"
62- pjson = json .loads (p3 )
66+ pjson1 = json .loads (p3 )
67+ if len (self ._pollens ) != 0 :
68+ i = 0
69+ for item in pjson1 ['pollens' ]:
70+ if item .get ('name' ) not in self ._pollens :
71+ continue
72+ else :
73+ pjson ['pollens' ].append ({"name" : item .get ('name' ),"value" : item .get ('value' )})
74+ i += 1 ;
75+ else :
76+ pjson = pjson1
6377 return pjson
6478
6579class PollenHUSensor (Entity ):
6680
67- def __init__ (self , hass , name , alldominant ):
81+ def __init__ (self , hass , name , alldominant , pollens ):
6882 """Initialize the sensor."""
6983 self ._hass = hass
7084 self ._name = name
7185 self ._alldominant = alldominant
7286 self ._state = None
7387 self ._pdata = []
88+ self ._pollens = pollens
7489 self ._icon = DEFAULT_ICON
7590 self ._session = async_get_clientsession (hass )
7691
@@ -105,9 +120,8 @@ def extra_state_attributes(self):
105120 async def async_update (self ):
106121 dominant_value = 0
107122
108- pdata = await async_get_pdata (self )
123+ self . _pdata = await async_get_pdata (self )
109124
110- self ._pdata = pdata
111125 if 'pollens' in self ._pdata :
112126 for item in self ._pdata ['pollens' ]:
113127 val = item .get ('value' )
0 commit comments