Sélectionner une page

Le contrôle de la Smart TV LG 47LB700V avec WebOs 3 de 2014 en LAN n’a pas été facile.

  • Les scripts Python pour les TV de 2012 et ceux « +2012 » n’ont rien donné. Aucun code d’appareillage ne s’est affiché.

Je commençais a me dire que j’avais certainement un problème avec mes appareils : TV, CPL, Routeur et même câbles réseaux.

J’ai tout vérifié :

  • réinitialisation de la box internet.
  • vérification des câbles réseaux,
  • remise de l’état d’usine de la Smart TV.

Mais cela n’a rien donné.
Alors que les applications sur les Smartphones pour contrôler la TV fonctionnais.

Je me suis dit que j’allais ne pas pouvoir le faire avec mon système domotique à base de Raspberry PI 3 + Jeedom.
Mais je suis tombé par hasard sur un GIT « lgtv2mqtt ».

Mais qu’est ce que MQTT ? un peu de recherche et de documentation.

Internet-des-Objets-bien-comprendre-MQTT
mosquitto-broker-mqtt-raspberry-pi

Mais cela m’a l’air d’être bien ca ! Aller je me lance …

Comment allons nous procéder ? (Méthode pour Le RPI, mais fonctionne aussi pour la plupart des distributions Linux)

Dans un premier temps il faut installer lgtv2mqtt (assurez vous d’avoir npm d’installé apt-get install npm)

npm install -g lgtv2mqtt

On regarde la liste de commandes disponibles pour ce programme

sudo lgtv2mqtt --help

Ce qui donne :

lgtv2mqtt 0.2.0
Interface between LG WebOS Smart TVs and MQTT
Usage: /usr/local/bin/lgtv2mqtt [options]
Options:
-v, --verbosity possible values: "error", "warn", "info", "debug"

[défaut: « info »]

-n, –name           instance name. used as mqtt client id and as prefix for connected topic [défaut: « lgtv »]
-t, –tv             hostname or ip address of webos tv [défaut: « lgwebostv »]
-u, –url            mqtt broker url. See https://github.com/mqttjs/MQTT.js#connect-using-a-url

[défaut: « mqtt://127.0.0.1 »]

-h, –help           Affiche de l’aide [booléen]
–version            Affiche le numéro de version [booléen]

La commande que nous utiliserons sera donc : sudo lgtv2mqtt -t « IP de la TV » soit :

sudo lgtv2mqtt -t 192.168.1.100

si une erreur node ce produit :

apt-get install node nodejs-legacy

Vous allez vous en apercevoir j’aime bien mettre de l’ordre dans mes scripts Linux et donc je les range dans un dossier « script » a la racine du serveur ou raspberry

sudo mkdir /script && cd /script

On va donc créer le script qui va lancer cette commande

sudo nano lgtv2mqtt.sh

on y insère ce code : (on quitte et sauvegarde avec ctrl+x «  »o » ou « y » et « enter »)

#!/bin/bash
sudo lgtv2mqtt -t 192.168.1.100

On oublie pas de le rendre exécutable

sudo chmod +x lgtv2mqtt.sh

On va faire en sorte que ce script se lance au démarrage du Raspberry Pi

cd /etc/init.d
sudo nano lgtv2mqtt

on y insère ce code :

#!/bin/bash
### BEGIN INIT INFO
# Provides: lgtv2mqtt
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple script to start a program at boot
### END INIT INFO
cd /script
./lgtv2mqtt.sh
exit 0

Ensuite, il faut rendre ce script exécutable

sudo chmod +x /etc/init.d/lgtv2mqtt

Modification de la séquence de boot

sudo update-rc.d lgtv2mqtt defaults 80 ( si cela ne fonctionne pas : sudo systemctl enable lgtv2mqtt )

Grâce à ca nous avons fait en sorte que le RPI communique sans cesse avec la Smart TV LG

Mais ensuite ? me diriez vous ! Et bien il nous faut un Broker MQTT pour pouvoir recevoir mais aussi envoyer des informations à notre TV.

Pour notre RPI nous allons opter pour le Broker « Mosquitto » qui est open-source.

sudo apt-get install mosquitto mosquitto-clients

Envoyer/recevoir vos premiers messages MQTT ici je vais choisir d’afficher un message directement sur la TV sous forme de message de notification.

On se connecte au serveur (-h) localhost sur le Topic (-t) lgtv/set/toast (liste des topics disponible sur le GIT) et on publie le message (-m) « ceci est un test de clem-informatique »

mosquitto_pub -h localhost -t lgtv/set/toast -m "ceci est un test de clem-informatique"

Voici ce que l’on obtient