diff --git a/gpiozero/boards.py b/gpiozero/boards.py index a42dc5f..16a5bb3 100644 --- a/gpiozero/boards.py +++ b/gpiozero/boards.py @@ -846,6 +846,7 @@ class Energenie(SourceMixin, Device): raise EnergenieSocketMissing('socket number must be provided') if not (1 <= socket <= 4): raise EnergenieBadSocket('socket number must be between 1 and 4') + self._value = None super(Energenie, self).__init__() self._socket = socket self._master = _EnergenieMaster() @@ -877,8 +878,9 @@ class Energenie(SourceMixin, Device): @value.setter def value(self, value): - self._master.transmit(self._socket, bool(value)) - self._value = bool(value) + value = bool(value) + self._master.transmit(self._socket, value) + self._value = value def on(self): self.value = True diff --git a/tests/test_boards.py b/tests/test_boards.py index 627325e..8b12dea 100644 --- a/tests/test_boards.py +++ b/tests/test_boards.py @@ -430,11 +430,15 @@ def test_energenie_bad_init(): Energenie() with pytest.raises(ValueError): Energenie(0) + with pytest.raises(ValueError): + Energenie(5) def test_energenie(): pins = [MockPin(n) for n in (17, 22, 23, 27, 24, 25)] with Energenie(1, initial_value=True) as device1, \ Energenie(2, initial_value=False) as device2: + assert repr(device1) == '' + assert repr(device2) == '' assert device1.value assert not device2.value [pin.clear_states() for pin in pins] @@ -455,4 +459,5 @@ def test_energenie(): pins[3].assert_states_and_times([(0.0, True), (0.0, True)]) pins[4].assert_states_and_times([(0.0, False)]) pins[5].assert_states_and_times([(0.0, False), (0.1, True), (0.25, False)]) - + device1.close() + assert repr(device1) == ''