阿里云物联网平台独享实例使用Quick Start

简介: 目前物联网平台有两类实例:公共实例和用户购买的实例。相较共享实例,独享实例提供时序数据存储,用于根据设备数据进行业务分析和监控,购买的实例与其他实例之间相隔离,具有更高的数据可靠性和安全性。本文主要介绍独享实例的快速使用Quick Start。

Step By Step

1、创建实例
图片.png

注意:整个实例的完整初始化大概需要10分钟左右。

2、切换实例(从共享实例切花到独享实例)
图片.png

3、独享实例下面创建产品和设备(与共享实例操作方法一致)
图片.png

4、获取连接参数
图片.png

图片.png

图片.png

5、基于开源Java SDK上行数据

参考链接:基于开源JAVA MQTT Client连接阿里云IoT

import com.alibaba.taro.AliyunIoTSignUtil;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class IoTDemo1 {

    public static String productKey = "g0fzs******";
    public static String deviceName = "******";
    public static String deviceSecret = "d2d447494a340499****************";
    public static String regionId = "cn-shanghai";
    public static String instanceId = "****************";

    //物模型-属性上报topic
    private static String pubTopic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post";
    private static String subTopic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post_reply";
    private static MqttClient mqttClient;

    public static void main(String [] args) throws MqttException {

        initAliyunIoTClient();

        ScheduledExecutorService scheduledThreadPool = new ScheduledThreadPoolExecutor(1,
                new ThreadFactoryBuilder().setNameFormat("thread-runner-%d").build());
        scheduledThreadPool.scheduleAtFixedRate(()->postDeviceProperties(), 10,10, TimeUnit.SECONDS);

        mqttClient.subscribe(subTopic);
        mqttClient.setCallback(new MqttCallback() {
            @Override
            public void connectionLost(Throwable throwable) {

            }

            @Override
            public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
                System.out.println("Topic : " + s);
                System.out.println("message ;" + mqttMessage.getPayload());
                System.out.println(new String(mqttMessage.getPayload())); //打印输出消息payLoad

            }

            @Override
            public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {

            }
        });

    }

    private static void initAliyunIoTClient() {

        try {
            String clientId = "java" + System.currentTimeMillis();

            Map<String, String> params = new HashMap<>(16);
            params.put("productKey", productKey);
//            params.put("IotInstanceId", instanceId);
            params.put("deviceName", deviceName);
            params.put("clientId", clientId);
            String timestamp = String.valueOf(System.currentTimeMillis());
            params.put("timestamp", timestamp);

            String targetServer = "tcp://" + instanceId + ".mqtt.iothub.aliyuncs.com:1883";

            String mqttclientId = clientId + "|securemode=3,signmethod=hmacsha1,timestamp=" + timestamp + "|";
            String mqttUsername = deviceName + "&" + productKey;
            String mqttPassword = AliyunIoTSignUtil.sign(params, deviceSecret, "hmacsha1");
            connectMqtt(targetServer, mqttclientId, mqttUsername, mqttPassword);

        } catch (Exception e) {
            System.out.println("initAliyunIoTClient error " + e.getMessage());
        }
    }

    public static void connectMqtt(String url, String clientId, String mqttUsername, String mqttPassword) throws Exception {

        MemoryPersistence persistence = new MemoryPersistence();
        mqttClient = new MqttClient(url, clientId, persistence);
        MqttConnectOptions connOpts = new MqttConnectOptions();
        // MQTT 3.1.1
        connOpts.setMqttVersion(4);
        connOpts.setAutomaticReconnect(false);
        connOpts.setCleanSession(true);

        connOpts.setUserName(mqttUsername);
        connOpts.setPassword(mqttPassword.toCharArray());
        connOpts.setKeepAliveInterval(60);
        mqttClient.connect(connOpts);
    }

    private static void postDeviceProperties() {

        try {
            //上报数据
            //高级版 物模型-属性上报payload
            String payloadJson = "{\"params\":{\"DetectDistance\":13}}";
            MqttMessage message = new MqttMessage(payloadJson.getBytes("utf-8"));
            message.setQos(1);

            mqttClient.publish(pubTopic, message);

            System.out.println("upload message demo");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

6、数据转发到实例内的时序数据存储
图片.png

7、设备上行消息,查询运行日志

可以基于日志,快速进行常见问题的排查定位。

图片.png

8、使用SDK查看流转到TDSB的数据

  • 8.1 pom.xml
<dependencies>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>hitsdb-client</artifactId>
            <version>0.2.7</version>
        </dependency>
    </dependencies>
  • 8.2 code sample
import com.aliyun.hitsdb.client.TSDB;
import com.aliyun.hitsdb.client.TSDBClientFactory;
import com.aliyun.hitsdb.client.TSDBConfig;
import com.aliyun.hitsdb.client.value.request.LastPointQuery;
import com.aliyun.hitsdb.client.value.request.LastPointSubQuery;
import com.aliyun.hitsdb.client.value.response.LastDataValue;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class demo1 {

    public static void main(String[] args) {

        //实例详情页面中的连接地址、端口
        String connectString = "************.hitsdb.rds.aliyuncs.com";
        int port = 3242;
        //实例详情页面中的时序数据存储用户名、密码
        String username = "iot*****";
        String password = "********";
        TSDBConfig config = TSDBConfig.address(connectString, port)
                .basicAuth(username, password)
                // 网络连接池大小,默认为64。
                .httpConnectionPool(64)
                // HTTP 等待时间,单位为秒,默认为90秒。
                .httpConnectTimeout(90)
                // IO 线程数,默认为1。
                .ioThreadCount(1)
                .config();

        TSDB tsdbClient = TSDBClientFactory.connect(config);
        //按标签筛选数据
        Map<String, String> tags = new HashMap<>();
        tags.put("deviceName","device1");
        String metric = "detectDistance";
        long now = System.currentTimeMillis();
        LastPointQuery query = LastPointQuery.builder()
                .timestamp(now)
                .backScan(-1)
                .msResolution(true)
                .sub(LastPointSubQuery.builder(metric, tags).build()).build();
        List<LastDataValue> lastDataValues = tsdbClient.queryLast(query);

        System.out.println(lastDataValues);
    }
}
  • 8.3 result
[LastDPValue [metric=detectDistance, timestamp=1594622426000, value=13.0, tags={deviceName=device1}, tsuid=0C000000000002000003000000000098]]

更多参考

实例管理
基于开源JAVA MQTT Client连接阿里云IoT
阿里云物联网平台博客综述

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
5月前
|
消息中间件 DataWorks 物联网
MQTT问题之接入阿里云物联网平台如何解决
MQTT接入是指将设备或应用通过MQTT协议接入到消息服务器,以实现数据的发布和订阅;本合集着眼于MQTT接入的流程、配置指导以及常见接入问题的解决方法,帮助用户实现稳定可靠的消息交换。
372 1
|
3月前
|
存储 运维 监控
阿里云物联网平台的优势
【7月更文挑战第19天】阿里云物联网平台的优势
59 1
|
5月前
|
Cloud Native 安全 物联网
【阿里云云原生专栏】云边端一体化:阿里云如何利用云原生技术赋能物联网
【5月更文挑战第22天】阿里云借助云原生技术赋能物联网,实现云边端一体化,提升系统弹性与敏捷性。通过容器化部署,保证高可用性与可靠性。在智能交通等领域,阿里云提供高效解决方案,实现实时数据分析与决策。代码示例展示如何使用阿里云服务处理物联网数据。同时,阿里云重视数据安全,采用加密和访问控制保障数据隐私。丰富的工具和服务支持开发者构建物联网应用,推动技术广泛应用与发展。
308 1
|
5月前
|
消息中间件 存储 JavaScript
阿里云IOC物联网异步处理基础概念
该内容介绍了异步处理基础和消息队列的相关概念。首先,同步处理指任务完成后才能执行其他操作,而异步则允许任务并行执行,不阻塞程序。异步能提高系统并发性和响应性,但也增加复杂性和资源消耗。接着,提到了消息队列,包括生产者、消费者、队列、broker和topic等概念,并指出在IoT中,设备作为生产者发送消息到特定topic,消费者从队列获取数据。最后,简要介绍了AMQP协议,它是用于应用程序间消息传递的开放标准,常用于分布式系统和物联网,如RabbitMQ和Apache Qpid。课程将以Apache Qpid为例接收IoT数据。
204 6
阿里云IOC物联网异步处理基础概念
|
5月前
|
消息中间件 网络协议 物联网
MQTT协议问题之阿里云物联网服务器断开如何解决
MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。
462 1
|
15天前
|
传感器 存储 人工智能
智能农业的未来:物联网技术如何革新传统农业
本文探讨了物联网(IoT)技术在农业中的应用及其对传统农业的革新。通过详细分析当前农业面临的挑战,如资源浪费和效率低下,文章阐述了物联网技术如何通过实时数据监控和自动化系统提高农业生产的效率和可持续性。此外,文章还讨论了实施物联网技术时需要考虑的技术、经济和社会因素,以及未来发展趋势。
|
3天前
|
供应链 安全 物联网
未来已来:区块链技术在物联网与虚拟现实中的融合创新
【9月更文挑战第30天】随着科技的飞速进步,区块链、物联网(IoT)和虚拟现实(VR)技术不断突破旧有边界,相互交织形成新的技术生态。本文将深入探讨这些技术的发展趋势,并分析它们如何在实际应用中相互促进,共同塑造我们的未来。我们将看到,通过智能合约和去中心化的特性,区块链为物联网设备提供了安全的数据交换平台;同时,物联网的广泛部署又为区块链技术带来了丰富的应用场景。而在虚拟现实领域,区块链不仅能够确保数字资产的安全交易,还能增强用户的沉浸式体验。这些技术的融合预示着一个更加互联、高效和可信的未来。
19 8
|
1天前
|
传感器 安全 物联网
新技术趋势与应用随着科技的不断进步,新兴技术如区块链、物联网和虚拟现实等正迅速改变我们的世界。这些技术不仅在各自领域内展现出强大的潜力,还在相互融合中催生出更多创新应用场景。本文将探讨这些新兴技术的发展趋势及其在各行业中的应用前景,通过通俗易懂的语言和清晰的条理,带领读者了解其内涵和意义。
本文旨在探讨区块链技术、物联网和虚拟现实等新兴技术的发展趋势及其在各个行业的应用场景。通过分析这些技术的独特优势和潜在缺陷,揭示它们对未来社会和经济可能带来的深远影响。同时,结合实际案例,展示这些技术如何解决现实问题,为各行各业提供新的发展机遇。
11 4
|
4天前
|
存储 安全 物联网
探索未来:区块链、物联网和虚拟现实技术的融合与创新
【9月更文挑战第29天】在数字化浪潮的推动下,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正逐步渗透到日常生活的方方面面。本文将深入探讨这些技术的独特发展趋势及其在多个行业中的创新应用场景。我们将从基础概念出发,逐步解析这些技术如何相互交织,共同塑造一个更加互联、高效和沉浸式的未来世界。
16 5
|
7天前
|
存储 物联网 区块链
未来已来:探索区块链技术在物联网与虚拟现实中的融合应用
【9月更文挑战第26天】随着技术的不断演进,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正逐渐改变我们的工作和生活方式。本文将深入探讨这些技术如何相互促进,特别是在提供安全、透明的数据交换和增强用户体验方面的潜力。通过具体案例分析,我们将揭示这些技术融合的未来趋势,并讨论它们对社会的深远影响。
25 8

相关产品

  • 物联网平台
  • 下一篇
    无影云桌面