본문 바로가기

IT 기기 팁 & 리뷰

Jenkins + Switchbot 연동


WOL 을 사용할 수 없는 PC의 전원을 제어하기 위해서 Switchbot 으로 PC 전원 버튼을 누르도록 해뒀다.

앱을 통해 실내/실외에서 자유롭게 제어가 가능하다.

 

그런데 (굳이) Jenkins로 할 수 있으면 더 좋지 않을까? 라는 생각이 들었다.

다행히 Switchbot 에서 제공해주는 API 및 소스를 통해 간단하게 Jenkins 를 통한 자동화가 가능했다.

 

준비물

Switchbot S1 아마존에서 직구하는 편이 저렴하지만 환율 영향으로 국내 정발과 큰 차이가 없다.

국내 정발: https://smartstore.naver.com/wakers/products/4761379644
아마존: https://www.amazon.com/dp/B07B7NXV4R?ref_=cm_sw_r_cp_ud_dp_JAAJRN2KQ4AYDTF5RJFE

Raspberry Pi 3 Switchbot 에 블루투스로 연결되어 명령을 전달한다. 이곳에 Jenkins Agent를 설치해서 제어하게 된다.

참고로 Raspberry Pi 4 에서도 되지만, 패키지 설치가 잘 되지 않는 것도 있고, 제어 거리가 1~2m도 채 되지 않아서 실사용이 불가능하다. 
Jenkins 명령을 Trigger 하는 역할

 

 

Step

sudo apt-get update
sudo apt-get install python-pexpect
sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev 
sudo apt-get install libudev-dev libical-dev libreadline-dev
sudo pip install bluepy

 

Switchbot 에서 직접 제공하는 소스 다운로드

git clone https://github.com/OpenWonderLabs/python-host.git
cd python-host

 

블루투스 모듈 검색 실행.

sudo python switchbot.py

블루투스 동글이 정상적으로 동작하고 스위치봇이 범위 안에 있다면 맥어드레스가 스캔되어야 한다.

 

디바이스 맥어드레스가 스캔되면 다음과 같이 Press 를 명령해서 동작하는지 확인

python switchbot.py f3:a5:79:3d:49:51 Bot Press

 

 

 

Build - Execute shell 에 아래와 같이 앞서 쉘에서 실행했던 명령을 그대로 사용.

(python 버전 및 블루투스 모듈 버전에 따라 실행 파일이 다르므로 주의)

 

이제 Switchbot 앱 대신 Jenkins 를 통해 스위치봇을 제어할 수 있게 되었다.

 

영상

 



 

참고:https://github.com/OpenWonderLabs/python-host