Python Control for PlayStation 4 consoles.
==========================================

|BuildStatus| |PypiVersion| |PyPiPythonVersions|

Description
--------------------
A full Python implementation of the Node.js package, ps4-waker.
This is an unofficial API for the PS4 2nd Screen App.

Compatibility
--------------------
Tested on:
Python 3.5/3.6/3.7

Installation
--------------------
To install run:

.. code:: bash

    pip install pyps4-homeassistant

Protocol
--------------------
UDP is used to get status updates and retrieve user credentials.

Ports
--------------------
PS4 listens on ports 987 and 997 (Priveleged).
Must run command on python path if no access.
This is so you do not need sudo/root priveleges to run although you can run as sudo but it is not advised.

Example:

.. code:: bash

    sudo setcap 'cap_net_bind_service=+ep' /usr/bin/python3.5

Usage
--------------------
API should be accessed initially like the following examples.

Most functions can be accessed from the high-level PS4 object. You will need to pass in th IP address of your PS4 and your PSN credentials.

.. code:: python

    import pyps4_homeassistant

    pyps4_homeassistant.ps4.Ps4("192.168.0.2", "YourCredentials")


Your PSN Credentials can be generated by running:

.. code:: python

    creds = pyps4_homeassistant.credential.Credentials()

    YourCredentials = creds.start()

This will start the credential service and will return the credentials for the PSN Account. You will need to get the PS4 Second Screen app for Android or iOS to do this. Once you have logged in with your acccount in the app and started the service, refresh the devices in the app and select the device named 'Home-Assistant'. 



Cover Art Issues
--------------------
If you find that media art cannot be found. Please post an issue with your Region, Country, Title of game, an ID of game.

To Do List:
--------------------
- Port TCP and UDP functions to Asyncio.


Credits:
--------------------
Thanks to hthiery for writing the underlying socket protocol in Python. https://github.com/hthiery/python-ps4

References:
--------------------

- https://github.com/dsokoloski/ps4-wake
- https://github.com/dhleong/ps4-waker
- https://github.com/hthiery/python-ps4

.. _ps4-waker: https://github.com/dhleong/ps4-waker

.. |BuildStatus| image:: https://travis-ci.org/ktnrg45/pyps4-homeassistant.png?branch=master
                 :target: https://travis-ci.org/ktnrg45/pyps4-homeassistant
.. |PyPiVersion| image:: https://badge.fury.io/py/pyps4-homeassistant.svg
                 :target: http://badge.fury.io/py/pyps4-homeassistant
.. |PyPiPythonVersions| image:: https://img.shields.io/pypi/pyversions/pyps4-homeassistant.svg
                        :alt: Python versions
                        :target: http://badge.fury.io/py/pyps4-homeassistant
