Photons from the command line
Photons provides the lifx command-line utility which can be used
to perform several tasks. If multiple tasks are required, consider
creating a script instead.
To access these tasks, ensure the lifx command is in your PATH by
activating the virtual environment into which Photons is
installed.
A simple example of running a task with the lifx utility:
$ lifx lan:transform match:label=kitchen -- '{"power": "off"}'
This command uses the lan target with the transform task to find a
device with the label kitchen and powers it off.
The lifx utility uses the following command-line structure:
$ lifx <target>:<task> <reference> <artifact> -- <options>
Some tasks don’t need all of these items, like unpack doesn’t require a
reference to be specified for example.
Photons includes a single lan target, which is configured to discover
and communicate with devices on the local network using the default broadcast
address of 255.255.255.255. It’s possible to change the default broadcast
address used by the lan target or create new targets by providing a
custom configuration.
To list all available tasks, run lifx help. To get details about a specific
task, run lifx help <task>, e.g. lifx help transform.
Note
The options field must be valid JSON syntax which can be
cumbersome to provide directly on the command line. For ease of use, the
lifx utility accepts a file:// path instead:
$ lifx lan:transform -- file:///path/to/my/options.json
If the file is in the current directory:
$ lifx lan:transform -- file://options.json
Photons will output a lot of information by default which you can make go away
with a --silent option or by setting PHOTONS_SILENT_BY_DEFAULT=1 in your
environment where you are running photons commands. If that environment variable
is set then you can override it with --unsilent.
Running CLI commands on Windows
Running the lifx utility from the Windows Command Prompt requires the
JSON syntax to be escaped correctly, which can be challenging:
C:\Users\me> lifx lan:transform -- "{\"power\": \"on\"}"
An alternative method which doesn’t require escaping JSON is to write a simple Python script instead:
__import__("photons_core").run('lan:transform -- {"power": "on"}')
which can be run directly from the command prompt:
C:\Users\me> python power_on.py