Please add support for smart water quality meter Yieryi YY-W9909. It currently only shows water temperature and I wish it would also show pH, TDS, EC, Salinity, and Proportion (specific gravity).
Data shows up in the Tuya IOT platform Device Debugging
The tuya integeration data diagnostics shows the following:
"data": {
"endpoint": "https://openapi.tuyaus.com",
"auth_type": 0,
"country_code": "1",
"app_type": "tuyaSmart",
"mqtt_connected": true,
"disabled_by": null,
"disabled_polling": false,
"devices": [
{
"name": "FishTank",
"model": "YY-9909",
"category": "dgnbj",
"product_id": "5ok0wq7drlqyo2hb",
"product_name": "YY-9909",
"online": true,
"sub": false,
"time_zone": "-06:00",
"active_time": "2022-09-19T18:52:33+00:00",
"create_time": "2022-09-19T18:45:50+00:00",
"update_time": "2022-09-19T18:56:55+00:00",
"function": {
"ph_warn_max": {
"type": "Integer",
"value": {
"unit": "",
"min": 0,
"max": 1500,
"scale": 2,
"step": 1
}
},
"ph_warn_min": {
"type": "Integer",
"value": {
"unit": "",
"min": 0,
"max": 1500,
"scale": 2,
"step": 1
}
},
"temp_warn_max": {
"type": "Integer",
"value": {
"unit": "\u2103",
"min": -100,
"max": 1100,
"scale": 1,
"step": 1
}
},
"temp_warn_min": {
"type": "Integer",
"value": {
"unit": "\u2103",
"min": -100,
"max": 1100,
"scale": 1,
"step": 1
}
},
"tds_warn_max": {
"type": "Integer",
"value": {
"unit": "ppm",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"tds_warn_min": {
"type": "Integer",
"value": {
"unit": "ppm",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"ec_warn_max": {
"type": "Integer",
"value": {
"unit": "us",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"ec_warn_min": {
"type": "Integer",
"value": {
"unit": "us",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"salinity_warn_max": {
"type": "Integer",
"value": {
"unit": "ppm",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"salinity_warn_min": {
"type": "Integer",
"value": {
"unit": "ppm",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"pro_warn_max": {
"type": "Integer",
"value": {
"unit": "S.G",
"min": 500,
"max": 2000,
"scale": 3,
"step": 1
}
},
"pro_warn_min": {
"type": "Integer",
"value": {
"unit": "S.G",
"min": 500,
"max": 2000,
"scale": 3,
"step": 1
}
},
"orp_warn_max": {
"type": "Integer",
"value": {
"unit": "mV",
"min": -2000,
"max": 2000,
"scale": 0,
"step": 1
}
},
"orp_warn_min": {
"type": "Integer",
"value": {
"unit": "mV",
"min": -2000,
"max": 2000,
"scale": 0,
"step": 1
}
},
"cf_warn_max": {
"type": "Integer",
"value": {
"unit": "CF",
"min": 0,
"max": 199999,
"scale": 2,
"step": 1
}
},
"cf_warn_min": {
"type": "Integer",
"value": {
"unit": "CF",
"min": 1,
"max": 199999,
"scale": 2,
"step": 1
}
},
"rh_warn_max": {
"type": "Integer",
"value": {
"unit": "%",
"min": 0,
"max": 100,
"scale": 0,
"step": 1
}
},
"rh_warn_min": {
"type": "Integer",
"value": {
"unit": "%",
"min": 0,
"max": 100,
"scale": 0,
"step": 1
}
}
},
"status_range": {
"temp_current": {
"type": "Integer",
"value": {
"unit": "\u2103",
"min": -100,
"max": 1100,
"scale": 1,
"step": 1
}
},
"sensor_list": {
"type": "Raw",
"value": {}
},
"ph_current": {
"type": "Integer",
"value": {
"unit": "",
"min": 0,
"max": 1500,
"scale": 2,
"step": 1
}
},
"ph_warn_max": {
"type": "Integer",
"value": {
"unit": "",
"min": 0,
"max": 1500,
"scale": 2,
"step": 1
}
},
"ph_warn_min": {
"type": "Integer",
"value": {
"unit": "",
"min": 0,
"max": 1500,
"scale": 2,
"step": 1
}
},
"temp_warn_max": {
"type": "Integer",
"value": {
"unit": "\u2103",
"min": -100,
"max": 1100,
"scale": 1,
"step": 1
}
},
"temp_warn_min": {
"type": "Integer",
"value": {
"unit": "\u2103",
"min": -100,
"max": 1100,
"scale": 1,
"step": 1
}
},
"tds_current": {
"type": "Integer",
"value": {
"unit": "ppm",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"tds_warn_max": {
"type": "Integer",
"value": {
"unit": "ppm",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"tds_warn_min": {
"type": "Integer",
"value": {
"unit": "ppm",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"ec_current": {
"type": "Integer",
"value": {
"unit": "us",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"ec_warn_max": {
"type": "Integer",
"value": {
"unit": "us",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"ec_warn_min": {
"type": "Integer",
"value": {
"unit": "us",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"salinity_current": {
"type": "Integer",
"value": {
"unit": "ppm",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"salinity_warn_max": {
"type": "Integer",
"value": {
"unit": "ppm",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"salinity_warn_min": {
"type": "Integer",
"value": {
"unit": "ppm",
"min": 0,
"max": 199999,
"scale": 0,
"step": 1
}
},
"pro_current": {
"type": "Integer",
"value": {
"unit": "S.G",
"min": 500,
"max": 2000,
"scale": 3,
"step": 1
}
},
"pro_warn_max": {
"type": "Integer",
"value": {
"unit": "S.G",
"min": 500,
"max": 2000,
"scale": 3,
"step": 1
}
},
"pro_warn_min": {
"type": "Integer",
"value": {
"unit": "S.G",
"min": 500,
"max": 2000,
"scale": 3,
"step": 1
}
},
"orp_current": {
"type": "Integer",
"value": {
"unit": "mV",
"min": -2000,
"max": 2000,
"scale": 0,
"step": 1
}
},
"orp_warn_max": {
"type": "Integer",
"value": {
"unit": "mV",
"min": -2000,
"max": 2000,
"scale": 0,
"step": 1
}
},
"orp_warn_min": {
"type": "Integer",
"value": {
"unit": "mV",
"min": -2000,
"max": 2000,
"scale": 0,
"step": 1
}
},
"cf_current": {
"type": "Integer",
"value": {
"unit": "CF",
"min": 0,
"max": 199999,
"scale": 2,
"step": 1
}
},
"cf_warn_max": {
"type": "Integer",
"value": {
"unit": "CF",
"min": 0,
"max": 199999,
"scale": 2,
"step": 1
}
},
"cf_warn_min": {
"type": "Integer",
"value": {
"unit": "CF",
"min": 1,
"max": 199999,
"scale": 2,
"step": 1
}
},
"rh_current": {
"type": "Integer",
"value": {
"unit": "%",
"min": 0,
"max": 100,
"scale": 0,
"step": 1
}
},
"rh_warn_max": {
"type": "Integer",
"value": {
"unit": "%",
"min": 0,
"max": 100,
"scale": 0,
"step": 1
}
},
"rh_warn_min": {
"type": "Integer",
"value": {
"unit": "%",
"min": 0,
"max": 100,
"scale": 0,
"step": 1
}
}
},
"status": {
"temp_current": 240,
"sensor_list": "AQEBAQEBAA==",
"ph_current": 864,
"ph_warn_max": 0,
"ph_warn_min": 0,
"temp_warn_max": 315,
"temp_warn_min": -100,
"tds_current": 266,
"tds_warn_max": 0,
"tds_warn_min": 0,
"ec_current": 532,
"ec_warn_max": 0,
"ec_warn_min": 0,
"salinity_current": 310,
"salinity_warn_max": 0,
"salinity_warn_min": 0,
"pro_current": 984,
"pro_warn_max": 500,
"pro_warn_min": 500,
"orp_current": 0,
"orp_warn_max": -2000,
"orp_warn_min": -2000
},
"home_assistant": {
"name": "FishTank",
"name_by_user": null,
"disabled": false,
"disabled_by": null,
"entities": [
{
"disabled": false,
"disabled_by": null,
"entity_category": null,
"device_class": null,
"original_device_class": "temperature",
"icon": null,
"original_icon": null,
"unit_of_measurement": "\u00b0F",
"state": {
"entity_id": "sensor.fishtank_temperature",
"state": "75.2",
"attributes": {
"state_class": "measurement",
"unit_of_measurement": "\u00b0F",
"device_class": "temperature",
"friendly_name": "FishTank Temperature"
},
"last_changed": "2022-12-22T21:54:06.684172+00:00",
"last_updated": "2022-12-22T21:54:06.684172+00:00"
}
}
]
}
}
Device specifications (please complete the following information, which can be found in log):
Same device's id, like this:
[2021-07-01 10:18:01,351] [tuya-openapi] Request: method = GET, url = https://openapi.tuyacn.com/v1.0/devices/aaaaaaaaaaa/specifications, params = None, body = None, headers = {'client_id': 'xxxxxxxxxxxx', 'sign': 'xxxxxxxxxxxx', 'sign_method': 'HMAC-SHA256', 'access_token': '213e2d4af5e8d217abc0b104462a9f72', 't': '1625105881351', 'lang': 'en'}
2021-07-01 10:18:01 DEBUG (SyncWorker_1) [tuya iot] Response: {
"result": {
"category": "cz",
"functions": [
{
"code": "countdown_1",
"type": "Integer",
"values": "{"unit":"s","min":0,"max":86400,"scale":0,"step":1}"
},
{
"code": "switch",
"type": "Boolean",
"values": "{}"
}
],
"status": [
{
"code": "cur_voltage",
"type": "Integer",
"values": "{"unit":"V","min":0,"max":2500,"scale":0,"step":1}"
},
{
"code": "cur_current",
"type": "Integer",
"values": "{"unit":"mA","min":0,"max":30000,"scale":0,"step":1}"
},
{
"code": "switch",
"type": "Boolean",
"values": "{}"
},
{
"code": "cur_power",
"type": "Integer",
"values": "{"unit":"W","min":0,"max":50000,"scale":0,"step":1}"
},
{
"code": "countdown_1",
"type": "Integer",
"values": "{"unit":"s","min":0,"max":86400,"scale":0,"step":1}"
}
]
},
"success": true,
"t": 1625105881348
}
Device specifications (please complete the following information, which can be found in log):
Same device's id, like this:
[2021-07-01 10:18:01,351] [tuya-openapi] Request: method = GET, url = https://openapi.tuyacn.com/v1.0/devices/aaaaaaaaaaa/specifications, params = None, body = None, headers = {'client_id': 'xxxxxxxxxxxx', 'sign': 'xxxxxxxxxxxx', 'sign_method': 'HMAC-SHA256', 'access_token': '213e2d4af5e8d217abc0b104462a9f72', 't': '1625105881351', 'lang': 'en'}
2021-07-01 10:18:01 DEBUG (SyncWorker_1) [tuya iot] Response: {
{
"result": [
{
"code": "temp_current",
"value": 240
},
{
"code": "sensor_list",
"value": "AQEBAQEBAA=="
},
{
"code": "ph_current",
"value": 863
},
{
"code": "ph_warn_max",
"value": 0
},
{
"code": "ph_warn_min",
"value": 0
},
{
"code": "temp_warn_max",
"value": 315
},
{
"code": "temp_warn_min",
"value": -100
},
{
"code": "tds_current",
"value": 268
},
{
"code": "tds_warn_max",
"value": 0
},
{
"code": "tds_warn_min",
"value": 0
},
{
"code": "ec_current",
"value": 536
},
{
"code": "ec_warn_max",
"value": 0
},
{
"code": "ec_warn_min",
"value": 0
},
{
"code": "salinity_current",
"value": 312
},
{
"code": "salinity_warn_max",
"value": 0
},
{
"code": "salinity_warn_min",
"value": 0
},
{
"code": "pro_current",
"value": 984
},
{
"code": "pro_warn_max",
"value": 500
},
{
"code": "pro_warn_min",
"value": 500
},
{
"code": "orp_current",
"value": 0
},
{
"code": "orp_warn_max",
"value": -2000
},
{
"code": "orp_warn_min",
"value": -2000
}
],
"success": true,
"t": 1671743814900,
"tid": "f5dbf708823d11edb95a32baeb959352"
}
enhancement help wanted