local device = {} device.model = "JKD-816COM-Z" device.vendor = "Tuya" device.description = "Carbon monoxide & gas sensor" device.exposes = { { type = "binary", name = "carbon_monoxide", property = "carbon_monoxide", access = 1, value_on = true, value_off = false, description = "Indicates if CO (carbon monoxide) is detected", }, { type = "numeric", name = "co", property = "co", access = 1, unit = "ppm", description = "The measured CO (carbon monoxide) value", }, { type = "binary", name = "gas", property = "gas", access = 1, value_on = true, value_off = false, description = "Indicates whether the device detected gas", }, { type = "numeric", name = "gas_value", property = "gas_value", access = 1, unit = "LEL", description = "Measured gas concentration", }, { type = "binary", name = "silence", property = "silence", access = 3, value_on = true, value_off = false, description = "Mute the alarm buzzer", }, { type = "enum", name = "self_test", property = "self_test", access = 1, values = { "checking", "check_success", "check_failure", "others" }, }, { type = "enum", name = "fault", property = "fault", access = 1, description = "Fault status of the device (none = no fault)", values = { "none", "fault", "serious_fault", "sensor_fault", "probe_fault", "power_fault" }, }, } device.tuyaDatapoints = { { dp = 1, name = "gas", converter = "raw" }, { dp = 2, name = "gas_value", converter = "raw" }, { dp = 18, name = "carbon_monoxide", converter = "raw" }, { dp = 19, name = "co", converter = "raw" }, { dp = 16, name = "silence", converter = "raw" }, { dp = 9, name = "self_test", converter = "lookup", lookup = { checking = 0, check_success = 1, check_failure = 2, others = 3 } }, { dp = 11, name = "fault", converter = "lookup", lookup = { none = 0, fault = 1, serious_fault = 2, sensor_fault = 3, probe_fault = 4, power_fault = 5 } }, } device.fingerprint = { { model = "TS0601", manufacturer = "_TZE204_qaxkdgyt", }, } return device