Skip to content

KeyError trying to run gpiozero with digital_outputs #414

Open
@arturalbov

Description

@arturalbov

Describe the bug
I've configured a digital output pin 18 with gpiozero module and mqtt-io threw a KeyError: 18 error during start.

Expected behavior
It should run without errors.

Error messages and traceback

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/pi/mqttiove/lib/python3.11/site-packages/mqtt_io/__main__.py", line 126, in <module>
    main()
  File "/home/pi/mqttiove/lib/python3.11/site-packages/mqtt_io/__main__.py", line 118, in main
    mqtt_gpio.run()
  File "/home/pi/mqttiove/lib/python3.11/site-packages/mqtt_io/server.py", line 1449, in run
    self._init_digital_outputs()
  File "/home/pi/mqttiove/lib/python3.11/site-packages/mqtt_io/server.py", line 550, in _init_digital_outputs
    raw_value = gpio_module.get_pin(out_conf["pin"])
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pi/mqttiove/lib/python3.11/site-packages/mqtt_io/modules/gpio/gpiozero.py", line 85, in get_pin
    return cast(bool, self._in_pins[pin].is_active)
                      ~~~~~~~~~~~~~^^^^^
KeyError: 18

Config

mqtt:
  host: test.mosquitto.org
  port: 1883
  topic_prefix: mqtt_io
  ha_discovery:
    enabled: true

gpio_modules:
  - name: rpi_gpio
    module: gpiozero

digital_outputs:
  - name: gpio18-2
    module: rpi_gpio
    pin: 18

Hardware

  • Platform: Raspberry Pi 5

System:

  • OS: Debian GNU/Linux 12 (bookworm)
  • Python version: 3.11.2
  • User you're running as: pi
  • Using a virtualenv?: yes

Additional context
If I change digital_outputs to digital_inputs everything works fine.
Due to logs and source code I'm guessing that get_pin(...) method is called and it fails because it only checks _in_pins map.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions