Congrats onthe bub! Just joined Amber and was excited to see your project for sensor data.
I too am getting failures, look forward to your update!
2020-07-21 13:56:10 ERROR (MainThread) [homeassistant.components.sensor] Error while setting up amberelectric platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 178, in _async_setup_platform
await asyncio.wait_for(asyncio.shield(task), SLOW_SETUP_MAX_WAIT)
File "/usr/local/lib/python3.7/asyncio/tasks.py", line 442, in wait_for
return fut.result()
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/amberelectric/sensor.py", line 45, in setup_platform
AmberPricingSensor(amber_data, postcode, CONST_SOLARFIT, "Amber solar feed in tariff", "mdi:solar-power"),
File "/config/custom_components/amberelectric/sensor.py", line 62, in __init__
self.update()
File "/usr/src/homeassistant/homeassistant/util/__init__.py", line 239, in wrapper
result = method(*args, **kwargs)
File "/config/custom_components/amberelectric/sensor.py", line 157, in update
self.amber_data = AmberData.from_dict(json.loads(response.text))
File "/config/custom_components/amberelectric/ambermodel.py", line 433, in from_dict
data = Data.from_dict(obj.get("data"))
File "/config/custom_components/amberelectric/ambermodel.py", line 396, in from_dict
VariablePricesAndRenewable.from_dict, obj.get("variablePricesAndRenewables")
File "/config/custom_components/amberelectric/ambermodel.py", line 51, in from_list
return [f(y) for y in x]
File "/config/custom_components/amberelectric/ambermodel.py", line 51, in <listcomp>
return [f(y) for y in x]
File "/config/custom_components/amberelectric/ambermodel.py", line 315, in from_dict
created_at = from_datetime(obj.get("createdAt"))
File "/config/custom_components/amberelectric/ambermodel.py", line 41, in from_datetime
return dateutil.parser.parse(x)
File "/usr/local/lib/python3.7/site-packages/dateutil/parser/_parser.py", line 1374, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/usr/local/lib/python3.7/site-packages/dateutil/parser/_parser.py", line 646, in parse
res, skipped_tokens = self._parse(timestr, **kwargs)
File "/usr/local/lib/python3.7/site-packages/dateutil/parser/_parser.py", line 725, in _parse
l = _timelex.split(timestr) # Splits the timestr into tokens
File "/usr/local/lib/python3.7/site-packages/dateutil/parser/_parser.py", line 207, in split
return list(cls(s))
File "/usr/local/lib/python3.7/site-packages/dateutil/parser/_parser.py", line 76, in __init__
'{itype}'.format(itype=instream.__class__.__name__))
TypeError: Parser must be a string or character stream, not NoneType