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; }