devices.esphome.io
ProfiCook PC-WKS 1167G 1.5L Kettle (501167)
ProfiCook PC-WKS 1167G 1.5L Kettle (501167)
Device Type: miscElectrical Standard: euBoard: esp8266
GPIO Pinout
Pin | Function |
---|---|
GPIO01 | Tuya RX |
GPIO03 | Tuya TX |
Pinout from ProfiCook PC-WKS Template for Tasmota
Tuya Datapoints (all credits to templates.blakadder.com)
Functions
MCU Product ID: {“p”:”h6MjwrnldNTu4kX3”,”v”:”1.0.0”,”m”:1}
dpID 101 controls kettle modes (corresponds to device buttons)
- 0 - heat to 45°C then maintain temperature for 2 hours
- 1 - heat to 60°C then maintain temperature for 2 hours
- 2 - heat to 85°C then maintain temperature for 2 hours
- 3 - heat to 100°C then maintain temperature for 3 minutes
- 4 - heat to 100°C (power button flashing when active)
- 5 - heat to preset temperature (70°C by default, can be changed using dpID 102) then maintain temperature for 2 hours (keep warm button)
- 6 - reset any running program and enter standby mode (pulsating power button)
dpID 102 sets water temperature for mode 5 (keep warm button), recommended 35 - 100 range
dpID 104 error notification:
- 0x00 - no error
- 0x01 - kettle empty
- 0x04 - kettle overheated due to too much or too little water
dpID 105 reports current water temperature
dpID 106 reports kettle status:
- 1 - kettle removed from base
- 2 - standby mode
- 3 - heating to programmed target temperature
- 4 - cooling down to programmed target temperature
- 5 - maintaining programmed target temperature
dpID 107 reports approximate time until programmed target temperature is reached or remaining time for maintaining programmed target temperature when in mode 5. Cannot be changed!
dpID 108 is still unknown, it is always reporting 5 and doesn’t respond to any of the TuyaSend commands.
Basic Configuration
esphome: name: smart_kettle platform: ESP8266 board: esp8285
wifi: ssid: !secret wifi_ssid password: !secret wifi_password fast_connect: true
logger: baud_rate: 0
api: encryption: key: !secret api_encryption_key
ota: password: !secret ota_password# Device Specific Configuart: rx_pin: GPIO3 tx_pin: GPIO1 baud_rate: 9600
# Register the Tuya MCU connectiontuya:
text_sensor: - platform: template name: Kettle State icon: mdi:kettle id: text_state - platform: template name: Kettle Error icon: mdi:alert-circle-outline id: text_error
select: - platform: template name: "Kettle mode" id: kettle_control options: - 45° - 60° - 85° - 100° - 100° and off - Custom - "Off" optimistic: true set_action: - lambda: |- if (strcmp(x.c_str(), "45°") == 0) { tuya_tuya_id->set_enum_datapoint_value(101, 0); } else if (strcmp(x.c_str(), "60°") == 0) { tuya_tuya_id->set_enum_datapoint_value(101, 1); } else if (strcmp(x.c_str(), "85°") == 0) { tuya_tuya_id->set_enum_datapoint_value(101, 2); } else if (strcmp(x.c_str(), "100°") == 0) { tuya_tuya_id->set_enum_datapoint_value(101, 3); } else if (strcmp(x.c_str(), "100° and off") == 0) { tuya_tuya_id->set_enum_datapoint_value(101, 4); } else if (strcmp(x.c_str(), "Custom") == 0) { tuya_tuya_id->set_enum_datapoint_value(101, 5); } else { tuya_tuya_id->set_enum_datapoint_value(101, 6); }number: - platform: "tuya" name: "Kettle Custom Temperature" number_datapoint: 102 icon: mdi:oil-temperature min_value: 35 max_value: 100 step: 1
sensor: - platform: template name: Kettle Temperature id: kettle_temp unit_of_measurement: "°C" accuracy_decimals: 0
- platform: tuya id: tuya_105 sensor_datapoint: 105 on_value: then: - if: condition: lambda: |- return static_cast<int>(id(tuya_106).state) == 1; then: - sensor.template.publish: id: kettle_temp state: !lambda |- return 0; else: - sensor.template.publish: id: kettle_temp state: !lambda |- return id(tuya_105).state;
- platform: tuya id: kettle_remaining name: Kettle Remaining Time icon: mdi:clock-time-five-outline sensor_datapoint: 107 unit_of_measurement: "min" accuracy_decimals: 0
- platform: tuya id: tuya_101 sensor_datapoint: 101 on_value: then: - select.set_index: id: kettle_control index: !lambda |- return id(tuya_101).state;
- platform: tuya id: tuya_106 sensor_datapoint: 106 on_value: then: - text_sensor.template.publish: id: text_state state: !lambda |- switch(static_cast<int>(id(tuya_106).state)) { case 1: return {"Lifted"}; case 2: return {"Standby"}; case 3: return {"Heating"}; case 4: return {"Cooling"}; case 5: return {"Maintaining Temp"}; default: return {""}; } - platform: tuya id: tuya_104 sensor_datapoint: 104 on_value: then: - if: condition: lambda: |- return id(kettle_temp).raw_state == 0; else: - text_sensor.template.publish: id: text_error state: !lambda |- switch(static_cast<int>(id(tuya_104).state)) { case 0: return {"OK"}; case 1: return {"Empty"}; case 4: return {"Overheated"}; default: return {"other error"}; }