2024-07-23 18:13:52 +00:00
|
|
|
"""Module for cli wifi commands."""
|
|
|
|
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
import asyncclick as click
|
|
|
|
|
|
|
|
from kasa import (
|
|
|
|
Device,
|
|
|
|
)
|
|
|
|
|
|
|
|
from .common import (
|
|
|
|
echo,
|
|
|
|
pass_dev,
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@click.group()
|
|
|
|
@pass_dev
|
2024-11-10 18:55:13 +00:00
|
|
|
def wifi(dev) -> None:
|
2024-07-23 18:13:52 +00:00
|
|
|
"""Commands to control wifi settings."""
|
|
|
|
|
|
|
|
|
|
|
|
@wifi.command()
|
|
|
|
@pass_dev
|
|
|
|
async def scan(dev):
|
|
|
|
"""Scan for available wifi networks."""
|
|
|
|
echo("Scanning for wifi networks, wait a second..")
|
|
|
|
devs = await dev.wifi_scan()
|
|
|
|
echo(f"Found {len(devs)} wifi networks!")
|
|
|
|
for dev in devs:
|
|
|
|
echo(f"\t {dev}")
|
|
|
|
|
|
|
|
return devs
|
|
|
|
|
|
|
|
|
|
|
|
@wifi.command()
|
|
|
|
@click.argument("ssid")
|
|
|
|
@click.option("--keytype", prompt=True)
|
|
|
|
@click.option("--password", prompt=True, hide_input=True)
|
|
|
|
@pass_dev
|
|
|
|
async def join(dev: Device, ssid: str, password: str, keytype: str):
|
|
|
|
"""Join the given wifi network."""
|
|
|
|
echo(f"Asking the device to connect to {ssid}..")
|
|
|
|
res = await dev.wifi_join(ssid, password, keytype=keytype)
|
|
|
|
echo(
|
|
|
|
f"Response: {res} - if the device is not able to join the network, "
|
|
|
|
f"it will revert back to its previous state."
|
|
|
|
)
|
|
|
|
|
|
|
|
return res
|