Example #1
0
 public function receive_deviceClickCommand($data)
 {
     //非常明确是CLICK命令
     switch ($data->EventKey) {
         case "CLICK_ABOUT":
             $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, "TokenID = " . $this->access_token);
             break;
         case "CLICK_TECH":
             $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, "Appid = " . $this->appid);
             break;
         case "CLICK_TEST":
             $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, "Appsecret = " . $this->appsecret);
             break;
         case "CLICK_BIND":
             $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, "绑定操作:当前模式下无法完成,请通过后台生成DEVICE_ID和二维码,更新MAC授权后再扫码完成!");
             break;
         case "CLICK_BIND_INQ":
             //增加第三方后台云的绑定状态
             $wxDbObj = new class_mysql_db();
             $result = $wxDbObj->db_BleBoundInfo_query($data->FromUserName);
             if ($result == false) {
                 $transMsg = "第三方云数据库中绑定设备:无";
             } else {
                 $transMsg = "第三方云数据库中有绑定设备:有";
             }
             //再查微信云上的绑定状态
             $result = $this->getstat_qrcodebyOpenId($data->FromUserName);
             if (count($result["device_list"]) == 0) {
                 $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, "微信云绑定查询操作结果:无 \n" . $transMsg);
             } else {
                 $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, "微信云绑定查询操作结果:有 " . $result["device_list"] . " \n" . $transMsg);
             }
             break;
         case "CLICK_UNBIND":
             //先解绑微信云上的绑定状态
             //这里就考虑一个设备,如果存储多个设备的话,需要多次解绑
             $result = $this->getstat_qrcodebyOpenId($data->FromUserName);
             if (count($result["device_list"]) != 0) {
                 $result = $this->compel_unbind($result["device_list"][0]["device_id"], $data->FromUserName);
                 $transMsg = "微信云解绑操作一次一个设备" . $result . " \n";
             } else {
                 $transMsg = "微信云不存在绑定设备\n";
             }
             //再解绑第三方云上的绑定状态
             $wxDbObj = new class_mysql_db();
             $result = $wxDbObj->db_BleBoundInfo_query($data->FromUserName);
             if ($result == false) {
                 $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, $transMsg . "第三方云数据库中无绑定设备");
             } else {
                 $wxDbObj->db_BleBoundInfo_delete($data->FromUserName);
                 $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, $transMsg . "第三方云数据库一次解绑全部");
             }
             break;
         case "CLICK_LIGHT_INQ":
             $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, "暂时未实现的操作,等待设备功能完善后实现");
             break;
         case "CLICK_LIGHT_ON" || "CLICK_LIGHT_OFF":
             if ($data->EventKey == "CLICK_LIGHT_ON") {
                 $open = "点灯";
             } else {
                 $open = "关灯";
             }
             $wxDbObj = new class_mysql_db();
             $dbres = $wxDbObj->db_BleBoundInfo_query($data->FromUserName);
             if ($dbres == false) {
                 $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, "数据库中未绑定设备");
             } else {
                 //只考虑一个设备的情况,未来再考虑同一个用户绑定多个设备的情况
                 $dev = $dbres[0];
                 //对点灯的操作进行层三处理,构造可以发送给硬件设备的信息
                 $wxL3Obj = new class_L3_Process_Func();
                 $dev1 = $wxL3Obj->L3_deviceMsgProcess($data->EventKey, $dev, $data->FromUserName, $data->DeviceID);
                 //CLICK_LIGHT_ON or CLICK_LIGHT_OFF
                 //BYTE系列化处理在L3消息处理过程中完成
                 $dev2 = base64_encode($dev1);
                 //推送数据到硬件设备
                 $result = $this->trans_msgtodevice($dev["deviceType"], $dev["deviceID"], $dev["openID"], $dev2);
                 //推送回复消息给微信界面
                 $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, "已发送" . $open . "操作, DeviceID= " . $dev["deviceID"] . ", 设备消息= " . $dev1);
             }
             break;
         default:
             $transMsg = $this->xms_responseText($data->FromUserName, $data->ToUserName, "收到未识别菜单EventKey值");
             break;
     }
     return $transMsg;
 }