利用python pytapo套件重新啟動TP-Link Tapo監視器的方法

TP-Link Tapo C310

我非常討厭在手機裝上一些不怎麼常用的APP,偏偏TP-Link Tapo的監視器沒有提供webconfig,所以若是要重新啟動,只能拔監視器電源再重插,但這不是一個非常聰明的作法。

但方法是一定有的,因為群暉的Surveillance Station可以辦到。我一直以為它像FOSCAM一樣是透過HTTP POST來實現的,因此一直朝這個方向尋找,但一直沒有找到答案。後來無意間發現了pytapo這個套件,看了一下原始碼,發現它能夠做很多事情,簡直像拿破崙發現新大陸一樣驚喜!

先安裝pytapo套件(python請先裝好)

$ pip3 install pytapo

寫一個名為RebootTapoCAM.py的script,並利用argparse將host參數帶入,這樣就不需要每一台監視器寫一隻script。因每台監視器的使用者名稱與密碼都一樣,我就沒有寫成parser了。

import argparse
from pytapo import Tapo

def main():
    parser = argparse.ArgumentParser(description='Reboot Tapo CAM')
    parser.add_argument('--host', required=True, help='Tapo CAM host IP')
    args = parser.parse_args()

    user = "admin" #admin or local camera user
    password = "" #TP-link account password or local camera password
    host = args.host

    tapo = Tapo(host, user, password)
    tapo.reboot()

if __name__ == "__main__":
    main()

執行RebootTapoCAM.py,並加上host參數,例如要重啟的監視器ip為192.168.1.22。

$ python3 RebootTapoCAM.py --host 192.168.1.22

若要將python script整合進入Home Assistant中,假設

  • python環境在192.168.1.10的主機上,且帳號user可以透過ssh下指令到主機。
  • python script放在192.168.1.10的主機上,路徑為/home/user/Python3/。
  • 要重啟的監視器ip為192.168.1.22。

在Home Assistant的configuration.yaml中加入

shell_command:
  camera_reboot_tapo_c310_balcony2f: "ssh -i /config/.ssh/id_rsa -o StrictHostKeyChecking=no -q user@192.168.1.10 'python3 /home/user/Python3/RebootTapoCAM.py --host 192.168.1.22'"

重新啟動Home Assistant後在服務中就找的到

Home Assistant Service

再依自己的喜好整合到Home Assistant的UI中就可以收工,例如透過multiple-entity-row

type: custom:multiple-entity-row
entity: camera.tapo_c310_balcony2f
icon: mdi:cctv
name: 二樓陽台
show_state: false
state_color: true
secondary_info:
  attribute: friendly_name
entities:
  - icon: mdi:refresh
    tap_action:
      action: call-service
      service: shell_command.camera_reboot_tapo_c310_balcony2f
      confirmation:
        text: 請確認是否要重新啟動設備
  - entity: switch.tapo_c310_balcony2f_detect
    toggle: true
    icon: mdi:motion-sensor
    state_color: true
    name: false
  - entity: switch.tapo_c310_balcony2f_recordings
    icon: mdi:cctv
    state_color: true
    name: false
  - entity: sensor.tapo_c310_balcony2f_camera_fps
    name: CAM
    unit: ' '
  - entity: sensor.tapo_c310_balcony2f_process_fps
    name: PRC
    unit: ' '
  - entity: sensor.tapo_c310_balcony2f_detection_fps
    name: DET
    unit: ' '

最後就像這樣,按下重新整理的圖示就可以重新啟動監視器。

Camera Entity

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端