Xioami cooker integration

Cool! We should collect as much data as possible. Screenshots of the Mi Home app would be helpful, too.

Indeed. Will collect some screenshots while cooking tomorrow.

1 Like

Discovery: The device doesn’t respect the requested properties. It always repond with all properties.

Could it be part of protocol? Or mirobo send wrongly formated request?

It’s no problem. The android app respects this fact as well. It’s just unusual behavior for a xiaomi miio device (firmware).

It is rather “new” device perhaps we might see change in protocol as firmware matures. Do you see this “abnormalities” in addon source or based on provided input? Could we see token retrieval built in mirobo discovery?

If the token retrievel by mirobo discovery doesn’t work out of the box the device doesn’t support it.

@bachulator There are some default cooking profiles embedded. Could you translate the labels?

public static final String[] DEFAULT_MODES_DESCRIPTION_K1 = new String[]{"Около 60 минут для ароматного риса", "Около 40 минут для быстрого приготовления", "Варить на медленном огне от 40 ми. до 4 час.", "Поддержание тепла около 73 гр.", "Выпекать 40-60 минут", "6-12 часов для приготовления йогурта", "Приготовление риса при 90 гр.", "Пароварка при 100 гр.", "75 минут для приготовления пищи, для раскрытия полного вкуса", "Скорость готовки около 30 мин.", "Слабый нагрев в течение 1-4 часов", "Тушение до 8 часов", "Небольшой нагрев в течение 30-60 минут"};
public static final String[] DEFAULT_MODES_DESCRIPTION_K2A = new String[]{"Около 60 минут для ароматного риса", "Около 40 минут для быстрого приготовления", "Варить на медленном огне от 40 ми. до 4 час.", "Поддержание тепла около 73 гр.", "Выпекать 40-60 минут", "6-12 часов для приготовления йогурта", "Приготовление риса при 90 гр.", "Пароварка при 100 гр.", "70 минут для приготовления пищи, для раскрытия полного вкуса", "Скорость готовки около 30 мин.", "Слабый нагрев в течение 1-4 часов", "Тушение до 8 часов", "Небольшой нагрев в течение 30-60 минут"};
public static final String[] DEFAULT_MODES_DESCRIPTION_K2C = new String[]{"Около 60 минут для ароматного риса", "Около 40 минут для быстрого приготовления", "Варить на медленном огне от 40 ми. до 4 час.", "Поддержание тепла около 73 гр.", "Выпекать 40-60 минут", "6-12 часов для приготовления йогурта", "Приготовление риса при 90 гр.", "Пароварка при 100 гр.", "70 минут для приготовления пищи, для раскрытия полного вкуса"};
public static final int[] DEFAULT_MODE_CODES = new int[]{1, 2, 3, 4, 256, 257, 258, 259, 260, MAX_DEFAULT_RECIPE_ID, 262, 263, 264};
public static final String[] DEFAULT_MODE_NAMES = new String[]{"Тонкости приготовления", "Быстрое приготовление", "Каша", "Подогрев", "Торт", "Йогурт", "Горячая еда", "Приготовление", "Приготовить сладкий рис", "Быстрое приготовление риса", "Суп", "Медленное приготовление", "Горячее яйцо"};
public static final String[] DEFAULT_MODE_NAMES_K2A = new String[]{"Тонкости приготовления", "Быстрое приготовление", "Каша", "Подогрев", "Торт", "Йогурт", "Горячая еда", "Приготовление", "Приготовить сладкий рис"};
public static final String[] DEFAULT_MODE_NAMES_K2C = new String[]{"Тонкости приготовления", "Быстрое приготовление", "Каша", "Подогрев", "Торт", "Йогурт", "Горячая еда", "Приготовление", "Приготовить сладкий рис"};
public static final String[] DEFAULT_MODE_PROFILES_K1 = new String[]{"0001E10100000000000080026E10082B126E1412698CAA555555550014280A6E0C02050506050505055A14040A0C0C0D00040505060A0F086E6E20000C0A5A28036468686A0004040500000000000000010202020204040506070708001212180C1E2D2D37000000000000000000000099A5", "0002E10028000000000080026E10082B056E1412698CAA55555555001428145A10070707070C0E0E105A14060A0C0C0E00090909091E14046E6E200010065A28035050505000040405000000000000030203030302040405070C0C0C00121218100F0F0F3200000000000000000000008914", "0003E2011E04000028008000145A46736E140F200000027382736E14002000001E695F736E140C200000017882736E1400200000F07D82735A2300200000000000000000000000000000000000000000000001507896030303035F624B085555555580191028036E0000000000000000DDA4", "00040C1800180000010000107891826E6E14002000001E464B6E6E140A2000000000000000000000000000000000000000000000F08282446E140020080800000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000005093", "010088003201000028000012000000000000000000000846822A6E14002018000F6E82736E140A201810000000000000000000003C8782716E1400200A100000000000000000000000000000000000000000000000000000000000003C0A000000008700000000000000000000000000424D", "01010908000C0006000000101E23736E6E1405200000000000000000000000000000000000000000000000000000000000000000F06E73246E140020000C0000000000000000000000000000000000000000020000000000000000000000000000004900000000290000000000000000424D", "010264001e0023001900800000000000000000000000000000000000000000000f5582736e140a20180000000000000000000000148273735a1408201800000000000000000000000982735a6e140020100a000000000808080869694b0a000000008700000000000000000000000000ddf2", "010326001e0100000a00800000000000000000000000000000000000000000001e695f736e140f200000000000000000000000003c80736e5a0d081400000000000000000000000000000000000000000000015078960808080873694b0e545656568000000000000000000000000000fa31", "010461010F000000000080026E10082B126E1412698CAA55555555001428145A1005070708090909095A14060D0D0D0F001E1E1E1E0A14066E6E20000C0A5A2803505050500004040500000000000003020303030202020206070708001212180C1E2D2D370000000000000000000000424D", "010561001e000000000080026e10082b006e141278a0be55555555001428145a1005070708090909095a140614140e0e00050505050a14076e6e20000c035a2803505050500004040500000000000003020303030202020212120c0c121212180c1e2d2d370000000000000000000000918b"};
public static final String[] DEFAULT_MODE_PROFILES_K2A = new String[]{"0001E101000000000000800200A00069030103730000085A020000EB006B040103740000095A0400012D006E0501037400000A5A0401FFFF00700601047600000C5A0401052D0A0F3C0A1E91FF820E01FF05FF78826EFF10FF786E02690F0DFF826EFF691000FF826EFF69100069FF5AFF00000000000081E9", "0002E100280000000000800200D20069030103730000075A0200012D006B040103740000075A02000182006E050003740000095A0401FFFF0070060004760000095A040100280A063C0D1E91FF820E01FF05FF78826EFF10FF786E02690F0FFF826EFF69100082826EFF69100069FF5AFF00000000000015B6", "0003E2011E040000280080000190551C0601001E00000000000001B8551C0601002300000000000001E0561C0600002E000000000000FFFF571C0600003000000000000000280A0082001E914E730E01001E82FF736E0610FF756E02690A1E75826E0269100F75826E0269100069005A0000000000000000CB", "00040C180018000001000045000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A0082001E914E730801001E82FF736E0610FF756E02690A0F75826E0169101E75826E0169100069005A000000000000001BA2", "010088010001000028000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A003C00089178320600001E8278666E041000826E00690FFF96666E0469100082826E0069100069005A00000000000000B267", "01010908000C000600000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A0F270300915573000000008278736E001000756E0028050075826E002810FF75276E0228100069005A00000000000000B9BF", "010264001E00230019010540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A003C000F91416E080000008278736E001000756E00690F0C75506E0669100082826E0869100069025004000000000000F5C6", "010366001E0100000A010540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A003C001E9155730E0000008278736E001000756E00690A0075826E006910FF756E6E0869100069005A00000000000000F462", "0104E1010A0000000000800200A00069030102780000085A020000EB006B040102780000085A0400012D006E0501027D0000065A0400FFFF00700601027D0000065A0400052D0A0F3C0A1E91FF820E01FF05FF78826EFF10FF786E02690F1EFF826EFF691400FF826EFF69100069FF5AFF00000000000042A7"};
public static final String[] DEFAULT_MODE_PROFILES_K2C = new String[]{"0001E101000000000000800200500069030103690000085A020000AF006B0401036C0000095A04000119006E0701046F00000A5A0401FFFF00700801047100000C5A0401052D0A0F3C0A1E91FF820E01FF05FF78826EFF10FF786E02690F0FFF826EFF691000FF826EFF69100069FF55FF000000000000AC60", "0002E1002800000000008002008C0069030103690000075A020000F5006B0401036C0000075A02000164006E0800046F0000075A0401FFFF0070090004710000075A040100280A063C0D1E91FF820E01FF05FF78826EFF10FF786E02690F0CFF826EFF69100082826EFF69100069FF55FF0000000000000782", "0003E2011E04000028008000018255280601003C00000000000001B855280601004600000000000001E056280600004B000000000000FFFF57280600005000000000000000280A0082001E914E730E01001E82FF736E0610FF756E02690A1E75826E0469100F75826E0469100069005A00000000000000D2E3", "00040C180018000001000045000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A0082001E914E730801001E82FF736E0610FF756E02690A0F75826E0169101E75826E0169100069005A000000000000001BA2", "010088010001000028000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A003C00086278780600001E8278626E041000826E00690FFF96626E0469100082826E0069100069005A00000000000000721D", "01010908000C000600000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A0F260300915573000000008278736E001000756E0028050075826E002810FF75266E0228100069005A00000000000000DC79", "010264001E00230019010540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A003C000F91416E080000008278736E001000756E00690F0C75506E0669100082826E0869100069025004000000000000F5C6", "010366001E0100000A010540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A003C001E9155730E0000008278736E001000756E00690A0075826E006910FF756E6E0869100069005A00000000000000F462", "0104E1010A0000000000800200730069030102780000085A020000AF006B040102780000085A04000119006E0701027D0000065A0400FFFF00700801037D0000065A0400052D0A0F3C0A1E91FF820E01FF05FF78826EFF10FF786E02690F1EFF826EFF691400FF826EFF69100069FF55FF000000000000B9BF"};
public static final String[] DEFAULT_MODE_PROFILES_NORMAL1 = new String[]{"0001E101000000000000800200A00069030103730000085A020000EB006B040103740000095A0400012D006E0501037400000A5A0401FFFF00700601047600000C5A0401052D0A0F3C0A1E91FF820E01FF05FF78826EFF10FF786E02690F0DFF826EFF691000FF826EFF69100069FF5AFF00000000000081E9", "0002E100280000000000800200D20069030103730000075A0200012D006B040103740000075A02000182006E050003740000095A0401FFFF0070060004760000095A040100280A063C0D1E91FF820E01FF05FF78826EFF10FF786E02690F0FFF826EFF69100082826EFF69100069FF5AFF00000000000015B6", "0003E2011E04000028008000019055140601001600000000000001B855140601001900000000000001E0561406000020000000000000FFFF57140600002200000000000000280A0082001E914E730E01001E82FF736E0610FF756E02690A1E75826E0269100F75826E0269100069005A000000000000001A2B", "00040C180018000001000045000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A0082001E914E730801001E82FF736E0610FF756E02690A0F75826E0169101E75826E0169100069005A000000000000001BA2", "010088010001000028000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A003C00089178320600001E8278666E041000826E00690FFF96666E0469100082826E0069100069005A00000000000000B267", "01010908000C000600000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A0F270300915573000000008278736E001000756E0028050075826E002810FF75276E0228100069005A00000000000000B9BF", "010264001E00230019010540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A003C000F91416E080000008278736E001000756E00690F0C75506E0669100082826E0869100069025004000000000000F5C6", "0103E6001E0100000A0105400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280A003C00089155730E0000008278736E001000756E00690A0075826E006910FF756E6E0869100069005A00000000000000000000009EB6", "0104E1010A0000000000800200A00069030102780000085A020000EB006B040102780000085A0400012D006E0501027D0000065A0400FFFF00700601027D0000065A0400052D0A0F3C0A1E91FF820E01FF05FF78826EFF10FF786E02690F1EFF826EFF691400FF826EFF69100069FF5AFF00000000000042A7"};

Such a profile can be cooked by

mirobo raw_command set_start '["0001E10100000000000080026E10082B126E1412698CAA555555550014280A6E0C02050506050505055A14040A0C0C0D00040505060A0F086E6E20000C0A5A28036468686A0004040500000000000000010202020204040506070708001212180C1E2D2D37000000000000000000000099A5"]'

The K1 profile are profiles for the models chunmi.cooker.press1 and chunmi.cooker.press1. The K2A profiles are the default profiles of chunmi.cooker.normal1, chunmi.cooker.normal2 and chunmi.cooker.normal1. The K2C profiles are the one of chunmi.cooker.normal3 and chunmi.cooker.normal4.

Both of you has a model chunmi.cooker.normal2. You should use one of the K2A hex values. :wink:

Some groups:

  • jingzhu
  • kuaizhu
  • zhuzhou
  • baowen
  • refan

Does the cooker has a display? It’s possible to add recipes/profiles to the menu?

The get_temp_history is available while the operation mode is keep_temp and running (first item of the properties).

Not fancy translation or anything but here it is:

“Около 60 минут для ароматного риса” = 60 minutes cooking for tasty rice
“Около 40 минут для быстрого приготовления” = Quick 40 minutes cooking
“Варить на медленном огне от 40 ми. до 4 час.” = Cooking on slow fire from 40 minutes to 4 hours
“Поддержание тепла около 73 гр.” = “Keeping worm at 73 degrees”
“Выпекать 40-60 минут” = “Backing for 40 – 60 minutes”
“6-12 часов для приготовления йогурта" = “6 -12 hours for yogurt fermentation”
“Приготовление риса при 90 гр.” = “Cooking rice at 90 degrees”
“Пароварка при 100 гр.”, = “Steaming at 100 degrees”
“75 минут для приготовления пищи, для раскрытия полного вкуса” = “75 minutes cooking to enreach taste of the food”
“Скорость готовки около 30 мин.” = “Cooking for 30 minutes”
“Слабый нагрев в течение 1-4 часов” = “Low level heating for 1-4 hours”
“Тушение до 8 часов” = “Stewing for 8 hours”
“Небольшой нагрев в течение 30-60 минут” =“Low level heating for 30-60 minutes”
“Тонкости приготовления" = “cooking details”
“Быстрое приготовление” = “Quick cooking”
“Каша” = “Porridge”
“Подогрев” = “Heating”
“Торт” = “Cake”
“Йогурт” = “ Yogurt”
“Горячая еда” = “Hot food”
“Приготовление” = “Cooking”
“Приготовить сладкий рис” = “ Sweet rice”
“Быстрое приготовление риса” = “Quick rice”
“Суп” = “Soup”
“Медленное приготовление” = “Slow cooking”
“Горячее яйцо” = “Boiled egg”

FYI the labels in original English app doesn’t have any time references but mostly speed (quick slow etc):

Yes AFAIK there are couple of pressureside cooker version from xiaomi. And yes mine is not and since @LaFed has same ident he has not pressure cooker as well. I can make some screenshots hope it will help with translation.

That odd, when I have reported mine get_temp_history it has been in “keep warm” mode so it should report temperature (but actually app does not report history of temperature in this mode either) so perhaps reserved feature.

Yes the unit has display but you can’t add any recipes it is for choosing predefined ones and time option like delayed start. All unit operation is in app.
A quick search through YouTube gave me this (Russian again, sorry) but you can enable subs with translation and there is app screens in English and unit itself

mirobo --ip [IP] --token [TOKEN] raw_command raw_command set_start '[“0001E10100000000000080026E10082B126E1412698CAA555555550014280A6E0C02050506050505055A14040A0C0C0D00040505060A0F086E6E20000C0A5A28036468686A0004040500000000000000010202020204040506070708001212180C1E2D2D37000000000000000000000099A5”]'
Sending cmd set_start with params [‘0001E10100000000000080026E10082B126E1412698CAA555555550014280A6E0C02050506050505055A14040A0C0C0D00040505060A0F086E6E20000C0A5A28036468686A0004040500000000000000010202020204040506070708001212180C1E2D2D37000000000000000000000099A5’]
Error:1
ERROR:miio.device:Unable to discover a device at address [IP]
Error: Unable to discover the device [IP]
Error:2
ERROR:miio.device:Got error when receiving: timed out
Error: No response from the device

Device has been restarted before testing.

My assumption is the “set_menu [recipe]” call allows to add a new recipe/profile to the list.

It’s a pity. I will check the code again. May be the restart is the problem. Could you request a “info” first and execute the “set_start” call afterwards.

No it seems restart is not an issue here
“Info” provided same response
“set_start” same response

In other words: The device crashs if you send set_start [profile] at the moment, right?

Oh! You took the wrong profile of a wrong device. Please try:

0001E101000000000000800200A00069030103730000085A020000EB006B040103740000095A0400012D006E0501037400000A5A0401FFFF00700601047600000C5A0401052D0A0F3C0A1E91FF820E01FF05FF78826EFF10FF786E02690F0DFF826EFF691000FF826EFF69100069FF5AFF00000000000081E9