Ape / samsungctl

Remote control Samsung televisions via a TCP/IP connection
MIT License
712 stars 189 forks source link

Can't execute command #109

Open advokatb opened 5 years ago

advokatb commented 5 years ago

Hi. I'm trying to execute command samsungctl --host 192.168.1.110 --port 8001 --method legacy KEY_CONTENTS but got an error

PS C:\WINDOWS\system32> samsungctl --host 192.168.1.110 --port 8001 --method legacy KEY_CONTENTS
Traceback (most recent call last):
  File "d:\program\python\python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\program\python\python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "d:\Program\Python\Python36\Scripts\samsungctl.exe\__main__.py", line 9, in <module>
  File "d:\program\python\python36\lib\site-packages\samsungctl\__main__.py", line 102, in main
    config = _read_config()
  File "d:\program\python\python36\lib\site-packages\samsungctl\__main__.py", line 32, in _read_config
    directories.append(os.path.join(os.getenv("HOME"), ".config"))
  File "d:\program\python\python36\lib\ntpath.py", line 75, in join
    path = os.fspath(path)
TypeError: expected str, bytes or os.PathLike object, not NoneType

UE-32EH5300

P.S. Also I can't turn on TV when it's off :(

raydog153 commented 5 years ago

Have you validated you have port 8001 open on your TV? Also I think legacy method uses port 55000, so I would check that port too. Your model is very close to mine, so hopefully you have old firmware else you may have one of the TVs that we have not gotten fully working yet. Mine model is UN40H5203.

advokatb commented 5 years ago

You were right

Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-20 18:41 Oeieyiaey (ceia)
Nmap scan report for Samsung-TV (192.168.1.110)
Host is up (0.024s latency).
Not shown: 65527 closed ports
PORT      STATE SERVICE
80/tcp    open  http
443/tcp   open  https
3697/tcp  open  nw-license
6000/tcp  open  X11
7676/tcp  open  imqbrokerd
9090/tcp  open  zeus-admin
55000/tcp open  unknown
55001/tcp open  unknown

But I still can't execute command

PS C:\WINDOWS\system32> samsungctl --host 192.168.1.110 --port 55000 --method legacy KEY_CONTENTS
Traceback (most recent call last):
  File "d:\program\python\python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\program\python\python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "d:\Program\Python\Python36\Scripts\samsungctl.exe\__main__.py", line 9, in <module>
  File "d:\program\python\python36\lib\site-packages\samsungctl\__main__.py", line 102, in main
    config = _read_config()
  File "d:\program\python\python36\lib\site-packages\samsungctl\__main__.py", line 32, in _read_config
    directories.append(os.path.join(os.getenv("HOME"), ".config"))
  File "d:\program\python\python36\lib\ntpath.py", line 75, in join
    path = os.fspath(path)
TypeError: expected str, bytes or os.PathLike object, not NoneType

Maybe I should do some settings on my TV?

raydog153 commented 5 years ago

No, looks like your TV should support this, but you may have to wait till bugs are worked out more. I would also try port 55001.

Actually looking at the stack trace it looks like issue with trying to find config file and around this line of code:

directories.append(os.path.join(os.getenv("HOME"), ".config"))

What OS you using and is environment variable 'HOME' exist?

And whatever you do....DO NOT update your TV firmware. What firmware version do you have?

advokatb commented 5 years ago

I use Windows (and trying to add my TV to HomeAssistant) and there is no HOME environment variable in Windows settings. Should I create it? What folder should I specify?

TV firmware version is 002007 (didn't update it for a long time or even never).

advokatb commented 5 years ago

I've created HOME environment variable and .config file inside and now samsungctl --host 192.168.1.110 --port 55000 --method legacy KEY_CONTENTS works! Your code mainly supports UNIX systems I think. Thats why I couldn't use it out of the box.

So now I can send commands. Is there any way to power on TV from command line?

raydog153 commented 5 years ago

This isn't my code...just trying to help. I would try the forked library https://github.com/kdschlosser/samsungctl which has added some wake on lan functionality which does work for my tv model.

advokatb commented 5 years ago

This isn't my code...just trying to help. I would try the forked library https://github.com/kdschlosser/samsungctl which has added some wake on lan functionality which does work for my tv model.

What command do you use for WOL? I've tried https://github.com/kdschlosser/samsungctl/issues/47

raydog153 commented 5 years ago

Oh, I was using python script to WOL thru mac, not thru sending TV commands since most likely that will not work with my TV...

rboutotte@MacBook-Pro-2:~/samsungtv/samsungctl/samsungctl$ python wake_on_lan.py
Enter IP address:172.16.16.55
Found MAC: 38:01:95:54:53:13
Send WOL packet (Y/N)?Y
advokatb commented 5 years ago

Oh, I was using python script to WOL thru mac, not thru sending TV commands since most likely that will not work with my TV...

rboutotte@MacBook-Pro-2:~/samsungtv/samsungctl/samsungctl$ python wake_on_lan.py
Enter IP address:172.16.16.55
Found MAC: 38:01:95:54:53:13
Send WOL packet (Y/N)?Y

Problems are still here. This script asks only for IP adress, then shows an error abou get_macadress function and nothing happens. Nevermind. Thanks for your help!