Ich hab das im CEC 2.0 mal weiter erforscht.
Mit der aktuellen Version des CEC 2.0 habe ich 2 Probleme.
1. geht der TV hier nur beim 1. Idle der Box nach GUI-Neustart mit aus.
Schalte ich die Box dann wieder ein, woraufhin der TV auch mit angeht und die Box dann wieder aus, bleibt der TV immer an.
Da sieht man im Log dann nur sowas:
Feb 25 16:27:33 dreamOne enigma2[1852]: I/ [Cec.isActiveSource] :: (64, 0) <=> (64, 0)
Feb 25 16:27:33 dreamOne enigma2[1852]: I/ [Cec.send] :: self > f :: 36 (True)
Feb 25 16:27:33 dreamOne enigma2[1852]: [eCec] send 3 -> f : 36
Feb 25 16:27:42 dreamOne enigma2[1852]: [eCec] my physical: f.f.f.f logical 3
Feb 25 16:27:42 dreamOne enigma2[1852]: I/ [Cec.handleActiveSource] :: (255, 255) (64, 0)
Feb 25 16:27:42 dreamOne enigma2[1852]: I/ [Cec._onReady] :: Physical address: f.f.f.f # Logical address: 3
Feb 25 16:27:42 dreamOne enigma2[1852]: I/ [Cec.send] :: self > f :: 84 ff ff (True)
Feb 25 16:27:42 dreamOne enigma2[1852]: [eCec] send 3 -> f : 84 ff ff
Wenn ich nun in der Cec.py in der Cec-Class das self._cec.handleExternal(True) deaktiviere, dann funktioniert das Ausschalten des TV immer.
Dann sieht es im Log so aus:
Feb 25 16:30:36 dreamOne enigma2[2464]: I/ [Cec.isActiveSource] :: (64, 0) <=> (64, 0)
Feb 25 16:30:36 dreamOne enigma2[2464]: I/ [Cec.send] :: self > f :: 36 (True)
Feb 25 16:30:36 dreamOne enigma2[2464]: [eCec] send 3 -> f : 36
Feb 25 16:30:36 dreamOne enigma2[2464]: [eCec] handle message 0 -> 3 : 8f
Feb 25 16:30:36 dreamOne enigma2[2464]: [eCec] Give Device Power Status
Feb 25 16:30:36 dreamOne enigma2[2464]: [eCec] send 3 -> 0 : 90 02
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] handle message 0 -> f : 36
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] Standby
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] --- KNOWN CEC DEVICES ---
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] |- 0 (TV): 000000 (Unknown), power=1
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] |- 4 (BD-Theater): 0000f0 (Samsung), power=1
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] |- 5 (Receiver): 0000f0 (Samsung), power=1
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] --- KNOWN CEC DEVICES ---
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] handle message 0 -> f : 36
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] Standby
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] --- KNOWN CEC DEVICES ---
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] |- 0 (TV): 000000 (Unknown), power=1
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] |- 4 (BD-Theater): 0000f0 (Samsung), power=1
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] |- 5 (Receiver): 0000f0 (Samsung), power=1
Feb 25 16:30:37 dreamOne enigma2[2464]: [eCec] --- KNOWN CEC DEVICES ---
Feb 25 16:30:42 dreamOne enigma2[2464]: [eCec] my physical: f.f.f.f logical 3
Feb 25 16:30:42 dreamOne enigma2[2464]: I/ [Cec.handleActiveSource] :: (255, 255) (64, 0)
Feb 25 16:30:42 dreamOne enigma2[2464]: I/ [Cec._onReady] :: Physical address: f.f.f.f # Logical address: 3
Feb 25 16:30:42 dreamOne enigma2[2464]: I/ [Cec.send] :: self > 0 :: 83 (True)
Feb 25 16:30:42 dreamOne enigma2[2464]: [eCec] send 3 -> 0 : 83
Feb 25 16:30:42 dreamOne enigma2[2464]: I/ [Cec.send] :: self > f :: 84 ff ff (True)
Feb 25 16:30:42 dreamOne enigma2[2464]: [eCec] send 3 -> f : 84 ff ff
Alles anzeigen
Das 2. Problem betrifft das automatische Einschalten des TV nach Ausschalten der Box (Idle), wo der TV auch erstmal mit aus geht. Dabei schaltet sich der TV nach einigen Sekunden einfach wieder ein.
Die Box hat nach dem Idle laut Log f.f.f.f als physical adress.
Allerdings wird der TV dann im def _onReady() per powerOn() wieder eingeschaltet, wenn die Dreambox die physical adress auf 4.0.0.0 ändert, was meist bereits nach 15 sek passiert.
Die Dreambox bleibt dabei aber im Idle.
Daher habe ich mir in oder _onReady das powerOn() erstmal mit if self._powerState != eCec.POWER_STATE_STANDBY: abgefangen, damit der TV im Idle der Box aus bleibt.
Das ist aber bestimmt keine generelle Lösung.
Im Log sieht das dann so aus, wenn der TV angeht (bei _onReady mit 4.0.0.0):
Feb 25 16:24:19 dreamOne enigma2[1852]: I/ [Cec.isActiveSource] :: (64, 0) <=> (64, 0)
Feb 25 16:24:19 dreamOne enigma2[1852]: I/ [Cec.send] :: self > f :: 36 (True)
Feb 25 16:24:19 dreamOne enigma2[1852]: [eCec] send 3 -> f : 36
Feb 25 16:24:19 dreamOne enigma2[1852]: [eCec] handle message 0 -> 3 : 8f
Feb 25 16:24:19 dreamOne enigma2[1852]: [eCec] Give Device Power Status
Feb 25 16:24:19 dreamOne enigma2[1852]: I/ [Cec._onMessage] :: 0 > 3 :: 8f (True)
Feb 25 16:24:19 dreamOne enigma2[1852]: I/ [Cec.send] :: self > 0 :: 00 8f 00 (True)
Feb 25 16:24:19 dreamOne enigma2[1852]: [eCec] send 3 -> 0 : 00 8f 00
Feb 25 16:24:20 dreamOne enigma2[1852]: [eCec] handle message 0 -> f : 36
Feb 25 16:24:20 dreamOne enigma2[1852]: [eCec] Standby
Feb 25 16:24:20 dreamOne enigma2[1852]: I/ [Cec._onMessage] :: 0 > f :: 36 (True)
Feb 25 16:24:20 dreamOne enigma2[1852]: I/ [Cec.onStandby] :: 0 <__main__.Session instance at 0x7f6d5e7878> (False)
Feb 25 16:24:20 dreamOne enigma2[1852]: [eCec] handle message 0 -> f : 36
Feb 25 16:24:20 dreamOne enigma2[1852]: [eCec] Standby
Feb 25 16:24:20 dreamOne enigma2[1852]: I/ [Cec._onMessage] :: 0 > f :: 36 (True)
Feb 25 16:24:20 dreamOne enigma2[1852]: I/ [Cec.onStandby] :: 0 <__main__.Session instance at 0x7f6d5e7878> (False)
Feb 25 16:24:25 dreamOne enigma2[1852]: [eCec] my physical: f.f.f.f logical 3
Feb 25 16:24:25 dreamOne enigma2[1852]: I/ [Cec.handleActiveSource] :: (255, 255) (64, 0)
Feb 25 16:24:25 dreamOne enigma2[1852]: I/ [Cec._onReady] :: Physical address: f.f.f.f # Logical address: 3
Feb 25 16:24:25 dreamOne enigma2[1852]: I/ [Cec.send] :: self > f :: 84 ff ff (True)
Feb 25 16:24:25 dreamOne enigma2[1852]: [eCec] send 3 -> f : 84 ff ff
Feb 25 16:24:25 dreamOne enigma2[1852]: I/ [Cec.send] :: self > f :: 7d (True)
Feb 25 16:24:25 dreamOne enigma2[1852]: [eCec] send 3 -> f : 7d
Feb 25 16:24:25 dreamOne enigma2[1852]: I/ [Cec.send] :: self > 5 :: 8f (True)
Feb 25 16:24:25 dreamOne enigma2[1852]: [eCec] send 3 -> 5 : 8f
Feb 25 16:24:25 dreamOne enigma2[1852]: I/ [Cec.handleActiveSource] :: (255, 255) (64, 0)
Feb 25 16:24:25 dreamOne enigma2[1852]: I/ [Cec.send] :: self > 0 :: 04 (True)
Feb 25 16:24:25 dreamOne enigma2[1852]: [eCec] send 3 -> 0 : 04
Feb 25 16:24:26 dreamOne enigma2[1852]: [eCec] handle message 5 -> 3 : 90 01
Feb 25 16:24:26 dreamOne enigma2[1852]: [eCec] Report power status: Standby
Feb 25 16:24:26 dreamOne enigma2[1852]: I/ [Cec._onMessage] :: 5 > 3 :: 90 01 (True)
Feb 25 16:24:32 dreamOne enigma2[1852]: [eCec] my physical: 4.0.0.0 logical 3
Feb 25 16:24:32 dreamOne enigma2[1852]: I/ [Cec._onReady] :: Physical address: 4.0.0.0 # Logical address: 3
Feb 25 16:24:32 dreamOne enigma2[1852]: I/ [Cec.send] :: self > f :: 84 40 00 (True)
Feb 25 16:24:32 dreamOne enigma2[1852]: [eCec] send 3 -> f : 84 40 00
Feb 25 16:24:32 dreamOne enigma2[1852]: I/ [Cec.send] :: self > f :: 7d (True)
Feb 25 16:24:32 dreamOne enigma2[1852]: [eCec] send 3 -> f : 7d
Feb 25 16:24:32 dreamOne enigma2[1852]: I/ [Cec.send] :: self > 5 :: 8f (True)
Feb 25 16:24:32 dreamOne enigma2[1852]: [eCec] send 3 -> 5 : 8f
Feb 25 16:24:32 dreamOne enigma2[1852]: I/ [Cec.handleActiveSource] :: (64, 0) (64, 0)
Feb 25 16:24:32 dreamOne enigma2[1852]: I/ [Cec.send] :: self > 0 :: 04 (True)
Feb 25 16:24:32 dreamOne enigma2[1852]: [eCec] send 3 -> 0 : 04
Alles anzeigen
Mit dem alten CEC habe ich beide Probleme nicht.
Wir können das gerne auch im Chat besprechen.
Ist nur immer schwierig, da einen gemeinsamen Termin zu finden