* Reword invoke_pin action to avoid misunderstanding with "PIN"
The previous mismatch between "PIN" and "pin" in the invoke_pin caused wrong translations as "PIN" was interpreted as the abbreviation for "Personal Identification Number".
This commit fixes this by explaining "pin" as related to "pinning" content on the device.
In addition the very "invoke" is replaced by "play" which every user and translator will understand immediately.
Along with those changes this commit reverts my previous change to "PIN" in all strings that made things worse.
* Use "Pin ID" for the field variable
* 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