收藏官网首页
查看: 31341|回复: 8

[问答] 基于ApiCloud demo APP开发应用无法与设备交换数据

3

主题

14

帖子

155

积分

注册会员

Rank: 2

积分
155
跳转到指定楼层
楼主
发表于 2017-2-13 14:26:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
教您5分钟接入机智云,实现傻瓜式开发
问题描述:
APP通过ApiCloud云编译可正常安装到手机,并能通过扫码连接到虚拟设备,登录注册一切正常
但是虚拟设备推送数值APP界面无反应(一直是默认初始值0)
改变APP上数值虚拟设备也没有反应
请问问题出在哪里?

3

主题

14

帖子

155

积分

注册会员

Rank: 2

积分
155
沙发
 楼主| 发表于 2017-2-13 14:27:33 | 只看该作者
相关HTML代码
  1. <!DOCTYPE html>
  2. <html>
  3.         <head>
  4.                 <meta charset="utf-8">
  5.                 <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,initial-scale=1.0,width=device-width"/>
  6.                 <title></title>
  7.                 <link rel="stylesheet" type="text/css" href="../css/api.css" />
  8.                 <link rel="stylesheet" type="text/css" href="../css/common.css" />
  9.                 <link rel="stylesheet" type="text/css" href="../frozenui/1.2.1/css/global.css"/>
  10.                 <link rel="stylesheet" type="text/css" href="../css/IotController.css"/>
  11.         </head>
  12.                

  13.         <body>
  14.         <center>
  15.         <h1>实时充电信息</h1>
  16.                 </center>
  17.         </div>

  18.                 <div id="content">
  19.                         <div class="listSelector">
  20.                                 <table class="table">
  21.                                         <tr>
  22.                                                 <th class="thOne">
  23.                                                 <p  class="listTitleText" >
  24.                                                         开关1
  25.                                                 </p></th>
  26.                                                 <th class="thTwo">
  27.                                                 <select   class="selector" id="showText_Swith1_on_off" onchange="selectorListener(1)">
  28.                                                         <option value=0>关闭</option>
  29.                                                         <option value=1>开启</option>
  30.                                                 </select></th>
  31.                                         </tr>
  32.                                 </table>
  33.                
  34.                         </div>
  35.                         <div class="listSelector">
  36.                                 <table class="table">
  37.                                         <tr>
  38.                                                 <th class="thOne">
  39.                                                 <p  class="listTitleText" >
  40.                                                         开关2
  41.                                                 </p></th>
  42.                                                 <th class="thTwo">
  43.                                                 <select  class="selector" id="showText_Swith2_on_off" onchange="selectorListener(2)">
  44.                                                         <option value=0>关闭</option>
  45.                                                         <option value=1>开启</option>
  46.                                                 </select></th>
  47.                                         </tr>
  48.                                 </table>
  49.                         </div>
  50.                
  51.                         <div class="listSelector">
  52.                                 <table class="table">
  53.                                         <tr>
  54.                                                 <th class="thOne">
  55.                                                 <p  class="listTitleText" >
  56.                                                         开关3
  57.                                                 </p></th>
  58.                                                 <th class="thTwo">
  59.                                                 <select  class="selector" id="showText_Swith3_on_off" onchange="selectorListener(3)">
  60.                                                         <option value=0>关闭</option>
  61.                                                         <option value=1>开启</option>
  62.                                                 </select></th>
  63.                                         </tr>
  64.                                 </table>
  65.                         </div>
  66.                        
  67.                         <div class="listSelector">
  68.                                 <table class="table">
  69.                                         <tr>
  70.                                                 <th class="thOne">
  71.                                                 <p  class="listTitleText" >
  72.                                                         开关4
  73.                                                 </p></th>
  74.                                                 <th class="thTwo">
  75.                                                 <select  class="selector" id="showText_Swith4_on_off" onchange="selectorListener(4)">
  76.                                                         <option value=0>关闭</option>
  77.                                                         <option value=1>开启</option>
  78.                                                 </select></th>
  79.                                         </tr>
  80.                                 </table>
  81.                         </div>
  82.                 <div class="listShow">
  83.                                 <table class="table">
  84.                                         <tr>
  85.                                                 <th class="thOne">
  86.                                                 <p  class="listTitleText" >
  87.                                                         电压
  88.                                                 </p></th>
  89.                                                 <th class="thTwo">
  90.                                                 <p class="listShowText" id="showText_Voltage">
  91.                                                         0
  92.                                                 </p></th>
  93.                                         </tr>
  94.                                 </table>
  95.                         </div>
  96.                         <div class="listShow">
  97.                                 <table class="table">
  98.                                         <tr>
  99.                                                 <th class="thOne">
  100.                                                 <p  class="listTitleText" >
  101.                                                         电流
  102.                                                 </p></th>
  103.                                                 <th class="thTwo">
  104.                                                 <p class="listShowText" id="showText_Current">
  105.                                                 0       
  106.                                                 </p></th>
  107.                                         </tr>
  108.                                 </table>
  109.                         </div>
  110.                         <div class="listShow">
  111.                                 <table class="table">
  112.                                         <tr>
  113.                                                 <th class="thOne">
  114.                                                 <p  class="listTitleText" >
  115.                                                         功率
  116.                                                 </p></th>
  117.                                                 <th class="thTwo">
  118.                                                 <p class="listShowText" id="showText_Power">
  119.                                                 0       
  120.                                                 </p></th>
  121.                                         </tr>
  122.                                 </table>
  123.                         </div>
  124.                         <div class="listShow">
  125.                                 <table class="table">
  126.                                         <tr>
  127.                                                 <th class="thOne">
  128.                                                 <p  class="listTitleText" >
  129.                                                         电量
  130.                                                 </p></th>
  131.                                                 <th class="thTwo">
  132.                                                 <p class="listShowText" id="showText_Consume">
  133.                                                         0
  134.                                                 </p></th>
  135.                                         </tr>
  136.                                 </table>
  137.                         </div>
  138.                         <div class="listShow">
  139.                                 <table class="table">
  140.                                         <tr>
  141.                                                 <th class="thOne">
  142.                                                 <p  class="listTitleText" >
  143.                                                         环境温度
  144.                                                 </p></th>
  145.                                                 <th class="thTwo">
  146.                                                 <p class="listShowText" id="showText_temp">
  147.                                                         0
  148.                                                 </p></th>
  149.                                         </tr>
  150.                                 </table>
  151.                         </div>
  152.                         <div class="listShow">
  153.                                 <table class="table">
  154.                                         <tr>
  155.                                                 <th class="thOne">
  156.                                                 <p  class="listTitleText" >
  157.                                                         环境湿度
  158.                                                 </p></th>
  159.                                                 <th class="thTwo">
  160.                                                 <p class="listShowText" id="showText_hum">
  161.                                                         0%
  162.                                                 </p></th>
  163.                                         </tr>
  164.                                 </table>
  165.                         </div>
  166.                         <div>
  167.                 </div class="listShow">
  168.                         <div class="compelteBtn">
  169.                                 <input style="border:1px solid #000000 ; background-color:#008B8B"
  170.                                 type="button" value="充电完成" onclick="sortTo.toShare()" ><!--onchange="buttonListener(0)"/-->
  171.                         </div>               
  172.                 </div>       
  173.         </body>

  174.         <script type = "text/javascript" src = "../script/GobalConfig.js"></script>
  175.     <script type="text/javascript" src="../script/api.js"></script>
  176.         <script type = "text/javascript" src = "../script/common.js"></script>
  177.     <script type="text/javascript" src="../script/sort.js"></script>
  178.         <script type = "text/javascript" src = "../script/IotController.js"></script>
  179.         <script type = "text/javascript" src = "../script/complete.js"></script>
  180. </html>
复制代码

3

主题

14

帖子

155

积分

注册会员

Rank: 2

积分
155
板凳
 楼主| 发表于 2017-2-13 14:28:15 | 只看该作者
相关JS代码
  1. var GizwitsSDK;
  2. var GizwitsDevice;
  3. var deviceMac;
  4. var deviceDid;
  5. var devicePasscode;
  6. var uid;
  7. var token;

  8. var Switch1_OnOff;
  9. var Switch2_OnOff;
  10. var Switch3_OnOff;
  11. var Switch4_OnOff;
  12. var Voltage;
  13. var Current;
  14. var Power;
  15. var Consume;
  16. var Temperature;
  17. var Humidity;
  18. //var Infrared;

  19. var AntiShake = 0;
  20. var AntiTimeOut;

  21. //var ConsumeValue

  22. apiready = function () {
  23.     GizwitsSDK = api.require("gizWifiSDK");
  24.     GizwitsDevice = api.require("gizWifiDevice");
  25.     //GizwitsSDK.setLogLevel({"logLevel": "all", "printDataLevel": true});

  26.     if(api.systemType == 'ios') {
  27.      $api.setStorage('isBinding',false);
  28.    
  29.      params = {
  30.          "device": {
  31.              "mac": deviceMac,
  32.              "did": deviceDid
  33.          }
  34.      };
  35.      GizwitsDevice.getIsOnline(params, function(ret, err){
  36.       if (!ret.isOnline) {
  37.                  //设备已断开
  38.                   alert('设备断开连接');
  39.                   back2DeviceList();
  40.              }
  41.      });
  42. }

  43.     //恢复Frame事件**注册
  44.     api.addEventListener({
  45.         name: 'control'
  46.     }, function (ret, err) {
  47.         updateInfo();
  48.         getDevOnline();
  49.     });
  50.    
  51.     updateInfo();
  52.     getDevOnline();

  53.     //断开连接的菜单事件**注册
  54.     api.addEventListener({
  55.         name: 'disconnect'
  56.     }, function (ret, err) {
  57.         disconnect();
  58.     });

  59.     //断开连接的菜单事件**注册
  60.     api.addEventListener({
  61.         name: 'unbind'
  62.     }, function (ret, err) {
  63.         unBind();
  64.     });

  65.     //获取设备状态的菜单事件**注册
  66.     api.addEventListener({
  67.         name: 'getStatus'
  68.     }, function (ret, err) {
  69.         getStatus();
  70.     });

  71.     Switch1_OnOff = document.getElementById("showText_Switch1_on_off");
  72.     Switch2_OnOff = document.getElementById("showText_Switch2_on_off");
  73. Switch3_OnOff = document.getElementById("showText_Switch3_on_off");
  74. Switch4_OnOff = document.getElementById("showText_Switch4_on_off");
  75.    // Motor_Speed = document.getElementById("positionLED_motor");
  76.     Humidity = document.getElementById("showText_hum");
  77.     Temperature = document.getElementById("showText_temp");
  78.     Voltage = document.getElementById("showText_Voltage");
  79.     Current = document.getElementById("showText_Current");
  80.     Power = document.getElementById("showText_Power");
  81.     Consume = document.getElementById("showText_Consume");
  82. };

  83. function getDevOnline() {
  84.     params = {
  85.         "device": {
  86.             "mac": deviceMac,
  87.             "did": deviceDid
  88.         }
  89.     };

  90.     GizwitsDevice.getIsConnected(params,function(ret, err){
  91.         if(ret.isConnected){
  92.             GizwitsDevice.registerNotifications(params, onMyStatus);
  93.             setTimeout(function () {
  94.                 getStatus();
  95.             }, 500);
  96.         }else{
  97.          alert('设备不在线,不可以做控制,但可以解除绑定');
  98.         }
  99.     });
  100. }

  101. //更新设备信息
  102. function updateInfo() {

  103.     var mResult = getTokenAndUid();
  104.     uid = mResult.uid;
  105.     token = mResult.token;

  106.     deviceInfo = getKeyAndParam("deviceInfo");

  107.     deviceMac = deviceInfo.mac;
  108.     deviceDid = deviceInfo.did;
  109.     devicePasscode = deviceInfo.passcode;
  110. }

  111. function back2DeviceList() {
  112.     sortTo.toDevList();
  113. }

  114. //登录设备
  115. var loginDevice = function (macDevice, didDevice, passcodeDevice) {

  116.     params = {
  117.         "uid": uid,
  118.         "token": token,
  119.         "device": {
  120.             "mac": macDevice,
  121.             "did": didDevice
  122.         }
  123.     };

  124.     GizwitsDevice.login(params, function (ret, err) {
  125.         if (ret) {
  126.             alert('登录设备成功');

  127.         } else {
  128.             alert('登录设备失败');

  129.         }
  130.     });
  131. };

  132. //设备状态回调
  133. function onMyStatus(ret, err) {
  134. // alert($api.jsonToStr(ret)+' ==123321== '+$api.jsonToStr(err));
  135. //  if (AntiShake > 0) {
  136. //      return;
  137. //  }
  138.     if (ret) {
  139.      if(api.systemType == 'ios') {
  140.       var isBinding = $api.getStorage('isBinding');
  141.   // if(isBinding) alert('断开aaaaa:'+isBinding);
  142. //   alert('onMyStatus: '+$api.jsonToStr(ret));
  143.         if (typeof(ret.isConnected) != "undefined") {
  144.             if (!ret.isConnected) {
  145.                 //设备已断开
  146. //              alert('isBinding: '+isBinding);

  147.                 if(isBinding=='false') {
  148.                  alert('设备断开连接');
  149.                  back2DeviceList();
  150.                  return;
  151.                 }
  152.             }
  153.         }
  154.      }
  155.      else {
  156.       if (typeof(ret.isConnected) != "undefined") {
  157.             if (!ret.isConnected) {
  158.                  alert('设备断开连接');
  159.                  back2DeviceList();
  160.                  return;
  161.             }
  162.         }
  163.      }
  164.      


  165.   var status = ret.status;
  166.   if(status != '' && status != null){
  167.          mStatus = ret.status.data.entity0;
  168. //      alert($api.jsonToStr(mStatus));
  169. //      if (!mStatus.LED_R) return;
  170.         //状态更新
  171.         
  172.         //Motor_Speed.value = mStatus.Motor_Speed ? mStatus.Motor_Speed : 0;
  173.         //Motor_SpeedShowText.innerHTML = mStatus.Motor_Speed ? mStatus.Motor_Speed : 0;
  174.         Switch1_OnOff.value = mStatus.Switch1_OnOff ? 1 : 0;
  175.         Switch2_OnOff.value = mStatus.Switch2_OnOff ? 1 : 0;
  176.         Switch3_OnOff.value = mStatus.Switch3_OnOff ? 1 : 0;
  177.         Switch4_OnOff.value = mStatus.Switch4_OnOff ? 1 : 0;
  178.         Humidity.innerHTML = mStatus.Humidity ? mStatus.Humidity : 0;
  179.         Temperature.innerHTML = mStatus.Temperature ? mStatus.Temperature : 0;
  180.         Voltage.innerHTML = mStatus.Voltage ? mStatus.Voltage : 0;
  181.         Current.innerHTML = mStatus.Current ? mStatus.Current : 0;
  182.         Power.innerHTML = mStatus.Power ? mStatus.Power : 0;
  183.         Consume.innerHTML = mStatus.Consume ? mStatus.Consume : 0;
  184.      
  185.     } else {
  186.         //        alert('控制失败');
  187.     }
  188. };
  189. //获取设备状态
  190. function getStatus() {
  191.     params = {
  192.         "device": {
  193.             "mac": deviceMac,
  194.             "did": deviceDid
  195.         },
  196.         "data": {
  197.             "cmd": 2
  198.         }
  199.     };
  200.     GizwitsDevice.write(params, onMyStatus);
  201. };

  202. //主动断开连接
  203. function disconnect() {
  204.     params = {
  205.         "device": {
  206.             "mac": deviceMac,
  207.             "did": deviceDid
  208.         }
  209.     };
  210. //  alert(JSON.stringify(params));
  211. //  alert('disconnect_start');

  212.     GizwitsDevice.disconnect(params, function (ret, err) {
  213. //   alert('disconnect_end');
  214. //   alert(JSON.stringify(ret)+' === '+JSON.stringify(err));
  215.         if (ret) {
  216.             if (!ret.isConnected) {
  217.                 //断开连接跳界面
  218.                 back2DeviceList();
  219.             }
  220.         }
  221.     });
  222. };

  223. //解绑设备
  224. function unBind() {
  225.     params = {
  226.         "uid": uid,
  227.         "token": token,
  228.         "passcode": devicePasscode,
  229.         "did": deviceDid
  230.     };

  231.     GizwitsSDK.unbindDevice(params, function (ret, err) {
  232.             if (ret) {
  233.                 //解绑成功跳界面
  234.                 alert('解绑成功');
  235.                 back2DeviceList();
  236.             } else {
  237.                 alert('解绑失败');
  238.             }
  239.         }
  240.     );

  241. };

  242. //选择器控件发送控制指令方法
  243. function selectorListener(num) {

  244.     switch (num) {
  245.         case 1:
  246.             valueSend = document.getElementById("showText_Switch1_on_off").value;
  247.             attrname = "Switch1_OnOff";
  248.             break;
  249.         case 2:
  250.             valueSend = document.getElementById("showText_Switch2_on_off").value;
  251.             attrname = "Switch2_OnOff";   
  252.         case 3:
  253.             valueSend = document.getElementById("showText_Switch3_on_off").value;
  254.             attrname = "Switch3_OnOff";
  255.             break;
  256.         case 4:
  257.             valueSend = document.getElementById("showText_Switch4_on_off").value;
  258.             attrname = "Switch4_OnOff";     
  259.             break;
  260.     }

  261.     sendControlMsg(attrname, valueSend);
  262. };

  263. //滑动控件发送控制指令方法
  264. /*function sliderSend(num) {

  265.     switch (num) {
  266.         case 1:
  267.             atrrName = "LED_R";
  268.             atrrValue = document.getElementById("positionLED_red").value;
  269.             break;
  270.         case 2:
  271.             atrrName = "LED_G";
  272.             atrrValue = document.getElementById("positionLED_green").value;
  273.             break;
  274.         case 3:
  275.             atrrName = "LED_B";
  276.             atrrValue = document.getElementById("positionLED_blue").value;
  277.             break;
  278.         case 4:
  279.             atrrName = "Motor_Speed";
  280.             atrrValue = document.getElementById("positionLED_motor").value;
  281.             break;
  282.     }
  283.     sendControlMsg(atrrName, atrrValue);
  284. };
  285. */

  286. //发送控制指令方法
  287. function sendControlMsg(name, value) {
  288.     sendMsg = '{"device": {"mac":"' + deviceMac + '","did": "' + deviceDid + '"},"data": {"cmd": 1,' +
  289.         '"entity0": {' + name +
  290.         ':"' + value + '"}}}';

  291.     sendMsgJson = eval('(' + sendMsg + ')');

  292.     AntiShake = 1;
  293.     clearTimeout(AntiTimeOut);
  294.     AntiTimeOut=setTimeout("AntiShake=0;", 2000);
  295.     GizwitsDevice.write(sendMsgJson, onMyStatus);
  296. }
  297. /*
  298. //获取对应的控件
  299. function getElement(num) {
  300.     var slider;
  301.     var text;
  302.     switch (num) {
  303.         case 1:
  304.             text = document.getElementById("showText_LED_red");
  305.             slider = document.getElementById("positionLED_red");
  306.             break;
  307.         case 2:
  308.             text = document.getElementById("showText_LED_green");
  309.             slider = document.getElementById("positionLED_green");
  310.             break;
  311.         case 3:
  312.             text = document.getElementById("showText_LED_blue");
  313.             slider = document.getElementById("positionLED_blue");
  314.             break;
  315.         case 4:
  316.             text = document.getElementById("showText_LED_motor");
  317.             slider = document.getElementById("positionLED_motor");
  318.             break;
  319.     }
  320.     ;
  321.     var valForSliderText = {
  322.         "slider": slider,
  323.         "textShow": text
  324.     };
  325.     return valForSliderText;
  326. };
  327. */
  328. //滑动控件的事件监听,根据滑动控件的变动更新对应的文字和发送指令
  329. function sliderShowText(num) {
  330.     var slider;
  331.     var value;
  332.     var text;

  333.     var myElement = getElement(num);
  334.     slider = myElement.slider;
  335.     text = myElement.textShow;
  336.     value = slider.value;
  337.     text.innerHTML = value;

  338.     sliderSend(num);

  339. };

  340. //减一键点击事件监听
  341. function sub(num) {
  342.     var slider;
  343.     var value;
  344.     var text;

  345.     sliderSend(num);

  346.     var myElement = getElement(num);
  347.     slider = myElement.slider;
  348.     text = myElement.textShow;

  349.     value = slider.value;
  350.     value--;
  351.     slider.value = value;
  352.     text.innerHTML = value;

  353.     sliderSend(num);
  354. };

  355. //加一键点击事件监听
  356. function add(num) {
  357.     var slider;
  358.     var value;
  359.     var text;

  360.     var myElement = getElement(num);
  361.     slider = myElement.slider;
  362.     text = myElement.textShow;

  363.     value = slider.value;
  364.     value++;
  365.     slider.value = value;
  366.     text.innerHTML = value;

  367.     sliderSend(num);
  368. };

  369. /*function buttonListener() {
  370. ConsumeValue = document.getElementById("showText_Consume").value;
  371. }
  372. */
  373. function complete(){
  374. api.openWin({
  375.      name: 'share',
  376.      url: '../html/complete.html'
  377.     });   

  378. }

复制代码

3

主题

14

帖子

155

积分

注册会员

Rank: 2

积分
155
地板
 楼主| 发表于 2017-2-13 14:29:12 | 只看该作者
虚拟设备定义的数据点名称:showText_Switch1_on_off       
showText_Switch2_on_off       
showText_Switch3_on_off       
showText_Switch4_on_off       
showText_hum       
showText_temp       
showText_Voltage       
showText_Current       
showText_Power       
showText_Consume       

3

主题

14

帖子

155

积分

注册会员

Rank: 2

积分
155
5#
 楼主| 发表于 2017-2-13 14:48:34 | 只看该作者

3

主题

14

帖子

155

积分

注册会员

Rank: 2

积分
155
6#
 楼主| 发表于 2017-2-14 14:15:43 | 只看该作者
有人吗QAQ QAQ QAQ QAQ

34

主题

896

帖子

2274

积分

超级版主

Rank: 8Rank: 8

积分
2274
7#
发表于 2017-2-15 10:53:29 | 只看该作者
这个一年前的demo是比较旧的,可能一些SDK更新导致接口的变更没修正,有些不可预估的错误,你可以将问题详细发送到club@gizwits.com这个邮箱。我们会及时给你解决

点评

发邮件已经好几天了,请问一般需要多久才能有回复呢???  详情 回复 发表于 2017-2-18 18:26

3

主题

14

帖子

155

积分

注册会员

Rank: 2

积分
155
8#
 楼主| 发表于 2017-2-18 18:26:42 | 只看该作者
boboP 发表于 2017-2-15 10:53
这个一年前的demo是比较旧的,可能一些SDK更新导致接口的变更没修正,有些不可预估的错误,你可以将问题详 ...

发邮件已经好几天了,请问一般需要多久才能有回复呢???

4

主题

14

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
9#
发表于 2017-2-28 21:14:49 | 只看该作者
我的也是,望官方及时解决,谢谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表