컴맨드 라인 스위치(Command Line Switch)


command_line 스위치 플랫폼은 켜거나 끌 때 특정 명령을 실행합니다. 다른 스크립트 호출을 포함하여 command line 에서 제어할 수있는 모든 유형의 스위치를 Home Assistant에 통합할 수 있으므로 가장 강력한 플랫폼이 될 수 있습니다!

이를 활성화하려면 configuration.yaml에 다음 줄을 추가하십시오 :

# Example configuration.yaml entry
switch:
  - platform: command_line
    switches:
      kitchen_light:
        command_on: switch_command on kitchen
        command_off: switch_command off kitchen

Configuration Variables

switches

(map)(Required)

The array that contains all command switches.

identifier

(map)(Required)

Name of the command switch as slug. Multiple entries are possible.

command_on

(string)(Required)

The action to take for on.

command_off

(string)(Required)

The action to take for off.

command_state

(string)(Optional)

If given, this command will be run. Returning a result code 0 will indicate that the switch is on.

value_template

(string)(Optional)

If specified, command_state will ignore the result code of the command but the template evaluating to true will indicate the switch is on.

friendly_name

(string)(Optional)

The name used to display the switch in the frontend.

friendly_name에 대한 참고사항 :

설정하면 friendly_name은 이전에 object_id(“identifier”) 대신 API 호출 및 백엔드 설정에 사용되었지만 this behavior is changing을 사용하여 friendly_name을 표시용으로만 만듭니다. 이를 통해 사용자는 API 및 설정 목적에 대한 독창성과 예측 가능성을 강조하는 identifier를 설정할 수 있지만 UI에는 여전히 friendly_name이 더 예쁘게 표시됩니다.

추가적인 이점으로, 사용자가 friendly_name / display name을 변경 (예: “Kitchen Lightswitch”에서 “Kitchen Switch” 또는 “Living Room Light”로 변경하거나 friendly_name을 모두 제거하려는 경우) 기존 자동화 또는 API 호출을 변경하지 않고도 그렇게 할 수 있습니다.

예제는 아래의 aREST 장치를 참조하십시오.

사례

이 섹션에는 이 스위치를 사용하는 방법에 대한 실제 예가 나와 있습니다.

aREST 장치

아래 예제는 aREST 스위치와 동일합니다. command line 도구로 curl은 REST를 통해 제어할 수 있는 핀을 토글하는데 사용됩니다.

# Example configuration.yaml entry
switch:
  platform: command_line
  switches:
    arest_pin_four:
      command_on: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/1"
      command_off: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/0"
      command_state: "/usr/bin/curl -X GET http://192.168.1.10/digital/4"
      value_template: '{{ value == "1" }}'
      friendly_name: Kitchen Lightswitch

이 예제에서 UI에서 “Kitchen Light”의 friendly_name을 볼 수 있습니다. 그러나 identifierarest_pin_four이며, entity_id switch.arest_pin_four를 만들어 automation 또는 API calls에서 사용됩니다.

로컬 호스트 셧다운

이 스위치는 Home Assistant를 호스팅하는 시스템을 종료합니다.

이 스위치는 호스트를 즉시 종료하며 확인은 없습니다.
# Example configuration.yaml entry
switch:
  platform: command_line
  switches:
    home_assistant_system_shutdown:
      command_off: "/usr/sbin/poweroff"

VLC 플레이어 제어

이 스위치는 로컬 VLC 미디어 플레이어를 제어합니다. (Source).

# Example configuration.yaml entry
switch:
  platform: command_line
  switches:
    vlc:
      command_on: "cvlc 1.mp3 vlc://quit &"
      command_off: "pkill vlc"

FOSCAM 모션 센서 제어

이 스위치는 CGI 명령을 지원하는 Foscam Webcam의 모션 센서를 제어합니다 (Source). 이 스위치는 현재 모션 감지 상태를 확인하는 statecmd를 지원합니다.

# Example configuration.yaml entry
switch:
  platform: command_line
  switches:
    foscam_motion:
      command_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"'
      command_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"'
      command_state: 'curl -k --silent "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep -oP "(?<=isEnable>).*?(?=</isEnable>)"'
      value_template: '{{ value == "1" }}'
  • 관리자 및 비밀번호를 “admin” 권한이 있는 Foscam 사용자로 교체하십시오.
  • IP 주소를 Foscam의 로컬 IP 주소로 교체하십시오