Skip to content

Commit 4b0f2d3

Browse files
committed
Test setting
1 parent b1f6297 commit 4b0f2d3

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

custom_components/simatic/light.py

+14-6
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
LIGHT_SCHEMA = vol.Schema({
2929
vol.Required(CONF_NAME): cv.string,
3030
vol.Required(CONF_STATE_ADDRESS): ADDRESS_SCHEMA,
31-
vol.Required(CONF_SET_ADDRESS): ADDRESS_SCHEMA
31+
vol.Optional(CONF_SET_ADDRESS): ADDRESS_SCHEMA
3232
})
3333

3434
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
@@ -64,18 +64,21 @@ def setup_platform(
6464
state_byte = device[CONF_STATE_ADDRESS][CONF_BYTE]
6565
state_bit = device[CONF_STATE_ADDRESS][CONF_BIT]
6666

67-
set_byte = device[CONF_SET_ADDRESS][CONF_BYTE]
68-
set_bit = device[CONF_SET_ADDRESS][CONF_BIT]
67+
if device.get(CONF_SET_ADDRESS):
68+
set_byte = device[CONF_SET_ADDRESS][CONF_BYTE]
69+
set_bit = device[CONF_SET_ADDRESS][CONF_BIT]
6970

70-
lamp = SimaticLight(client, name, (state_byte, state_bit), (set_byte, set_bit))
71+
lamp = SimaticLight(client, name, (state_byte, state_bit), (set_byte, set_bit))
72+
else:
73+
lamp = SimaticLight(client, name, (state_byte, state_bit), None)
7174
lamps.append(lamp)
7275

7376
add_entities(lamps)
7477

7578

7679
class SimaticLight(LightEntity):
7780

78-
def __init__(self, client: snap7.client.Client, name: str, state_address: tuple[int, int], set_address: tuple[int, int]) -> None:
81+
def __init__(self, client: snap7.client.Client, name: str, state_address: tuple[int, int], set_address: tuple[int, int] | None) -> None:
7982
self._client = client
8083
self._state_address = state_address
8184
self._set_address = set_address
@@ -92,19 +95,24 @@ def is_on(self) -> bool | None:
9295

9396
def turn_on(self, **kwargs: Any) -> None:
9497
_LOGGER.debug(f"turn on lamp {self._name}")
98+
self.set_state(1)
9599

96100
def turn_off(self, **kwargs: Any) -> None:
97101
_LOGGER.debug(f"turn off lamp {self._name}")
102+
self.set_state(0)
98103

99104
def set_state(self, value: int):
105+
if not self._set_address:
106+
_LOGGER.debug(f"Not set configured for lamp {self._name}")
107+
100108
byte, bit = self._set_address
101109
res = self._client.db_read(10, byte, 1)[0]
102110
set_v = (value << bit)
103111
set_byte = bytearray([set_v])
104112
self._client.db_write(10, byte, set_byte)
105113

106114
def update(self) -> None:
107-
_LOGGER.error(f"Updating State for lamp {self._name}")
115+
_LOGGER.debug(f"Updating State for lamp {self._name}")
108116
byte, bit = self._state_address
109117

110118
res = self._client.db_read(10, byte, 1)[0]

0 commit comments

Comments
 (0)