Problème avec le module HDMICEC


#1

Bonjour,

je viens vers vous car j’ai essayé d’installer le module HDMICEC pour controler ma télé (marque THOMSON ) via le RPI avec gladys dessus branché sur celui ci via un cable HDMI,

J’ai bien suivi les instruction de l’installation du module normalement, à savoir installer cec-utils (via putty avec la commande “sudo aptitude install cec-utils” ) puis installer le module puis redémarer le RPI (et gladys du coup au passage).

J’ai essayé les commandes données mais aucune ne semble avoir d’effets sur ma télé :

(
Vérifier l’état de la TV :

gladys.modules.hdmicec.commands.isAlive();

Allumer la TV :

gladys.modules.hdmicec.commands.turnOnTv();

Eteindre la TV :

gladys.modules.hdmicec.commands.turnOffTv();

)

je suis un peu perdu sur comment je pourrais en savoir plus sur le pourquoi ça ne fonctionne pas, ou si j’ai fait une fausse manip…

si quelqu’un a une idée je suis bien preneur o/

PS : avec ce module, est ce qu’il serait possible d’utiliser la box télécommande de ce topic pour contrôler ma télé ensuite ?

merci à vous !


#2

Salut @setchulainn !

Peut tu nous en dire plus et nous mettre les logs de gladys lorsque tu executes les commandes par exemple :
gladys.modules.hdmicec.commands.isAlive();?

Quel est la marque de ta télé, quel année, la version de ton cable hdmi ?

Pour tester le module à la main peux tu executer cette commande après t’être connecté au RPI brancher par HDMI à ta TV (remet nous le résultat ici) echo pow 0 | cec-client -s -d 1 ?

Comme je l’ai dit dans ce même topic, le module est prévu à avoir ça mise à jour :

Je suis encore en attente de @pierre-gilles depuis maintenant le 4 novembre : https://github.com/GladysProject/gladys-mqtt-adapter/pull/1

Il ne semble pas prioriser les développements des modules…

Bonne fête de fin d’année.


#3

Salut @spenceur

Alors niveau spécification :

  • j’utilise en cable HDMI celui d’une wii U qui marche avec celle ci (donc cable fonctionnel) je dirais que c’est du 1.4 en version de cable HDMI d’après les specs de la wii U mais j’en suis pas sur (y a rien de marqué sur le cable :confused: )
  • la télé est une TV THOMSON 55UC6306

Au niveau de gladys,

le pack cec-utils est bien installé :

pi@gladys:~ $ sudo aptitude install cec-utils
cec-utils is already installed at the requested version (4.0.2.3~stretch)
cec-utils is already installed at the requested version (4.0.2.3~stretch)

quand je teste à la main le module avec echo pow 0 | cec-client -s -d 1 j’ai comme réponse :

pi@gladys:~ $ echo pow 0 | cec-client -s -d 1
opening a connection to the CEC adapter...
power status: unknown

Quand je regarde les log de Gladys, après avoir lancé via le script :

gladys.modules.hdmicec.commands.isAlive();

j’obtiens :

0|gladys | { language: ‘fr’,
0|gladys | text: ‘Désolé je ne connais pas l’état de la télévision’ }
0|gladys | { language: ‘fr’, text: ‘’ }
0|gladys | Event : create : new Event with code : devicetype-new-value
0|gladys | Scenario : Trigger : New event : devicetype-new-value
0|gladys | Scenario : Trigger : Found 0 launchers with code devicetype-new-value.

En espérant que tu puisses m’aider avec ça ^^"


#4

Alors j’ai déjà eu ce soucis sur une de mes tv :slight_smile:

Peux tu te connecter via ssh au rpi et lancer cette commande :
tvservice - off
Et refaire cette commande:
echo pow 0 | cec-client -s -d 1


#5

Voici le résultat :
( j’ai utilisé -o à la place de - off car ça ne semble pas reconnu)

pi@gladys:~ $ tvservice - o
[E] Unrecognized argument -- '-'
Usage: tvservice [OPTION]...
  -p, --preferred                   Power on HDMI with preferred settings
  -e, --explicit="GROUP MODE DRIVE" Power on HDMI with explicit GROUP (CEA, DMT, CEA_3D_SBS, CEA_3D_TB, CEA_3D_FP, CEA_3D_FS)
                                      MODE (see --modes) and DRIVE (HDMI, DVI)
  -t, --ntsc                        Use NTSC frequency for HDMI mode (e.g. 59.94Hz rather than 60Hz)
  -c, --sdtvon="MODE ASPECT [P]"    Power on SDTV with MODE (PAL or NTSC) and ASPECT (4:3 14:9 or 16:9) Add P for progressive
  -o, --off                         Power off the display
  -m, --modes=GROUP                 Get supported modes for GROUP (CEA, DMT)
  -M, --monitor                     Monitor HDMI events
  -s, --status                      Get HDMI status
  -a, --audio                       Get supported audio information
  -d, --dumpedid <filename>         Dump EDID information to file
  -j, --json                        Use JSON format for --modes output
  -n, --name                        Print the device ID from EDID
  -h, --help                        Print this information




pi@gladys:~ $ tvservice -o
Powering off HDMI


pi@gladys:~ $ echo pow 0 | cec-client -s -d 1
opening a connection to the CEC adapter...
power status: unknown
pi@gladys:~ $

#6

Tu dois avoir le T Link sur ta télé Thomson, je pense. Il faut l’activer si ce n’est pas fait.


#7

ha ! heu… ^^"

avec le T Link d’activé ça marche un peu mieux mais c’est toujours pas ça :

 pi@gladys:~ $ tvservice -o
Powering off HDMI
pi@gladys:~ $ echo pow 0 | cec-client -s -d 1
opening a connection to the CEC adapter...
power status: on

j’arrive du coup à connaitre le “power statut” via la commande de @spenceur, mais quand je tente d’utiliser les commande du module via un script, je n’ai pas les réponse voulu dans les log je pense :

(la télé est allumé pendant le test)
script :

gladys.modules.hdmicec.commands.isAlive();

log :

0|gladys   | { language: 'fr', text: 'La télévision est alumée' }
0|gladys   | { language: 'fr', text: '' }
0|gladys   | Event : create : new Event with code : devicetype-new-value
0|gladys   | Scenario : Trigger : New event : devicetype-new-value
0|gladys   | Scenario : Trigger : Found 0 launchers with code devicetype-new-value. 

script :

gladys.modules.hdmicec.commands.turnOffTv();

log :

0|gladys   | { language: 'fr', text: 'La télévision est alumée' }
0|gladys   | { language: 'fr', text: '' }

script :

gladys.modules.hdmicec.commands.turnOnTv();

log :

0|gladys   | { language: 'fr', text: 'La télévision est alumée' }
0|gladys   | { language: 'fr', text: '' }

(c’est pas une erreur de copier collé le log identique. )


#8

Malheureusement, il semble que le « CEC » chez Thomson soit buggé, j’ai lu plusieurs posts sur d’autres forums dans ce sens :frowning:
Ps : j’ai une Thomson également, qui devait bientôt passer sous contrôle Gladys !


#9

Salut Alors peut être que Tlink ne fonctionne pas :slight_smile:,
Mais parfois la télé mais plus de temps à répondre, pour mon ancienne TV il fallait que j’ajoute une tempo de 10 secondes.

Le module possède un paramètre optionnel qui est par defaut à 1 seconde :
HDMI_INTERVAL_TEMPO, tente de jouer avec ça en l’ajoutant à Gladys (pas besoin de redémarrer ensuite) en espérant que c’est juste un soucis de tempo :slight_smile:

Sur ma vieille Samsung j’ai mis cette option à 10 seconde :
HDMI_INTERVAL_TEMPO = 10


#10

Alors après quelques tests via les script, en fait le script pour allumé la télé, quand celle ci est éteinte fonctionne bien, je n’ai pas besoin de changer le tempo pour celui ci comme suggéré par Spenceur.

Si je souhaite utilisé le script pour éteindre la télé allumé, la ça ne marche pas, même avec un tempo de 10 ou de 20 sec.

Vu que la tété s’allume un moment, on va supposer que le T-Link est fonctionnel. Du coup pour le reste comme éteindre puis plus tard me servir de l’api de télévision, bah soit il faudra que je triffouille pour adapter à ma télé ( je sais pas trop comment mais bon … ) soit c’est ma télé qui bug comme le suggère Piznel et là bah j’aurais plus qu’à pleurer…

merci de votre aide en tout cas. Il me reste donc quelques petits essai à faire…


#11

peux tu me dire ce que te renvoie la commande télévision éteinte depuis 1 minute stp ?

echo pow 0 | cec-client -s -d 1

#12

voici ce que me renvoie la putty avec la télé éteinte depuis facilement 30 min :

pi@gladys:~ $ echo pow 0 | cec-client -s -d 1
opening a connection to the CEC adapter...
power status: standby

#13

Elle te renvois donc bien la bonne info.
Ce qui veut dire que au moment de l’état

power status: on

à

power status: standby

Ta télé met un certain temps avant de répondre là bonne info.

C’est justement le but du paramètre HDMI_INTERVAL_TEMPO.
C’est bête à dire mais il faut que tu tentes 30 secondes 40 secondes et après tu devras faire de la dichotomie (@piznel & @MathieuA 17 points au scrabble) pour trouvé le temps que ta tv met à répondre

Je viens de me rappeler que le module présente une anomalie (corrigé dans la futur version) quand on appel en ligne de commande
gladys.modules.hdmicec.commands.turnOffTv();
&
gladys.modules.hdmicec.commands.turnOnTv();

La tempo n’est pas propagé par script
En revanche si tu appuis sur le devicetype pour allumer et etteindre la tv dans périphérique là la tempo est propagé.

peux tu refaire tes tests Problème avec le module HDMICEC
Mais en passant par le devicetype stp ?


#14

Je reviens un peu tard, les fêtes toussa toussa…

Alors ma télé s’allume bien quasi instantanément (le temps du logo… ) mais ne s’éteint pas via le script, même avec un paramètre HDMI_INTERVAL_TEMPO de 120 secondes.

Pour le test via devicetype si j’ai bien compris , j’ai refait le même procédé à partir du boutton TV présent dans mes périphériques : pour allumer la télé -> instantané et pour l’éteindre aucune réaction de ma télé.

dans tous les cas le log renvoyé par gladys est celui ci :

0|gladys   | { language: 'fr', text: 'La télévision est alumée' }
0|gladys   | { language: 'fr', text: '' }
0|gladys   | Event : create : new Event with code : devicetype-new-value
0|gladys   | Scenario : Trigger : New event : devicetype-new-value
0|gladys   | Scenario : Trigger : Found 0 launchers with code devicetype-new-value.

je me demande si la fonction TVoff() renvoie bien le bon ordre d’arret et pas un d’allumage, mais quelqu’un l’aurait remarqué avant moi non ? ^^"


#15

Idem pour moi. La télé peux s’allumer mais pas s’éteindre. J’ai une TV LG sans webos


#16

je viens d’aller décortiquer le module pour trouver la commande de base pour éteindre la télé (tout comme pow 0 pour le isalive() ):

pi@gladys:~ $ echo standy 0 | cec-client -s -d 1
opening a connection to the CEC adapter...

et fin sans éteindre la télé.

La commande de base n’arrive donc pas à faire ce qu’elle est sensé faire contrairement à l’équivalent pour isalive() et turnOn().

Avec le débug de la commande ça donne :


pi@gladys:~ $ echo off 0 | cec-client -s
opening a connection to the CEC adapter...
DEBUG:   [             134]     Broadcast (F): osd name set to 'Broadcast'
DEBUG:   [             137]     Open - vc_cec initialised
DEBUG:   [             137]     logical address changed to Free use (e)
NOTICE:  [             137]     connection opened
DEBUG:   [             138]     processor thread started
DEBUG:   [             138]     << Broadcast (F) -> TV (0): POLL
DEBUG:   [             138]     initiator 'Broadcast' is not supported by the CEC adapter. using 'Free use' instead
TRAFFIC: [             138]     << e0
DEBUG:   [             198]     >> POLL sent
DEBUG:   [             198]     TV (0): device status changed into 'present'
DEBUG:   [             198]     << requesting vendor ID of 'TV' (0)
TRAFFIC: [             198]     << e0:8c
TRAFFIC: [             790]     >> 0f:87:f0:f0:f0:00
DEBUG:   [             790]     TV (0): vendor = Unknown (f0f0f0)
DEBUG:   [             790]     >> TV (0) -> Broadcast (F): device vendor id (87)
DEBUG:   [             790]     expected response received (87: device vendor id)
NOTICE:  [             790]     registering new CEC client - v4.0.2
DEBUG:   [             790]     detecting logical address for type 'recording device'
DEBUG:   [             790]     trying logical address 'Recorder 1'
DEBUG:   [             790]     << Recorder 1 (1) -> Recorder 1 (1): POLL
TRAFFIC: [             790]     << 11
TRAFFIC: [            1064]     << 11
DEBUG:   [            1337]     >> POLL not sent
DEBUG:   [            1337]     using logical address 'Recorder 1'
DEBUG:   [            1337]     Recorder 1 (1): device status changed into 'handled by libCEC'
DEBUG:   [            1337]     Recorder 1 (1): power status changed from 'unknown' to 'on'
DEBUG:   [            1337]     Recorder 1 (1): vendor = Pulse Eight (001582)
DEBUG:   [            1337]     Recorder 1 (1): CEC version 1.4
DEBUG:   [            1337]     AllocateLogicalAddresses - device '0', type 'recording device', LA '1'
DEBUG:   [            1337]     logical address changed to Recorder 1 (1)
DEBUG:   [            1337]     Recorder 1 (1): osd name set to 'CECTester'
DEBUG:   [            1337]     Recorder 1 (1): menu language set to 'eng'
DEBUG:   [            1337]     GetPhysicalAddress - physical address = 3000
DEBUG:   [            1337]     AutodetectPhysicalAddress - autodetected physical address '3000'
DEBUG:   [            1337]     Recorder 1 (1): physical address changed from ffff to 3000
DEBUG:   [            1337]     << Recorder 1 (1) -> broadcast (F): physical address 3000
TRAFFIC: [            1337]     << 1f:84:30:00:01
NOTICE:  [            1488]     CEC client registered: libCEC version = 4.0.2, client version = 4.0.2, firmware version = 1, logical address(es) = Recorder 1 (1) , physical address: 3.0.0.0, git revision: libcec-4.0.2+30-8adc786~dirty, compiled on Mon Aug 21 09:41:41 UTC 2017 by root@hostname: Name or service not known on Linux 4.4.0-92-generic (armv7l), features: P8_USB, DRM, P8_detect, randr, RPi
DEBUG:   [            1488]     << Recorder 1 (1) -> TV (0): OSD name 'CECTester'
TRAFFIC: [            1488]     << 10:47:43:45:43:54:65:73:74:65:72
DEBUG:   [            1788]     << requesting power status of 'TV' (0)
TRAFFIC: [            1788]     << 10:8f
TRAFFIC: [            2437]     >> 01:90:00
DEBUG:   [            2437]     TV (0): power status changed from 'unknown' to 'on'
DEBUG:   [            2437]     >> TV (0) -> Recorder 1 (1): report power status (90)
DEBUG:   [            2437]     expected response received (90: report power status)
DEBUG:   [            2437]     unregistering all CEC clients
NOTICE:  [            2437]     unregistering client: libCEC version = 4.0.2, client version = 4.0.2, firmware version = 1, logical address(es) = Recorder 1 (1) , physical address: 3.0.0.0, git revision: libcec-4.0.2+30-8adc786~dirty, compiled on Mon Aug 21 09:41:41 UTC 2017 by root@hostname: Name or service not known on Linux 4.4.0-92-generic (armv7l), features: P8_USB, DRM, P8_detect, randr, RPi
DEBUG:   [            2437]     Recorder 1 (1): power status changed from 'on' to 'unknown'
DEBUG:   [            2438]     Recorder 1 (1): vendor = Unknown (000000)
DEBUG:   [            2438]     Recorder 1 (1): CEC version unknown
DEBUG:   [            2438]     Recorder 1 (1): osd name set to 'Recorder 1'
DEBUG:   [            2438]     Recorder 1 (1): device status changed into 'unknown'
DEBUG:   [            2438]     unregistering all CEC clients
DEBUG:   [            3138]     UnregisterLogicalAddress - releasing previous logical address
DEBUG:   [            3139]     logical address changed to Broadcast (f)

Je dirais que c’est donc un problème plus du côté de la librairie libCEC utilisé par le module qu’un problème du module lui même…


#17

Merci pour se debug je regarderais de mon côté ma version de la lib si elle na pas eu de modif entre temps.


#18

Bon j’ai bien la même version que toi et cela fonctionne.

@setchulainn peut tu me lancer ceci et me donner le retour stp :

echo “scan” | cec-client RPI -s -d 1


#19

Alors voici ce que ça donne sans le débug :

pi@gladys:~ $ echo “scan” | cec-client RPI -s -d 1
opening a connection to the CEC adapter...

et avec débug :

pi@gladys:~ $ echo “scan” | cec-client RPI -s
opening a connection to the CEC adapter...
DEBUG:   [               2]     Broadcast (F): osd name set to 'Broadcast'
DEBUG:   [               5]     Open - vc_cec initialised
DEBUG:   [               5]     logical address changed to Free use (e)
NOTICE:  [               6]     connection opened
DEBUG:   [               6]     << Broadcast (F) -> TV (0): POLL
DEBUG:   [               6]     initiator 'Broadcast' is not supported by the CE                                                      C adapter. using 'Free use' instead
TRAFFIC: [               6]     << e0
DEBUG:   [               6]     processor thread started
DEBUG:   [              66]     >> POLL sent
DEBUG:   [              66]     TV (0): device status changed into 'present'
DEBUG:   [              66]     << requesting vendor ID of 'TV' (0)
TRAFFIC: [              66]     << e0:8c
TRAFFIC: [             471]     >> 0f:87:f0:f0:f0:00
DEBUG:   [             471]     TV (0): vendor = Unknown (f0f0f0)
DEBUG:   [             471]     >> TV (0) -> Broadcast (F): device vendor id (87                                                      )
DEBUG:   [             471]     expected response received (87: device vendor id                                                      )
NOTICE:  [             471]     registering new CEC client - v4.0.2
DEBUG:   [             471]     detecting logical address for type 'recording de                                                      vice'
DEBUG:   [             471]     trying logical address 'Recorder 1'
DEBUG:   [             471]     << Recorder 1 (1) -> Recorder 1 (1): POLL
TRAFFIC: [             471]     << 11
TRAFFIC: [             745]     << 11
DEBUG:   [            1017]     >> POLL not sent
DEBUG:   [            1017]     using logical address 'Recorder 1'
DEBUG:   [            1017]     Recorder 1 (1): device status changed into 'hand                                                      led by libCEC'
DEBUG:   [            1017]     Recorder 1 (1): power status changed from 'unkno                                                      wn' to 'on'
DEBUG:   [            1017]     Recorder 1 (1): vendor = Pulse Eight (001582)
DEBUG:   [            1017]     Recorder 1 (1): CEC version 1.4
DEBUG:   [            1017]     AllocateLogicalAddresses - device '0', type 'rec                                                      ording device', LA '1'
DEBUG:   [            1018]     logical address changed to Recorder 1 (1)
DEBUG:   [            1018]     Recorder 1 (1): osd name set to 'CECTester'
DEBUG:   [            1018]     Recorder 1 (1): menu language set to 'eng'
DEBUG:   [            1018]     GetPhysicalAddress - physical address = 3000
DEBUG:   [            1018]     AutodetectPhysicalAddress - autodetected physica                                                      l address '3000'
DEBUG:   [            1018]     Recorder 1 (1): physical address changed from ff                                                      ff to 3000
DEBUG:   [            1018]     << Recorder 1 (1) -> broadcast (F): physical add                                                      ress 3000
TRAFFIC: [            1018]     << 1f:84:30:00:01
NOTICE:  [            1169]     CEC client registered: libCEC version = 4.0.2, c                                                      lient version = 4.0.2, firmware version = 1, logical address(es) = Recorder 1 (1                                                      ) , physical address: 3.0.0.0, git revision: libcec-4.0.2+30-8adc786~dirty, comp                                                      iled on Mon Aug 21 09:41:41 UTC 2017 by root@hostname: Name or service not known                                                       on Linux 4.4.0-92-generic (armv7l), features: P8_USB, DRM, P8_detect, randr, RP                                                      i
DEBUG:   [            1169]     << Recorder 1 (1) -> TV (0): OSD name 'CECTester                                                      '
TRAFFIC: [            1169]     << 10:47:43:45:43:54:65:73:74:65:72
DEBUG:   [            1469]     << requesting power status of 'TV' (0)
TRAFFIC: [            1469]     << 10:8f
TRAFFIC: [            1604]     >> 01:46
DEBUG:   [            1605]     << Recorder 1 (1) -> TV (0): OSD name 'CECTester                                                      '
DEBUG:   [            1605]     >> TV (0) -> Recorder 1 (1): give osd name (46)
TRAFFIC: [            1605]     << 10:47:43:45:43:54:65:73:74:65:72
TRAFFIC: [            2136]     >> 01:90:00
DEBUG:   [            2136]     TV (0): power status changed from 'unknown' to '                                                      on'
DEBUG:   [            2136]     >> TV (0) -> Recorder 1 (1): report power status                                                       (90)
DEBUG:   [            2137]     expected response received (90: report power sta                                                      tus)
DEBUG:   [            2137]     unregistering all CEC clients
NOTICE:  [            2137]     unregistering client: libCEC version = 4.0.2, cl                                                      ient version = 4.0.2, firmware version = 1, logical address(es) = Recorder 1 (1)                                                       , physical address: 3.0.0.0, git revision: libcec-4.0.2+30-8adc786~dirty, compi                                                      led on Mon Aug 21 09:41:41 UTC 2017 by root@hostname: Name or service not known                                                       on Linux 4.4.0-92-generic (armv7l), features: P8_USB, DRM, P8_detect, randr, RPi
DEBUG:   [            2137]     Recorder 1 (1): power status changed from 'on' t                                                      o 'unknown'
DEBUG:   [            2137]     Recorder 1 (1): vendor = Unknown (000000)
DEBUG:   [            2137]     Recorder 1 (1): CEC version unknown
DEBUG:   [            2137]     Recorder 1 (1): osd name set to 'Recorder 1'
DEBUG:   [            2137]     Recorder 1 (1): device status changed into 'unkn                                                      own'
DEBUG:   [            2137]     unregistering all CEC clients
DEBUG:   [            3007]     UnregisterLogicalAddress - releasing previous logical address
DEBUG:   [            3008]     logical address changed to Broadcast (f)

Elle est sensé faire quoi cette commande ?


#20

Elle est censé affiché les devices connecté à ta tv(télé comprise) via CEC
Or rien ne s’affiche :thinking:.

Voici un exemple :

echo “scan” | cec-client RPI -s -d 1
opening a connection to the CEC adapter…
requesting CEC bus information …
CEC bus information

device #0: TV
address: 0.0.0.0
active source: no
vendor: Samsung
osd string: TV
CEC version: unknown
power status: standby
language: fre

device #1: Recorder 1
address: 2.0.0.0
active source: no
vendor: Pulse Eight
osd string: CECTester
CEC version: 1.4
power status: on
language: eng

Tu laisses bien ta commande tournée ?
tu ne fais pas de ctrl + c au moins ?

As tu testé avec un autre HDMI ?
As tu activé le mode CEC sur ta tv (en fonction de la marque c’est différent) ?