device

MCU를 제어하여, 부품을 제어합니다.

Class: Device

class openpibo.device.Device(api_mode=True, port=80)[소스]

Bases: object

Functions: code_list send_cmd() send_raw() eye_on() eye_on_s() eye_off() get_battery() get_dc() get_system() get_pir() get_touch() get_button()

메인컨트롤러를 제어하여 파이보의 여러가지 상태를 체크하거나, 눈 색깔을 변경합니다.

example:

from openpibo.device import Device

device = Device()
# 아래의 모든 예제 이전에 위 코드를 먼저 사용합니다.

메시지 상세 설명:

* VERSION(10): 파이보의 버전을 출력합니다.

  * msg: '#10:!'
  * result: 버전정보 (예: '10:FWN200312A')

* HALT(11): 파이보를 종료합니다.

  * msg: '#11:!'
  * result: 'ok'

* DC_CONN(14): 파이보의 충전기 연결 여부를 확인합니다.

  * msg: '#14:!'
  * result: '14:on'
    * ``on``: 연결 되어있음
    * ``off``: 연결 되어있지 않음

* BATTERY(15): 파이보의 배터리 잔량을 확인합니다.

  * msg: '#15:!'
  * result: 배터리 잔량 정보 (예: '15:100%')

* REBOOT(17): 설정 초기화 (Not use) 

  * msg: '#17:!'
  * result: 'ok'

* NEOPIXEL(20): 파이보의 눈(네오픽셀) 색을 변경합니다. - 양쪽 동일하게 설정

  * msg: '#20:255,255,255!'
  * data: 네오픽셀 색 R,G,B ('R,G,B') (예: '255,255,255')
    * 'R,G,B' 의 포맷으로 입력
    * 각 R, G, B는 0~255 정수
  * result: 'ok'

* NEOPIXEL_FADE(21): 파이보의 눈(네오픽셀) 색을 천천히 변경합니다. - 양쪽 동일하게 설정

  * msg: '#21:255,255,255,10!'
  * data: 네오픽셀 색 R,G,B와 색 변경 속도 d ('R,G,B,d') (예: '255,255,255,10')
    * 'R,G,B,d' 의 포맷으로 입력
    * 각 R, G, B는 0~255 정수
    * d는 색상 단위 변화 1당 걸리는 시간으로, 단위는 ms
  * result: 'ok'

* NEOPIXEL_BRIGHTNESS(22): 파이보의 눈(네오픽셀) 밝기를 조절합니다.

  * msg: '#22:64!'
  * data: 네오픽셀 밝기 (예: 64)
    * 0~255 정수
    * 기본값: 64
  * result: 'ok'

* NEOPIXEL_EACH(23): 파이보의 양쪽 눈(네오픽셀) 색을 각각 변경합니다. - 양쪽 각각 설정

  * msg: '#23:255,255,255,255,255,255!'
  * data: 왼쪽 네오픽셀 색 R,G,B와 오른쪽 네오픽셀 색 R,G,B ('R,G,B,R,G,B') (예: '255,255,255,255,255,255')
    * 'R,G,B,R,G,B' 의 포맷으로 입력
    * 각 R, G, B는 0~255 정수
  * result: 'ok'

* NEOPIXEL_FADE_EACH(24): 파이보의 양쪽 눈(네오픽셀) 색을 각각 천천히 변경합니다.

  * msg: '#24:255,255,255,255,255,255,10!'
  * data: 왼쪽 네오픽셀 색 R,G,B와 오른쪽 네오픽셀 색 R,G,B와 색 변화 속도 d ('R,G,B,R,G,B,d') (예: '255,255,255,255,255,255,10')
    * 'R,G,B,R,G,B' 의 포맷으로 입력
    * 각 R, G, B는 0~255 정수
    * d는 색상 단위 변화 1당 걸리는 시간으로, 단위는 ms
  * result: 'ok'

* NEOPIXEL_LOOP(25): 파이보의 눈(네오픽셀) 색을 무지개색으로 일정시간동안 변경합니다.

  * msg: '#25:10!'
  * data: 색 변화 속도 d (예: 10)
    * d는 색상 단위 변화 1당 걸리는 시간으로, 단위는 ms
  * result: 'ok'

* NEOPIXEL_OFFSET_SET(26): 파이보의 눈(네오픽셀) 색의 초기 설정

  * msg: '#26:255,255,255,255,255,255!'
  * data: 왼쪽 네오픽셀 오프셋 R,G,B와 오른쪽 네오픽셀 오프셋 R,G,B ('R,G,B,R,G,B') (예: '255,255,255,255,255,255')
    * 'R,G,B,R,G,B' 의 포맷으로 입력
    * 각 R, G, B는 0~255 정수
  * result: 'ok'

* NEOPIXEL_OFFSET_GET(27): 파이보의 눈(네오픽셀) 오프셋 정보를 반환합니다.

  * msg: '#27:255,255,255,255,255,255!'
  * data: 네오픽셀 오프셋 정보 (예: '27:255,255,255,255,255,255')
  * result: -

* NEOPIXEL_EACH_ORG(28): 파이보의 양쪽 눈(네오픽셀) 색을 각각 변경합니다. 단, 오프셋의 영향을 받지 않습니다.

  * msg: '#28:255,255,255,255,255,255!'
  * data: 왼쪽 네오픽셀 색 R,G,B와 오른쪽 네오픽셀 색 R,G,B ('R,G,B,R,G,B') (예: '255,255,255,255,255,255')
    * 'R,G,B,R,G,B' 의 포맷으로 입력
    * 각 R, G, B는 0~255 정수
  * result: 'ok'

* PIR(30): PIR 센서를 켜고 끕니다.

  * msg: '#30:on!'
  * data: PIR 센서의 활성화 여부 (예: 'on')
    * ``on`` : PIR 센서를 켭니다.
    * ``off`` : PIR 센서를 끕니다.
  * result: 'ok'

* SYSTEM(40): 각종 시스템 정보를 출력합니다.

  * msg: '#40:!'
  * data: -
  * result: 아래의 정보가 모두 출력됩니다.
    * PIR 감지:
      * ``person`` : PIR센서가 적외선의 변화를 감지할 때 출력됩니다.
      * ``nobody`` : ``person`` 출력 후 2초간 적외선의 변화가 없을 때 1회 출력됩니다.
      * ``-`` : 적외선의 변화가 감지되지 않을 때 또는 PIR센서가 비활성화 상태일 때 출력됩니다.
    * Touch 감지:
      * ``touch`` : 터치센서 감지 시 출력됩니다.
      * ``-`` : 터치센서 감지가 안되면 출력됩니다.
    * DC잭 연결감지:
      * ``on`` : DC잭 감지 시 1회 출력됩니다. 이후 ``-`` 가 출력됩니다.
      * ``off`` : DC잭 감지 해제시 1회 출력됩니다. 이후 ``-`` 가 출력됩니다.
      * ``-`` : DC잭 신호의 변화가 없을 때 출력됩니다.
    * 버튼 감지:
      * ``on`` : 전원 버튼 누름 감지 시 출력됩니다.
      * ``-`` : 전원 버튼 누름 감지가 안되면 출력됩니다.
    * 시스템리셋: 현재 지원되지 않습니다.
    * 전원종료: 현재 지원되지 않습니다.
code_list = {'BATTERY': '15', 'DC_CONN': '14', 'HALT': '11', 'NEOPIXEL': '20', 'NEOPIXEL_BRIGHTNESS': '22', 'NEOPIXEL_EACH': '23', 'NEOPIXEL_EACH_ORG': '28', 'NEOPIXEL_FADE': '21', 'NEOPIXEL_FADE_EACH': '24', 'NEOPIXEL_LOOP': '25', 'NEOPIXEL_OFFSET_GET': '27', 'NEOPIXEL_OFFSET_SET': '26', 'PIR': '30', 'REBOOT': '17', 'SYSTEM': '40', 'VERSION': '10'}
send_cmd(code, data: str = '')[소스]

Device에 메시지 코드/데이터를 전송합니다. 입력된 메시지는 #code:data! 의 포맷으로 변경되어 전달됩니다. 메시지 상세 설명은 위에서 확인할 수 있습니다.

example:

device.send_cmd(20, '255,255,255')
매개 변수
  • code (str or int) –

    메시지 코드

    • 10 : VERSION

    • 11 : HALT

    • 14 : DC_CONN

    • 15 : BATTERY

    • 17 : REBOOT

    • 20 : NEOPIXEL

    • 21 : NEOPIXEL_FADE

    • 22 : NEOPIXEL_BRIGHTNESS

    • 23 : NEOPIXEL_EACH

    • 24 : NEOPIXEL_FADE_EACH

    • 25 : NEOPIXEL_LOOP

    • 26 : NEOPIXEL_OFFSET_SET

    • 27 : NEOPIXEL_OFFSET_GET

    • 28 : NEOPIXEL_EACH_ORG

    • 30 : PIR

    • 40 : SYSTEM

  • data (str) –

    메시지

    code 의 값에 따라 데이터의 형식이 다릅니다. code에 따라 data가 요구되지 않을 수도 있습니다.

    example:

    device.send_cmd(20, '255,255,255')
    device.send_cmd(21, '255,255,255,10')
    device.send_cmd(22, '64')
    device.send_cmd(23, '255,255,255,255,255,255')
    device.send_cmd(24, '255,255,255,255,255,255,10')
    device.send_cmd(25, '2')
    device.send_cmd(26, '255,255,255,255,255,255')
    device.send_cmd(28, '255,255,255,255,255,255')
    device.send_cmd(30, 'on')
    

    자세한 설명은 상단 “메시지 상세 설명” 참고하시기 바랍니다

Returns str

Device로부터 받은 응답

send_raw(raw)[소스]

Device에 실제 메시지를 전송하고 응답을 받습니다. 메시지 상세 설명은 위에서 확인할 수 있습니다.

example:

device.send_raw('#20:255,255,255!')
device.send_raw('#22:64!')
매개 변수

raw (str) –

실제 전달되는 메시지

Device에 전송되는 메시지의 포맷은 #code:data! 입니다. 해당 메시지를 메인 컨트롤러에 전송합니다.

자세한 설명은 상단 “메시지 상세 설명” 참고하시기 바랍니다

반환

Device로부터 받은 응답

eye_on(*color, intv=0)[소스]

LED를 켭니다.

example:

device.eye_on(255,0,0)    # 양쪽 눈 제어
device.eye_on(0,255,0,0,0,255) # 양쪽 눈 각각 제어
매개 변수
  • color

    • RGB (0~255 숫자)

    • (R, G, B) -> 양쪽 눈 함께 제어

    • (R,G,B,R,G,B) -> 양쪽 눈 각각 제어

  • intv

    • interval (RGB 값이 1씩 바뀌는 시간)

    • 0 이면 off

eye_on_s(colors, intv=0)[소스]

LED를 켭니다.

example:

device.eye_on_s(['#ffffff', '#ffffff'])   # 양쪽 눈 제어
매개 변수

colors

  • RGB 16진수 문자 리스트 [‘#ffffff’, ‘#ffffff’]

eye_off()[소스]

LED를 끕니다.

example:

device.eye_off()
get_battery(v=False)[소스]

배터리 정보를 요청합니다.

example:

device.get_battery()
매개 변수

v – 값만 가져올지 메시지 전체를 가져올지 선택

반환

배터리 정보 응답

get_dc(v=False)[소스]

DC커넥터 정보를 요청합니다.

example:

device.get_dc()
매개 변수

v – 값만 가져올지 메시지 전체를 가져올지 선택

반환

DC커넥터 연결 정보 응답

get_system(v=False)[소스]

시스템 메시지를 요청합니다.

example:

device.get_system()
매개 변수
  • v – 값만 가져올지 메시지 전체를 가져올지 선택

  • name – 가져올 값 선택 (‘pir’|’touch’|’dc’|’button’|’all’)

반환

시스템 메시지 정보 응답 (pir-touch-dc-button)

get_pir()[소스]

시스템 메시지를 요청합니다. (pir)

example:

device.get_pir()
반환

시스템 메시지 정보 응답에서 pir 값 추출

get_touch()[소스]

시스템 메시지를 요청합니다. (touch)

example:

device.get_touch()
반환

시스템 메시지 정보 응답에서 touch 값 추출

get_button()[소스]

시스템 메시지를 요청합니다. (button)

example:

device.get_button()
반환

시스템 메시지 정보 응답에서 button 값 추출