Usage¶
Command-Line Usage¶
Usage: pysonofflan [OPTIONS] COMMAND [ARGS]...
A cli tool for controlling Sonoff Smart Switches/Plugs in LAN Mode.
Options:
--host TEXT IP address or hostname of the device to connect to.
--device_id TEXT Device ID of the device to connect to.
--inching TEXT Number of seconds of "on" time if this is an
Inching/Momentary switch.
-v, --verbosity LVL Either CRITICAL, ERROR, WARNING, INFO or DEBUG
--help Show this message and exit.
Commands:
discover Discover devices in the network (takes ~1...
listen Connect to device, print state, then print...
off Turn the device off.
on Turn the device on.
state Connect to device and print current state.
Install / Usage Example¶
$ pip install pysonofflan
$ pysonofflan discover
2019-01-31 00:45:32,074 - info: Attempting to discover Sonoff LAN Mode devices on the local network, please wait...
2019-01-31 00:46:24,007 - info: Found Sonoff LAN Mode device at IP 192.168.0.77
$ pysonofflan --host 192.168.0.77 state
2019-01-31 00:41:34,931 - info: Initialising SonoffSwitch with host 192.168.0.77
2019-01-31 00:41:35,016 - info: == Device: 10006866e9 (192.168.0.77) ==
2019-01-31 00:41:35,016 - info: State: OFF
$ pysonofflan --host 192.168.0.77 on
2019-01-31 00:49:40,334 - info: Initialising SonoffSwitch with host 192.168.0.77
2019-01-31 00:49:40,508 - info:
2019-01-31 00:49:40,508 - info: Initial state:
2019-01-31 00:49:40,508 - info: == Device: 10006866e9 (192.168.0.77) ==
2019-01-31 00:49:40,508 - info: State: OFF
2019-01-31 00:49:40,508 - info:
2019-01-31 00:49:40,508 - info: New state:
2019-01-31 00:49:40,508 - info: == Device: 10006866e9 (192.168.0.77) ==
2019-01-31 00:49:40,508 - info: State: ON
Library Usage¶
To use pySonoffLAN in a project:
import pysonofflan
All common, shared functionality is available through SonoffSwitch
class:
x = SonoffSwitch("192.168.1.50")
Upon instantiating the SonoffSwitch class, a connection is initiated and device state is populated, but no further action is taken.
For most use cases, you’ll want to make use of the callback_after_update
parameter to do something with the device after a connection has been
initialised, for example:
async def print_state_callback(device):
if device.basic_info is not None:
print("ON" if device.is_on else "OFF")
device.shutdown_event_loop()
SonoffSwitch(
host="192.168.1.50",
callback_after_update=print_state_callback
)
This example simply connects to the device, prints whether it is currently “ON” or “OFF”, then closes the connection. Note, the callback must be asynchronous.
Module-specific errors are raised as Exceptions, and are expected to be handled by the user of the library.