【教程】应用侧连接华为云IoT平台

这篇具有很好参考价值的文章主要介绍了【教程】应用侧连接华为云IoT平台。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、写在前面

  在学校的比赛中,很多赛道都要求要用到华为云IoT平台。但是,全网关于应用侧接入华为云IoT平台的教程极少,且官网上的教程不够清晰明了。因此,在自己的一番摸索下,实现了基于Nodejs的应用侧通过华为云IoT平台双向联通(当然python、java等后端语言也是没有问题的),可以完成数据转发,命令下发等功能,并写下了这一篇教程,希望可以帮助到热爱物联网的大家。

2、关于设备侧与华为云IoT平台的连接

  当然,在应用侧接入华为云IoT平台之前,设备侧应首先完成接入。

  如果还没有接入的话,可以参考一下这篇文章:【教程】ESP32连接华为云IoT平台

  文章已经说得非常详细,希望可以对大家有所启发。

3、进入华为云IoT平台

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot
华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

4、接收属性上报,实现数据转发至服务器

4.1、数据转发的总体实现思路

  当设备属性上报时,我们通过以下步骤在华为云IoT平台上看到相关属性信息

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot
华为云iot的应用侧开发接口,华为云,物联网,服务器,iot
  但是,我们要怎么样把华为云IoT平台上的数据转发到服务器上,并最终展现在网页端或小程序端呢?

  这时候,我们就要用到华为云的数据转发功能,查看官方文档请点此链接:数据转发

  简单来说,我们可以通过第三方应用服务-HTTP推送的方式实现,我们只需要通过:

  • 创建规则触发条件
  • 创建规则动作
  • 指定应用服务器的URL

  就可以在设备发生属性上报、消息上报时,平台通过http推送的方式将相关信息推送给指定的URL。

4.2、创建规则触发条件

  一开始,当然是要创建规则触发条件了。

  • 点击此链接进入相关界面:创建规则触发条件
  • 点击API Explore

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

  • 进入API Explore界面并根据下图填写相关信息,填写时可以把鼠标放在'?'上查看应填写的内容。
  • 我这次填写的接收属性上报,当然消息上报呀、状态变更呀也可以hhh,看个人需求填写就行
  • 填写完后点击调试,就可以在最右边的界面看到调试成功的信息

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

  • 可以在如下界面查看创建的规则触发条件

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

4.3、创建规则动作和指定URL

  接下来就是创建规则动作了,通过图示方式填写有关信息,采用http推送的方式并指定URL,最后点击调试
华为云iot的应用侧开发接口,华为云,物联网,服务器,iot
调试成功后,设备进行属性上报时就会主动向你填写的URL发送信息啦!

我们可以通过以下方法查看创建的规则动作:
华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

4.4、应用侧路由配置后端代码

  通过以上操作后,设备发送属性变化时就会向你填写的URL发送信息了。发送的消息是一个json对象,格式如下:

{
 “resource” : “device.property”,
 “event” : “report”,
 “event_time” : “20151212T121212Z”, “notify_data” : {
   “header” : {
   “device_id” : “d4922d8a-6c8e-4396-852c-164aefa6638f”,
   “product_id” : “ABC123456789”,
   “app_id” : “d4922d8a-6c8e-4396-852c-164aefa6638f”,
   “gateway_id” : “d4922d8a-6c8e-4396-852c-164aefa6638f”,
   “node_id” : “ABC123456789”,
   “tags” : [ {
    “tag_value” : “testTagValue”,
    “tag_key” : “testTagName”
   } ]
  },
  “body” : {
   “services” : [ {
    “service_id” : “Battery”,
    “properties” : {
     “batteryLevel” : 80
    },
    “event_time” : “20151212T121212Z”
   } ]
  }
 }
}

  • 对应的关系如下图所示

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

  • 在后端定义相关路由,并在路由中处理发送过来的json对象的数据
  • 以下给出基于Nodejs的代码参考,详细信息可以看注释,读者可以根据自己的需求修改相关参数
var db = require('../modules/helper/mydb')
var express = require('express');
var router = express.Router();

router.post('/iot', (req, res) => {
    var namesource = req.body.notify_data.header.product_id;    //获得产品id
    var datasource = req.body.notify_data.body.services;    //获得服务列表
    var mydata = datasource[0].properties;  //获得服务列表第一项的属性值


    if(datasource[0].service_id == "ash_bin_Service")   //判断服务id是垃圾桶的相关服务
    {
        //更改垃圾桶信息并写入数据库
        const sqlStr7 = 'UPDATE new_notice SET state=? WHERE name=? and number = ?'
        db.query(sqlStr7, [mydata.ash_bin_capacity, "垃圾桶",namesource], (err, results) => {
        if (err) return res.cc(err.message);
        res.send({
            "Status Code" : 200,
            message: '更改信息成功!',
            data: results,
        })
        })
    }
    else if(datasource[0].service_id == "Trip_Monitor") //判断服务id是卡片的相关服务
    {
        //更改卡片信息并写入数据库
        const sqlStr8 = 'UPDATE card SET state=? WHERE name=? and number = ?'
        db.query(sqlStr8, [mydata.Is_Trip, "智慧卡片","0"], (err, results) => {
        if (err) return res.cc(err.message);
        res.send({
            "Status Code" : 200,
            message: '更改信息成功!',
            data: results,
        })
        })
    }
})


module.exports = router
  • 最后通过前端代码向后端发送相关请求就可以展现出相关信息,前端代码可以根据需求编写,此处不详细说明,如有需要可以私下交流讨论

5、命令下发

  通过命令下发,可以在网页端或小程序端向设备发送指定命令信息

  可以点击此链接查看命令下发的官方文档:下发设备命令

  然后进行如下操作:

5.1、创建命令

  • 产品 - 查看

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

  • 添加命令

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

  • 根据需要填写命令名称下发参数相应参数
    华为云iot的应用侧开发接口,华为云,物联网,服务器,iot
  • 命令名称随便写一个就行,下发参数是应用侧想要给设备发送的命令信息,响应参数是设备接收到命令后相应给用户的信息。
  • 以下是我设置的其中一个命令,大家根据自己的需求填写就行

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

5.2、复制代码示例

  • 点击红框中的API Explore

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

  • 按照下图步骤进行操作

华为云iot的应用侧开发接口,华为云,物联网,服务器,iot

5.3、编写后端代码

  通过复制的代码示例,我们就可以根据它进行后端代码编写,以下给出我的代码示例,详细信息可以参考注释,大家可以根据自己的需求修改参数。

var db = require('../modules/helper/mydb')
var express = require('express');
var router = express.Router();

const core = require('@huaweicloud/huaweicloud-sdk-core');
const iotda = require("@huaweicloud/huaweicloud-sdk-iotda");

const ak = "<YOUR AK>";     //你的AK值
const sk = "<YOUR SK>";     //你的SK值
const endpoint = "https://iotda.cn-north-4.myhuaweicloud.com";
const project_id = "f93ce35781b648099bf5ba620daeebf8";

const credentials = new core.BasicCredentials() //创建验证信息对象
    .withAk(ak)
    .withSk(sk)
    .withProjectId(project_id)
const client = iotda.IoTDAClient.newBuilder()   // 创建一个客户端对象 
    .withCredential(credentials)
    .withEndpoint(endpoint)
    .build();
const request = new iotda.CreateCommandRequest();   //创建一个request请求
request.deviceId = "Doge1_1";   //填写你的设备id值
const body = new iotda.DeviceCommandRequest();  //创建body对象


router.post('/command', (req, res) => {

    const mydata = req.body;    //接收从前端前端传过来的数据
    body.withParas(mydata);     //将数据添加到body
    body.withCommandName("user_order"); //将命令名称添加到body
    body.withServiceId("Users_Delivery_Order"); //将服务的ID添加到body
    request.withBody(body); //将body的信息放入request请求中
    const result = client.createCommand(request);   //客户端发送请求并返回结果
    result.then(result => {
        console.log(result);
        if (result.response.paras.status == 200) {  //规定设备返回的状态码为200时发送信息成功
            return res.send({
                "Status Code" : 200,
                message: '发送信息成功!',
                data: result,
            })
        }
        else	//否则发送信息失败
        {
            return res.send({
                "Status Code" : 400,
                message: '发送信息失败!',
                data: result,
            })
        }
    }).catch(ex => {
        console.log(ex);
        res.send(ex)
    });
}
)


module.exports = router;

5.4、编写前端代码

  • 前端只需要通过ajax请求向定义的/command路由发送信息和接收信息就可以啦
  • 以下给出ajax请求的模板,大家根据需要自己编写
<script type="text/javascript">
    function sendCommand() {
      $.ajax({
        dataType: "json",
        method: 'post',
        url: "/command",	//指定路由
        data: {"name":"ok"},	//发送的数据
        success: function (result) {
          console.log(result);//打印服务端返回的数据(调试用)
        },
        error: function () {
          alert("异常!");
        }
      });
    }
  </script>

6、写在最后

  以上便是应用侧与华为云IoT平台的连接过程,希望对你有所帮助。如果有任何问题都可以在评论区探讨,看到了都会回hhh~

  原创不易,点个赞或者点个关注激励笔者分享更多优质原创内容吧!文章来源地址https://www.toymoban.com/news/detail-557244.html

到了这里,关于【教程】应用侧连接华为云IoT平台的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 入门物联网,基于IoT平台构建智慧路灯应用的实验指南

    自从了解到古茗前端团队使用 Node.js 写物联网代码 ,身为前端开发者,我对物联网充满了兴趣。 我一直很认同一个有趣的观点: 新技术的出现是为了让使用的人省时省力。 而关于 物联网雏形的故事 ,也包含了这一观点: 1991年,剑桥大学特洛伊计算机实验室的科学家们,

    2024年01月22日
    浏览(36)
  • 【OpenHarmony-鸿蒙】 华为智能家居IoT设备开发-环境搭建篇 一键部署开发环境

    轻量与小型系统入门概述 简介 OpenHarmony轻量和小型系统适用于内存较小的IOT设备(参考内存≥128KiB)。通过本文,开发者可以快速熟悉OpenHarmony轻量和小型系统的环境搭建、编译、烧录、调测以及运行“Hello World”等。 开发环境 开发者通常习惯采用Windows+Ubuntu环境进行OpenHa

    2024年02月12日
    浏览(34)
  • 万字长文教你实现华为云IoT+OpenHarmony智能家居开发

    本文分享自华为云社区《华为云IoT+OpenHarmony的智能家居开发》,作者:袁睿。 1. 选题为基于OpenHarmony的智能家居,应用场景为户用,受益人群为住户。 2. 开发的软件设备为智能门锁,储物精灵,软硬件开发都有的是光伏逆变器。 3. 解决的问题: 传统的智能家居:智能单品,

    2024年01月19日
    浏览(28)
  • 如何基于Akamai IoT边缘平台打造一个无服务器的位置分享应用

    与地理位置有关的应用相信大家都很熟悉了,无论是IM软件里的位置共享或是电商、外卖应用中的配送地址匹配,我们几乎每天都在使用类似的功能与服务。不过你有没有想过,如何在自己开发的应用中嵌入类似的功能? 本文Akamai将为大家提供一个思路,借助边缘计算技术在

    2024年02月20日
    浏览(29)
  • PandaX : Go语言企业级 IoT 物联网平台快速开发框架

    PandaX  是一个基于前后端分离架构开发的开源企业级物联网平台低代码开发基座,后端系统采用 Go 语言和前端基于 VUE3 开发,支持设备接入、设备管控,规则链引擎,云组态,可视化大屏,报表设计器,表单设计器,代码生成器等功能,帮助你快速建立企业 IoT 物联网平台相

    2024年02月06日
    浏览(41)
  • 【7. BLE Mesh SDK 开发-小米 IoT 平台-如何烧录固件】

    注册小米账号:在小米 IoT 平台 注册账号 且 登录 完成 注册企业:在小米 IoT 平台注册企业且被审核通过,关于如何注册企业请参考 注册企业 成为开发者:在企业开发组下添加开发者,参考 企业管理 产品已创建:如未创建,请参考 新建产品 已完成功能定义;如未完成请参

    2024年02月20日
    浏览(32)
  • 3步体验在DAYU200开发板上完成OpenHarmony对接华为云IoT(1)

    3.1 串口终端 开发板插上串口线之后,打开设备管理器可以看到识别到串口 COM8 ,这就是开发板的Debug串口。(需要提前安装好USB转串口驱动)。 打开串口工具,新建会话,选择串口协议。 波特率选择 1500000 也就是1.5M。 创建完成。 选择刚才创建好的会话,点击连接。 复位开

    2024年04月27日
    浏览(23)
  • 【云驻共创】华为云之手把手教你搭建IoT物联网应用充电桩实时监控大屏

    充电桩是一种提供电动车辆充电服务的设备。由于电动车辆运行时需要储存大量电能,因此需要进行定期充电。充电桩就是为了满足电动车辆充电需求而生产的设备。 充电桩的来源可以追溯到20世纪80年代初期,当时电动车辆的充电设施十分有限。随着电动车辆的普及,充电

    2024年02月13日
    浏览(38)
  • OpenRemote: Java 开源 IoT 物联网开发平台,匹配智慧城市、智能家居、能源管理

    OpenRemote 是一个直观、用户友好的基于Java语言的开源 IoT 物联网设备管理平台,它包括从连接设备到构建应用程序和特定领域的智能应用程序的所有功能和特性。通过OpenRemote物联网平台,用户可以收集和处理来自不同设备的传感器数据,适用于智能家居、智慧城市、能源管理

    2024年02月08日
    浏览(36)
  • 铱塔 (iita) 开源 IoT 物联网开发平台,基于 SpringBoot + TDEngine +Vue3

    01   铱塔 (iita)  物联网平台 铱塔智联 (open-iita) 基于Java语言的开源物联网基础开发平台,提供了物联网及相关业务开发的常见基础功能, 能帮助你快速搭建自己的物联网相关业务平台。 铱塔智联平台包含了品类、物模型、消息转换、通讯组件(mqtt/EMQX通讯组件、小度音箱接

    2024年02月20日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包