[IOT] 從電腦控制博聯BroadLink的WiFi控制盒SPR 1

  • 736
  • 0

這篇文章記錄如何在電腦上透過Python控制博聯BroadLink的WiFi控制盒(SPR 1)或WiFi智能插座(SP mini3),進而實現按下電腦鍵盤上的按鍵切換日光燈的開關。

最近在雙11的時候,買了特價只要99 RMB的天貓精靈X1,原本家裡就有BroadLink智能插座SP mini 3智能紅外遙控RM mini 3,除了可以用官方提供的智慧星APP進行控制,也可以搭配天貓精靈用語音控制,但截至發文日為止(2017-11-26),天貓精靈仍不支持自定義的紅外線指令,所以就現有的設備來說,可玩性不太夠,所以就再買了博聯WiFi控制盒,打算接到房間的日光燈,進而用語音或手機APP來控制開燈、關燈。

博聯WiFi控制盒是用來安裝到電器內部的產品,產品圖來自於筑岛家居专营店-天猫Tmall.com

安裝完後大概長這樣,過程忘記拍了,但就按照上圖接線即可,原本想要把盒子藏在裡面,但是WiFi訊號會變很差,所以就直接放在旁邊。

安裝完後先在智慧星APP中新增裝置,這個步驟我一開始都無法成功新增,後來莫名其妙就成功了,從裝置清單中可以看到WiFi控制盒的型號是SPR 1,但不知道為什麼,這款並沒有出現在BroadLink的官網中

確認可以正常控制後,接著進入到本文的重點,在電腦上面控制這些裝置。

先到GitHub上面下載python-broadlink,如果電腦沒有安裝Python 2,則到https://www.python.org/下載並安裝。

將zip解壓縮後,切換到python-broadlink目錄中,執行:

python setup.py

過程中可能會出現錯誤訊息,按照訊息到https://aka.ms/vcpython27下載並安裝Microsoft Visual C++ Compiler for Python 2.7,即可排除。

之後就可以開始撰寫Python程式碼對BroadLink的裝置進行控制,這邊分享一段我用來切換日光燈的程式碼:

import broadlink

devices = broadlink.discover(timeout=1)
for i in range(len(devices)):
    if '192.168.1.133' == devices[i].host[0]:
        devices[i].auth()
        state = devices[i].check_power()
        print state
        if True == state:
            devices[i].set_power(False)
        else:
            devices[i].set_power(True)

因為我的網路環境中有多個BroadLink裝置,所以我用IP來控制特定的裝置,不過這個方式因為每次都要discover所以會比較慢,也可以直接寫死devtype、host、mac這三個參數,切換速度就跟在APP上面控制一樣,程式碼如下:

import broadlink

devtype = 30023
host = ('192.168.1.133', 80)
mac = bytearray.fromhex('7534bd34ea34')

device = broadlink.gendevice(devtype, host, mac)
device.auth()
state = device.check_power()
print state
if True == state:
    device.set_power(False)
else:
    device.set_power(True)

 

之後再到登錄編輯程式(regedit)中修改鍵盤對應的功能,就可以直接用多媒體鍵盤來控制開燈、關燈,詳細步驟參考如何修改Windows鍵盤對應

日光燈切換.bat

cd /d "%~dp0"
start /MIN "" python 日光燈切換.py

將WebHome改成執行上述的bat檔

經過以上設定後,目前可以做到:

  • 透過天貓精靈,用語音控制 (原本就有)
  • 透過智慧星APP,用手機控制 (原本就有)
  • 透過電腦,用鍵盤控制 (本文重點)

但如果只是要控制日光燈開關,直接牆壁上的開關換成RF遙控開關會更簡單好用。

 

文章內容僅提供技術分享,如有錯誤還請不吝指教。