Sending simple tcp packets

Hi

So I was able to solve this myself. Solution was to use netcat, and pass the hex like this:

echo -n -e "\x00\x00\x00\x00\x30\x7b\x22\x64\x61\x74\x61\x22\x3a\x7b\x22\x74\x79\x70\x65\x22\x3a\x30\x2c\x22\x76\x61\x6c\x75\x65\x22\x3a\x37\x7d\x2c\x22\x6d\x73\x67\x22\x3a\x22\x45\x51\x5f\x53\x45\x54\x54\x49\x4e\x47\x22\x7d" | nc <ip> <port>

To be able to pass different hex’es into this, I created this as a bash script:

#!/bin/bash

echo -n -e "$1" | nc <ip> <port>

Next, I created a script like this:

lgsoundbar:
    alias: LG SoundBar EQ
    sequence:
      - service_template: >
          {% if is_state ('input_select.soundbar_eq' , 'Cinema') %}
          shell_command.eq_cinema
          {% elif is_state ('input_select.soundbar_eq' , 'Music') %}
          shell_command.eq_music
          {% else %}
          {% endif %}

which based on a selected input_select runs a shell_command. The shell_commands are defined like this in configuration.yaml:

shell_command:
   eq_cinema: sh /config/scripts/lg_las950m/soundbar_sound_effect.sh "\x00\x00\x00\x00\x30\x7b\x22\x64\x61\x74\x61\x22\x3a\x7b\x22\x74\x79\x70\x65\x22\x3a\x30\x2c\x22\x76\x61\x6c\x75\x65\x22\x3a\x37\x7d\x2c\x22\x6d\x73\x67\x22\x3a\x22\x45\x51\x5f\x53\x45\x54\x54\x49\x4e\x47\x22\x7d"
   eq_music: sh /config/scripts/lg_las950m/soundbar_sound_effect.sh "\x00\x00\x00\x00\x30\x7b\x22\x64\x61\x74\x61\x22\x3a\x7b\x22\x74\x79\x70\x65\x22\x3a\x30\x2c\x22\x76\x61\x6c\x75\x65\x22\x3a\x36\x7d\x2c\x22\x6d\x73\x67\x22\x3a\x22\x45\x51\x5f\x53\x45\x54\x54\x49\x4e\x47\x22\x7d"

The input_select:
input_select:
soundbar_eq:
options:
- Cinema
- Music

And last an automation:
- id: ‘1525245792589’
alias: Change LG Soundbar Sound Effect
trigger:
- entity_id: input_select.soundbar_eq
platform: state
condition: []
action:
- entity_id: script.lgsoundbar
service: script.lgsoundbar

Next step is to automate functionality to change this automatically when something is playing on the soundbar.

3 Likes