안녕하세요 오늘은 ESP32 스피커가 결국 고장이 나고 회사의 윈도우의 작업 스케줄러와 파이썬을 이용한 국민체조 자동 방송 TBM 활동에 관해 알려드리려 합니다.
윈도우 시스템이라 잔고장도 없고 요즘 무난하게 잘 돌아 가는 것 같습니다.
1. 파이썬 설정
1) 목표
- 음원 파일 자동 재생
- 스피커 음량 조절(회사 컴 스피커 음량을 100%로 사용할 수는 없으니까)
2) 파이썬 파일 소스코드
from ctypes import cast, POINTER from comtypes import CLSCTX_ALL from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume from time import sleep import playsound #100% 음량: -0.0 #80: -3.3 #50:-10.3 #20: -23.6 #0: -64.0 device = AudioUtilities.GetSpeakers() #스피커 유틸 가져옴 interface = device.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None) volume = cast(interface, POINTER(IAudioEndpointVolume)) current = volume.GetMasterVolumeLevel() # 현재 볼륨 print(current) volume.SetMasterVolumeLevel(-0.0, None) # 볼륨 설정 sleep(1) # 시스템 실행에 텀을 줌 playsound.playsound(r'음원파일위치 ex) C:\Users\dazaba\Desktop\0001.wav') # 음원 파일 재생 volume.SetMasterVolumeLevel(-63.4, None) # 실제 스피커의 0% 음량은 조금씩 다름 print(current)
저는 블루투스 스피커를 연결해두고 사무실에 국민체조 음원 파일을 재생합니다.
회사에서 사용하는 그램과 블루투스 스피커의 음량0%에 해당하는 값이 서로 다릅니다.
그래서 0%에 대항하는 값을 찾아야합니다.
3) 내 스피커 음량에 해당하는 값 찾기
범위를 벗어날 경우 오류가 납니다.
- 음량 0%로 설정(음량 스크롤로 0%를 만드세요)
- 아래의 파이썬 파일 실행
from ctypes import cast, POINTER from comtypes import CLSCTX_ALL from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume from time import sleep device = AudioUtilities.GetSpeakers() interface = device.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None) volume = cast(interface, POINTER(IAudioEndpointVolume)) current = volume.GetMasterVolumeLevel() print(current)
제시된 값을 0% 음량으로 하고 싶을 때 사용하면 되고 50%는 나온 값의 반을 사용하면 됩니다.
2. 작업 스케줄러 설정
1) 작업 스케줄러 실행
2) 작업 스케줄러 폴더 추가
저는 TBM 관련된 것이라 이름을 TBM으로 지정했습니다.
3) 작업 만들기
- 좌측 사이드바에 기본 작업 만들기를 클릭해줍니다.
- 이름과 설명 설정
- 트리거 설정( 개인 설정에 맞춰 설정해주시면 됩니다. 저는 매주 출근해서 작동을 하고 싶어 매주로 설정했습니다.)
- 프로그램 시작으로 설정(다른 메뉴는 작동하지 않는다고 합니다.)
4) 프로그램 시작 설정
- 프로그램 파이썬으로 설정(pythonw.exe로 설정하면 파이썬 프로그램을 띄우지 않고 바로 실행합니다)
- 시작위치 파이썬 파일 위치로 설정
- 다음 – 마침
5) 만들어진 파일을 클릭하고 조건을 눌러 컴퓨터 절전 상태일 때도 실행되도록 설정합니다.
3. 작업 스케줄러와 파이썬을 이용한 자동화 결과
자동으로 파일이 실행되기 전 스피커 음량이 되고 100% 일정 시간 후 다시 음량을 0%로 변경하여 이후 깜짝 놀라는 일 없이 자연스럽게 일을 진행했습니다.
지금까지 정확하고 오류 없이 잘 실행되고 있습니다.