package com.hdl.photovoltaic.other; import android.provider.Settings; import android.text.TextUtils; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import com.hdl.hdlhttp.HxHttp; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.HDLApp; import com.hdl.photovoltaic.bean.HttpResponsePack; import com.hdl.photovoltaic.bean.MqttInfo; import com.hdl.photovoltaic.internet.HttpClient; import com.hdl.photovoltaic.internet.api.HttpApi; import com.hdl.photovoltaic.listener.BaseSuccessFailureCallBeak; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.ui.bean.CloudInverterChildDeviceBean; import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo; import java.lang.reflect.Type; import java.util.List; import java.util.Random; import io.reactivex.rxjava3.disposables.Disposable; /** * mqtt的逻辑 */ public class HdlMqttLogic { private static volatile HdlMqttLogic sHdlMqttLogic; /** * 获取当前对象 * * @return HdlAccountLogic */ public static synchronized HdlMqttLogic getInstance() { if (sHdlMqttLogic == null) { synchronized (HdlMqttLogic.class) { if (sHdlMqttLogic == null) { sHdlMqttLogic = new HdlMqttLogic(); } } } return sHdlMqttLogic; } /** * 获取mqtt远程连接数据 * * @param homeType 住宅类型 (1.ZIGBEE 2.BUSPRO 3.A 4.ALL) * @param cloudCallBeak 回调 */ public void getMqttRemoteInfo(String homeType, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_Mqtt_GetRemoteInfo; int randomNumberClientId = new Random().nextInt(1000000000); String deviceUuid = Settings.System.getString(HDLApp.getInstance().getContentResolver(), Settings.System.ANDROID_ID); JsonObject json = new JsonObject(); json.addProperty("attachClientId", randomNumberClientId); json.addProperty("homeType", homeType); json.addProperty("deviceUuid", deviceUuid); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { Type type = new TypeToken() { }.getType(); MqttInfo mqttInfo = new Gson().fromJson(jsonStr, type); if (cloudCallBeak != null) { cloudCallBeak.onSuccess(mqttInfo); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } }