[KuKuTVNoti] TV(LG WebOS) 화면에 Notification을 띄울 수 있게 해주는 API와 DTH

‘KuKuTVNoti’ 개발배경

SmartThings Community에서 누군가가 LG TV에 알림을 띄울 수 있느냐라는 질문 글에,

‘LGTv’라는 라이브러리가 있다라는 내용을 보고 LG WebOS TV에 ‘Notification’을 띄울 수 있다는 것을 알게 되었다.

모든 사람이 아니겠지만, 나같은 경우 집에서 드라마를 보거나, 유뷰브를 보거나, 동영상을 보거나, 게임을 할 때

TV를 보고 있기때문에, IoT 정보나 원하는 메세지를 TV에 띄워주면 좋을 것 같다는 생각이 들었다.

그래서 SmartThings에 붙여 보기로 시도해 보았다.
(사실 ‘시도’라고 썼지만 중간에 멈췄다가 포기했다 해서.. 5개월 걸렸다.
그리고 ‘KuKuLGTV’로 시작했다가, 혹시 나중에 SS TV도 추가 할 수 있을지 몰라서 ‘KuKuTVNoti’로 변경하였다.)

‘KuKuTVNoti’ 연결구성

LG(WebOS) TV <-> 개인 IoT Server(KuKuTVNoti) <-> ST Hub

(아직까진 IoT Server 없이 ST Hub만으로는 완벽히 대응하기는 어렵다 ㅠㅠ
그래도 SmartApp 없이 DTH만으로 가능하도록 노력함)

‘KuKuTVNoti’ 기능

(아쉽게도 LG WebOS2 이후 TV가능합니다.)

1) 미리 정해놓은 메시지를 Thing 화면에서 선택하여 TV에 전송 가능
(현재 8개로 Thing 설정에서 메시지 변경 가능)

2) 자동화에서 ‘Media Controller’ Type으로 선택 메세지 전송 가능

‘KuKuTVNoti’ 설치 방법

0. 사전 LG WebOS TV 환경설정

TV에 접속하여 컨트롤 하기 위한 ‘LG CONNECT APPS’를 활성화 시켜줘야 한다.
활성화 방법은 자세히 그림과 같이 나와있는 공식사이트 설명으로 대체한다.
http://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others

1. ‘KuKuTVNoti’ Daemon 설치

1-1) ‘KuKuTVNoti’ Docker Image download

# docker search kukutvnoti

# docker pull turlvo/kukutvnoti

1-2) ‘KuKuTVNoti’ container 실행

# docker run -ti –name kukutvnoti -v /home/kukutvnoti:/keys -p 8383:8383 turlvo/kukutvnoti

<‘/home/kukutvnoti’ 핑크색 부분은 각자 tv 연결 key가 저장 될 위치 지정하시면 됩니다>
이후 Ctrl + P + Q 누르면 Container 유지된 상태로 빠져나감.
혹 Ctrl + C로 종료하고 나가도 나중에 docker start kukutvnoti 로 재시작시키면 됨

1-3) ‘KuKuTVNoti’ 부팅시 자동 시작

# sudo vim /etc/systemd/system/kukutvnoti.service

<kukutvnoti.service File 내용>
[Unit]
Description=KuKuTVNoti container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a kukutvnoti
ExecStop=/usr/bin/docker stop -t 2 kukutvnoti

[Install]
WantedBy=multi-user.target

# sudo systemctl enable /etc/systemd/system/kukutvnoti.service

2. ‘KuKuTVNoti’ DTH 설치

2-1) ST IDE에서 ‘KuKuTVNoti’ DTH 추가

https://github.com/turlvo/KuKuTVNoti/blob/master/devicetypes/turlvo/kukutvnoti.src/kukutvnoti.groovy
(ST IDE에서 DTH 추가방법은 이젠 생략)

2-2) ST IDE에서 ‘KuKuTVNoti’를 추가

‘My Devices’ -> ‘New Device’

– Name : 원하는 Device 이름입력
– Device Network Id : 기존과 겹치지 않는 아무값입력(추후 자동 변경 됨)
– Type : 위에서 설치한 ‘KuKuTVNoti’ DTH 선택
– Version : Published
– Hub : 꼭 자신의 Hub 선택 필요

2-3) 추가한 ‘KuKuTVNoti’ device 환경 설정
(SmartThings Application에 추가한 device Thing의 설정화면에서 진행해도 됨)

– noti1msg ~ noti8msg : Thing tile 버튼에 맵핑시킬 메세지
– serverIp : ‘KuKuTVNoti’ daemon 돌리고 있는 Iot 서버의 Local IP address
– serverMac : ‘KuKuTVNoti’ daemon 돌리고 있는 Iot 서버의 MAC address(:포함 소문자)
– serverPort : 8383
– tvIp : LG WebOS TV의 Local IP address

3. ‘KuKuTVNoti’ Thing

3-1) Thing 화면

3-2) Thing Setting 화면(앞에 IDE에서 설정 했던 값들을 여기서 설정/변경 가능)

4. ‘KuKuTVNoti’ 동작영상

4-1) Thing화면에서 미리 정해 놓은 메세지 보내기

4-2) ‘CoRE’와 연동하여 메세지 보내기

 

5. ToDo…

– ‘KuKuTVNoti’ API 상태와 TV 상태 싱크 또는 표시
– 가능하면 다양한 TV 지원…


   13 Comments


  1. ShinJjang
      2017-10-30

    쿠쿠님 TV노티 서비스 집에 있을때 하루종일 티비보는 제 아내에게 딱 좋은 서비스이네요. 코어를 이용하면 집안의 상태변화나 알림등을 타지에서 확인할 수 있겠네요.

    3시간 이상 티비가 켜져있으면 제 안내에게 “이제 그만봐도 안되겠니?”라는 메세지를 띄우고 싶네요. ㅎㅎ

    • turlvo
        2017-10-30

      신짱님!~
      그런 케이스도 좋네요 ㅎㅎ (하지만 노티타이밍에 꼭 티비를 보고 계셔야 한다는 조건이…)
      명확히 사용자에게 IoT 상태 전달 시스템이라고 하기도 뭐하고 장난감 같은 프로젝트입니다.

      열심히 티비보고있는데 현관 문열고 와이프가 들어오는 것을 문열림 노티로 확인 하는 것을
      상상하면서 만들어보았습니다.

  2. Makelism
      2017-11-01

    드디어 공개하셨군요.
    필요하면 만들어버리는 능력에 감탄과 부러움을 안고 갑니다.

    • turlvo
        2017-11-01

      오랜만에 뵙겠습니다. ㅎㅎ
      LG TV만 거기에 WebOS2이상만 지원하다보니 사용하실분이 있으실지 모르겠네요.
      그냥 개인 장난감으로 써야겠어요

  3. 거꾸로보일러
      2018-02-25

    안녕하세요 하나하나 차근차근 밟아 나가고 있는 사람입니다
    일단 이런 대단한 능력에 감탄하고 갑니다 ㅎㅎ

    그런데.. docker run 시에
    standard_init_linux.go:195: exec user process caused “exec format error”
    위 에러가 발생하는데

    구글링을 해보니 x86과 ARM간에 실행시 발생하는 에러라고 하네요
    제가 Raspberry PI로 구동을 시도중인데 관련한 해결 방법이 없을까요?

    • turlvo
        2018-02-26

      안녕하세요
      요게 x86으로 도커이미지를 만들어서그렇습니다
      라즈로 만들어서 조만간 공유드릴게요

    • 거꾸로보일러
        2018-02-26

      오호!!! 감사합니다!!!!!

      • turlvo
          2018-03-06

        안녕하세요
        https://github.com/turlvo/KuKuTVNoti
        참고하셔서 확인부탁드립니다

        docker image 이름은
        turlvo/kukutvnoti-rasp
        입니다

        • 거꾸로보일러
            2018-03-28

          안녕하세요 쿠쿠님
          퇴근하고 바로 쿠쿠tvnoti를 설정해보았습니다

          일단 이미지 실행 중인거 확인했고
          88a3ddb1788f turlvo/kukutvnoti-rasp “/root/KuKuTVNoti/ru…” 20 minutes ago Up 21 seconds kukutvnoti

          설정을 통해서 아이피, 맥, TV아이피 모두 설정을 마쳤는데요,

          Running Server…
          warn: –minUptime not set. Defaulting to: 1000ms
          warn: –spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
          KuKu LGTV API Server started on port : 8383

          이 로그에서 더이상 쌓이는게 없네요

          TV는 해당 옵션이 이미 켜져있었구요 (LG TV Plus 사용 중이었습니다)
          DTH 추가 완료 했구요 (Device 추가까지 됐구요)

          타일을 눌렀을 때 eventall을 통해서 본 바로는 다음과 같습니다

          Name Value
          archivable true
          commandId 612262
          date 2018-03-28 10:35:05.658 오후 KST (2018-03-28T13:35:05.658Z)
          description noti3 command was sent to LGTV_KuKuTVNoti
          deviceId 7d68f5e3-4279-476e-878e-____________
          displayed false
          eventSource COMMAND
          hubId 6bd2e35e-48f3-4047-882a-____________
          id d34bf1a0-328c-11e8-97f6-____________
          isStateChange true
          isVirtualHub false
          linkText noti3
          locationId e99750cb-0cac-4387-a79c-____________
          rawDescription noti3
          translatable false
          unixTime 1522244105658
          value noti3
          viewed false

          ST -> RBPI로 못 넘어오는 걸까요?ㅠㅠ

          • turlvo
              2018-03-29

            안녕하세요.
            라즈로 저도 동작확인해봤었는데 이상하네요.
            말씀처럼 데몬에 아무것도 출력이 안되면 데몬까지 http request가 안간것 같아요

            DTH 설정은 잘 되었나요?
            serverIp string 192.168.1.137
            serverMac string F4:4D:30????????
            serverPort string 8383
            tvIp string 192.168.1.129

          • 거꾸로보일러
              2018-03-30

            흠….. 넵 다 들어가있구요

            ST앱에서 직접 넣었을 때에도 success 뜨면서 정상 save 됐었고 (정보가 부정확하면 success 안 떠야하는거 아닌가요?)
            심지어 웹 상으로 preference 정보를 다시 한번 더 넣어, save가지 했는데요…

            어디가 포인트인지 감이 안 잡히네요;;

            ST에서 타일을 눌렀을 떄에도
            Log에서 아무것도 발생하지 않습니다
            물론 RSPI 로그에도 아무것도 안 찍히구요

            RSPI에 8383 포트가 열려있는거 까지 확인했는데요….
            이상하네요 ㅠㅠ 흙흙

            PS: 근데 새 댓글 및 후속 댓글 메일로 알림오게 했는데 메일이 안오는군요? ㅋㅋ

          • turlvo
              2018-03-30

            음 설정은 그냥 문자열저장이기때문에
            뭔든저장됩니당

            근래 첫시도하시는분이셔서 문제파악해봐야겠네요
            저도 다시설치해보고 알려드릴게요

          • turlvo
              2018-04-02

            안녕하세요.

            확인이 늦어져서 죄송합니다.
            방금 라즈베리에서 최신 turlvo/kukutvnoti-rasp image와 DTH로 새로 만들어서 동작 확인이 되었습니다.
            혹시 가상 device만드실때 Location과 Hub도 지정해주셔보셨나요?

            로그 추가로 넣은 것이 있으니 DTH update 후 다시 한번 확인 위에 location, hub 선택 후 확인부탁드립니다.

turlvo 에 응답 남기기 응답 취소