The protocol used between miio_client and gw binaries is a Mi one as far as I know.
(I own a mieu01)
So, using the miio_client I posted, you would need a binding talking the local miio protocol…
However, in the gw binary, there are these strings which look like Aqara local API:
{“cmd”:“read”,“model”:"%s",“sid”:"%llx",“short_id”:"%d",“token”:"%d",“data”:"{%s}"}
{“cmd”:“write”,“model”:"%s",“sid”:"%llx",“short_id”:"%d",“token”:"%d",“data”:"{%s}"}
{“cmd”:“subdevice_ota”,“model”:"%s",“sid”:"%llx",“ota_status”:"%d",“current_version”:"%d"}
{“cmd”:“subdevice_ota”,“model”:"%s",“sid”:"%llx",“ota_status”:"%d"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{"%s":"%s"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{"%s":"%d"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{"%s":“rotate”,“degree”:"%g",“time”:"%d"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{"%s":"%g"}"}
{“cmd”:“report_unknow_device”,“model”:“unknown device”,“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“status”:"%d"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"%s"}
{“cmd”:“remove_device”,“sid”:"%llx",“token”:"%d",“short_id”:0,“model”:"%s",“data”:"" }
{“cmd”:“dongle_info”,“info_type”:"%x",“token”:"%d",“data”:"{“status”:"%d", “ResultListSize”:"%d", “EnergyDetectChannel”:"%d", “EnergyValue”:"%d"}"}
{“cmd”:“dongle_info”,“info_type”:"%x",“token”:"%d",“data_len”:"%d",“data”:"%s"}
{“cmd”:“zigbee_join”,“model”:"%s",“sid”:"%llx",“token”:"%d",“short_id”:%d,“data”:""}
{“cmd”:“zigbee_join”,“model”:"%s",“sid”:"%llx",“token”:"%d",“short_id”:%d,“join_version”:"%d",“data”:""}
{“cmd”:“update_device”,“sid”:"%llx",“token”:"%d",“short_id”:%d,“data”:"{“status”:“announce”}"}
{“cmd”:“model_id_report”,“model”:"%s",“sid”:"%llx",“token”:"%d",“short_id”:%d,“data”:""}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“battery”:"%d", “voltage”:"%d", “lqi”:"%d", “pv_state”:"%d", “cur_state”:"%d", “pre_state”:"%d", “power_tx”:"%d", “CCA”:"%d", “send_all_cnt”:"%d", “send_fail_cnt”:"%d", “resend_sucess_cnt”:"%d", “resend_sucess_avg_cnt”:"%d", “reset_cnt”:"%d", “chip_temperature”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“voltage”:"%d", “battery”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “status”:"%d", “power_consumed”:"%g", “load_voltage”:"%d", “power”:"%g"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“version”:"%d.%d.%d", “status”:"%s", “power_consumed”:"%g", “load_voltage”:"%d", “power”:"%g"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “curtain_level”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“version”:"%d.%d.%d", “curtain_level”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “channel_0”:"%d", “channel_1”:"%d", “power_consumed”:"%g", “load_voltage”:"%d", “power”:"%g", “power_factor”:"%d", “load_current”:"%g", “load_s0”:"%d", “load_s1”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“version”:"%d.%d.%d", “channel_0”:"%s", “channel_1”:"%s", “power_consumed”:"%g", “load_voltage”:"%d", “power”:"%g"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d",“energy_0”:"%g",“energy_1”:"%g",“energy_2”:"%g",“energy_3”:"%g",“load_power_0”:"%g",“load_power_1”:"%g",“load_power_2”:"%g",“load_power_3”:"%g"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “channel_0”:"%d", “channel_1”:"%d", “power_consumed”:"%g", “load_voltage”:"%d", “power”:"%g"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “channel_0”:"%d", “power_consumed”:"%g", “load_voltage”:"%d", “power”:"%g"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“version”:"%d.%d.%d", “channel_0”:"%s", “power_consumed”:"%g", “load_voltage”:"%d", “power”:"%g"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “voltage”:"%d", “pre_state”:"%d", “cur_state”:"%d", “power_tx”:"%d", “CCA”:"%d", “reset_cnt”:"%d", “send_all_cnt”:"%d", “send_fail_cnt”:"%d", “send_retry_cnt”:"%d", “parent”:"%x", “temperature”:"%d", “humidity”:"%d", “battery”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “voltage”:"%d", “pre_state”:"%d", “cur_state”:"%d", “power_tx”:"%d", “CCA”:"%d", “reset_cnt”:"%d", “send_all_cnt”:"%d", “send_fail_cnt”:"%d", “send_retry_cnt”:"%d", “parent”:"%x", “temperature”:"%d", “humidity”:"%d", “pressure”:"%d", “battery”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“voltage”:"%d", “temperature”:"%d", “humidity”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“voltage”:"%d", “temperature”:"%d", “humidity”:"%d", “pressure”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “voltage”:"%d", “chip_temperature”:"%d", “pre_state”:"%d", “cur_state”:"%d", “power_tx”:"%d", “CCA”:"%d", “reset_cnt”:"%d", “send_all_cnt”:"%d", “send_fail_cnt”:"%d", “send_retry_cnt”:"%d", “parent”:"%x", “invalid_count”:"%d", “wakeup_num”:"%d", “disturbance_num”:"%d", “param_version”:"%d", “battery”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“voltage”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “voltage”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “parent”:"%x", “fw_ver”:"%d", “hw_ver”:"%d", “battery”:"%d", “fing_remain_num”:"%d", “card_remain_num”:"%d", “psw_remain_num”:"%d", “open_lock_times”:"%d", “tongue_state”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{ “voltage”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “battery”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “parent”:"%x", “channel_0”:"%d", “load_s0”:"%d", “power”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“version”:"%d.%d.%d", “channel_0”:"%s"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “parent”:"%x", “channel_0”:"%d", “channel_1”:"%d", “load_s0”:"%d", “load_s1”:"%d", “power”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“version”:"%d.%d.%d", “channel_0”:"%s", “channel_1”:"%s"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “voltage”:"%d", “chip_temperature”:"%d", “pre_state”:"%d", “cur_state”:"%d", “power_tx”:"%d", “CCA”:"%d", “reset_cnt”:"%d", “send_all_cnt”:"%d", “send_fail_cnt”:"%d", “send_retry_cnt”:"%d", “parent”:"%x", “battery”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “voltage”:"%d", “chip_temperature”:"%d", “pre_state”:"%d", “cur_state”:"%d", “power_tx”:"%d", “CCA”:"%d", “reset_cnt”:"%d", “send_all_cnt”:"%d", “send_fail_cnt”:"%d", “send_retry_cnt”:"%d", “parent”:"%x", “battery”:"%d", “lux”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“voltage”:"%d",“lux”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “voltage”:"%d", “chip_temperature”:"%d", “pre_state”:"%d", “cur_state”:"%d", “power_tx”:"%d", “CCA”:"%d", “reset_cnt”:"%d", “send_all_cnt”:"%d", “send_fail_cnt”:"%d", “send_retry_cnt”:"%d", “parent”:"%x", “battery”:"%d", “status”:"%s"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “voltage”:"%d", “chip_temperature”:"%d", “pre_state”:"%d", “cur_state”:"%d", “power_tx”:"%d", “CCA”:"%d", “reset_cnt”:"%d", “send_all_cnt”:"%d", “send_fail_cnt”:"%d", “send_retry_cnt”:"%d", “parent”:"%x", “battery”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “wakeup_num”:"%d", “disturbance_num”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “parent”:"%x", “density”:"%d", “voltage”:"%d", “alarm”:"%d", “sensor_info”:"%d" }"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“density”:"%g", “voltage”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “density”:"%d", “sensor_info”:"%d", “alarm”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“density”:"%g", “alarm”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“voltage”:"%d", “status”:"%s"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “parent”:"%x", “power_status”:"%d", “light_level”:"%d", “colour_temperature”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “voltage”:"%d", “chip_temperature”:"%d",“pre_state”:"%d", “cur_state”:"%d", “power_tx”:"%d",“CCA”:"%d",“reset_cnt”:"%d",“send_all_cnt”:"%d",“send_fail_cnt”:"%d",“send_retry_cnt”:"%d",“parent”:"%x",“wakeup_num”:"%d",“disturbance_num”:"%d",“coordination”:"%lld"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d", “red”:"%d", “green”:"%d", “blue”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“red”:"%d", “green”:"%d", “blue”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d",“ac_state”:"%d",“bindhtaddr”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“fw_ver”:"%d", “hw_ver”:"%d",“ac_state”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d",“ac_state”:"%d",“bindhtaddr”:"%d",“co2”:"%d",“temp_humi_src”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“fw_ver”:"%d", “hw_ver”:"%d",“ac_state”:"%d",“temp_humi_src”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“lqi”:"%d", “chip_temperature”:"%d", “reset_cnt”:"%d", “fw_ver”:"%d", “hw_ver”:"%d"}"}
{“cmd”:“heartbeat”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“fw_ver”:"%d", “hw_ver”:"%d"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“encrypt_state”:"%d"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{"%s":"%d","%s":"%d"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{"%s":"%d","%s":"%s"
{“cmd”:“report”,“model”:“rgbw_light”,“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“hue”:"%d",“saturation”:"%d",“color_temperature”:"%d",“x”:"%d",“y”:"%d"}"}
{“cmd”:“report”,“model”:“light.aqcn02”,“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“color_temperature”:"%d"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“red”:"%d",“green”:"%d",“blue”:"%d"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{"%s":"%s",“source”:"%d"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{"%s":"%d",“source”:"%d"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{"%s":"%014llx"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{"%s":"%lld"}"}
{“cmd”:“report”,“model”:"%s",“sid”:"%llx",“short_id”:%d,“token”:"%d", “data”:"{“sensitve_level”:"%s", “version”:"%s", “noise”:"%s", “alarm”:"%d", “simulate_alarm”:"%s"}"}
{“cmd”:“report”,“model”:“dongle”,“token”:"%d",“data”:"{“rf_test”:“complete”}"}
{“cmd”:“report”,“model”:“switch”,“sid”:"%llx",“short_id”:%d,“token”:"%d",“data”:"{“status”:“long_click_press”}"}
I’m also providing the methods that can be invoked using through the miio_client local protocol:
change_router
miIO.config_router
get_prop
start_zigbee_join
get_zigbee_channel
toggle_plug
toggle_ctrl_neutral
send_data_frame
miIO.xset
miIO.xdel
get_lumi_bind
update_neighbor_token
play_alarm_clock
list_music
miIO.ota
miIO.reboot
miIO.restore
local.time
miIO.get_ota_state
miIO.get_ota_progress
welcome
delete_user_music
download_user_music
toggle_light
set_corridor_light
get_corridor_light
set_corridor_on_time
get_corridor_on_time
set_rgb
set_night_light_rgb
get_night_light_rgb
get_rgb
get_clock_volume
set_mute
get_mute
set_clock_volume
get_download_progress
local.status
get_arming
get_doorbell_push
get_arm_wait_time
get_arming_time
get_gateway_volume
get_doorbell_volume
get_alarming_volume
set_arming
set_doorbell_push
set_arm_wait_time
set_gateway_volume
set_doorbell_volume
set_alarming_volume
set_sound_playing
toggle_device
set_curtain_level
get_music_info
set_default_music
play_music_new
dis_alarm
get_prop_plug
get_prop_ctrl_neutral
get_prop_sensor_ht
get_device_prop
set_device_prop
get_device_prop_exp
linkage_alarm
miIO.info
ctrl_device_prop
(sorry for this very long post)