| | |
| | | package com.hdl.photovoltaic.other; |
| | | |
| | | |
| | | import android.Manifest; |
| | | import android.content.ComponentName; |
| | | import android.content.Context; |
| | | import android.content.Intent; |
| | | import android.content.ServiceConnection; |
| | | import android.content.pm.PackageManager; |
| | | import android.location.Location; |
| | | import android.location.LocationManager; |
| | | import android.os.IBinder; |
| | | import android.text.TextUtils; |
| | | import android.util.Log; |
| | | import android.view.View; |
| | | import android.widget.TextView; |
| | | |
| | | import androidx.core.app.ActivityCompat; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.JsonObject; |
| | | import com.google.gson.reflect.TypeToken; |
| | | import com.hdl.linkpm.sdk.core.exception.HDLException; |
| | | import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean; |
| | | import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean; |
| | | import com.hdl.linkpm.sdk.ota.bean.CloudGatewayDriversBean; |
| | | import com.hdl.linkpm.sdk.ota.bean.DeviceFirmwareBean; |
| | | import com.hdl.linkpm.sdk.ota.bean.DownloadUrlBean; |
| | | import com.hdl.linkpm.sdk.ota.bean.GatewayDriverBean; |
| | | import com.hdl.linkpm.sdk.utils.HDLMD5Utils; |
| | | import com.hdl.photovoltaic.HDLApp; |
| | | import com.hdl.photovoltaic.R; |
| | | import com.hdl.photovoltaic.bean.ModBusBean; |
| | | import com.hdl.photovoltaic.config.AppConfigManage; |
| | | import com.hdl.photovoltaic.config.UserConfigManage; |
| | | import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer; |
| | | import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpService; |
| | | import com.hdl.photovoltaic.listener.CloudCallBeak; |
| | | import com.hdl.photovoltaic.listener.LinkCallBack; |
| | | import com.hdl.photovoltaic.ui.bean.CUserInfo; |
| | | import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean; |
| | | import com.hdl.photovoltaic.ui.bean.DeviceTimeBean; |
| | | import com.hdl.photovoltaic.ui.bean.Geolocation; |
| | | import com.hdl.photovoltaic.ui.bean.OidBean; |
| | | import com.hdl.photovoltaic.ui.me.AsRegardsActivity; |
| | | import com.hdl.photovoltaic.ui.me.PersonalDataActivity; |
| | | import com.hdl.photovoltaic.ui.me.SetActivity; |
| | | import com.hdl.photovoltaic.ui.newC.MessageCenterList; |
| | | import com.hdl.photovoltaic.ui.newC.PowerStationsListEdit; |
| | | import com.hdl.photovoltaic.uni.HDLUniMP; |
| | | import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; |
| | | import com.hdl.photovoltaic.utils.AppManagerUtils; |
| | | import com.hdl.photovoltaic.utils.NetworkUtils; |
| | | import com.hdl.photovoltaic.utils.WifiUtils; |
| | | import com.hdl.photovoltaic.widget.ConfirmationCancelDialog; |
| | | import com.hdl.sdk.link.common.exception.HDLLinkCode; |
| | | import com.hdl.sdk.link.common.exception.HDLLinkException; |
| | | import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus; |
| | |
| | | |
| | | |
| | | import java.io.File; |
| | | import java.lang.reflect.Type; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | |
| | | import io.dcloud.feature.unimp.DCUniMPJSCallback; |
| | | import okhttp3.ResponseBody; |
| | |
| | | return; |
| | | } |
| | | String type = getKeyValue("type", data);//小类 |
| | | if (HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL.equals(topic)) { |
| | | String logTag = getKeyValue("logTag", data);//标记uni指令 |
| | | String mode_type = "大类->" + topic + "--->" + "小类->" + type;//用来打印的 |
| | | HdlLogLogic.print(logTag + ":" + "uni--->发送--->" + mode_type + "\r\n" + data, true); |
| | | if (HDLUniMP.UNI_EVENT_REPLY_USER_MODEL.equals(topic)) { |
| | | //用户模块 |
| | | switch (type) { |
| | | //用户信息 |
| | | case HDLUniMP.UNI_EVENT_REPLY_USER_INFO: { |
| | | this.uniGetUserInfo(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //用户头像(旧平台逻辑是头像单独获取下载地址) |
| | | case HDLUniMP.UNI_EVENT_REPLY_USER_IMAGE: { |
| | | uniGetImageKey(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //用户本地缓存信息 |
| | | case HDLUniMP.UNI_EVENT_REPLY_USER_LOCAL_INFO: { |
| | | JsonObject jsonObject = new JsonObject(); |
| | | jsonObject.addProperty("user_name", UserConfigManage.getInstance().getUserName()); |
| | | jsonObject.addProperty("user_image_url", UserConfigManage.getInstance().getUserImageUrl()); |
| | | uniCallbackData(mode_type, jsonObject, callback); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } else if (HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL.equals(topic)) { |
| | | //住宅模块 |
| | | switch (type) { |
| | | //创建电站 |
| | | case HDLUniMP.UNI_EVENT_REPLY_HOME_CREATION: { |
| | | |
| | | //EventBus事件分发 |
| | | BaseEventBus baseEventBus = new BaseEventBus(); |
| | | baseEventBus.setTopic(HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL); |
| | | baseEventBus.setType(HDLUniMP.UNI_EVENT_REPLY_HOME_CREATION); |
| | | baseEventBus.setData(getKeyValue("data", data)); |
| | | EventBus.getDefault().post(baseEventBus); |
| | |
| | | EventBus.getDefault().post(baseEventBus); |
| | | } |
| | | break; |
| | | //住宅【电站】编辑 |
| | | case HDLUniMP.UNI_EVENT_REPLY_HOME_EDIT: { |
| | | //EventBus事件分发 |
| | | BaseEventBus baseEventBus = new BaseEventBus(); |
| | | baseEventBus.setTopic(HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL); |
| | | baseEventBus.setType(HDLUniMP.UNI_EVENT_REPLY_HOME_EDIT); |
| | | baseEventBus.setData(getKeyValue("data", data)); |
| | | EventBus.getDefault().post(baseEventBus); |
| | | } |
| | | break; |
| | | |
| | | } |
| | | if (callback != null) { |
| | | uniCallbackData(null, callback); |
| | | uniCallbackData(type, null, callback); |
| | | } |
| | | } else if (HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODEL.equals(topic)) { |
| | | //设备模块 |
| | | switch (type) { |
| | | //添加逆变器到云端 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD: { |
| | | this.uniAddInverterDeviceToCloud(data, callback); |
| | | this.uniAddInverterDeviceToCloud(mode_type, data, callback); |
| | | } |
| | | //添加多个逆变器到云端 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD_All: { |
| | | this.uniAddAllInverterDeviceToCloud(mode_type, data, callback); |
| | | } |
| | | |
| | | break; |
| | | //删除云端逆变器 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_DEL: { |
| | | this.uniDelInverterDevice(data, callback); |
| | | this.uniDelInverterDevice(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //局域网搜索逆变器列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_NET_LIST: { |
| | | this.uniSearchGateway(callback); |
| | | this.uniSearchGateway(mode_type, callback); |
| | | } |
| | | break; |
| | | //获取逆变器列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST: { |
| | | this.uniGetCurrentHomeLocalAndCloudGatewayList(callback); |
| | | this.uniGetCurrentHomeLocalAndCloudGatewayList(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //modBus协议专用 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODBUS_SEND: { |
| | | sendModBus(data, callback); |
| | | sendModBus(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //获取oid列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_OID: { |
| | | this.uniGetInverterOidList(data, callback); |
| | | this.uniGetInverterOidList(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //逆变器时间读取 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_TIME: { |
| | | this.uniGetInverterTime(data, callback); |
| | | this.uniGetInverterTime(mode_type, data, callback); |
| | | } |
| | | |
| | | break; |
| | | //逆变器时间编辑 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_TIME_EDIT: { |
| | | this.uniEditInverterTime(data, callback); |
| | | this.uniEditInverterTime(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //逆变器上传数据到云端 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_UPLOADING_DATA: { |
| | | this.uniUploadDataToCloud(data, callback); |
| | | this.uniUploadDataToCloud(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //逆变器清空住宅id |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_CLEAR_DATA: { |
| | | this.uniClearInverterHomeId(data, callback); |
| | | this.uniClearInverterHomeId(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //获取未处理/未读消息数量 |
| | | case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MESSAGE_NUMBER: { |
| | | this.uniGetMessageNumber(mode_type, data, callback); |
| | | } |
| | | break; |
| | | |
| | | } |
| | | |
| | | } else if (HDLUniMP.UNI_EVENT_REPLY_WIFI_MODEL.equals(topic)) { |
| | | WifiUtils wifiUtils = new WifiUtils(HDLApp.getInstance()); |
| | | WifiUtils wifiUtils = WifiUtils.getInstance(); |
| | | //wifi模块 |
| | | switch (type) { |
| | | //获取wifi列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_WIFI_LIST: { |
| | | if (callback != null) { |
| | | uniCallbackData(wifiUtils.getScanResult(), callback); |
| | | uniCallbackData(mode_type, wifiUtils.getScanResult(), callback); |
| | | } |
| | | } |
| | | break; |
| | | //当前wifi详情 |
| | | case HDLUniMP.UNI_EVENT_REPLY_WIFI_INFO: { |
| | | if (callback != null) { |
| | | uniCallbackData(wifiUtils.getCurrentConnectWifiInfo(), callback); |
| | | uniCallbackData(mode_type, wifiUtils.getCurrentConnectWifiInfo(), callback); |
| | | } |
| | | } |
| | | break; |
| | |
| | | switch (type) { |
| | | //向云端获取oid列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_CLOUD_OID_LIST: { |
| | | this.uniGetCloudOidList(data, callback); |
| | | this.uniGetCloudOidList(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //当前设备固件列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_LIST: { |
| | | this.uniGetCurrentDeviceFirmwares(data, callback); |
| | | this.uniGetCurrentDeviceFirmwares(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //设备新固件列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_NEW_LIST: { |
| | | this.uniGetNewDeviceFirmwares(data, callback); |
| | | this.uniGetNewDeviceFirmwares(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //设备本地固件列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_LOCAL: { |
| | | this.uniGetLocalFirmwares(data, callback); |
| | | this.uniGetLocalFirmwares(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //设备固件下载 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_DOWNLOAD: { |
| | | this.uniDeviceFirmwareDownload(data, callback); |
| | | this.uniDeviceFirmwareDownload(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //设备固件升级 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_UPGRADE: { |
| | | this.uniUpgradeDeviceFirmware(data, callback); |
| | | this.uniUpgradeDeviceFirmware(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //当前设备驱动列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_LIST: { |
| | | this.uniGetCurrentGatewayDrivers(data, callback); |
| | | this.uniGetCurrentGatewayDrivers(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //设备新驱动列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_NEW: { |
| | | this.uniGetNewGatewayDrivers(data, callback); |
| | | this.uniGetNewGatewayDrivers(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //设备本地驱动列表 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_LOCAL: { |
| | | this.uniGetLocalDrivers(data, callback); |
| | | this.uniGetLocalDrivers(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //设备驱动下载 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_DOWNLOAD: { |
| | | this.uniGatewayDriverDownload(data, callback); |
| | | this.uniGatewayDriverDownload(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //设备驱动升级 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_UPGRADE: { |
| | | this.uniUpgradeGatewayDriver(data, callback); |
| | | this.uniUpgradeGatewayDriver(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //设备取消下载升级文件 |
| | | //设备取消驱动,固件下载升级文件 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_CANCEL_DOWNLOAD: { |
| | | this.uniCancelDownloadingUpgradeFile(data, callback); |
| | | this.uniCancelDownloadingUpgradeFile(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //设备驱动,固件取消升级 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_CANCEL_UPGRADE: { |
| | | this.uniCancelUpgrade(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //打开服务 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_OPEN_SERVICE: { |
| | | this.uniOpenService(data, callback); |
| | | this.uniOpenService(mode_type, data, callback); |
| | | } |
| | | break; |
| | | //关闭服务 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTA_CLOSE_SERVICE: { |
| | | this.uniCloseService(data, callback); |
| | | this.uniCloseService(mode_type, data, callback); |
| | | } |
| | | break; |
| | | |
| | |
| | | switch (type) { |
| | | //获取温度单位 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTHER_UNIT: { |
| | | uniCallbackData(UserConfigManage.getInstance().getTemperature_unit(), callback); |
| | | uniCallbackData(mode_type, UserConfigManage.getInstance().getTemperature_unit(), callback); |
| | | } |
| | | break; |
| | | //获取当前app语言 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTHER_APP_LANGUAGE: { |
| | | uniCallbackData(UserConfigManage.getInstance().getCurrentAppLanguage(), callback); |
| | | uniCallbackData(mode_type, UserConfigManage.getInstance().getCurrentAppLanguage(), callback); |
| | | } |
| | | break; |
| | | //获取位置信息 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTHER_LOCATION_INFO: { |
| | | this.uniGetLocationInfo(mode_type, data, callback); |
| | | } |
| | | //专门收集uni日志 |
| | | case HDLUniMP.UNI_EVENT_REPLY_OTHER_UNI_LOG: { |
| | | String customizeContentFormat = getKeyValue("customizeContentFormat", getKeyValue("data", data)); |
| | | HdlLogLogic.print("uni--->log--->" + customizeContentFormat, true); |
| | | } |
| | | } |
| | | } else if (HDLUniMP.UNI_EVENT_REPLY_MINE_MODEL.equals(topic)) { |
| | | //我的模块 |
| | | switch (type) { |
| | | //资料编辑 |
| | | case HDLUniMP.UNI_EVENT_REPLY_MINE_EDIT_USER_INFO: { |
| | | Intent intent = new Intent(); |
| | | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| | | intent.setClass(HDLApp.getInstance(), PersonalDataActivity.class); |
| | | HDLApp.getInstance().startActivity(intent); |
| | | } |
| | | break; |
| | | //电站选择 |
| | | case HDLUniMP.UNI_EVENT_REPLY_MINE_SELECTED_POWERSTATION: { |
| | | Intent intent = new Intent(); |
| | | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| | | intent.setClass(HDLApp.getInstance(), PowerStationsListEdit.class); |
| | | HDLApp.getInstance().startActivity(intent); |
| | | } |
| | | break; |
| | | //消息中心 |
| | | case HDLUniMP.UNI_EVENT_REPLY_MINE_MESSAGE_CENTER: { |
| | | Intent intent = new Intent(); |
| | | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| | | intent.setClass(HDLApp.getInstance(), MessageCenterList.class); |
| | | HDLApp.getInstance().startActivity(intent); |
| | | } |
| | | break; |
| | | //关于 |
| | | case HDLUniMP.UNI_EVENT_REPLY_MINE_ABOUT: { |
| | | Intent intent = new Intent(); |
| | | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| | | intent.setClass(HDLApp.getInstance(), AsRegardsActivity.class); |
| | | HDLApp.getInstance().startActivity(intent); |
| | | } |
| | | break; |
| | | //设置 |
| | | case HDLUniMP.UNI_EVENT_REPLY_MINE_SETTING: { |
| | | Intent intent = new Intent(); |
| | | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| | | intent.setClass(HDLApp.getInstance(), SetActivity.class); |
| | | HDLApp.getInstance().startActivity(intent); |
| | | } |
| | | break; |
| | | |
| | | |
| | | } |
| | | } |
| | | HdlLogLogic.print("uni===原生接收uni发来的数据===大类->" + topic + "\r\n" + data, false); |
| | | |
| | | } catch (Exception e) { |
| | | HdlLogLogic.print("uni===原生接收uni发来的数据===" + e.getMessage(), false); |
| | | HdlLogLogic.print("uni--->发送--->" + e.getMessage(), true); |
| | | } |
| | | |
| | | } |
| | |
| | | public void openUniMP(String path, JSONObject jsonObject) { |
| | | JSONObject json = this.createdJSONObject(jsonObject, true); |
| | | HDLUniMPSDKManager.getInstance().openUniMP(HDLUniMP.UNI_APP_ID, path, json, HdlUniLogic.this); |
| | | HdlLogLogic.print("uni===组装uni发送数据格式===" + json, false); |
| | | HdlLogLogic.print("uni--->组装uni发送数据格式--->" + json, false); |
| | | } |
| | | |
| | | /** |
| | |
| | | try { |
| | | HDLUniMPSDKManager.getInstance().sendUniMPEvent(HDLUniMP.UNI_APP_ID, topic, getJSONObject(callBackBaseBean)); |
| | | } catch (Exception e) { |
| | | HdlLogLogic.print("uni===原生主动向小程序发送通知事件===" + e.getMessage(), false); |
| | | HdlLogLogic.print("uni--->原生主动向小程序发送通知事件--->" + e.getMessage(), false); |
| | | } |
| | | } |
| | | |
| | |
| | | //region ******uni接口方法****** |
| | | |
| | | /** |
| | | * 获取位置信息,包括经纬度 |
| | | */ |
| | | private void uniGetLocationInfo(String type, Object data, DCUniMPJSCallback callback) { |
| | | try { |
| | | // 初始化LocationManager对象 |
| | | LocationManager locationManager = (LocationManager) HDLApp.getInstance().getSystemService(Context.LOCATION_SERVICE); |
| | | Geolocation geolocation = new Geolocation(); |
| | | //INTERNET 允许使用网络 |
| | | //ACCESS_FINE_LOCATION 允许使用GPS定位 |
| | | //ACCESS_COARSE_LOCATION 允许使用WIFI热点或基站来获取粗略的定位 |
| | | if (ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { |
| | | geolocation.setResult(-2); |
| | | geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_no_location_information_permission)); |
| | | uniCallbackData(type, geolocation, callback); |
| | | return; |
| | | } |
| | | // 判断设备是否支持定位功能 |
| | | if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { |
| | | geolocation.setResult(-1); |
| | | geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_the_location_function_is_not_enabled)); |
| | | //todo 提示用户打开定位功能或者引导用户去系统设置页面打开定位功能 |
| | | uniCallbackData(type, geolocation, callback); |
| | | return; |
| | | } |
| | | Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); |
| | | if (location == null) { |
| | | geolocation.setResult(-3); |
| | | geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_unable_location_move10_meters_later)); |
| | | uniCallbackData(type, geolocation, callback); |
| | | return; |
| | | } |
| | | geolocation.setResult(0); |
| | | geolocation.setDes(HDLApp.getInstance().getString(R.string.succeed)); |
| | | BigDecimal latitude = BigDecimal.valueOf(location.getLatitude());//经度 |
| | | BigDecimal longitude = BigDecimal.valueOf(location.getLongitude());//纬度 |
| | | double lat = latitude.setScale(6, RoundingMode.HALF_DOWN).doubleValue(); |
| | | double lon = longitude.setScale(6, RoundingMode.HALF_DOWN).doubleValue(); |
| | | geolocation.setLatitude(lat);//经度 |
| | | geolocation.setLongitude(lon);//纬度 |
| | | uniCallbackData(type, geolocation, callback); |
| | | } catch (Exception e) { |
| | | Geolocation geolocation = new Geolocation(); |
| | | geolocation.setResult(-4); |
| | | geolocation.setDes(e.getMessage()); |
| | | uniCallbackData(type, geolocation, callback); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 向云端获取逆变器oid列表 |
| | | * 前提条件:要上传逆变器oid列表给云端 |
| | | * |
| | | * @param callback - |
| | | */ |
| | | private void uniGetCloudOidList(Object data, DCUniMPJSCallback callback) { |
| | | private void uniGetCloudOidList(String type, Object data, DCUniMPJSCallback callback) { |
| | | HdlOtaLogic.getInstance().getCloudOidList(new CloudCallBeak<List<DeviceOidInfoBean>>() { |
| | | @Override |
| | | public void onSuccess(List<DeviceOidInfoBean> obj) { |
| | | uniCallbackData(obj, callback); |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | * 向云端获取【当前设备固件】列表 |
| | | * 前提条件:设备自动上报oid信息给云端 |
| | | */ |
| | | private void uniGetCurrentDeviceFirmwares(Object data, DCUniMPJSCallback callback) { |
| | | private void uniGetCurrentDeviceFirmwares(String type, Object data, DCUniMPJSCallback callback) { |
| | | String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//云端上设备id |
| | | HdlOtaLogic.getInstance().getCurrentDeviceFirmwares(deviceOidId, new CloudCallBeak<List<DeviceFirmwareBean>>() { |
| | | @Override |
| | | public void onSuccess(List<DeviceFirmwareBean> obj) { |
| | | uniCallbackData(obj, callback); |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | * 向云端获取【设备新固件】列表 |
| | | * 前提条件:要通过平台软件上传新固件 |
| | | */ |
| | | private void uniGetNewDeviceFirmwares(Object data, DCUniMPJSCallback callback) { |
| | | private void uniGetNewDeviceFirmwares(String type, Object data, DCUniMPJSCallback callback) { |
| | | String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//硬件型号 |
| | | String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//系统镜像id |
| | | HdlOtaLogic.getInstance().getNewDeviceFirmwares(hardwareModel, osImageId, new CloudCallBeak<List<CloudDeviceFirmwaresBean>>() { |
| | | @Override |
| | | public void onSuccess(List<CloudDeviceFirmwaresBean> obj) { |
| | | uniCallbackData(obj, callback); |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | /** |
| | | * 获取【设备本地固件】列表 |
| | | */ |
| | | private void uniGetLocalFirmwares(Object data, DCUniMPJSCallback callback) { |
| | | private void uniGetLocalFirmwares(String type, Object data, DCUniMPJSCallback callback) { |
| | | try { |
| | | String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//硬件型号 |
| | | // String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//硬件型号 |
| | | String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//系统镜像id |
| | | String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//固件版本id |
| | | // String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//固件版本id |
| | | // String oid = getKeyValue("oid", getKeyValue("data", data));//固件oid |
| | | List<DeviceFirmwareBean> list = new ArrayList<>(); |
| | | String driverFileList = HdlFileLogic.getInstance().getFirmwareRootPath(); |
| | |
| | | } |
| | | } |
| | | if (callback != null) { |
| | | this.uniCallbackData(list, callback); |
| | | this.uniCallbackData(type, list, callback); |
| | | } |
| | | } catch (Exception ignored) { |
| | | } |
| | |
| | | /** |
| | | * 向云端发起【设备固件下载】指令 |
| | | */ |
| | | private void uniDeviceFirmwareDownload(Object data, DCUniMPJSCallback callback) { |
| | | String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//云端上设备id |
| | | private void uniDeviceFirmwareDownload(String type, Object data, DCUniMPJSCallback callback) { |
| | | // String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//云端上设备id |
| | | String oid = getKeyValue("oid", getKeyValue("data", data));//该固件的oid |
| | | String imageId = getKeyValue("imageId", getKeyValue("data", data));//固件镜像id |
| | | String version = getKeyValue("version", getKeyValue("data", data));//固件版本 |
| | |
| | | HdlOtaLogic.getInstance().getDeviceUpgradeDownloadFile(url, new CloudCallBeak<ResponseBody>() { |
| | | @Override |
| | | public void onSuccess(ResponseBody responseBody) { |
| | | String firmwarePathFileName = HdlFileLogic.getInstance().getFirmwarePathFileName(oid, imageId, version); |
| | | boolean isBoolean = HdlOtaLogic.getInstance().disposeDownLoadFile(firmwarePathFileName, responseBody, md5, HdlOtaLogic.firmware_type); |
| | | if (isBoolean) { |
| | | HdlFileLogic.getInstance().deleteFile(localUrl);//下载成功,删除旧固件文件; |
| | | } else { |
| | | HdlFileLogic.getInstance().deleteFile(firmwarePathFileName);//下载失败,删除不完整固件文件; |
| | | } |
| | | HdlLogLogic.print("写入新固件文件到内存成功.", true); |
| | | HdlThreadLogic.runSubThread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | String firmwarePathFileName = HdlFileLogic.getInstance().getFirmwarePathFileName(oid, imageId, version); |
| | | //不在子线程读流会卡死主线程 |
| | | boolean isBoolean = HdlOtaLogic.getInstance().disposeDownLoadFile(firmwarePathFileName, responseBody, md5, HdlOtaLogic.firmware_type); |
| | | if (isBoolean) { |
| | | HdlFileLogic.getInstance().deleteFile(localUrl);//下载成功,删除旧固件文件; |
| | | } else { |
| | | HdlFileLogic.getInstance().deleteFile(firmwarePathFileName);//下载失败,删除不完整固件文件; |
| | | } |
| | | |
| | | if (isBoolean) { |
| | | uniCallbackData(type, null, 0, "写入新驱动文件到内存成功", callback); |
| | | } else { |
| | | uniCallbackData(type, null, -2, "下载固件升级文件失败", callback); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HdlLogLogic.print("下载固件文件到内存失败.", true); |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | /** |
| | | * 向云端发起【设备固件】升级OTA指令 |
| | | */ |
| | | private void uniUpgradeDeviceFirmware(Object data, DCUniMPJSCallback callback) { |
| | | private void uniUpgradeDeviceFirmware(String type, Object data, DCUniMPJSCallback callback) { |
| | | String homeId = UserConfigManage.getInstance().getHomeId(); |
| | | String deviceMac = getKeyValue("mac", getKeyValue("data", data));//逆变器设备mac(查找socket) |
| | | String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//云端上设备id |
| | | String oid = getKeyValue("oid", getKeyValue("data", data));//升级固件的oid |
| | | String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//固件版本id |
| | | String version = getKeyValue("version", getKeyValue("data", data));//固件版本 |
| | | String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//云端上文件MD5 |
| | | // String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//云端上文件MD5 |
| | | String imageId = getKeyValue("imageId", getKeyValue("data", data));//固件镜像id |
| | | String module = "FW#" + imageId;//模块信息(HW:硬件) |
| | | |
| | | //升级本地优先->云端升级 |
| | | boolean isLocalConnect = HdlDeviceLogic.getInstance().isLocalConnect(deviceMac); |
| | | if (isLocalConnect) { |
| | | //本地 |
| | | //1,建立本地服务; |
| | | //2,告诉网关手机ip和端口; |
| | | //实例化 获取ip 地址 |
| | | HdlOtaLogic.getInstance().startLocalService(new ServiceConnection() { |
| | | @Override |
| | | public void onServiceConnected(ComponentName name, IBinder service) { |
| | | //本地升级固件文件路径 |
| | | String firmwarePathFileName = HdlFileLogic.getInstance().getFirmwarePathFileName(oid, imageId, version); |
| | | String data = HdlFileLogic.getInstance().readFile(firmwarePathFileName); |
| | | if (TextUtils.isEmpty(data)) { |
| | | uniCallbackData(null, -2, "本地找不到升级固件文件,请下载好固件文件,再重新升级.", callback); |
| | | return; |
| | | } |
| | | String md5 = HDLMD5Utils.encodeMD5(data);//网关固件需要 |
| | | //升级固件文件地址 |
| | | String upgradeFileLocalPathUrl = AppManagerUtils.getAppManager().getIPAddress(HDLApp.getInstance()) + ":" + MyNanoHttpServer.HTTP_PORT + firmwarePathFileName; |
| | | //通知给网关升级固件文件地址等信息 |
| | | HdlOtaLogic.getInstance().pushUpgradePacketInfo(deviceMac, oid, hardwareModel, version, data.length() + "", upgradeFileLocalPathUrl, md5, new LinkCallBack<String>() { |
| | | HdlDeviceLogic.getInstance().isLocalConnect(deviceMac, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean b) { |
| | | if (b) { |
| | | HdlLogLogic.print("本地升级--->", true); |
| | | //本地 |
| | | //1,建立本地服务; |
| | | //2,告诉网关手机ip和端口; |
| | | //实例化 获取ip 地址 |
| | | HdlOtaLogic.getInstance().startLocalService(new ServiceConnection() { |
| | | @Override |
| | | public void onSuccess(String obj) { |
| | | HdlLogLogic.print("通知给网关升级固件文件地址成功.", true); |
| | | public void onServiceConnected(ComponentName name, IBinder service) { |
| | | //本地升级固件文件路径 |
| | | String firmwarePathFileName = HdlFileLogic.getInstance().getFirmwarePathFileName(oid, imageId, version); |
| | | byte[] data = HdlFileLogic.getInstance().readFileByte(firmwarePathFileName); |
| | | if (data == null || data.length == 0) { |
| | | uniCallbackData(type, null, -2, "本地找不到升级固件文件,请下载好固件文件,再重新升级.", callback); |
| | | return; |
| | | } |
| | | String md5 = HDLMD5Utils.encodeMD5(data);//网关固件需要 |
| | | //升级固件文件地址 |
| | | String upgradeFileLocalPathUrl = "http://" + NetworkUtils.getIPAddress(HDLApp.getInstance()) + ":" + MyNanoHttpServer.HTTP_PORT + firmwarePathFileName; |
| | | //通知给网关升级固件文件地址等信息 |
| | | HdlOtaLogic.getInstance().pushUpgradePacketInfo(deviceMac, oid, module, version, data.length + "", upgradeFileLocalPathUrl, md5, new LinkCallBack<String>() { |
| | | @Override |
| | | public void onSuccess(String obj) { |
| | | HdlLogLogic.print("通知给网关升级固件文件地址成功.", true); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(type, null, -2, "通知给网关升级固件文件地址失败,无法升级,", callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | HdlLogLogic.print("通知给网关升级固件文件地址失败,无法升级.", true); |
| | | uniCallbackData(null, -2, "通知给网关升级固件文件地址失败,无法升级,", callback); |
| | | public void onServiceDisconnected(ComponentName name) { |
| | | uniCallbackData(type, null, -2, "本地服务有异常失败,无法升级,", callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void onServiceDisconnected(ComponentName name) { |
| | | uniCallbackData(null, -2, "本地服务有异常失败,无法升级,", callback); |
| | | } |
| | | }); |
| | | |
| | | } else { |
| | | //远程升级需要检测在逆变器有没有连接上云 |
| | | HdlDeviceLogic.getInstance().checkInverterConnectedCloud(deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { |
| | | @Override |
| | | public void onSuccess(CloudInverterDeviceBean cloudInverterDeviceBean) { |
| | | //1:连接中,2:故障,3:运行,4:离线,6:逆变器连不上云(自定义) |
| | | if (cloudInverterDeviceBean == null) { |
| | | uniCallbackData(null, 6, HDLApp.getInstance().getString(R.string.ota_binding_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | if (cloudInverterDeviceBean.getDeviceStatus() != 3) { |
| | | uniCallbackData(null, cloudInverterDeviceBean.getDeviceStatus(), HDLApp.getInstance().getString(R.string.ota_not_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | //4:运行 |
| | | HdlOtaLogic.getInstance().upgradeDeviceFirmware(deviceOidId, firmwareVersionId, new CloudCallBeak<Boolean>() { |
| | | } else { |
| | | HdlLogLogic.print("在线升级--->", true); |
| | | //远程升级需要检测在逆变器有没有连接上云 |
| | | HdlDeviceLogic.getInstance().checkInverterConnectedCloud(homeId, deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(obj, callback); |
| | | public void onSuccess(CloudInverterDeviceBean cloudInverterDeviceBean) { |
| | | //1:连接中,2:故障,3:运行,4:离线,6:逆变器连不上云(自定义) |
| | | if (cloudInverterDeviceBean == null) { |
| | | uniCallbackData(type, null, 6, HDLApp.getInstance().getString(R.string.ota_binding_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | if (cloudInverterDeviceBean.getDeviceStatus() != 3) { |
| | | uniCallbackData(type, null, cloudInverterDeviceBean.getDeviceStatus(), HDLApp.getInstance().getString(R.string.ota_not_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | //4:运行 |
| | | HdlOtaLogic.getInstance().upgradeDeviceFirmware(deviceOidId, firmwareVersionId, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HdlLogLogic.print("在线升级--->", true); |
| | | //远程升级需要检测在逆变器有没有连接上云 |
| | | HdlDeviceLogic.getInstance().checkInverterConnectedCloud(homeId, deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { |
| | | @Override |
| | | public void onSuccess(CloudInverterDeviceBean cloudInverterDeviceBean) { |
| | | //1:连接中,2:故障,3:运行,4:离线,6:逆变器连不上云(自定义) |
| | | if (cloudInverterDeviceBean == null) { |
| | | uniCallbackData(type, null, 6, HDLApp.getInstance().getString(R.string.ota_binding_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | if (cloudInverterDeviceBean.getDeviceStatus() != 3) { |
| | | uniCallbackData(type, null, cloudInverterDeviceBean.getDeviceStatus(), HDLApp.getInstance().getString(R.string.ota_not_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | //4:运行 |
| | | HdlOtaLogic.getInstance().upgradeDeviceFirmware(deviceOidId, firmwareVersionId, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | } |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 向云端获取【当前设备驱动】列表 |
| | | * 前提条件:设备自动上报oid信息给云端 |
| | | */ |
| | | private void uniGetCurrentGatewayDrivers(Object data, DCUniMPJSCallback callback) { |
| | | private void uniGetCurrentGatewayDrivers(String type, Object data, DCUniMPJSCallback callback) { |
| | | String deviceOid = getKeyValue("oid", getKeyValue("data", data)); |
| | | HdlOtaLogic.getInstance().getCurrentGatewayDrivers(deviceOid, new CloudCallBeak<List<GatewayDriverBean>>() { |
| | | @Override |
| | | public void onSuccess(List<GatewayDriverBean> obj) { |
| | | uniCallbackData(obj, callback); |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | * 向云端获取【设备新驱动】列表 |
| | | * 前提条件:要通过平台软件上传新驱动 |
| | | */ |
| | | private void uniGetNewGatewayDrivers(Object data, DCUniMPJSCallback callback) { |
| | | private void uniGetNewGatewayDrivers(String type, Object data, DCUniMPJSCallback callback) { |
| | | String driveCode = getKeyValue("driveCode", getKeyValue("data", data));//驱动编号或驱动名称 |
| | | String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//驱动类型id |
| | | HdlOtaLogic.getInstance().getNewGatewayDrivers(driveCode, osImageId, new CloudCallBeak<CloudGatewayDriversBean>() { |
| | | @Override |
| | | public void onSuccess(CloudGatewayDriversBean obj) { |
| | | uniCallbackData(obj, callback); |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | /** |
| | | * 获取【设备本地驱动】列表 |
| | | */ |
| | | private void uniGetLocalDrivers(Object data, DCUniMPJSCallback callback) { |
| | | private void uniGetLocalDrivers(String type, Object data, DCUniMPJSCallback callback) { |
| | | try { |
| | | String driveCode = getKeyValue("driveCode", getKeyValue("data", data));//驱动编号或驱动名称 |
| | | String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//驱动类型id |
| | | String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动类型id |
| | | // String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//驱动类型id |
| | | // String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动类型id |
| | | List<GatewayDriverBean> list = new ArrayList<>(); |
| | | String driverFileList = HdlFileLogic.getInstance().getDriveRootPath(); |
| | | File file = new File(driverFileList); |
| | |
| | | } |
| | | } |
| | | if (callback != null) { |
| | | this.uniCallbackData(list, callback); |
| | | this.uniCallbackData(type, list, callback); |
| | | } |
| | | } catch (Exception exception) { |
| | | this.uniCallbackData(new ArrayList<>(), callback); |
| | | this.uniCallbackData(type, new ArrayList<>(), callback); |
| | | } |
| | | |
| | | } |
| | |
| | | /** |
| | | * 向云端发起【设备驱动下载】指令 |
| | | */ |
| | | private void uniGatewayDriverDownload(Object data, DCUniMPJSCallback callback) { |
| | | String deviceOid = getKeyValue("oid", getKeyValue("data", data));//逆变器设备oid |
| | | private void uniGatewayDriverDownload(String type, Object data, DCUniMPJSCallback callback) { |
| | | |
| | | // String deviceOid = getKeyValue("oid", getKeyValue("data", data));//逆变器设备oid |
| | | String driverCode = getKeyValue("driverCode", getKeyValue("data", data));//驱动编码 |
| | | String imageId = getKeyValue("imageId", getKeyValue("data", data));//驱动镜像id |
| | | // String imageId = getKeyValue("imageId", getKeyValue("data", data));//驱动镜像id |
| | | String version = getKeyValue("version", getKeyValue("data", data));//驱动版本 |
| | | String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动版本id |
| | | // String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动版本id |
| | | String localUrl = getKeyValue("localUrl", getKeyValue("data", data));//储存在本地驱动文件路径 |
| | | String url = getKeyValue("url", getKeyValue("data", data));//云端上文件地址 |
| | | String md5 = getKeyValue("md5", getKeyValue("data", data));//云端上文件MD5 |
| | | HdlOtaLogic.getInstance().getDeviceUpgradeDownloadFile(url, new CloudCallBeak<ResponseBody>() { |
| | | @Override |
| | | public void onSuccess(ResponseBody responseBody) { |
| | | String drivePathFileName = HdlFileLogic.getInstance().getDrivePathFileName(driverCode, version); |
| | | boolean isBoolean = HdlOtaLogic.getInstance().disposeDownLoadFile(drivePathFileName, responseBody, md5, HdlOtaLogic.driver_type); |
| | | if (isBoolean) { |
| | | HdlFileLogic.getInstance().deleteFile(localUrl);//下载成功,删除旧驱动文件; |
| | | } else { |
| | | HdlFileLogic.getInstance().deleteFile(drivePathFileName);//下载失败,删除不完整驱动文件; |
| | | } |
| | | HdlLogLogic.print("写入新驱动文件到内存成功.", true); |
| | | HdlThreadLogic.runSubThread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | |
| | | String drivePathFileName = HdlFileLogic.getInstance().getDrivePathFileName(driverCode, version); |
| | | //不在子线程读流会卡死主线程 |
| | | boolean isBoolean = HdlOtaLogic.getInstance().disposeDownLoadFile(drivePathFileName, responseBody, md5, HdlOtaLogic.driver_type); |
| | | if (isBoolean) { |
| | | HdlFileLogic.getInstance().deleteFile(localUrl);//下载成功,删除旧驱动文件; |
| | | } else { |
| | | HdlFileLogic.getInstance().deleteFile(drivePathFileName);//下载失败,删除不完整驱动文件; |
| | | } |
| | | if (isBoolean) { |
| | | uniCallbackData(type, null, 0, "写入新驱动文件到内存成功", callback); |
| | | } else { |
| | | uniCallbackData(type, null, -2, "下载驱动升级文件失败", callback); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HdlLogLogic.print("下载驱动文件到内存失败.", true); |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | /** |
| | | * 向云端发起【设备驱动】升级OTA指令 |
| | | */ |
| | | private void uniUpgradeGatewayDriver(Object data, DCUniMPJSCallback callback) { |
| | | private void uniUpgradeGatewayDriver(String type, Object data, DCUniMPJSCallback callback) { |
| | | |
| | | String homeId = UserConfigManage.getInstance().getHomeId(); |
| | | String deviceMac = getKeyValue("mac", getKeyValue("data", data));//逆变器设备mac(查找socket) |
| | | String deviceOid = getKeyValue("oid", getKeyValue("data", data));//逆变器设备oid |
| | | String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动版本id |
| | | String module = getKeyValue("module", getKeyValue("data", data));//模块信息 |
| | | String version = getKeyValue("version", getKeyValue("data", data));//驱动版本号 |
| | | String driverCode = getKeyValue("driverCode", getKeyValue("data", data));//驱动编码 |
| | | String imageId = getKeyValue("imageId", getKeyValue("data", data));//固件镜像id |
| | | String module = driverCode + "#" + imageId; |
| | | //升级本地优先->云端升级 |
| | | boolean isLocalConnect = HdlDeviceLogic.getInstance().isLocalConnect(deviceMac); |
| | | if (isLocalConnect) { |
| | | //本地 |
| | | //1,建立本地服务; |
| | | // 2,告诉网关手机ip和端口; |
| | | //实例化 获取ip 地址 |
| | | HdlOtaLogic.getInstance().startLocalService(new ServiceConnection() { |
| | | @Override |
| | | public void onServiceConnected(ComponentName name, IBinder service) { |
| | | //本地升级驱动文件路径 |
| | | String drivePathFileName = HdlFileLogic.getInstance().getDrivePathFileName(driverCode, version); |
| | | String data = HdlFileLogic.getInstance().readFile(drivePathFileName); |
| | | if (TextUtils.isEmpty(data)) { |
| | | uniCallbackData(null, -2, "本地找不到升级驱动文件,请下载好驱动文件,再重新升级.", callback); |
| | | return; |
| | | } |
| | | String md5 = HDLMD5Utils.encodeMD5(data);//网关驱动需要 |
| | | //升级驱动文件地址 |
| | | String upgradeFileLocalPathUrl = AppManagerUtils.getAppManager().getIPAddress(HDLApp.getInstance()) + ":" + MyNanoHttpServer.HTTP_PORT + drivePathFileName; |
| | | //通知给网关升级驱动文件地址等信息 |
| | | HdlOtaLogic.getInstance().pushUpgradePacketInfo(deviceMac, deviceOid, module, version, data.length() + "", upgradeFileLocalPathUrl, md5, new LinkCallBack<String>() { |
| | | HdlDeviceLogic.getInstance().isLocalConnect(deviceMac, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean b) { |
| | | if (b) { |
| | | HdlLogLogic.print("本地升级--->", true); |
| | | //本地 |
| | | //1,建立本地服务; |
| | | // 2,告诉网关手机ip和端口; |
| | | //实例化 获取ip 地址 |
| | | HdlOtaLogic.getInstance().startLocalService(new ServiceConnection() { |
| | | @Override |
| | | public void onSuccess(String obj) { |
| | | HdlLogLogic.print("通知给网关升级驱动文件地址成功.", false); |
| | | public void onServiceConnected(ComponentName name, IBinder service) { |
| | | //本地升级驱动文件路径 |
| | | String drivePathFileName = HdlFileLogic.getInstance().getDrivePathFileName(driverCode, version); |
| | | byte[] data = HdlFileLogic.getInstance().readFileByte(drivePathFileName); |
| | | if (data == null || data.length == 0) { |
| | | uniCallbackData(type, null, -2, "本地找不到升级驱动文件,请下载好驱动文件,再重新升级.", callback); |
| | | return; |
| | | } |
| | | String md5 = HDLMD5Utils.encodeMD5(data);//网关驱动需要 |
| | | //升级驱动文件地址 |
| | | String upgradeFileLocalPathUrl = "http://" + NetworkUtils.getIPAddress(HDLApp.getInstance()) + ":" + MyNanoHttpServer.HTTP_PORT + drivePathFileName; |
| | | //通知给网关升级驱动文件地址等信息 |
| | | HdlOtaLogic.getInstance().pushUpgradePacketInfo(deviceMac, deviceOid, module, version, data.length + "", upgradeFileLocalPathUrl, md5, new LinkCallBack<String>() { |
| | | @Override |
| | | public void onSuccess(String obj) { |
| | | HdlLogLogic.print("通知给网关升级驱动文件地址成功.", true); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(type, null, -2, "通知给网关升级驱动文件地址失败,无法升级,", callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | HdlLogLogic.print("通知给网关升级驱动文件地址失败,无法升级.", false); |
| | | uniCallbackData(null, -2, "通知给网关升级驱动文件地址失败,无法升级,", callback); |
| | | public void onServiceDisconnected(ComponentName name) { |
| | | uniCallbackData(type, null, -2, "本地服务有异常失败,无法升级,", callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void onServiceDisconnected(ComponentName name) { |
| | | uniCallbackData(null, -2, "本地服务有异常失败,无法升级,", callback); |
| | | } |
| | | }); |
| | | } else { |
| | | //远程升级需要【检测】在逆变器有没有连接上云 |
| | | HdlDeviceLogic.getInstance().checkInverterConnectedCloud(deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { |
| | | @Override |
| | | public void onSuccess(CloudInverterDeviceBean cloudInverterDeviceBean) { |
| | | //1:连接中,2:故障,3:运行,4:离线,6:逆变器连不上云(自定义) |
| | | if (cloudInverterDeviceBean == null) { |
| | | uniCallbackData(null, 6, HDLApp.getInstance().getString(R.string.ota_binding_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | if (cloudInverterDeviceBean.getDeviceStatus() != 3) { |
| | | uniCallbackData(null, cloudInverterDeviceBean.getDeviceStatus(), HDLApp.getInstance().getString(R.string.ota_not_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | //4:运行 |
| | | HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() { |
| | | } else { |
| | | HdlLogLogic.print("在线升级--->", true); |
| | | //远程升级需要【检测】在逆变器有没有连接上云 |
| | | HdlDeviceLogic.getInstance().checkInverterConnectedCloud(homeId, deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(obj, callback); |
| | | public void onSuccess(CloudInverterDeviceBean cloudInverterDeviceBean) { |
| | | //1:连接中,2:故障,3:运行,4:离线,6:逆变器连不上云(自定义) |
| | | if (cloudInverterDeviceBean == null) { |
| | | uniCallbackData(type, null, 6, HDLApp.getInstance().getString(R.string.ota_binding_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | if (cloudInverterDeviceBean.getDeviceStatus() != 3) { |
| | | uniCallbackData(type, null, cloudInverterDeviceBean.getDeviceStatus(), HDLApp.getInstance().getString(R.string.ota_not_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | //4:运行 |
| | | HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HdlLogLogic.print("在线升级--->", true); |
| | | //远程升级需要【检测】在逆变器有没有连接上云 |
| | | HdlDeviceLogic.getInstance().checkInverterConnectedCloud(homeId, deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { |
| | | @Override |
| | | public void onSuccess(CloudInverterDeviceBean cloudInverterDeviceBean) { |
| | | //1:连接中,2:故障,3:运行,4:离线,6:逆变器连不上云(自定义) |
| | | if (cloudInverterDeviceBean == null) { |
| | | uniCallbackData(type, null, 6, HDLApp.getInstance().getString(R.string.ota_binding_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | if (cloudInverterDeviceBean.getDeviceStatus() != 3) { |
| | | uniCallbackData(type, null, cloudInverterDeviceBean.getDeviceStatus(), HDLApp.getInstance().getString(R.string.ota_not_cloud_upgrade_fails), callback); |
| | | return; |
| | | } |
| | | //4:运行 |
| | | HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(type, obj, callback); |
| | | } |
| | | |
| | | } |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 取消下载升级文件 |
| | | * 取消下载【驱动,固件】升级文件 |
| | | */ |
| | | private void uniCancelDownloadingUpgradeFile(Object data, DCUniMPJSCallback callback) { |
| | | HdlOtaLogic.getInstance().setStopDriversDownload(); |
| | | private void uniCancelDownloadingUpgradeFile(String type, Object data, DCUniMPJSCallback callback) { |
| | | HdlOtaLogic.getInstance().stopDownloadUpgradeFile(); |
| | | uniCallbackData(type, null, 0, "取消下载成功.", callback); |
| | | } |
| | | |
| | | /** |
| | | * 取消【驱动,固件】升级 |
| | | */ |
| | | private void uniCancelUpgrade(String type, Object data, DCUniMPJSCallback callback) { |
| | | HdlOtaLogic.getInstance().cancelUpgrade("", new LinkCallBack<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 开启服务 |
| | | */ |
| | | private void uniOpenService(Object data, DCUniMPJSCallback callback) { |
| | | private void uniOpenService(String type, Object data, DCUniMPJSCallback callback) { |
| | | HdlOtaLogic.getInstance().startLocalService(new ServiceConnection() { |
| | | @Override |
| | | public void onServiceConnected(ComponentName name, IBinder service) { |
| | |
| | | /** |
| | | * 关闭服务 |
| | | */ |
| | | private void uniCloseService(Object data, DCUniMPJSCallback callback) { |
| | | private void uniCloseService(String type, Object data, DCUniMPJSCallback callback) { |
| | | HdlOtaLogic.getInstance().unLocalService(); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取用户信息 |
| | | * |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniGetUserInfo(String type, Object data, DCUniMPJSCallback callback) { |
| | | HdlAccountLogic.getInstance().getMemberInfo_C(new CloudCallBeak<CUserInfo>() { |
| | | @Override |
| | | public void onSuccess(CUserInfo cUserInfo) { |
| | | if (cUserInfo == null) { |
| | | return; |
| | | } |
| | | UserConfigManage.getInstance().setBingPhone(cUserInfo.getMemberPhone()); |
| | | UserConfigManage.getInstance().setBingEmail(cUserInfo.getMemberEmail()); |
| | | UserConfigManage.getInstance().Save(); |
| | | //获取用户头像路径 |
| | | if (cUserInfo.getMemberHeadIcon().contains("http")) { |
| | | UserConfigManage.getInstance().setUserImageUrl(cUserInfo.getMemberHeadIcon()); |
| | | //更新用户头像 |
| | | uniCallbackData(type, cUserInfo, callback); |
| | | } else { |
| | | HdlAccountLogic.getInstance().getImageKey_C(cUserInfo.getMemberHeadIcon(), new CloudCallBeak<String>() { |
| | | @Override |
| | | public void onSuccess(String url) { |
| | | cUserInfo.setMemberHeadIcon(url); |
| | | UserConfigManage.getInstance().setUserImageUrl(cUserInfo.getMemberHeadIcon()); |
| | | uniCallbackData(type, cUserInfo, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, cUserInfo, callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 获取用户头像 |
| | | * |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniGetImageKey(String type, Object data, DCUniMPJSCallback callback) { |
| | | String imageKey = getKeyValue("imageKey", getKeyValue("data", data)); |
| | | HdlAccountLogic.getInstance().getImageKey_C(imageKey, new CloudCallBeak<String>() { |
| | | @Override |
| | | public void onSuccess(String url) { |
| | | uniCallbackData(type, url, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 逆变器清空住宅id |
| | | * |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniClearInverterHomeId(Object data, DCUniMPJSCallback callback) { |
| | | private void uniClearInverterHomeId(String type, Object data, DCUniMPJSCallback callback) { |
| | | String mac = getKeyValue("mac", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().clearInverterHomeId(mac, new LinkCallBack<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(null, callback); |
| | | uniCallbackData(type, null, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 获取未处理/未读消息数量 |
| | | * |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniGetMessageNumber(String type, Object data, DCUniMPJSCallback callback) { |
| | | String homeId = getKeyValue("homeId", getKeyValue("data", data)); |
| | | HdlMessageLogic.getInstance().getMessageUntreatedCount(homeId, new CloudCallBeak<String>() { |
| | | @Override |
| | | public void onSuccess(String data) { |
| | | uniCallbackData(type, data, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniUploadDataToCloud(Object data, DCUniMPJSCallback callback) { |
| | | private void uniUploadDataToCloud(String type, Object data, DCUniMPJSCallback callback) { |
| | | String mac = getKeyValue("mac", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().uploadDataToCloud(mac, null); |
| | | List<GatewayBean> list = new ArrayList<>(); |
| | | GatewayBean gatewayBean = new GatewayBean(); |
| | | gatewayBean.setDevice_mac(mac); |
| | | list.add(gatewayBean); |
| | | HdlDeviceLogic.getInstance().uploadDataToCloud(UserConfigManage.getInstance().getHomeId(), list, null); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniEditInverterTime(Object data, DCUniMPJSCallback callback) { |
| | | private void uniEditInverterTime(String type, Object data, DCUniMPJSCallback callback) { |
| | | String mac = getKeyValue("mac", getKeyValue("data", data)); |
| | | String date = getKeyValue("date", getKeyValue("data", data)); |
| | | String time = getKeyValue("time", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().editGatewayTime(mac, date, time, new LinkCallBack<Boolean>() { |
| | | String timezone = getKeyValue("timezone", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().editGatewayTime(mac, date, time, timezone, new LinkCallBack<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(true, callback); |
| | | uniCallbackData(type, true, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniGetInverterTime(Object data, DCUniMPJSCallback callback) { |
| | | private void uniGetInverterTime(String type, Object data, DCUniMPJSCallback callback) { |
| | | String mac = getKeyValue("mac", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().getGatewayTime(mac, new LinkCallBack<DeviceTimeBean>() { |
| | | @Override |
| | | public void onSuccess(DeviceTimeBean deviceTimeBean) { |
| | | if (callback != null) { |
| | | uniCallbackData(deviceTimeBean, callback); |
| | | uniCallbackData(type, deviceTimeBean, callback); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniGetInverterOidList(Object data, DCUniMPJSCallback callback) { |
| | | private void uniGetInverterOidList(String type, Object data, DCUniMPJSCallback callback) { |
| | | String mac = getKeyValue("mac", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().getInverterOidList(mac, new LinkCallBack<List<OidBean>>() { |
| | | @Override |
| | | public void onSuccess(List<OidBean> list) { |
| | | if (callback != null) { |
| | | uniCallbackData(list, callback); |
| | | uniCallbackData(type, list, callback); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 逆变器添加到云端上 |
| | |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniAddInverterDeviceToCloud(Object data, DCUniMPJSCallback callback) { |
| | | private void uniAddInverterDeviceToCloud(String type, Object data, DCUniMPJSCallback callback) { |
| | | String mac = getKeyValue("mac", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().setGatewayRemoteParam(mac, new LinkCallBack<Boolean>() { |
| | | String homeId = UserConfigManage.getInstance().getHomeId(); |
| | | HdlDeviceLogic.getInstance().setGatewayRemoteParam(homeId, mac, new LinkCallBack<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | HdlDeviceLogic.getInstance().editGatewayParam(mac, new LinkCallBack<Boolean>() { |
| | |
| | | public void onSuccess(Boolean obj) { |
| | | GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(mac); |
| | | if (gatewayBean == null) { |
| | | uniCallbackData(null, -100, "本地找不到网关", callback); |
| | | uniCallbackData(type, null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback); |
| | | |
| | | return; |
| | | } |
| | | HdlDeviceLogic.getInstance().addInverterDeviceToCloud(mac, gatewayBean.getGatewayType(), gatewayBean.getSid(), gatewayBean.getOid(), gatewayBean.getDevice_name(), new CloudCallBeak<Boolean>() { |
| | | HdlDeviceLogic.getInstance().addInverterDeviceToCloud(homeId, mac, gatewayBean.getGatewayType(), gatewayBean.getSid(), gatewayBean.getOid(), gatewayBean.getDevice_name(), new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(null, callback); |
| | | uniCallbackData(type, null, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 多个逆变器添加到云端上 |
| | | * |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniAddAllInverterDeviceToCloud(String type, Object data, DCUniMPJSCallback callback) { |
| | | // com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(data); |
| | | try { |
| | | String devices = getKeyValue("devices", getKeyValue("data", data)); |
| | | String homeId = UserConfigManage.getInstance().getHomeId(); //getKeyValue("homeId", getKeyValue("data", data)); |
| | | Gson gson = new Gson(); |
| | | Type typeOfT = new TypeToken<List<GatewayBean>>() { |
| | | }.getType(); |
| | | List<GatewayBean> list = gson.fromJson(devices, typeOfT); |
| | | if (list == null || list.size() == 0) { |
| | | uniCallbackData(type, null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback); |
| | | return; |
| | | } |
| | | //记录条数 |
| | | AtomicInteger atomicInteger = new AtomicInteger(0); |
| | | final boolean[] is_boolean = {false}; |
| | | for (int i = 0; i < list.size(); i++) { |
| | | GatewayBean gatewayBean = list.get(i); |
| | | HdlDeviceLogic.getInstance().setGatewayRemoteParam(homeId, gatewayBean.getDevice_mac(), new LinkCallBack<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | HdlDeviceLogic.getInstance().editGatewayParam(gatewayBean.getDevice_mac(), new LinkCallBack<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | atomicInteger.set(atomicInteger.get() + 1); |
| | | //最后一条才做添加逆变器逻辑处理 |
| | | if (atomicInteger.get() == list.size()) { |
| | | HdlDeviceLogic.getInstance().addAllInverterDeviceToCloud(homeId, list, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(type, null, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | is_boolean[0] = true; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | is_boolean[0] = true; |
| | | } |
| | | }); |
| | | if (is_boolean[0]) { |
| | | //只有中间有一条指令设置失败,默认全部失败; |
| | | break; |
| | | } |
| | | } |
| | | } catch (Exception ignored) { |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param data uni数据 |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniDelInverterDevice(Object data, DCUniMPJSCallback callback) { |
| | | private void uniDelInverterDevice(String type, Object data, DCUniMPJSCallback callback) { |
| | | String deviceId = getKeyValue("deviceId", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().delInverterDevice(deviceId, new CloudCallBeak<Boolean>() { |
| | | String homeId = UserConfigManage.getInstance().getHomeId(); |
| | | HdlDeviceLogic.getInstance().delInverterDevice(homeId, deviceId, new CloudCallBeak<Boolean>() { |
| | | @Override |
| | | public void onSuccess(Boolean obj) { |
| | | uniCallbackData(null, callback); |
| | | uniCallbackData(type, null, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | }); |
| | | } |
| | |
| | | * |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniSearchGateway(DCUniMPJSCallback callback) { |
| | | HdlDeviceLogic.getInstance().searchCurrentHomeGateway(new GatewayCallBack() { |
| | | private void uniSearchGateway(String type, DCUniMPJSCallback callback) { |
| | | |
| | | |
| | | HdlDeviceLogic.getInstance().searchAllNetworkGateway(new GatewayCallBack() { |
| | | @Override |
| | | public void onSuccess(List<GatewayBean> gatewayBeanList) { |
| | | uniCallbackData(gatewayBeanList, callback); |
| | | uniCallbackData(type, gatewayBeanList, callback); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | //发送失败 |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | |
| | | } |
| | | }); |
| | | |
| | |
| | | * |
| | | * @param callback uni回调 |
| | | */ |
| | | private void uniGetCurrentHomeLocalAndCloudGatewayList(DCUniMPJSCallback callback) { |
| | | HdlDeviceLogic.getInstance().getCurrentHomeLocalAndCloudGatewayList(new CloudCallBeak<List<GatewayBean>>() { |
| | | private void uniGetCurrentHomeLocalAndCloudGatewayList(String type, Object data, DCUniMPJSCallback callback) { |
| | | String homeId = getKeyValue("homeId", getKeyValue("data", data)); |
| | | HdlDeviceLogic.getInstance().getCurrentHomeLocalAndCloudGatewayList(homeId, new CloudCallBeak<List<GatewayBean>>() { |
| | | @Override |
| | | public void onSuccess(List<GatewayBean> list) { |
| | | if (callback != null) { |
| | | uniCallbackData(list, callback); |
| | | //EventBus事件分发,进入住宅开始订阅主题 |
| | | BaseEventBus baseEventBus = new BaseEventBus(); |
| | | baseEventBus.setType(HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST); |
| | | baseEventBus.setData(list); |
| | | EventBus.getDefault().post(baseEventBus); |
| | | GatewayBean gatewayBean = HdlDeviceLogic.getInstance().queryCurrentHomeMainGateway(list); |
| | | if (gatewayBean != null) { |
| | | //进来住宅详情都要上传一次oid列表到云端; |
| | | HdlDeviceLogic.getInstance().uploadDataToCloud(gatewayBean.getDevice_mac(), null); |
| | | if (list == null || list.size() == 0) { |
| | | if (callback != null) { |
| | | uniCallbackData(type, list, callback); |
| | | } |
| | | |
| | | |
| | | return; |
| | | } |
| | | if (callback != null) { |
| | | uniCallbackData(type, list, callback); |
| | | } |
| | | //EventBus事件分发,进入住宅开始订阅主题 |
| | | BaseEventBus baseEventBus = new BaseEventBus(); |
| | | baseEventBus.setType(HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST); |
| | | baseEventBus.setData(list); |
| | | EventBus.getDefault().post(baseEventBus); |
| | | //进来住宅详情都要上传一次oid列表到云端; |
| | | HdlDeviceLogic.getInstance().uploadDataToCloud(homeId, list, null); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | if (callback != null) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | } |
| | | } |
| | | }); |
| | |
| | | * @param data modbus数据 |
| | | * @param callback 回调 |
| | | */ |
| | | private void sendModBus(Object data, DCUniMPJSCallback callback) { |
| | | private void sendModBus(String type, Object data, DCUniMPJSCallback callback) { |
| | | String tempData = getKeyValue("data", data); |
| | | if (TextUtils.isEmpty(tempData)) { |
| | | HdlLogLogic.print("data内容为空", false); |
| | | uniCallbackData(type, null, -2, "data内容为空", callback); |
| | | //HdlLogLogic.print("data内容为空--->", false); |
| | | return; |
| | | } |
| | | ModBusBean modBusBean = new Gson().fromJson(tempData, ModBusBean.class); |
| | |
| | | // modBusBean.setOid("0101050217BBC400"); |
| | | // } |
| | | if (modBusBean.getMac() == null || modBusBean.getData() == null) { |
| | | HdlLogLogic.print("内容为空===oid=" + modBusBean.getMac() + " data=" + Arrays.toString(modBusBean.getData()), false); |
| | | uniCallbackData(type, null, -2, "发送失败,(mac或者oid)为空", callback); |
| | | //HdlLogLogic.print("uni--->发送--->ModBus--->发送失败,(mac或者oid)为空." + Arrays.toString(modBusBean.getData()), true); |
| | | return; |
| | | } |
| | | |
| | | |
| | | //HdlLogLogic.print("uni--->发送--->ModBus--->" + Arrays.toString(modBusBean.getData()), true); |
| | | //发送modbus协议 |
| | | HDLModBusConnect.getInstance().Send(modBusBean.getMac(), modBusBean.getData(), new ModbusCallBack() { |
| | | @Override |
| | | public void onSuccess(int[] data) { |
| | | Log.d("data", Arrays.toString(data)); |
| | | uniCallbackData(data, callback); |
| | | uniCallbackData(type, data, callback); |
| | | // HdlLogLogic.print("uni--->接收--->ModBus--->" + Arrays.toString(data), true); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | uniCallbackData(null, e.getCode(), e.getMsg(), callback); |
| | | uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); |
| | | // HdlLogLogic.print("uni--->接收--->ModBus--->" + e.getMsg() + "(" + e.getCode() + ")", true); |
| | | } |
| | | }); |
| | | } |
| | |
| | | data = new JSONObject(); |
| | | } |
| | | if (isTokenAndRefreshToken) { |
| | | //小程序那里有自己的请求方法,需要这些数据 |
| | | data.put("token", UserConfigManage.getInstance().getToken()); |
| | | data.put("refreshToken", UserConfigManage.getInstance().getRefreshToken()); |
| | | data.put("serverAddress", AppConfigManage.getUserRegionUrl()); |
| | | data.put("appKey", AppConfigManage.getAppKey()); |
| | | data.put("appSecret", AppConfigManage.getAppSecret()); |
| | | } |
| | | uniCallBackBaseBean.setData(data); |
| | | return getJSONObject(uniCallBackBaseBean); |
| | | } catch (Exception e) { |
| | | HdlLogLogic.print("uni===组装uni发送数据格式===" + e.getMessage(), false); |
| | | HdlLogLogic.print("uni--->组装发送给uni数据格式有异常--->" + e.getMessage(), false); |
| | | } |
| | | return new JSONObject(); |
| | | } |
| | |
| | | * 组装uni发送数据格式 |
| | | * 回调数据给uni小程序,统一在这里处理; |
| | | * |
| | | * @param type 请求的小类 |
| | | * @param obj 附加数据 |
| | | * @param code 状态码-成功(0)或者失败(-2) |
| | | * @param msg 结果描述的信息 |
| | | * @param callback 回调 |
| | | */ |
| | | private void uniCallbackData(Object obj, int code, String msg, DCUniMPJSCallback callback) { |
| | | private void uniCallbackData(String type, Object obj, int code, String msg, DCUniMPJSCallback callback) { |
| | | HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); |
| | | try { |
| | | uniCallBackBaseBean.setCode(code); |
| | |
| | | if (callback != null) { |
| | | callback.invoke(getJSONObject(uniCallBackBaseBean)); |
| | | // callback.invoke(uniCallBackBaseBean); |
| | | |
| | | HdlLogLogic.print("uni--->接收--->" + type + "--->" + new Gson().toJson(uniCallBackBaseBean), true); |
| | | } |
| | | } catch (Exception e) { |
| | | HdlLogLogic.print("uni===组装uni发送数据格式===" + e.getMessage(), false); |
| | | HdlLogLogic.print("uni--->接收--->" + type + "--->" + e.getMessage(), true); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | private void uniCallbackData(Object obj, DCUniMPJSCallback callback) { |
| | | uniCallbackData(obj, HDLLinkCode.HDL_SUCCESS.getCode(), HDLLinkCode.HDL_SUCCESS.getMsg(), callback); |
| | | private void uniCallbackData(String type, Object obj, DCUniMPJSCallback callback) { |
| | | uniCallbackData(type, obj, HDLLinkCode.HDL_SUCCESS.getCode(), HDLLinkCode.HDL_SUCCESS.getMsg(), callback); |
| | | } |
| | | |
| | | /** |
| | |
| | | * |
| | | * @return JSONObject |
| | | */ |
| | | private JSONObject getJSONObject(Object obj) { |
| | | public JSONObject getJSONObject(Object obj) { |
| | | try { |
| | | if (obj == null) { |
| | | return new JSONObject(); |
| | |
| | | * @param obj - |
| | | * @return value |
| | | */ |
| | | private String getKeyValue(String key, Object obj) { |
| | | public String getKeyValue(String key, Object obj) { |
| | | try { |
| | | JSONObject jsonObject = this.getJSONObject(obj); |
| | | if (jsonObject.has(key)) { |