声必可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, 继电器开关名称);

results matching ""

    No results matching ""