小程序物联网连接onenet

发布时间 2023-12-10 22:10:41作者: 橘子味芬达水

wxml页面

<view class="zong">
<!--注释--><!-- 头-->
<view class="header">

<view class="one">
<text>空气质量:良好</text>
<text>广州市</text>
</view>
<!--注释-->
<view class="two">
<text>55</text>
<text>晴天</text>
</view>
<!--注释-->
<view class="three">
<text>空气质量良好,可以出行</text>
</view>
<!--注释-->

</view>


<!-- 身体-->
<view class="body">

<view class="onebody">

<!--注释001-->
<view class="data">
<view class="data-logo">
<image src="../image/温度.png" ></image>
</view>
<!--注释-->
<view class="data-text">
<text class="data-title">温度</text>
<text class="data-value">{{temperature}}℃</text>
</view>
<!--注释-->
</view>
<!--注释--><!--注释-->
<view class="data">
<view class="data-logo">
<image src="../image/湿度.png" ></image>
</view>
<!--注释-->
<view class="data-text">
<text class="data-title">湿度</text>
<text class="data-value">{{humidity}}%</text>
</view>
<!--注释-->
</view>

</view>


<view class="onebody">

<!--注释002-->
<view class="data">
<view class="data-logo">
<image src="../image/阳光.png" ></image>
</view>
<!--注释-->
<view class="data-text">
<text class="data-title">亮度</text>
<text class="data-value">{{light}}LX</text>
</view>
<!--注释-->
</view>
<!--注释--><!--注释-->
<view class="data">
<view class="data-logo">
<image src="../image/手电筒.png" ></image>
</view>
<!--注释-->
<view class="data-text">
<text class="data-title">开关灯</text>
<switch bindchange="switchChange"></switch>
</view>
<!--注释-->
</view>

</view>



<view class="onebody">

<!--注释003-->


<view class="data">
<view class="data-logo">
<image src="../image/阳光.png" ></image>
</view>
<!--注释-->
<view class="data-text">
<text class="data-title">光照</text>
<text class="data-value">{{ps}}</text>
</view>
<!--注释-->
</view>
<view class="data">
<view class="data-logo">
<image src="../image/报警.png" ></image>
</view>
<!--注释-->
<view class="data-text">
<text class="data-title">蜂鸣器</text>
<switch bindchange="switchChange1"></switch>
</view>
<!--注释-->
</view>
</view>

<view class="data">
   
    <!-- 注释 -->
    <view class="data-text">
        
        <!-- Replace static text with an input field -->
        <input class="data-value" type="text" id="psInput" placeholder="Enter value" />
    </view>
    <!-- 注释 -->
    <button onclick="submitData()">Submit</button>
</view>




</view>




</view>


Page({
  data: {
    temperature:0,
    humidity:0,
    light:0,
    // ps:0,
    ps:0
   },

   // 事件处理函数
   getinfo(){
    var that = this
    wx.request({
    url: "https://api.heclouds.com/devices/1164262344/datapoints",   
    //将请求行中的数字换成自己的设备ID
    header: {
      'content-type': 'application/json',
      "api-key": "NfCuMOPF7dQV0fmxjNxG1CzrrYA=" //自己的api-key
    },
    method: "GET",
   success: function (e) {
  console.log("获取成功", e);

  // 检查所需属性是否存在
  if (e.data.data.datastreams && e.data.data.datastreams.length > 0) {
    let streams = e.data.data.datastreams;

    // 找到对应数据点
    streams.forEach(stream => {
      switch (stream.id) {
        case 'temperature':
          that.setData({
            temperature: stream.datapoints[0].value
          });
          break;
        case 'humidity':
          that.setData({
            humidity: stream.datapoints[0].value
          });
          break;
        case 'light':
          that.setData({
            light: stream.datapoints[0].value
          });
          break;
        case 'ps':
          that.setData({
            ps: stream.datapoints[0].value
          });
          break;
        default:
          break;
      }
    });
  }

  // 在这里进行数据的输出验证
  console.log(e);
  console.log("temperature==", that.data.temperature);
  console.log("humidity==", that.data.humidity);
  console.log("light==", that.data.light);
  console.log("ps==", that.data.ps);
  
}

   });
  },
 
  switchChange: function (e) {
    let command;
    if (e.detail.value) {
      command = "ledon";  // 字符串命令,表示打开
    } else {
      command = "ledoff";  // 字符串命令,表示关闭
    }
    console.log("Command to be sent:", command);
    // 发送命令到 OneNet
    wx.request({
      url: 'https://api.heclouds.com/cmds?device_id=1164262344',
      header: {
        'content-type': 'application/json',
        'api-key': 'NfCuMOPF7dQV0fmxjNxG1CzrrYA='
      },
      method: 'POST',
      data: 
         // 目标设备的 ID
       command  // 要发送的命令内容
      ,
      success(res) {
        console.log("成功", res.data);
        // 处理成功的情况
      },
      fail(res) {
        console.log("失败", res);
        // 处理失败的情况
        if (res.data && res.data.errno === 3) {
          console.error("Authentication failed. Check API Key and permissions.");
        }
      }
    });
  },
  switchChange1: function (e) {
    let command;
    if (e.detail.value) {
      command = "beepon";  // 字符串命令,表示打开
    } else {
      command = "beepoff";  // 字符串命令,表示关闭
    }
    console.log("Command to be sent:", command);
    // 发送命令到 OneNet
    wx.request({
      url: 'https://api.heclouds.com/cmds?device_id=1164262344',
      header: {
        'content-type': 'application/json',
        'api-key': 'NfCuMOPF7dQV0fmxjNxG1CzrrYA='
      },
      method: 'POST',
      data: 
         // 目标设备的 ID
       command  // 要发送的命令内容
      ,
      success(res) {
        console.log("成功", res.data);
        // 处理成功的情况
      },
      fail(res) {
        console.log("失败", res);
        // 处理失败的情况
        if (res.data && res.data.errno === 3) {
          console.error("Authentication failed. Check API Key and permissions.");
        }
      }
    });
  },
  submitData: function (e) {
    const inputValue = e.detail.value;
    console.log( inputValue);
    // Check if the input matches the expected value
    if (inputValue === "123") {
      let command;
      if (e.detail.value) {
        command = "beepon";  // Command to send when the input is "123" and the switch is on
      } else {
        command = "beepoff";  // Command to send when the input is "123" and the switch is off
      }
  
      console.log("Command to be sent:", command);
  
      // Sending the command to OneNet
      wx.request({
        url: 'https://api.heclouds.com/cmds?device_id=1164262344',
        header: {
          'content-type': 'application/json',
          'api-key': 'NfCuMOPF7dQV0fmxjNxG1CzrrYA='
        },
        method: 'POST',
        data: command,  // Sending the command content
        success(res) {
          console.log("成功", res.data);
          // Handling successful cases
        },
        fail(res) {
          console.log("失败", res);
          // Handling failure cases
          if (res.data && res.data.errno === 3) {
            console.error("Authentication failed. Check API Key and permissions.");
          }
        }
      });
    } else {
      // Input value doesn't match the expected value
      console.log("Input value does not match. Command not sent.");
    }
  },
  

   onLoad() {
     var that = this
     setInterval(function(){
      that.getinfo()
     },3000)
   
   }
})