Kogan 5-Stage 3S Air Purifier (KASMTPRIFRA)
Kogan 5-Stage 3S

Available from:

Install method:
USB to Serial

GPIO #Component
GPIO00 None
GPIO01 Tuya Tx
GPIO02 None
GPIO03 Tuya Rx
GPIO04 None
GPIO05 None
GPIO09 None
GPIO10 None
GPIO12 None
GPIO13 None
GPIO14 None
GPIO15 None
GPIO16 None
GPIO17 None
{"NAME":"Kogan Air Purifier 3S","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}

Flashed using serial, pull of the front panel and the Wi-Fi module is just behind the display. Ensure to disconnect the board from the rest of the air purifier to ensure the MCU doesn’t interfere with the rx/tx lines. TX, 3.3V, GND and GPIO0 are conveniently broken out onto pads for easy soldering shownn in the image below. Otherwise, a flashing jig can be used. I would recommend removing the piezo buzzer when you have it pulled apart, which is on the mcu board. Image of the board annotated with the pinout

Known dpIDs

dpID Function Datatype Additional Comments
1 power on/off Boolean  
2 PM2.5 reading Integer Tasmota v12.0.2.4+ is needed for fnID 80 PM2.5
3 Mode Enum 0 = manual (Speed 1) , 1 = auto, 2=sleep, 3 =turbo
4 Speed Enum 0 = Manual Speed 1, 1 = manual speed 2, 2 = manual speed 3
5 Filter life remaining Integer  
6 Ionizer Boolean  
7 Child Lock Boolean Enabling Child lock disables tasmota control as well as the physical buttons, so I would reccommend leaving it unmapped.
19 Timer Set Enum 0=off, 1 =1h, 2=2h, 3=4h, 4=8h
20 Remaining Time Integer Remaining Time in Hex


Backlog TuyaMCU 11,1; TuyaMCU 80,2; TuyaMCU 61,3; TuyaMCU 62,4; TuyaMCU 12,6; TuyaMCU 13,7; TuyaMCU 81,20;

Rules to publish enum values

Will publish speed and mode respectively to MQTT:

ON TuyaReceived#DpType4Id4 DO Publish stat/%topic%/SPEED %value% ENDON  
ON TuyaReceived#DpType4Id3 DO Publish stat/%topic%/MODE %value% ENDON

Homebridge Config

            "type": "airPurifier",
            "name": "Kogan Air Purifier",
            "url": "XXX.XXX.X.XXX:1883",

            "topics": {
                "getActive": "stat/airpurifier/POWER1",
                "setActive": "cmnd/airpurifier/POWER1",
                "getCurrentAirPurifierState": "stat/airpurifier/POWER1",
                "getTargetAirPurifierState": "stat/airpurifier/MODE",
                "setTargetAirPurifierState": "cmnd/airpurifie/TUYAENUM1"
            "targetAirPurifierStateValues": [0,1],
            "currentAirPurifierStateValues": ["OFF","NOT_USED","ON"],
            "onValue": "ON",
            "offValue": "OFF",
            "accessory": "mqttthing"
            "url": "XXX.XXX.X.XXX:1883",
            "type": "airQualitySensor",
            "name": "Kogan PM2.5 Air Quality",
            "topics": {
                "getAirQuality": {
                    "topic": "tele/airpurifier/SENSOR",
                    "apply": "pm2_5 = JSON.parse(message).TuyaSNS.PM; return (pm2_5 < 13 ? 'EXCELLENT' : pm2_5 < 25 ? 'GOOD' : pm2_5 < 50 ? 'FAIR' : pm2_5 < 100 ? 'INFERIOR' : pm2_5 >=100 ? 'POOR' : 'UNKNOWN');"
                "getPM2_5Density": "tele/airpurifier/SENSOR$.TuyaSNS.PM",
                "getOnline": {
                    "topic": "tele/airpurifier/LWT",
                    "apply": "return message == 'Online' ? 'ON' : 'OFF';"
            "accessory": "mqttthing",