SLG / lgtv2mqtt

34 stars 3 forks source link

LG TV 2 MQTT WebOS Service

For WebOS 6. Maybe it works for earlier or later versions...?

Setup tv

WebOS developer

Register as an LG WebOS developer

Connect TV

Install app and service

The service and app are now installed.

Starting the service

The app is now installed on the home screen, and can be started from there.

Automatically with an automation

Based on a notification (Can MQTT be turned on?) and home-assistant-variables:

alias: "Start TV app MQTT "
description: ""
trigger:
  - platform: event
    event_type: mobile_app_notification_action
    event_data:
      action: TURN_TV_MQTT_ON
condition: []
action:
  - service: var.update
    data:
      entity_id: var.tv_media_source
  - service: media_player.select_source
    data:
      source: LG TV 2 MQTT TV App
    target:
      entity_id: media_player.living_room_tv
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - service: media_player.select_source
    data:
      source: "{{states('var.tv_media_source')}}"
    target:
      entity_id: media_player.living_room_tv
mode: single

Using the service

If you have the MQTT integration enabled in Home Assistant, the service should be auto discovered:

The sensor.webostvservice_play_state should be updated when you play, pause, or stop an app on the tv.

An example automation:

alias: Turn lights off when playing a movie
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.webostvservice_play_state
    to: playing
condition: []
action:
  - service: light.turn_off
    target:
      entity_id:
        - light.some_light_entity
    data: {}
mode: single

Renew Devmode session

Manually

  1. Make sure the sdk is working
  2. Run ssh prisoner@<tv IP> -p 9922 -i <key location> "/bin/sh -i"
  3. Run cat /var/luna/preferences/devmode_enabled and safe the promting key
  4. in Home Asisstant configuration.yaml:
    rest_command:
    update_lg_dev:
    url: "https://developer.lge.com/secure/ResetDevModeSession.dev?sessionToken=<the key from step 3>"
  5. Create an automation:
    alias: Reset LG Dev session
    description: ""
    trigger:
     - platform: time
       at: "01:00:00"
    condition: []
    action:
     - service: rest_command.update_lg_dev
       data: {}
    mode: single

notes:

The key is located in ~/ssh name is webos with your device name

You can ignore the prompting error message

source

TODO