A simple plugin to toggle a GPIO pin on a RPi. This can be toggled through a button, printer events or custom GCODE.

A simple plugin that allows for the toggling of a GPIO pin on the Raspberry Pi. The user can toggle the pin through a button in the navigation bar, through printer events and through custom GCODE commands. Printer events also allow the pin to be toggled on then off after a period.

WebUI interface


Settings panel

Curently, you can configure settings:

  • Light PIN: The pin on the Raspberry Pi that the button controls.
    • Default value: 13
    • The pin number is saved in the board layout naming scheme (gray labels on the pinout image below).
    • !! IMPORTANT !! The Raspberry Pi can only control the GPIO pins (orange labels on the pinout image below) Raspberry Pi GPIO
  • Inverted output: If true, the output will be inverted.
    • Usage: If you have a light, that is turned off when voltage is applied to the pin (wired in negative logic), you should turn on this option, so the light isn’t on when you reboot your Raspberry Pi.
  • Light is a button: If true, the output will be treated as a button press.
    • Usage: This function allows OctoLight to toggle the Raspberry Pi pin on and off with a small delay to allow for lights that require a button press to change states.
  • Button Press delay (ms): This sets a time out for how long a button press is, this is only used if Light is a button is enabled.
    • Default value: 200
    • Note: This value is in micro seconds.
  • Delay Light Off (mins): This sets a time out for when the light will automatically turn its self-off in an event.
    • Default value: 5
    • Note: This value is in minutes.
  • Setup Printer Events: This allows you to select what you would like the light to do on a printer event.
    • There are multiple events, these can each be tweaked based on your desired preference.
    • Default is set to ‘Nothing’.
    • Set the light to do nothing, turn on, turn off, or turn on then turn itself off after the delay time value.
  • Enable Custom GCODE Detection: This must be enabled for GCODE to be read and toggle the light.
    • If this option is disabled, then the custom GCODE bellow this option will not function.
  • Setup Custom GCODE: This allows you to select what you would like the light to do when a set GCODE command is sent to the printer.
    • Default is ‘OCTOLIGHT ON’, ‘OCTOLIGHT OFF’ and ‘OCTOLIGHT DELAY OFF’ for on, off and on with a delayed turn off respectively.
    • These commands can be any command the user enters, these could be event commands for the printer (e.g.: M600) or custom commands.


Base API URL: GET http://YOUR_OCTOPRINT_SERVER/api/plugin/octolight?action=ACTION_NAME

This API always returns updated light state in JSON: {state: true}
Any API call will require a API key with the “Control” permission. Without this, you will receive a 403 error.

(if the action parameter not given, the action toggle will be used by default)


  • toggle (default action): Toggle light switch on/off.
  • turnOn: Turn on light.
  • turnOff: Turn off light.
  • getState: Get current light switch state.
  • delayOff: Turn on light and setup timer to shutoff light after delay time, note, &delay=VALUE can be added to the URL to override the default time value.
  • delayOffStop: Testing for shutting off timer and light.