Skip to main content

Async client for old Samsung air conditioners using the DPLUG/AC14K protocol (TLS, port 2878)

Project description

pysamsung-dplug

Async Python client for old Samsung air conditioners that speak the legacy DPLUG / AC14K protocol over TLS on port 2878 (Wi-Fi modules such as SWL-B70F, used by the AR**HSFS generation, ~2013–2015).

These units were dropped by SmartThings. This library lets you control them locally again — no cloud. It is the protocol layer used by the samsung_ac_dplug Home Assistant integration, but works standalone.

Features

  • Mutual-TLS handshake with the bundled Samsung client certificate (legacy TLS 1.0 / weak ciphers handled for you).
  • Token acquisition (GetToken), authentication (AuthToken).
  • Read full device state (DeviceState) and send commands (DeviceControl).
  • Auto-discover the device id (DeviceList) and a passive async_probe().

Install

pip install pysamsung-dplug

Usage

import asyncio
from samsung_dplug import SamsungAcClient, build_ssl_context

async def main():
    ctx = build_ssl_context()                      # uses the bundled certificate
    client = SamsungAcClient("192.168.1.53", token="xxxxxxxx-....", ssl_context=ctx)
    state = await client.async_get_state()
    print("Power:", state["AC_FUN_POWER"], "Room:", state["AC_FUN_TEMPNOW"])
    await client.async_set("AC_FUN_POWER", "On")

asyncio.run(main())

Getting a token

The unit only issues a token at power-on (a physical proof-of-access step):

client = SamsungAcClient("192.168.1.53", ssl_context=ctx)
# turn the unit OFF, call this, then turn it ON within ~30 s:
token = await client.async_get_token()

build_ssl_context() does blocking file I/O; inside async frameworks run it in an executor (e.g. Home Assistant: await hass.async_add_executor_job(build_ssl_context)).

Protocol notes

Reverse-engineered from the official Smart Air Conditioner app and live devices. The unit greets with DPLUG-1.x, requires mutual TLS, and uses an XML request/response protocol. The DUID equals the Wi-Fi module MAC without separators. See the Home Assistant integration repo for the full write-up, including the undocumented APConnectionConfig Wi-Fi provisioning command.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysamsung_dplug-0.7.0.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysamsung_dplug-0.7.0-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file pysamsung_dplug-0.7.0.tar.gz.

File metadata

  • Download URL: pysamsung_dplug-0.7.0.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pysamsung_dplug-0.7.0.tar.gz
Algorithm Hash digest
SHA256 adb77813b78b6fcfef0a007bb3e5b45a42d8a1e81a6705ef52f9b69f6df34273
MD5 6b24b9759753f7e5e1daaa262d093377
BLAKE2b-256 6a32191f8bb808b6113b492a68b177c2cb76ee86b489485ca58a85a724b0139b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysamsung_dplug-0.7.0.tar.gz:

Publisher: publish.yml on porech/pysamsung-dplug

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pysamsung_dplug-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: pysamsung_dplug-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pysamsung_dplug-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d993c6f9970deec19ee2e06dbffe2f6a8a4a5031fa65556978a9ccf1550dbcde
MD5 2cf704b0b9c78601d93e6e6e3f8af3a3
BLAKE2b-256 37f3f899db2924534f985a75ea5406ed78161fae32f37a5eea457ca66c922c8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysamsung_dplug-0.7.0-py3-none-any.whl:

Publisher: publish.yml on porech/pysamsung-dplug

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page