fp-soother-lib
A Python BLE library for the Fisher-Price Smart Connect Deluxe Soother (model DYW47).
The official app was discontinued in 2024, leaving many users with a device that could no longer be fully controlled. This library gives you direct BLE control from Python.
Usage
Standalone (scans/connects by address)
import asyncio
from fp_soother_lib import SootherClient
async def main():
async with SootherClient.connect("AA:BB:CC:DD:EE:FF", session_key=key) as soother:
if not soother.is_paired:
await soother.pair() # device must already be in pairing mode
await soother.set_nightlight(True)
print(soother.state)
asyncio.run(main())
If address is omitted, SootherClient.connect() scans for the first soother found.
Host-managed discovery (e.g. Home Assistant)
A host that owns its own BLE scanner (Home Assistant's bluetooth integration
is the main example) should resolve BLEDevice objects itself rather than
letting this library run its own scan. Pass ble_device/ble_device_callback
to SootherClient instead of relying on address-based discovery:
from fp_soother_lib import SootherClient
client = SootherClient(address, session_key=key, ble_device_callback=my_resolver)
await client.open()
...
await client.close()
my_resolver is a zero-arg callable returning the host's current best
BLEDevice for address (e.g. Home Assistant's
bluetooth.async_ble_device_from_address), called fresh on every
(re)connect. See AGENTS.md in the repository root for the full rationale.
Legal / Disclaimer
This is an independent, open-source project not affiliated with Fisher-Price or Mattel. Reverse engineering for interoperability purposes is generally permitted under applicable law (e.g. EU Software Directive, US DMCA §1201(f)). This project does not redistribute any Fisher-Price code or assets. Use at your own risk. "Fisher-Price" and "Deluxe Soother" are trademarks of their respective owners.
Metadata
Release files for fp-soother-lib 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fp_soother_lib-1.0.0.tar.gz | 25.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fp_soother_lib-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.1 kB
Release files / fp_soother_lib-1.0.0.tar.gz
| Download URL | fp_soother_lib-1.0.0.tar.gz |
|---|---|
| Size | 25.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
07c2a7bccb366458ea7eda7b5c0c01ffdb7aaaefd3ce2cd873621506141b786d
|
|
BLAKE2b-256 checksum How to use checksums |
08c142ab9ba2c2742e607c26fd6d329a68cef9821078e45be6b74808f27867f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / fp_soother_lib-1.0.0-py3-none-any.whl
| Download URL | fp_soother_lib-1.0.0-py3-none-any.whl |
|---|---|
| Size | 30.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
10972e129f9fbdc4c4cf1f0e009ea9c6b0c896ba23066c22ee0910ca4812fb4d
|
|
BLAKE2b-256 checksum How to use checksums |
dfea94c24dbc5feaca5188c023be0f7c6f44a77b8c6dc922e426208829b08076
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|