Skip to content

Support request: Cash Piscines Majestic 12/50 salt chlorinator #6155

Description

@rektosaure

Log message

2026-09-11 16:20:07.126 WARNING (MainThread) [custom_components.tuya_local.config_flow] Device matches petoneer_frescomini_petfountain with quality of 13%. LOCAL DPS: {"updated_at": 1789136403.221994, "101": true, "102": 60, "103": 40, "104": 12, "105": 4, "106": false, "107": 60, "108": 29, "109": 0, "110": 0, "111": 20, "112": false, "113": false, "115": 688, "116": 700, "117": 69, "118": 72, "119": "ORP", "121": 27, "122": 0, "123": 0, "127": true, "128": 0, "129": 12, "130": false, "131": false, "132": false, "134": 15, "135": 2, "136": true, "137": 6, "139": 7, "141": true, "142": 7, "144": 8, "146": true, "147": 8, "149": 9, "151": true}

Product ID

uabbsm8ioqunhgos

Product Name

Cash Piscines Majestic 12/50 salt chlorinator

DPS information

{
  "result": {
    "model": "{\"modelId\":\"e1n27wfo\",\"services\":[{\"actions\":[],\"code\":\"\",\"description\":\"\",\"events\":[],\"name\":\"\",\"properties\":[
{\"abilityId\":101,\"accessMode\":\"rw\",\"code\":\"switch\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_power2\",\"scope\":\"\",\"attribute\":\"4096\"},\"name\":\"开关\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":102,\"accessMode\":\"ro\",\"code\":\"output\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"制氯等级-上传\",\"typeSpec\":{\"type\":\"value\",\"max\":100,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"%\"}},
{\"abilityId\":103,\"accessMode\":\"rw\",\"code\":\"volume\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"泳池大小\",\"typeSpec\":{\"type\":\"value\",\"max\":200,\"min\":5,\"scale\":0,\"step\":5,\"unit\":\"m³\"}},
{\"abilityId\":104,\"accessMode\":\"rw\",\"code\":\"chlorinate\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"制氯时间\",\"typeSpec\":{\"type\":\"value\",\"max\":24,\"min\":1,\"scale\":0,\"step\":1,\"unit\":\"h\"}},
{\"abilityId\":105,\"accessMode\":\"rw\",\"code\":\"reverse\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"倒极时间\",\"typeSpec\":{\"type\":\"value\",\"max\":8,\"min\":2,\"scale\":0,\"step\":2,\"unit\":\"h\"}},
{\"abilityId\":106,\"accessMode\":\"rw\",\"code\":\"boost_mode\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"加速制氯\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":107,\"accessMode\":\"rw\",\"code\":\"set_output\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"制氯等级-下发\",\"typeSpec\":{\"type\":\"value\",\"max\":100,\"min\":20,\"scale\":0,\"step\":20,\"unit\":\"%\"}},
{\"abilityId\":108,\"accessMode\":\"ro\",\"code\":\"salinity\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"当前含盐量\",\"typeSpec\":{\"type\":\"value\",\"max\":100,\"min\":0,\"scale\":1,\"step\":1,\"unit\":\"g/L\"}},
{\"abilityId\":109,\"accessMode\":\"ro\",\"code\":\"salt_dosage\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"需加盐量\",\"typeSpec\":{\"type\":\"value\",\"max\":1000,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"kg\"}},
{\"abilityId\":110,\"accessMode\":\"ro\",\"code\":\"message\",\"description\":\"\",\"extensions\":{\"scope\":\"fault\",\"trigger\":\"direct\"},\"name\":\"消息\",\"typeSpec\":{\"type\":\"bitmap\",\"label\":[\"bit0\",\"bit1\",\"bit2\",\"bit3\",\"bit4\",\"bit5\",\"bit6\",\"bit7\",\"bit8\",\"bit9\",\"bit10\",\"bit11\",\"bit12\",\"bit13\"],\"maxlen\":14}},
{\"abilityId\":111,\"accessMode\":\"ro\",\"code\":\"water_temp\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"水温\",\"typeSpec\":{\"type\":\"value\",\"max\":60,\"min\":-20,\"scale\":0,\"step\":1,\"unit\":\"℃\"}},
{\"abilityId\":112,\"accessMode\":\"rw\",\"code\":\"data_tip\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"报错缺盐提示\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":113,\"accessMode\":\"ro\",\"code\":\"new_switch\",\"description\":\"\",\"extensions\":{\"iconName\":\"\",\"scope\":\"\",\"attribute\":\"0\",\"trigger\":\"direct\"},\"name\":\"消息提示开关\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":115,\"accessMode\":\"ro\",\"code\":\"orp\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"ORP\",\"typeSpec\":{\"type\":\"value\",\"max\":1000,\"min\":-200,\"scale\":0,\"step\":1,\"unit\":\"mV\"}},
{\"abilityId\":116,\"accessMode\":\"rw\",\"code\":\"set_orp\",\"description\":\"\",\"name\":\"ORP阈值设定\",\"typeSpec\":{\"type\":\"value\",\"max\":800,\"min\":400,\"scale\":0,\"step\":10,\"unit\":\"mV\"}},
{\"abilityId\":117,\"accessMode\":\"ro\",\"code\":\"ph\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"pH\",\"typeSpec\":{\"type\":\"value\",\"max\":140,\"min\":0,\"scale\":1,\"step\":1,\"unit\":\"\"}},
{\"abilityId\":118,\"accessMode\":\"rw\",\"code\":\"set_ph\",\"description\":\"\",\"name\":\"pH阈值设定\",\"typeSpec\":{\"type\":\"value\",\"max\":76,\"min\":68,\"scale\":1,\"step\":1,\"unit\":\"\"}},
{\"abilityId\":119,\"accessMode\":\"rw\",\"code\":\"mode\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"工作模式\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"ORP\",\"TIME\",\"FLOW\"]}},
{\"abilityId\":120,\"accessMode\":\"ro\",\"code\":\"status_show\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"当前状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"Chlorination\",\"Suspend\",\"ReversePole\",\"BOOST\"]}},
{\"abilityId\":121,\"accessMode\":\"ro\",\"code\":\"energy\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"能耗\",\"typeSpec\":{\"type\":\"value\",\"max\":99999,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"W\"}},
{\"abilityId\":122,\"accessMode\":\"ro\",\"code\":\"pump\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"水泵状态\",\"typeSpec\":{\"type\":\"value\",\"max\":99,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},
{\"abilityId\":123,\"accessMode\":\"ro\",\"code\":\"error_1\",\"description\":\"\",\"extensions\":{\"iconName\":\"\",\"scope\":\"fault\",\"attribute\":\"0\",\"trigger\":\"direct\"},\"name\":\"报错提示\",\"typeSpec\":{\"type\":\"bitmap\",\"label\":[\"bit0\",\"bit1\",\"bit2\",\"bit3\",\"bit4\"],\"maxlen\":5}},
{\"abilityId\":127,\"accessMode\":\"ro\",\"code\":\"flow\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"水流开关状态\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":128,\"accessMode\":\"ro\",\"code\":\"time_runtime\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"time模式开启时间\",\"typeSpec\":{\"type\":\"value\",\"max\":24,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},
{\"abilityId\":129,\"accessMode\":\"ro\",\"code\":\"time_total\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"time模式总时间\",\"typeSpec\":{\"type\":\"value\",\"max\":24,\"min\":1,\"scale\":0,\"step\":1,\"unit\":\"\"}},
{\"abilityId\":130,\"accessMode\":\"ro\",\"code\":\"ph_change\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"PH变色\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":131,\"accessMode\":\"ro\",\"code\":\"orp_change\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"ORP变色\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":132,\"accessMode\":\"ro\",\"code\":\"salt_change\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"盐度变色\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":134,\"accessMode\":\"rw\",\"code\":\"pump_runtime\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"运行时间\",\"typeSpec\":{\"type\":\"value\",\"max\":120,\"min\":15,\"scale\":0,\"step\":15,\"unit\":\"min\"}},
{\"abilityId\":135,\"accessMode\":\"rw\",\"code\":\"pump_intervaltime\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"间隔时间\",\"typeSpec\":{\"type\":\"value\",\"max\":24,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"h\"}},
{\"abilityId\":136,\"accessMode\":\"rw\",\"code\":\"switch_pump\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"水泵联动开关\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":137,\"accessMode\":\"rw\",\"code\":\"timer1_h1\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"timer1_h1\",\"typeSpec\":{\"type\":\"value\",\"max\":23,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"h\"}},
{\"abilityId\":139,\"accessMode\":\"rw\",\"code\":\"timer1_h2\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"timer1_h2\",\"typeSpec\":{\"type\":\"value\",\"max\":23,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"h\"}},
{\"abilityId\":141,\"accessMode\":\"rw\",\"code\":\"timer1_enable\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"timer1_enable\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":142,\"accessMode\":\"rw\",\"code\":\"timer2_h1\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"timer2_h1\",\"typeSpec\":{\"type\":\"value\",\"max\":23,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"h\"}},
{\"abilityId\":144,\"accessMode\":\"rw\",\"code\":\"timer2_h2\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"timer2_h2\",\"typeSpec\":{\"type\":\"value\",\"max\":23,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"h\"}},
{\"abilityId\":146,\"accessMode\":\"rw\",\"code\":\"timer2_enable\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"timer2_enable\",\"typeSpec\":{\"type\":\"bool\"}},
{\"abilityId\":147,\"accessMode\":\"rw\",\"code\":\"timer3_h1\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"timer3_h1\",\"typeSpec\":{\"type\":\"value\",\"max\":23,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"h\"}},
{\"abilityId\":149,\"accessMode\":\"rw\",\"code\":\"timer3_h2\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"timer3_h2\",\"typeSpec\":{\"type\":\"value\",\"max\":23,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"h\"}},
{\"abilityId\":151,\"accessMode\":\"rw\",\"code\":\"timer3_enable\",\"description\":\"\",\"extensions\":{\"scope\":\"\",\"trigger\":\"direct\"},\"name\":\"timer3_enable\",\"typeSpec\":{\"type\":\"bool\"}}]}]}"
  },
  "success": true,
  "t": 1789137803675,
  "tid": "23e103a3adef11f18be0c6f569fbce83"
}

Information about how the device functions

This is a connected salt chlorinator for swimming pools, sold by Cash Piscines as the Majestic 12/50.

Product page:
https://www.cash-piscines.com/electrolyseur-majestic-12-50/p

The unit includes salt chlorination, ORP regulation, pH regulation, salinity measurement, water temperature measurement, flow detection and programmable operating modes/timers.

Main functions identified from the Tuya data model:

  • Main power switch
  • Chlorine production feedback and writable production setpoint
  • Pool volume
  • Chlorination time
  • Polarity reversal interval
  • Boost mode
  • Salinity and required salt dosage
  • Water temperature
  • ORP measurement and setpoint
  • pH measurement and setpoint
  • ORP / TIME / FLOW operating modes
  • Operating status
  • Power measurement
  • Water flow detection
  • Pump linkage and pump cycle settings
  • Three programmable timer windows
  • Fault/status bitmaps

I created and tested a local tuya-local device configuration using this data model.

All writable datapoints exposed by the config were tested from Home Assistant and correctly applied to the physical device, with the values reflected back in the Tuya application / device state. Read-only measurements also report correctly.

One notable datapoint is DP120 (status_show). It is present in QueryThingsDataModel and in the Tuya cloud properties, but it was not present in the LOCAL DPS returned during local discovery, so it should be marked optional: true.

DP102 and DP107 are separate:

  • DP102 output is read-only chlorine output feedback.
  • DP107 set_output is the writable chlorine production setpoint.

DP121 is named energy by Tuya but its unit is W, so it represents power.

I also have a tested tuya-local YAML config covering the complete data model and can provide it if useful.

cashpiscines_majestic1250_saltchlorinator.yaml

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    • Status
      🔖 Ready

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions