Indeed it looks different to all I have seen for now, when getting details about Tuya devices from their api browser.
But yeah, I think the relays for the plugs are only indirectly controlled by “min” and “max” value for e.g. PH or ORP.
I opened the device, connected RX/TX of the CB3S chip to an ESP32 TX/RX.
So I am using that device only for measuring and doing the work in an own ESP.
Maybe useful for others:
additionally some infos from the iot.tuya
{
"result": {
"category": "dgnbj",
"functions": [
{
"code": "temp_warn_max",
"desc": "{\"unit\":\" ℃\",\"min\":-100,\"max\":1100,\"scale\":1,\"step\":1}",
"name": "温度高报警值",
"type": "Integer",
"values": "{\"unit\":\" ℃\",\"min\":-100,\"max\":1100,\"scale\":1,\"step\":1}"
},
{
"code": "temp_warn_min",
"desc": "{\"unit\":\" ℃\",\"min\":-100,\"max\":1100,\"scale\":1,\"step\":1}",
"name": "温度低报警值",
"type": "Integer",
"values": "{\"unit\":\" ℃\",\"min\":-100,\"max\":1100,\"scale\":1,\"step\":1}"
},
{
"code": "ph_warn_max",
"desc": "{\"unit\":\"ph\",\"min\":0,\"max\":1500,\"scale\":2,\"step\":1}",
"name": "pH 高报警值",
"type": "Integer",
"values": "{\"unit\":\"ph\",\"min\":0,\"max\":1500,\"scale\":2,\"step\":1}"
},
{
"code": "ph_warn_min",
"desc": "{\"unit\":\"ph\",\"min\":0,\"max\":1500,\"scale\":2,\"step\":1}",
"name": "pH 低报警值",
"type": "Integer",
"values": "{\"unit\":\"ph\",\"min\":0,\"max\":1500,\"scale\":2,\"step\":1}"
},
{
"code": "tds_warn_max",
"desc": "{\"unit\":\"PPM\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}",
"name": "TDS 高报警值",
"type": "Integer",
"values": "{\"unit\":\"PPM\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "tds_warn_min",
"desc": "{\"unit\":\"PPM\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}",
"name": "TDS 低报警值",
"type": "Integer",
"values": "{\"unit\":\"PPM\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "ec_warn_max",
"desc": "{\"unit\":\"us\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}",
"name": "EC高报警值",
"type": "Integer",
"values": "{\"unit\":\"us\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "ec_warn_min",
"desc": "{\"unit\":\"us\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}",
"name": "EC低报警值",
"type": "Integer",
"values": "{\"unit\":\"us\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "salinity_warn_max",
"desc": "{\"unit\":\"ppm\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}",
"name": "盐度高报警值",
"type": "Integer",
"values": "{\"unit\":\"ppm\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "salinity_warn_min",
"desc": "{\"unit\":\"ppm\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}",
"name": "盐度低报警值",
"type": "Integer",
"values": "{\"unit\":\"ppm\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "pro_warn_max",
"desc": "{\"unit\":\" S.G\",\"min\":500,\"max\":2000,\"scale\":3,\"step\":1}",
"name": "比重高报警值",
"type": "Integer",
"values": "{\"unit\":\" S.G\",\"min\":500,\"max\":2000,\"scale\":3,\"step\":1}"
},
{
"code": "pro_warn_min",
"desc": "{\"unit\":\" S.G\",\"min\":500,\"max\":2000,\"scale\":3,\"step\":1}",
"name": "比重低报警值",
"type": "Integer",
"values": "{\"unit\":\" S.G\",\"min\":500,\"max\":2000,\"scale\":3,\"step\":1}"
},
{
"code": "orp_warn_max",
"desc": "{\"unit\":\"mV\",\"min\":-2000,\"max\":2000,\"scale\":0,\"step\":1}",
"name": "ORP高报警值",
"type": "Integer",
"values": "{\"unit\":\"mV\",\"min\":-2000,\"max\":2000,\"scale\":0,\"step\":1}"
},
{
"code": "orp_warn_min",
"desc": "{\"unit\":\"mV\",\"min\":-2000,\"max\":2000,\"scale\":0,\"step\":1}",
"name": "ORP低报警值",
"type": "Integer",
"values": "{\"unit\":\"mV\",\"min\":-2000,\"max\":2000,\"scale\":0,\"step\":1}"
},
{
"code": "cf_warn_max",
"desc": "{\"unit\":\"CF\",\"min\":0,\"max\":199999,\"scale\":2,\"step\":1}",
"name": "CF高报警值",
"type": "Integer",
"values": "{\"unit\":\"CF\",\"min\":0,\"max\":199999,\"scale\":2,\"step\":1}"
},
{
"code": "cf_warn_min",
"desc": "{\"unit\":\"CF\",\"min\":1,\"max\":199999,\"scale\":2,\"step\":1}",
"name": "CF底报警值",
"type": "Integer",
"values": "{\"unit\":\"CF\",\"min\":1,\"max\":199999,\"scale\":2,\"step\":1}"
},
{
"code": "rh_warn_max",
"desc": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}",
"name": "湿度高报警值",
"type": "Integer",
"values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
},
{
"code": "rh_warn_min",
"desc": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}",
"name": "湿度低报警值",
"type": "Integer",
"values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
}
],
"status": [
{
"code": "temp_current",
"name": "温度值",
"type": "Integer",
"values": "{\"unit\":\"℃\",\"min\":-100,\"max\":1100,\"scale\":1,\"step\":1}"
},
{
"code": "sensor_list",
"name": "传感器列表",
"type": "Raw",
"values": "{}"
},
{
"code": "temp_warn_max",
"name": "温度高报警值",
"type": "Integer",
"values": "{\"unit\":\" ℃\",\"min\":-100,\"max\":1100,\"scale\":1,\"step\":1}"
},
{
"code": "temp_warn_min",
"name": "温度低报警值",
"type": "Integer",
"values": "{\"unit\":\" ℃\",\"min\":-100,\"max\":1100,\"scale\":1,\"step\":1}"
},
{
"code": "ph_current",
"name": "pH 值",
"type": "Integer",
"values": "{\"unit\":\"ph\",\"min\":0,\"max\":1500,\"scale\":2,\"step\":1}"
},
{
"code": "ph_warn_max",
"name": "pH 高报警值",
"type": "Integer",
"values": "{\"unit\":\"ph\",\"min\":0,\"max\":1500,\"scale\":2,\"step\":1}"
},
{
"code": "ph_warn_min",
"name": "pH 低报警值",
"type": "Integer",
"values": "{\"unit\":\"ph\",\"min\":0,\"max\":1500,\"scale\":2,\"step\":1}"
},
{
"code": "tds_current",
"name": "TDS 值",
"type": "Integer",
"values": "{\"unit\":\"ms/cm\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "tds_warn_max",
"name": "TDS 高报警值",
"type": "Integer",
"values": "{\"unit\":\"PPM\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "tds_warn_min",
"name": "TDS 低报警值",
"type": "Integer",
"values": "{\"unit\":\"PPM\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "ec_current",
"name": "EC值",
"type": "Integer",
"values": "{\"unit\":\"us\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "ec_warn_max",
"name": "EC高报警值",
"type": "Integer",
"values": "{\"unit\":\"us\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "ec_warn_min",
"name": "EC低报警值",
"type": "Integer",
"values": "{\"unit\":\"us\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "salinity_current",
"name": "盐度值",
"type": "Integer",
"values": "{\"unit\":\"PPM\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "salinity_warn_max",
"name": "盐度高报警值",
"type": "Integer",
"values": "{\"unit\":\"ppm\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "salinity_warn_min",
"name": "盐度低报警值",
"type": "Integer",
"values": "{\"unit\":\"ppm\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "pro_current",
"name": "比重值",
"type": "Integer",
"values": "{\"unit\":\" S.G\",\"min\":500,\"max\":2000,\"scale\":3,\"step\":1}"
},
{
"code": "pro_warn_max",
"name": "比重高报警值",
"type": "Integer",
"values": "{\"unit\":\" S.G\",\"min\":500,\"max\":2000,\"scale\":3,\"step\":1}"
},
{
"code": "pro_warn_min",
"name": "比重低报警值",
"type": "Integer",
"values": "{\"unit\":\" S.G\",\"min\":500,\"max\":2000,\"scale\":3,\"step\":1}"
},
{
"code": "orp_current",
"name": "ORP值",
"type": "Integer",
"values": "{\"unit\":\"mV\",\"min\":-2000,\"max\":2000,\"scale\":0,\"step\":1}"
},
{
"code": "orp_warn_max",
"name": "ORP高报警值",
"type": "Integer",
"values": "{\"unit\":\"mV\",\"min\":-2000,\"max\":2000,\"scale\":0,\"step\":1}"
},
{
"code": "orp_warn_min",
"name": "ORP低报警值",
"type": "Integer",
"values": "{\"unit\":\"mV\",\"min\":-2000,\"max\":2000,\"scale\":0,\"step\":1}"
},
{
"code": "cf_current",
"name": "CF",
"type": "Integer",
"values": "{\"unit\":\"CF\",\"min\":0,\"max\":199999,\"scale\":2,\"step\":1}"
},
{
"code": "cf_warn_max",
"name": "CF高报警值",
"type": "Integer",
"values": "{\"unit\":\"CF\",\"min\":0,\"max\":199999,\"scale\":2,\"step\":1}"
},
{
"code": "cf_warn_min",
"name": "CF底报警值",
"type": "Integer",
"values": "{\"unit\":\"CF\",\"min\":1,\"max\":199999,\"scale\":2,\"step\":1}"
},
{
"code": "rh_current",
"name": "湿度值",
"type": "Integer",
"values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
},
{
"code": "rh_warn_max",
"name": "湿度高报警值",
"type": "Integer",
"values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
},
{
"code": "rh_warn_min",
"name": "湿度低报警值",
"type": "Integer",
"values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
}
]
},
And some more
{
"result": {
"category": "dgnbj",
"functions": [
{
"code": "temp_warn_max",
"desc": "temp warn max",
"name": "temp warn max",
"type": "Integer",
"values": "{\"unit\":\" ℃\",\"min\":-100,\"max\":1100,\"scale\":1,\"step\":1}"
},
{
"code": "temp_warn_min",
"desc": "temp warn min",
"name": "temp warn min",
"type": "Integer",
"values": "{\"unit\":\" ℃\",\"min\":-100,\"max\":1100,\"scale\":1,\"step\":1}"
},
{
"code": "ph_warn_max",
"desc": "ph warn max",
"name": "ph warn max",
"type": "Integer",
"values": "{\"unit\":\"ph\",\"min\":0,\"max\":1500,\"scale\":2,\"step\":1}"
},
{
"code": "ph_warn_min",
"desc": "ph warn min",
"name": "ph warn min",
"type": "Integer",
"values": "{\"unit\":\"ph\",\"min\":0,\"max\":1500,\"scale\":2,\"step\":1}"
},
{
"code": "tds_warn_max",
"desc": "tds warn max",
"name": "tds warn max",
"type": "Integer",
"values": "{\"unit\":\"PPM\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "tds_warn_min",
"desc": "tds warn min",
"name": "tds warn min",
"type": "Integer",
"values": "{\"unit\":\"PPM\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "ec_warn_max",
"desc": "ec warn max",
"name": "ec warn max",
"type": "Integer",
"values": "{\"unit\":\"us\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "ec_warn_min",
"desc": "ec warn min",
"name": "ec warn min",
"type": "Integer",
"values": "{\"unit\":\"us\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "salinity_warn_max",
"desc": "salinity warn max",
"name": "salinity warn max",
"type": "Integer",
"values": "{\"unit\":\"ppm\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "salinity_warn_min",
"desc": "salinity warn min",
"name": "salinity warn min",
"type": "Integer",
"values": "{\"unit\":\"ppm\",\"min\":0,\"max\":199999,\"scale\":0,\"step\":1}"
},
{
"code": "pro_warn_max",
"desc": "pro warn max",
"name": "pro warn max",
"type": "Integer",
"values": "{\"unit\":\" S.G\",\"min\":500,\"max\":2000,\"scale\":3,\"step\":1}"
},
{
"code": "pro_warn_min",
"desc": "pro warn min",
"name": "pro warn min",
"type": "Integer",
"values": "{\"unit\":\" S.G\",\"min\":500,\"max\":2000,\"scale\":3,\"step\":1}"
},
{
"code": "orp_warn_max",
"desc": "orp warn max",
"name": "orp warn max",
"type": "Integer",
"values": "{\"unit\":\"mV\",\"min\":-2000,\"max\":2000,\"scale\":0,\"step\":1}"
},
{
"code": "orp_warn_min",
"desc": "orp warn min",
"name": "orp warn min",
"type": "Integer",
"values": "{\"unit\":\"mV\",\"min\":-2000,\"max\":2000,\"scale\":0,\"step\":1}"
},
{
"code": "cf_warn_max",
"desc": "cf warn max",
"name": "cf warn max",
"type": "Integer",
"values": "{\"unit\":\"CF\",\"min\":0,\"max\":199999,\"scale\":2,\"step\":1}"
},
{
"code": "cf_warn_min",
"desc": "cf warn min",
"name": "cf warn min",
"type": "Integer",
"values": "{\"unit\":\"CF\",\"min\":1,\"max\":199999,\"scale\":2,\"step\":1}"
},
{
"code": "rh_warn_max",
"desc": "rh warn max",
"name": "rh warn max",
"type": "Integer",
"values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
},
{
"code": "rh_warn_min",
"desc": "rh warn min",
"name": "rh warn min",
"type": "Integer",
"values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
}
And some more:
The instruction set of the category “dgnbj”
When I assume, I cannot change “integers” but “enum” and maybe “boolean”, I could still play around with the following:
{
"result": {
"category": "dgnbj",
"functions": [
{
"code": "muffling",
"desc": "muffling",
"name": "muffling",
"type": "Boolean",
"values": "{}"
},
{
"code": "alarm_volume",
"desc": "alarm volume",
"name": "alarm volume",
"type": "Enum",
"values": "{\"range\":[\"low\",\"middle\",\"high\",\"mute\"]}"
},
{
"code": "alarm_ringtone",
"desc": "alarm ringtone",
"name": "alarm ringtone",
"type": "Enum",
"values": "{\"range\":[\"1\",\"2\",\"3\",\"4\",\"5\"]}"
},
{
"code": "self_checking",
"desc": "self checking",
"name": "self checking",
"type": "Boolean",
"values": "{}"
},
{
"code": "alarm_time",
"desc": "alarm time",
"name": "alarm time",
"type": "Integer",
"values": "{\"unit\":\"s\",\"min\":0,\"max\":60,\"scale\":0,\"step\":1}"
},
{
"code": "alarm_switch",
"desc": "alarm switch",
"name": "alarm switch",
"type": "Boolean",
"values": "{}"
},
{
"code": "self_checking",
"desc": "self checking",
"name": "self checking",
"type": "Boolean",
"values": "{}"
},
{
"code": "alarm_switch",
"desc": "alarm switch",
"name": "alarm switch",
"type": "Boolean",
"values": "{}"
},
{
"code": "muffling",
"desc": "muffling",
"name": "muffling",
"type": "Boolean",
"values": "{}"
},
{
"code": "master_mode",
"desc": "master mode",
"name": "master mode",
"type": "Enum",
"values": "{\"range\":[\"disarmed\",\"arm\",\"home\",\"sos\"]}"
},
{
"code": "alarm_volume",
"desc": "alarm volume",
"name": "alarm volume",
"type": "Enum",
"values": "{\"range\":[\"low\",\"middle\",\"high\",\"mute\"]}"
},
{
"code": "alarm_ringtone",
"desc": "alarm ringtone",
"name": "alarm ringtone",
"type": "Enum",
"values": "{\"range\":[\"1\",\"2\",\"3\",\"4\",\"5\"]}"
},
{
"code": "alarm_time",
"desc": "alarm time",
"name": "alarm time",
"type": "Integer",
"values": "{\"unit\":\"s\",\"min\":0,\"max\":60,\"scale\":0,\"step\":1}"
}
]
},
"success": true,
"t": 1691279083637,
"tid": "0d7351fe33ea11eebce64a9bf16c60a7"
}
But as said, I will probably use an Astra Rocket Controller to controll my pool.
Hope this here is helpful for anyone looking for the same about the W2839
regards
Chris