TuyaUtils.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. package com.develop.common.utils;
  2. import static android.content.Context.MODE_PRIVATE;
  3. import android.content.Context;
  4. import android.content.SharedPreferences;
  5. import android.text.TextUtils;
  6. import android.view.View;
  7. import com.develop.base.util.MMkvUtils;
  8. import com.google.gson.Gson;
  9. import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevStatus;
  10. import com.kuyuntech.cofarcooking.device.sdk.constant.core.MotorDirections;
  11. import com.kuyuntech.cofarcooking.device.sdk.eventbus.core.DevInfo;
  12. import com.kuyuntech.cofarcooking.device.sdk.util.core.CofarSDK;
  13. import com.tuya.smartai.iot_sdk.DPEvent;
  14. import com.tuya.smartai.iot_sdk.IoTSDKManager;
  15. import com.tuya.smartai.iot_sdk.Log;
  16. import com.tuya.smartai.iot_sdk.UpgradeEventCallback;
  17. import org.json.JSONObject;
  18. import java.util.Arrays;
  19. import java.util.Map;
  20. import java.util.Objects;
  21. import java.util.stream.Collectors;
  22. public class TuyaUtils {
  23. public static final String TAG = "TUYA";
  24. public static final String mPid = "dquk8axtyy72c1ap";
  25. public static final String mUid = "uuid50e9e0c707553116";
  26. public static final String mAk = "MJhcxmQ6LeZDj1tNu6F5kqK5aQJfpdOb";
  27. public static String qrcodeUrl = MMkvUtils.INSTANCE.getString("tuya_url");
  28. public static IoTSDKManager ioTSDKManager = null;
  29. public static boolean init = false;
  30. public static void output(String text) {
  31. Log.d(TAG, text);
  32. }
  33. public static void uploadData(){
  34. if(ioTSDKManager == null || !init){
  35. return;
  36. }
  37. DevInfo info = CofarSDK.devInfo();
  38. DPEvent[] dpEvents = new DPEvent[]{
  39. new DPEvent(TuyaDps.SWITCH,(byte) DPEvent.Type.PROP_BOOL,true,0),
  40. new DPEvent(TuyaDps.START,(byte) DPEvent.Type.PROP_BOOL, info.getStatus() == DevStatus.RUNNING,0),
  41. new DPEvent(TuyaDps.MODE,(byte) DPEvent.Type.PROP_ENUM,1,0),
  42. new DPEvent(TuyaDps.COOK_TEMPERATURE,(byte) DPEvent.Type.PROP_VALUE,(int)info.getTargetTemp(),0),
  43. new DPEvent(TuyaDps.TEMP_CURRENT,(byte) DPEvent.Type.PROP_VALUE,(int)info.getTemp(),0),
  44. new DPEvent(TuyaDps.COOK_TIME,(byte) DPEvent.Type.PROP_VALUE,(int)info.getTargetTime(),0),
  45. new DPEvent(TuyaDps.REMAIN_TIME,(byte) DPEvent.Type.PROP_VALUE,(int)info.getRemainTime(),0),
  46. new DPEvent(TuyaDps.FAULT,(byte) DPEvent.Type.PROP_VALUE,(int)info.getErrCode(),0),
  47. new DPEvent(TuyaDps.WORK_STATE,(byte) DPEvent.Type.PROP_VALUE,(int)info.getStatus(),0),
  48. new DPEvent(TuyaDps.STOP,(byte) DPEvent.Type.PROP_VALUE, (int)info.getStatus(),0),
  49. new DPEvent(TuyaDps.ROTATE_SPEED,(byte) DPEvent.Type.PROP_VALUE,(int)info.getMotorGear(),0),
  50. new DPEvent(TuyaDps.SET_CW_CCW,(byte) DPEvent.Type.PROP_VALUE,(int)info.getMotorDirection() ,0),
  51. new DPEvent(TuyaDps.SPRAY_WATER,(byte) DPEvent.Type.PROP_VALUE,(int)info.getWaterSprayGear(),0),
  52. new DPEvent(TuyaDps.TEMER_UNIT,(byte) DPEvent.Type.PROP_VALUE,0,0),
  53. new DPEvent(TuyaDps.WIND_SPEED,(byte) DPEvent.Type.PROP_VALUE,0,0),
  54. new DPEvent(TuyaDps.COOK_TEMP_F,(byte) DPEvent.Type.PROP_VALUE,(int)info.getTargetTemp(),0),
  55. new DPEvent(TuyaDps.CORRENT_TEMP_F,(byte) DPEvent.Type.PROP_VALUE,(int)info.getTemp(),0),
  56. new DPEvent(TuyaDps.CUP_SW,(byte) DPEvent.Type.PROP_VALUE,(int)info.getPotCloverStatus(),0),
  57. new DPEvent(TuyaDps.WORK_MODE,(byte) DPEvent.Type.PROP_STR,info.getDevMode(),0)
  58. };
  59. ioTSDKManager.sendDP(dpEvents);
  60. }
  61. public static void initSDK(Context ctx,String version) {
  62. Log.init(ctx, "/sdcard/tuya_log/iot_demo/", 3);
  63. ioTSDKManager = new IoTSDKManager(ctx) {
  64. @Override
  65. protected boolean isOffline() {
  66. //实现自定义网络监测
  67. Log.d(TAG, "isOffline: " + super.isOffline());
  68. return super.isOffline();
  69. }
  70. };
  71. output("固件版本:" + version);
  72. output("init sdk:" + mPid + "/" + mUid + "/" + mAk);
  73. //注意:这里的pid等配置读取自local.properties文件,不能直接使用。请填写你自己的配置!
  74. ioTSDKManager.initSDK("/sdcard/tuya_iot/", mPid
  75. , mUid, mAk, version, new IoTSDKManager.IoTCallback() {
  76. @Override
  77. public void onDpEvent(DPEvent event) {
  78. if (event != null) {
  79. output("收到 dp: " + event);
  80. }
  81. }
  82. @Override
  83. public void onReset() {
  84. ctx.getSharedPreferences("event_cache", MODE_PRIVATE).edit().clear().commit();
  85. }
  86. @Override
  87. public void onShorturl(String urlJson) {
  88. output("shorturl: " + urlJson);
  89. Gson gson = new Gson();
  90. Map d = gson.fromJson(urlJson, Map.class);
  91. String url = (String) d.get("shortUrl");
  92. qrcodeUrl = url;
  93. MMkvUtils.INSTANCE.save("tuya_url",url);
  94. }
  95. @Override
  96. public void onActive() {
  97. output("onActive: devId-> " + ioTSDKManager.getDeviceId());
  98. init = true;
  99. }
  100. @Override
  101. public void onFirstActive() {
  102. output("onFirstActive");
  103. }
  104. @Override
  105. public void onMQTTStatusChanged(int status) {
  106. output("onMQTTStatusChanged: " + status);
  107. switch (status) {
  108. case IoTSDKManager.STATUS_OFFLINE:
  109. // 设备网络离线
  110. break;
  111. case IoTSDKManager.STATUS_MQTT_OFFLINE:
  112. // 网络在线MQTT离线
  113. break;
  114. case IoTSDKManager.STATUS_MQTT_ONLINE:
  115. // 网络在线MQTT在线
  116. SharedPreferences sp = ctx.getSharedPreferences("event_cache", MODE_PRIVATE);
  117. DPEvent[] events = ioTSDKManager.getEvents();
  118. if (events != null) {
  119. for (DPEvent event : events) {
  120. if (event != null) {
  121. output(event.toString());
  122. }
  123. }
  124. }
  125. break;
  126. }
  127. }
  128. // @Override
  129. // public void onMqttMsg(int protocol, org.json.JSONObject msgObj) {
  130. //
  131. // }
  132. });
  133. ioTSDKManager.setUpgradeCallback(new UpgradeEventCallback() {
  134. @Override
  135. public void onUpgradeInfo(String s) {
  136. Log.w(TAG, "onUpgradeInfo: " + s);
  137. output("收到升级信息: " + s);
  138. // runOnUiThread(() -> upgradeDialog.show());
  139. ioTSDKManager.startUpgradeDownload();
  140. }
  141. @Override
  142. public void onUpgradeDownloadStart() {
  143. Log.w(TAG, "onUpgradeDownloadStart");
  144. output("开始升级下载");
  145. }
  146. @Override
  147. public void onUpgradeDownloadUpdate(int i) {
  148. Log.w(TAG, "onUpgradeDownloadUpdate: " + i);
  149. }
  150. @Override
  151. public void upgradeFileDownloadFinished(int result, String file) {
  152. Log.w(TAG, "upgradeFileDownloadFinished: " + result);
  153. output("下载完成:" + result + " / " + file);
  154. }
  155. });
  156. }
  157. }