声必可Linux智能家居对接临时补充文档
本文档为解决声必可L9等带继电器产品的第三方接入
smarthome_preinit 参数传递
smarthome_preinit 函数参数传递增加继电器路数 switchs_count,
{"feature":0, "switchs_count":2}
手机端操作继电器开关,插件上报开关状态到设备应用层:
#define DEVICE_SWICTH_1 210
#define DEVICE_SWICTH_2 211
static void slave_on_dp_cb(int i0, int i1) {
cJSON* root = cJSON_CreateObject();
cJSON_AddNumberToObject(root, "i0", i0);
cJSON_AddNumberToObject(root, "i1", i1);
char* json_str = cJSON_PrintUnformatted(root);
cJSON_Delete(root);
g_listener(NULL, PLUGIN_EVENT_SLAVE_CONTROL, json_str);
free(json_str);
}
slave_on_dp_cb(DEVICE_SWICTH_1+i, dp_bool为开关状态); //第i路继电器i取值0~2
设备端应用层控制继电器,消息通知给插件
int smarthome_slave_report(const char* params, callback_func callback) {
printf("\n\n smarthome_slave_report=%s \n\n", params);
cJSON* root = cJSON_Parse(params);
if (root != NULL) {
int cmd = cJSON_GetObjectItemCaseSensitive(root, "i0")->valueint;
switch (cmd) {
case DEVICE_REPORT_DEVICE_PROP: { //继电器等
//操作继电器的消息通知给插件
}
break;
default:
break;
}
cJSON_Delete(root);
}
return 0;
}
继电器开关改名
继电器开关改名后,需要通知应用层 PLUGIN_EVENT_ON_DEVICES_SYNC,重新拉取一遍设备,UI界面才能实时更新界面。
#define DEVICE_SWICTH_NAME 215
static void slave_on_dp_cb2(int i0, int i1, char* s0) {
cJSON* root = cJSON_CreateObject();
cJSON_AddNumberToObject(root, "i0", i0);
cJSON_AddNumberToObject(root, "i1", i1);
cJSON_AddStringToObject(root, "s0", s0);
char* json_str = cJSON_PrintUnformatted(root);
cJSON_Delete(root);
g_listener(NULL, PLUGIN_EVENT_SLAVE_CONTROL, json_str);
free(json_str);
}
slave_on_dp_cb2(DEVICE_SWICTH_NAME, 第几路继电器i1取值1~3, 继电器开关名称);