qrcode#

class platypush.plugins.qrcode.QrcodePlugin(camera_plugin: str | None = None, **kwargs)[source]#

Bases: Plugin

Plugin to generate and scan QR and bar codes.

Requires:

  • numpy (pip install numpy).

  • qrcode (pip install 'qrcode[pil]') for QR generation.

  • pyzbar (pip install pyzbar) for decoding code from images.

  • Pillow (pip install Pillow) for image management.

__init__(camera_plugin: str | None = None, **kwargs)[source]#
Parameters:

camera_plugin – Name of the plugin that will be used as a camera to capture images (e.g. camera.cv or camera.pi).

decode(image_file: str) QrcodeDecodedResponse[source]#

Decode a QR code from an image file.

Parameters:

image_file – Path of the image file.

generate(content: str, output_file: str | None = None, show: bool = False, format: str = 'png') QrcodeGeneratedResponse[source]#

Generate a QR code. If you configured the platypush.backend.http.HttpBackend then you can also generate codes directly from the browser through http://<host>:<port>/qrcode?content=....

Parameters:
  • content – Text, URL or content of the QR code.

  • output_file – If set then the QR code will be exported in the specified image file. Otherwise, a base64-encoded representation of its binary content will be returned in the response as data.

  • show – If True, and if the device where the application runs has an active display, then the generated QR code will be shown on display.

  • format – Output image format (default: png).

Returns:

platypush.message.response.qrcode.QrcodeGeneratedResponse.

start_scanning(camera_plugin: str | None = None, duration: float | None = None, n_codes: int | None = None) List[ResultModel] | None[source]#

Decode QR-codes and bar codes using a camera.

Triggers:

Parameters:
  • camera_plugin – Camera plugin (overrides default camera_plugin).

  • duration – How long the capturing phase should run (default: until stop_scanning or app termination).

  • n_codes – Stop after decoding this number of codes (default: None).

Returns:

When duration or n_codes are specified or stop_scanning is called, it will return a list of platypush.message.response.qrcode.ResultModel instances with the scanned results,