npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

homebridge-playstation-title-endpoint

v2.1.0

Published

PlayStation integration for Homebridge using PlayActor and an external title endpoint (with NPSSO UX mode).

Readme

Homebridge Playstation (Docker-friendly fork)

Playstation integration for Homebridge.

Hey Siri, turn on PS5 — now fully compatible with Docker environments.

This plugin exposes your PlayStation 4/5 as a HomeKit Television accessory.
It uses the excellent playactor library for discovery and power control, and an external HTTP endpoint to retrieve the currently playing title.

This project is inspired by the original work of NikDev.
This fork was created to support Homebridge Docker architectures, where local Python or PSNAWP installations are not suitable.

No Python.
No PSNAWP.
No system dependencies.
Everything runs cleanly inside a container.

Features

  • Power ON/OFF via PlayActor (Remote Play protocol)
  • Real‑time game title via external HTTP endpoint
  • Dynamic HomeKit InputSource updated with the current title
  • NPSSO UX mode (token expired state)
  • Multilingual (English / Français)
  • Fully compatible with Homebridge Docker deployments
  • Works on both Homebridge v1.8 and Homebridge v2
  • No Python, no PSNAWP local installation, no system dependencies

Requirements

| | | |---|---| | Homebridge | ^1.8.0 or ^2.0.0 | | Node.js | 20.19+, 22.12+ or 24+ |

Homebridge v2 ships HAP‑NodeJS v2 and drops Node.js 16/18, so 2.1.0 of this plugin does the same. If you are still on Node 16 or 18, stay on 2.0.5 until you can upgrade your runtime.

Installation

You can install it via Homebridge UI or manually using:

npm install -g homebridge-playstation-title-endpoint

Configuration

Pairing with homebridge-playstation-login

Before Homebridge can control your console, you must pair it using the Remote Play 8‑digit code.

  1. Put your PlayStation in Remote Play pairing mode
    Settings → System → Remote Play → Link Device

  2. Run the pairing tool:

homebridge-playstation-login
  1. Enter the 8‑digit code shown on your console. This step is required only once. The generated credentials are stored locally and used by PlayActor for power control.

Then add the console to HomeKit with Hombebridge pairing code displayed on Homebridge's logs

Parameters

  • endpoint
    URL of your external status endpoint. Must return JSON with "title".

  • pollInterval
    Polling interval in milliseconds (default: 15000, minimum: 5000).
    Values below the minimum are clamped and a warning is logged.

  • language
    "en" or "fr" for titles and log messages.

External Endpoint

The plugin expects a simple JSON response:

{
"online": true,
"title": "Horizon Forbidden West"
}

NPSSO UX Mode

If the endpoint returns a title containing "npsso" (case‑insensitive):

{
"online": true,
"title": "NPSSO expiré"
}

The plugin enters NPSSO UX mode:

  • HomeKit displays “NPSSO expired” (or FR equivalent)
  • The console remains marked as ON
  • No false ON/OFF transitions
  • Normal mode resumes automatically when a valid title is received

Title sanitising

HAP‑NodeJS v2 (bundled with Homebridge 2) validates names against Apple's HomeKit naming rules and rejects anything outside letters, numbers, spaces, apostrophes and common punctuation. Game titles regularly contain , ® or emoji, so every title is sanitised before it reaches HomeKit:

| Endpoint returns | HomeKit shows | |---|---| | HELLDIVERS™ 2 | HELLDIVERS 2 | | Marvel's Spider-Man 2 | Marvel's Spider-Man 2 | | 🎮 (nothing usable) | Not playing |

Names are also truncated to the 64‑character HomeKit limit.

HomeKit Pairing

At startup, Homebridge will log a message similar to:

Please add [PS5 XYZ] manually in Home app. Setup Code: 111-22-333

Open the Home app → Add Accessory → enter the code.

Docker Compatibility

This fork was designed specifically for Homebridge Docker:

  • No Python
  • No PSNAWP local installation
  • No system dependencies
  • No privileged container required
  • All logic runs inside Node.js
  • External endpoint handles authentication and title retrieval

This architecture is stable, reproducible, and appliance‑grade.

Language Support

English and Français.
Affects fallback titles, NPSSO messages, and logs.

"language": "fr"

Troubleshooting

  • Make sure Remote Play is enabled on your PlayStation
  • Ensure your endpoint is reachable from the Homebridge container
  • If titles do not update, verify the endpoint returns valid JSON
  • If HomeKit shows “NPSSO expired”, renew your NPSSO token
  • Restart Homebridge after changing configuration

If at some point you have any problem, you can try to reset the Homebridge accessory and re-pair it.

To do so, go to Homebridge UI > "Settings" > "Unpair Bridges / Cameras / TVs / External Accessories" and delete the Playstation.

To reset the credentials used by PlayActor, you need to manually remove the directory /home/homebridge/.config/playactor

Upgrading from 2.0.x to 2.1.0

No configuration change is required — 2.1.0 reads the same config.json and the same PlayActor credentials, and the accessory keeps its HomeKit identity, so there is nothing to re-pair.

What changed under the hood:

  • Declares support for Homebridge v2 (engines.homebridge: "^1.8.0 || ^2.0.0"), so the readiness check in the Homebridge UI turns green
  • Requires Node.js 20.19+ (Homebridge v2 itself requires 22+)
  • Discovery now runs on didFinishLaunching instead of during plugin load, so the plugin no longer delays Homebridge startup
  • Timers are released on the Homebridge shutdown event
  • Endpoint requests use fetch with a 10s timeout, instead of an untimed http.get that could hold a socket open forever
  • Titles are sanitised for HAP‑NodeJS v2's name validation (see above)
  • pollInterval now defaults to 15000 ms everywhere (the accessory used to fall back to 120000 ms while the config UI advertised 15000 ms)

Credits

This project is based on the original work of NikDev
and uses the excellent playactor library by dhleong.

This fork is maintained by Djoko‑cli
with a focus on Docker compatibility and appliance‑grade behavior.

License

This project is licensed under the MIT License.