使用 Bash 控制 TP-Link Kasa 本地开关

Control TP-Link Kasa local switches with Bash

我安装了 python-kasa 库来从我的本地服务器控制 TPLink 智能家居设备。虽然从命令行发出命令很简单,但我试图根据查询结果在 Bash 中执行它们。我的困境纯粹是我的编码能力,我正在寻找正确方向的推动力。我想做的是遵循以下语法错误的内容:

   if kasa --host 127.0.0.2 status on; then
        echo "already its on"
    else
        kasa --host 127.0.0.2 on
        echo "now its on"
    fi 

当您发出命令“kasa --host Device_IP state”时,您会得到以下结果。

No --strip nor --bulb nor --plug given, discovering..
== Red light - HS210(US) ==
    Host: 127.0.0.2
    Device state: OFF

    == Generic information ==
    Time:         2021-05-23 21:16:31
    Hardware:     2.0
    Software:     1.1.4 Build 200821 Rel.092912
    MAC (rssi):   XX:XX:XX:XX:XX:XX (-33)
    Location:     {'latitude': XXXXXX, 'longitude': -XXXXXX}

    == Device specific information ==
    LED state: True
    On since: None

促使我需要 bash 脚本来控制设备的核心原因是因为我住在一个有线互联网服务糟糕的地区,经常需要重新启动调制解调器,这在家时很简单,但在家时却没有那么多场外。我想创建一个脚本,cron 将每十分钟左右 运行 检查互联网是否可以访问 and/or 如果电缆调制解调器的电源打开。基本上,如果电源关闭然后打开它,如果互联网关闭然后关闭电源并重新打开它 运行ning。

也许是这样的?

#!/usr/bin/env bash

if kasa --host Device_IP state 2>&1 | grep -Fq 'Device state: OFF'; then
  : restart or start the device here
elif kasa --host Device_IP state 2>&1 | grep -Fq 'Device state: ON'; then
  : device is already on
fi