Based heavily off (shamelessly stolen from) dipdipotat0chip’s “Rohnson R-2838 WIFI Air Fryer” guide.
Thank you dipdipotat0chip!
Config
I would recommend using “Smart Life”, rather than the recommended “Kyvol” app - both use Tuya services in any case.
First, you need to setup LocalTuya in HA: GitHub - rospogrigio/localtuya: local handling for Tuya devices
LocalTuya device configurations below:
LocalTuya Entity/DP entries:
DP 1 - Switch - “Power”
DP 2 - Switch - “Start/Stop”
DP 3 - Select - “Mode”
- Entries: “default;vagetable;Chicken;beef;seafood;dessert;frech;defrost;Toast;reheat;dehydrate;recipe;Preheat”
- Friendly names: “Default;Vegetable;Chicken;Beef;Seafood;Dessert;French Fries;Defrost;Toast;Reheat;Dehydrate;Recipe;Preheat”
- Default value: “default”
DP 6 - Number - “Cooking Temperature”, Min value: 30, Max Value: 200, Default Value: 180
DP 9 - Number - “Cook Time”, default: 15
DP 10 - Number - “Time Remaining”, default: 15
Custom cards needed:
custom:button-card
custom:mushroom-chips-card
custom:numberbox-card
custom:card-mod
Lovelace YAML code:
type: vertical-stack
cards:
- type: custom:button-card
name: >-
<b style="letter-spacing:-1.5px;font-size:36px;font-weight:bold">Kyvol
Airfryer
show_label: true
- type: horizontal-stack
cards:
- show_name: true
show_icon: true
type: custom:button-card
show_entity_picture: true
name: Power
state:
- value: 'on'
icon: mdi:power
color: green
- value: 'off'
icon: mdi:power
color: red
entity: switch.power
- show_name: true
show_icon: true
type: custom:button-card
show_entity_picture: true
name: Start/Stop
state:
- value: 'on'
icon: mdi:fan
color: green
styles:
icon:
- animation:
- rotating 1s linear infinite
- value: 'off'
icon: mdi:fan
color: gray
entity: switch.start_stop
- type: custom:mushroom-chips-card
chips:
- type: template
entity: select.mode
icon: mdi:food-fork-drink
tap_action:
action: call-service
service: select.select_option
data:
option: Default
target:
entity_id: select.mode
content_info: none
icon_color: |-
{% set state=states('select.mode') %}
{% if state=='Default' %}
green
{% else %}
gray
{% endif %}
- type: template
entity: select.mode
icon: mdi:grass
tap_action:
action: call-service
service: select.select_option
data:
option: Vegetable
target:
entity_id: select.mode
content_info: none
icon_color: |-
{% set state=states('select.mode') %}
{% if state=='Vegetable' %}
green
{% else %}
gray
{% endif %}
- type: template
entity: select.mode
content_info: none
icon: mdi:food-drumstick
tap_action:
action: call-service
service: select.select_option
data:
option: Chicken
target:
entity_id: select.mode
icon_color: |-
{% set state=states('select.mode') %}
{% if state=='Chicken' %}
green
{% else %}
gray
{% endif %}
- type: template
entity: select.mode
content_info: none
icon: mdi:food-steak
tap_action:
action: call-service
service: select.select_option
data:
option: Beef
target:
entity_id: select.mode
icon_color: |-
{% set state=states('select.mode') %}
{% if state=='Beef' %}
green
{% else %}
gray
{% endif %}
- type: template
entity: select.mode
content_info: none
icon: mdi:fish
tap_action:
action: call-service
service: select.select_option
data:
option: Seafood
target:
entity_id: select.mode
icon_color: |-
{% set state=states('select.mode') %}
{% if state=='Seafood' %}
green
{% else %}
gray
{% endif %}
- type: template
entity: select.mode
content_info: none
icon: mdi:cupcake
tap_action:
action: call-service
service: select.select_option
data:
option: Dessert
target:
entity_id: select.mode
icon_color: |-
{% set state=states('select.mode') %}
{% if state=='Dessert' %}
green
{% else %}
gray
{% endif %}
- type: template
entity: select.mode
content_info: none
icon: mdi:french-fries
tap_action:
action: call-service
service: select.select_option
data:
option: French Fries
target:
entity_id: select.mode
icon_color: |-
{% set state=states('select.mode') %}
{% if state=='French Fries' %}
green
{% else %}
gray
{% endif %}
- type: template
entity: select.mode
content_info: none
icon: mdi:bread-slice
tap_action:
action: call-service
service: select.select_option
data:
option: Toast
target:
entity_id: select.mode
icon_color: |-
{% set state=states('select.mode') %}
{% if state=='Toast' %}
green
{% else %}
gray
{% endif %}
- type: template
entity: select.mode
content_info: none
icon: mdi:food-takeout-box
tap_action:
action: call-service
service: select.select_option
data:
option: Reheat
target:
entity_id: select.mode
icon_color: |-
{% set state=states('select.mode') %}
{% if state=='Reheat' %}
green
{% else %}
gray
{% endif %}
- type: template
entity: select.mode
content_info: none
icon: mdi:heat-wave
tap_action:
action: call-service
service: select.select_option
data:
option: Preheat
target:
entity_id: select.mode
icon_color: |-
{% set state=states('select.mode') %}
{% if state=='Preheat' %}
green
{% else %}
gray
{% endif %}
alignment: justify
- type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: custom:numberbox-card
border: true
entity: number.cook_time
icon: mdi:clock
name: Cooking Time
- type: custom:numberbox-card
border: true
entity: number.cooking_temperature
icon: mdi:thermometer
unit: c
name: Cooking Temperature
step: 5
- type: horizontal-stack
cards:
- type: entity
unit: min
entity: number.cook_time
icon: mdi:clock-outline
name: Time Remaing
state_color: false
- type: custom:button-card
show_name: true
show_icon: true
show_entity_picture: true
name: Food
state:
- value: Default
icon: mdi:food-fork-drink
name: Default Mode
- value: Vegetable
icon: mdi:grass
name: Vegetable
- value: Chicken
icon: mdi:food-drumstick
name: Chicken
- value: Beef
icon: mdi:food-steak
name: Beef
- value: Seafood
icon: mdi:fish
name: Seafood
- value: Dessert
icon: mdi:cupcake
name: Dessert
- value: French Fries
icon: mdi:french-fries
name: French Fries
- value: Toast
icon: mdi:bread-slice
name: Toast
- value: Reheat
icon: mdi:food-takeout-box
name: Reheat
- value: Dehydrate
icon: mdi:water-off
name: Dehydrate
- value: Recipe
icon: mdi:receipt-text
name: Recipe
- value: Preheat
icon: mdi:heat-wave
name: Preheat
entity: select.mode