* upgrade iottycloud lib to 0.3.0
* Add outlet
* test outlet turn on and turn off
* test add outlet
* Refactor code to use only one SwitchEntity with an EntityDescription to distinguish Outlet and Lightswitch
* Refactor switch entities to reduce duplicated code
* Refactor tests to reduce duplicated code
* Refactor code to improve abstraction layer using specific types instead of generics
* Remove print and redundant field
* Fix inconsistent spelling of "PIN" and "ID"
Several actions contain an inconsistent spelling of "PIN" and "ID" with lowercase characters.
Especially to avoid (automated) mistranslations as (connection) pin etc. this needs to be corrected.
* Fix lowercase "blink" as well
Additional commit to fix the wrong spelling of "blink" along the way.
Part of the strings in the strings.json use an inconsistent spelling of "PIN" as "pin"
This commit fixes this to ensure correct and consistent translations, too.
* Ensure screenlogic retries if the protocol adapter is still booting
If the protocol adapter is still booting, it will disconnect and never
retry
```
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 640, in __async_setup_with_context
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/screenlogic/__init__.py", line 65, in async_setup_entry
await gateway.async_connect(**connect_info)
File "/usr/local/lib/python3.13/site-packages/screenlogicpy/gateway.py", line 142, in async_connect
connectPkg = await async_connect_to_gateway(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<4 lines>...
)
^
File "/usr/local/lib/python3.13/site-packages/screenlogicpy/requests/login.py", line 107, in async_connect_to_gateway
mac_address = await async_gateway_connect(transport, protocol, max_retries)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/screenlogicpy/requests/login.py", line 77, in async_gateway_connect
raise ScreenLogicConnectionError("Host unexpectedly disconnected.")
screenlogicpy.const.common.ScreenLogicConnectionError: Host unexpectedly disconnected.
```
* coverage
Remove lower bound for start time state query
With the new query in #133553 we do not need a lower bound
on the search since it will always use index now and we
always want the newest value in the index before the
provided timestamp. The lower bound is redudant at this
point as it will always be older than the oldest
time point for the state. It only made sense when
the query would have had to examine a time window
of states instead of doing an index only search.