{
  "added_at": "2026-11-08",
  "additional_evidence_urls": [
    "https://github.com/bikenthusiast/dyson-lamp-ble/blob/bd048faf64a5e07d856a1baa75bd7577bd5f404a/README.md",
    "https://github.com/bikenthusiast/dyson-lamp-ble/blob/bd048faf64a5e07d856a1baa75bd7577bd5f404a/docs/PROTOCOL.md"
  ],
  "category": "reconstruction-cases",
  "class": "hardware",
  "description_en": "dyson-lamp-ble reconstructs local control of a Dyson BLE lamp from MyDyson Android app analysis and device observations. Its Python library and CLI obtain an account-issued long-term key, perform the BLE session handshake and send power or synchronized-mode commands. The protocol notes describe GATT characteristics, HKDF-SHA256 key derivation and message framing.",
  "description_zh": "dyson-lamp-ble 根据对 MyDyson Android 应用和灯具的观察重建 Dyson BLE 灯的本地控制。Python 库与 CLI 获取账户签发的长期密钥，完成 BLE 会话握手并发送电源或同步模式命令。协议文档记录 GATT 特征、HKDF-SHA256 密钥派生和消息帧格式。",
  "entry_url": "https://awesomerea.org/resources/dyson-lamp-ble-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/dyson-lamp-ble-case/",
  "evidence_class": 2,
  "evidence_status": "observed",
  "evidence_url": "https://github.com/bikenthusiast/dyson-lamp-ble/blob/bd048faf64a5e07d856a1baa75bd7577bd5f404a/docs/REVERSE_ENGINEERING.md",
  "group": "cases",
  "id": "dyson-lamp-ble-case",
  "json_url": "https://awesomerea.org/resources/dyson-lamp-ble-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/dyson-lamp-ble-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/dyson-lamp-ble-case/index.md",
  "name": "dyson-lamp-ble: reconstructing local control of a Dyson lamp",
  "name_zh": "dyson-lamp-ble：重建 Dyson 灯具的本地控制",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "prerequisites",
    "prerequisites",
    "limits",
    "license"
  ],
  "requirements": [
    "Python 3.11 or later and the ble extra are required for local control.",
    "An owned Dyson BLE lamp and an account-issued device key are required; fetching the key uses the cloud extra and account access.",
    "Colour-temperature and brightness mappings are currently raw 16-bit values.",
    "MIT licence."
  ],
  "requirements_zh": [
    "本地控制需要 Python 3.11 或更高版本及 ble 可选依赖。",
    "需要自有 Dyson BLE 灯具和账户签发的设备密钥；获取密钥还需 cloud 可选依赖与账户访问权限。",
    "色温和亮度目前仅提供原始 16 位数值映射。",
    "许可证为 MIT。"
  ],
  "scope": "unknown",
  "targets": [
    "app",
    "protocol"
  ],
  "url": "https://github.com/bikenthusiast/dyson-lamp-ble",
  "verification": "source-reviewed",
  "verified_at": "2026-11-06"
}
