script.json-cec icon indicating copy to clipboard operation
script.json-cec copied to clipboard

DEBUG: ToggleDeviceState - putting CEC device on standby... - but nothing happenes

Open natterstefan opened this issue 7 years ago • 19 comments

Hello,

first of all - thanks for making such a great script. It looks very promising. But I am not able to make it work. The following issue occurs (originally posted here):

(...) The Pi answers (get the following response) but the TV doesn't act (eg. turn on).

My Request and the Response:

  • /jsonrpc?request={"jsonrpc":"2.0","method":"Addons.ExecuteAddon","params":{"addonid":"script.json-cec","params":{"command":"standby"}},"id":1}
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "OK"
}

Am I missing any setting (firewall) or something? Or should it work kind of out of the box?

Edit: Taking a look into the kodi.log reveals the following:

13:08:05.720 T:1491071984   DEBUG: CWebServer[80]: request received for /jsonrpc?request={%22jsonrpc%22:%222.0%22,%22method%22:%22Addons.ExecuteAddon%22,%22params%22:{%22addonid%22:%22script.json-cec%22,%22params%22:{%22command%22:%22standby%22}},%22id%22:1}
13:08:05.736 T:1305474032   DEBUG: Thread LanguageInvoker start, auto delete: false
13:08:05.737 T:1305474032    INFO: initializing python engine.
13:08:05.737 T:1305474032   DEBUG: CPythonInvoker(29, /home/osmc/.kodi/addons/script.json-cec/script.py): start processing
13:08:06.222 T:1305474032   DEBUG: -->Python Interpreter Initialized<--
13:08:06.223 T:1305474032   DEBUG: CPythonInvoker(29, /home/osmc/.kodi/addons/script.json-cec/script.py): the source file to load is "/home/osmc/.kodi/addons/script.json-cec/script.py"
13:08:06.224 T:1305474032   DEBUG: CPythonInvoker(29, /home/osmc/.kodi/addons/script.json-cec/script.py): setting the Python path to /home/osmc/.kodi/addons/script.json-cec:/usr/lib/python2.7:/usr/lib/python2.7/plat-arm-linux-gnueabihf:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/PILcompat:/usr/lib/python2.7/dist-packages/gtk-2.0
13:08:06.224 T:1305474032   DEBUG: CPythonInvoker(29, /home/osmc/.kodi/addons/script.json-cec/script.py): entering source directory /home/osmc/.kodi/addons/script.json-cec
13:08:06.225 T:1305474032   DEBUG: CPythonInvoker(29, /home/osmc/.kodi/addons/script.json-cec/script.py): instantiating addon using automatically obtained id of "script.json-cec" dependent on version 2.1.0 of the xbmc.python api
13:08:06.336 T:1305474032    INFO: CPythonInvoker(29, /home/osmc/.kodi/addons/script.json-cec/script.py): script successfully run
13:08:06.344 T:1305474032    INFO: Python script stopped
13:08:06.344 T:1305474032   DEBUG: Thread LanguageInvoker 1305474032 terminating
13:08:06.350 T:1958453248   DEBUG: ToggleDeviceState - putting CEC device on standby...

But nothing happened... Even though I see: 13:08:06.350 T:1958453248 DEBUG: ToggleDeviceState - putting CEC device on standby....

Any clues?

natterstefan avatar Nov 19 '17 12:11 natterstefan

Hm. I guess it is something you are not able to fix, are you? Because I just saw this: https://github.com/joshjowen/script.json-cec/issues/1

natterstefan avatar Nov 19 '17 12:11 natterstefan

Unfortunately, I don't think that there is much I can do about it as you have already noticed. I'll leave this issue open but if you take a look at the source code you will see that the script really does very little itself, it just passes through the commands to KODI's built in functions

joshjowen avatar Nov 20 '17 05:11 joshjowen

@joshjowen Yeah, I read through your code and got that you are not responsible. Must be somewhere else, maybe also my TV does not support it (only turn on but not turn off via CEC). Another reason to buy a new TV ^^ Thanks though.

natterstefan avatar Nov 20 '17 17:11 natterstefan

@natterstefan my old Samsung series 5 LCD could only turn on, and not off via CEC.

You should be able to confirm this just using the cec-client commands over SSH first.

Confirm that ON/OFF works with cec-client first, and then we can try narrow down what the problem is. Of course restart Kodi or your raspberry pi after using cec-client given it kills the libcec functionality within Kodi.

Personally I've found the 3rd kodi cec function toggle not to do anything super useful.

I think given you've confirmed that JSON-cec is correctly sending the commands, and Kodi seems to be doing some form of action on it, we can rule these variables out.

Thanks,

Matt

mattie47 avatar Nov 20 '17 21:11 mattie47

@natterstefan @joshjowen

I found this code whilst implementing Kodi/Alexa and I thought "Hey!" what an excellent idea. Now - I did get the same response as you did in that the script successfully completes but nothing happens. But - I remembered a code snippet I used a few weeks back in relation to Kodi and CEC and there seem to be an issue with how you are calling the internal CEC function within Python.

I updated as follows:

if command and command[0] == 'activate':
        #xbmc.executebuiltin('CECActivateSource')
        xbmc.executebuiltin('CECActivateSource()')

elif command and command[0] == 'toggle':
        #xbmc.executebuiltin('CECToggleState')
        xbmc.executebuiltin('CECToggleState()')

elif command and command[0] == 'standby':
        #xbmc.executebuiltin('CECStandby')
          xbmc.executebuiltin('CECStandby()')

What I achieved was to atleast power ON my tv - but neither toggle nor standby works. Maybe this is something we can look into? :)

pittbull avatar Jan 10 '18 20:01 pittbull

I just found this as well but cannot test before I get home:

https://forum.kodi.tv/showthread.php?tid=149356&pid=2253184#pid2253184

Basically it states:

Change: <setting id="standby_devices" value="231" /> to <setting id="standby_devices" value="36037" /> in ~/.kodi/userdata/peripheral_data/rpi_2708_1001.xml (or equivalent)

pittbull avatar Jan 11 '18 07:01 pittbull

@pittbull this sounds indeed promising. I am curious what you will tell us later.

natterstefan avatar Jan 11 '18 08:01 natterstefan

Hopefully I can tell you that it works because yesterday the WAF hit an all time high when I introduced Alexa controlled KODI - with automatic tv power on. ;)

pittbull avatar Jan 11 '18 08:01 pittbull

@natterstefan

I have now tested and achieved 100% success! 💃

This is what I did:

  • Merged the code from the kodi-alexa site with a couple of changes to the code - which is commented on the site
  • Changed the following on my KODI-box: <setting id="standby_devices" value="231" /> to <setting id="standby_devices" value="36037" /> in ~/.kodi/userdata/peripheral_data/rpi_2708_1001.xml (or equivalent)

Before changing the above file execute: "systemctl stop kodi" If this is not done the change will be reverted by Kodi.

  • I also changed the commands in the script.py for the addon as stated in my earlier post but I will retest this weekend if these can be reverted after the other changes.

Happy testing. :)

pittbull avatar Jan 11 '18 21:01 pittbull

Hi @pittbull, sounds really promising. I have some questions:

Question 1

  • where do I need to merge the code exactly to?

Question 2

Before changing the above file execute: "systemctl stop kodi"

  • Does this mean Kodi updates will change/overwrite this setting again?

Question 3

I also changed the commands in the script.py for the addon as stated in my earlier post but I will retest this weekend if these can be reverted after the other changes.

natterstefan avatar Jan 23 '18 16:01 natterstefan

@pittbull Thanks for posting above.

I just did a fresh install of osmc on my Rpi3 today, and struck the same problem as you and @natterstefan where standby would not do anything.

Making the above change you suggested has fixed the problem.

I haven't done a diff of upstream, but I suspect

<setting id="standby_devices" value="231" />

is a somewhat recent change as my previous install had the correct value of "36037"

@natterstefan Q1:

osmc@osmc:~$ sudo systemctl stop mediacenter
or
osmc@osmc:~$ sudo systemctl stop kodi

Then change ~/.kodi/userdata/peripheral_data/rpi_XXXX_XXXX.xml with the following:

-<setting id="standby_devices" value="231" />
+<setting id="standby_devices" value="36037" />

Q2:

I get the vibe no. I suspect it shouldn't get touched unless it's a fresh install of kodi. Changes to this have persisted for me with reboots etc.

mattie47 avatar Feb 05 '18 13:02 mattie47

I have the same problem but using a Vero 4K (OSMC)... i can't find the file you guys are talking about.. the peripheral_data folder is just empty

danmed avatar Feb 26 '18 14:02 danmed

@danmed Did you manage to figure out your problem?

I can't imagine the Vero4k OSMC differing too much from the RaspberryPi image.

mattie47 avatar Mar 04 '18 20:03 mattie47

@mattie47 The problem is that in the peripherals settings in OSMC, the standby device is set to none.. if you change it in there it fixes the problem.. The onyl issue i have now is that it only responds if the Tv is on the OSMC source.. if i'm on another source nothing happens :'(

danmed avatar Mar 05 '18 10:03 danmed

The onyl issue i have now is that it only responds if the Tv is on the OSMC source.. if i'm on another source nothing happens :'(

I think for me I solve this by sending "on" and then "off". Sending on (at least with whatever I have configured) forces it to change source to Kodi, and then send off to turn off.

There should be some workaround for you, it's just a case of spending time figuring out how/what it is.

Thanks,

Matt

mattie47 avatar Mar 06 '18 00:03 mattie47

That's an interesting idea... i'll give that a go

danmed avatar Mar 06 '18 14:03 danmed

I've encountered this (what @natterstefan had) with my new Samsung TV. When I get a chance, possibly this weekend, I'll try some of the tips above, but any chance of someone either merging into this code or forking their solution so a semi-luddite like me doesn't need to download, edit, install via zip, and can instead just not worry about me messing anything up? :D

chriskol avatar Oct 31 '18 06:10 chriskol

I can't turn off my TV, too. Turning it on works... The entry <setting id="standby_devices" value="36037" /> is in the file rpi_2708_1001.xml But I'm not sure, if there are other entries in this CEC settings file, which could cause this problem. Could someone, who successfully managed to turn the TV on and off, please post the complete content of the file here for comparison? Thank you!

wwwindisch avatar Jan 06 '19 10:01 wwwindisch

With a fresh install of OSMC on a Raspberry Pi 3, connected to a 10 year old Sony, I got this to work after going into System > Input > Peripherals > CEC Adapter > "Devices to power off during shutdown". I also took additional steps (see #11 ) but I believe this one was the kicker.

FredrikWendt avatar Jul 19 '20 03:07 FredrikWendt