精华内容
下载资源
问答
  • OPC_DA连接,导入Excel,InfluxDB存储,MQTT订阅发布。
  • #include <stdio.h> #include <string.h> #include "mosquitto.h" #include <cjson/cJSON.h> #include "influxdb.h" #define LOGOUT 0 ...char mqtt_host[512] = "localhost";...int mqtt_port = 18...

    设备通过mqtt消息上报坐标信息保存到时序数据库,查询历史数据回放设备轨迹。

    #include <stdio.h>
    #include <string.h>
    #include "mosquitto.h"
    #include <cjson/cJSON.h>
    #include "influxdb.h"
    #define LOGOUT 0
    #define LOGIN 1
    #define STREAMING 2
    #define TALKBACK 3
    
    char mqtt_host[512] = "localhost";
    int mqtt_port = 1883;
    char username[48] = "test";
    char password[48] = "12345";
    char clientid[48] = "presence";
    
    void saveUwb(cJSON *root){
        char buf[512] = "uwb,";
        time_t t;
        time(&t);
        cJSON *TagId = cJSON_GetObjectItem(root,"TagId");
        if(TagId){
            snprintf(buf+strlen(buf), sizeof(buf) - sizeof(char) * strlen(buf), "tagid=%s ",TagId->valuestring);
        }
        cJSON *x = cJSON_GetObjectItem(root,"x");
        if(x){
            snprintf(buf+strlen(buf), sizeof(buf) - sizeof(char) * strlen(buf), "x=%s",x->valuestring);
        }
        cJSON *y = cJSON_GetObjectItem(root,"y");
        if(y){
            snprintf(buf+strlen(buf), sizeof(buf) - sizeof(char) * strlen(buf), ",y=%s",y->valuestring);
        }
    	cJSON *sn = cJSON_GetObjectItem(root,"sn");
        if(sn){
            snprintf(buf+strlen(buf), sizeof(buf) - sizeof(char) * strlen(buf), ",sn=%s",sn->valuestring);
        }
        snprintf(buf+strlen(buf), sizeof(buf) - sizeof(char) * strlen(buf), ",datetime=%ld",t);
        s_influxdb_client *client = influxdb_client_new("localhost:8086","admin","admin","mydb",0);
        printf("buf : %s\n",buf);           
        int status = influxdb_insert(client,buf);      
        printf("status : %d,%s\n",status,client->dbname);
        influxdb_client_free(client);		
    
    }
    
    void message_callback(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message)
    {
        cJSON * root = cJSON_Parse((char *)message->payload);
        if (!root){
            printf("Received msg payload[%s], json parse failed\n", (char*)message->payload);
            return;
        }
        printf("Received message is %s\n", (char *)message->payload);
        printf("topic is %s\n", (char *)message->topic);
        if (!strcasecmp((char *)message->topic,"/mvms/client/uwb/")){
            saveUwb(root);
        }
    
        if (root){
            cJSON_Delete(root);
        }
    }
    
    int main(int argc, char * argv[])
    {
        int rc = 0;
        struct mosquitto *mosq;
        mosquitto_lib_init();
    
        mosq = mosquitto_new(clientid, true, NULL);
        if (mosq){
            mosquitto_username_pw_set(mosq, username, password);
            mosquitto_connect_callback_set(mosq, connect_callback);
            mosquitto_message_callback_set(mosq, message_callback);
    
            rc = mosquitto_connect(mosq, mqtt_host, mqtt_port, 45);
    		
    		char topic_uwb[512]={0};
            snprintf(topic_uwb, sizeof(topic_uwb)-1, "/mvms/client/uwb/#");
    
            mosquitto_subscribe(mosq, NULL, topic_uwb, 2);
    
            mosquitto_loop_forever(mosq, -1, 1);
    
            mosquitto_destroy(mosq);
        }
        mosquitto_lib_cleanup();
        return rc;
    }
    

    展开全文
  • influxdb时序数据库

    2018-01-02 23:52:58
    influxdb时序数据库,数据处理,数据结构分析讲解
  • 十分钟看懂时序数据库(III)- 压缩

    千次阅读 2017-05-27 15:20:55
    作为物联网邻域数据存储的首选时序数据库也越来越多进入人们的视野,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等...

    物联网邻域近期如火如荼,互联网和传统公司争相布局物联网。作为物联网邻域数据存储的首选时序数据库也越来越多进入人们的视野,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时也成为百度战略发展产业物联网的标志性事件。

    压缩对于时序数据库是至关重要的。因为时序数据库面对的物联网场景每天都会产生上亿条数据。众所周知,在大数据时代的今天数据的重要性是不言而喻的,数据就是公司的未来。但如果无法对这些时序数据进行很好的管理和压缩,那将给客户带来非常高的成本压力。

    如前文提到的,工业物联网环境监控方向的客户,一年产生1P的数据,如果每台服务器10T的硬盘,那么总共需要100多台。按照每台服务器3万来算,一年就需要300万的支出,这还不包括维护人员的成本。

    压缩是个非常大的话题,本文希望能够先从大的宏观角度给出一个轮廓,讲述压缩的本质,压缩的可计算性问题。再从时序数据压缩这一个垂直领域,给出无损压缩和有损压缩各一个例子进行说明,希望能够抛砖引玉。

    1.压缩的故事
    先来讲个有关压缩的故事,外星人拜访地球,看中了大英百科全书,想要把这套书带回去。但这套书太大,飞船放不下。于是外星人根据飞船的长度,在飞船上画了一个点。这样外星人心满意足的返回了自己的星球,因为这个点就存储了整个大英百科全书。

    这个并不是很严谨的故事,却道出了压缩的本质:用计算时间换取存储空间。外星人在飞船上画的点非常有技术含量,可以说是黑科技,代表一个位数非常长的不循环小数。而这串数字正代表了整个大英百科全书的内容。

    2.压缩的两个问题
    再来回答两个宏观的问题,帮助我们认识在压缩这件事上哪些是我们能做的,哪些是不能做的。

    第一个问题:是否存在一个通用的压缩算法(Universal Compression),也就是说某个压缩算法能够压缩任意的数据。答案是否定的,并不存在这样的通用压缩算法。

    用反证法可以做个快速的证明。假设存在通用的压缩算法,也就是说有个压缩算法,对于长度为n的字符串,总能压缩到长度小于n的字符串。

    图片描述

    那么必定存在两个长度为n的字符串A,B,经过压缩得到同一个字符串。这样解压缩算法没有办法正确的解压。所以假设错误,并不存在通用的压缩算法。

    第二个问题:是否能写出一个函数,输入字符串,可以得到这个字符串最短表示的长度。答案也是否定的,也就是说我们无法证明某个算法是最好的算法。柯尔莫哥洛夫复杂性的不可计算性解释的就是这个问题。用的也是反证法,有兴趣的朋友可以自行百度了解(注1)。

    这两个问题的答案,告诉我们三件事情,1、压缩算法的选择需要具体情况具体分析,不可压缩的字符串总是存在。2、不要妄图获得最好的压缩算法,它是不可计算的。因为总有你想不到的压缩算法存在。举个例子,[一百万个0的字符串,以“foo”作为key,经过AES加密算法的CBC模式得到的字符串]。这串字符串看起来完全是随机的,不可压缩的。但我却用43个中文(中括号之间的内容)就表示了出来。3、压缩是件很难很有技术含量的事情,需要不断的挖掘,才能将他做到更好。

    3.时序数据压缩
    针对不同的数据,会有不同的压缩,大致压缩的对象可以分为文档、音频、视频等。如果直接采用文档的压缩算法用于时序数据,效果并不理想。下图是一些常用的压缩算法的benchmark,可以看到压缩率那一栏最高也只能够达到3左右的压缩率(压缩率=原始数据大小/压缩后的数据大小)。更多压缩算法可以查看注2。

    如果要得到更好的压缩率,我们需要采取更加适合时序数据的压缩算法。时序数据的压缩可以分为无损压缩和有损压缩。

    图片描述

    无损压缩
    无损压缩是说被压缩的数据和解压后的数据完全一样,不存在精度的损失。对数据的压缩说到底是对数据规律性的总结。时序数据的规律可以总结为两点:1、timestamp稳定递增、2、数值有规律性,变化稳定。下面来举个例子。

    图片描述

    上图是一组时序数据,如果我们一行一行的看感觉压缩有点困难,但如果我们一列一列的看,压缩方案就呼之欲出了。

    先看timestamp那一列是等差递增数列,可以用[1467627245000,1000,4]来表示。

    1467627245000代表了第一个时间,1000代表后一个时间比前一个时间的大1000,4代表了这样的规律出现了4次。如果一共有100个这样规律的timestamp,那就意味着,我们用3个Long型就可以表示出来。timestamp压缩率高达33。

    再进一步观察看value那一列,如果取差值,可以得到(6,-5,2,-5),全部都加5得到(11,0,7,0),这些数值都可以用4bit来表示。也就是用[23,5,4,0xb0700000]来表示(23,22,24,25,24)。其中的4代表后续一共有4个数。如果这样的规律一直维持到100个Int的value,就可以用16个Int来代表,压缩率高达6.3。

    具体的情景会复杂很多,在此只是简单举个例子。InfluxDB无损压缩算法在其页面上有完整的阐述(注3),可以配合开源源码进行更加深入的理解。针对于浮点数类型,Facebook在Gorilla论文中(注4)提到的非常高效的无损压缩算法,已经有很多文章进行分析。

    InfluxDB对于浮点型也采用这个算法。

    有损压缩
    有损压缩的意思是说解压后的数据和被压缩的数据在精度上有损失,主要针对于浮点数。通常都会设置一个压缩精度,控制精度损失。时序数据的有损压缩的思路是拟合。也就是用一条线尽可能的匹配到这些点,可以是直线,也可以是曲线。

    最有名的时序数据有损压缩是SOIsoft公司的SDA算法,中文称为旋转门压缩算法。
    图片描述

    在上图中,红色的点是上一个记录的点,空心的点是被丢掉的点,绿色的点是当前的点,黑色的点是当前要记录的点。

    可以看到图左边,当前点和上一个记录点以及压缩精度的偏差值形成的矩形可以包含中间的点,所以这些点都是可以丢掉的。

    再看图右边,当前点和上一个记录点形成的矩形无法包含中间的点,所以把上一个点记录下来。如此进行下去,可以看到,大部分的数据点都会被丢掉。查询的时候需要根据记录的点把丢掉的点在插值找回来。

    有损压缩除了可以大幅减少存储成本。如果结合设备端的能力,甚至可以减少数据的写入,降低网络带宽。

    4.总结
    虽然判断压缩算法最优是不可计算的,但是设计好的压缩算法仍然是可计算的问题。可以看到,前面提到的时序数据的无损压缩有损压缩算法都会基于时序数据的特征采取方案,达到更好的压缩率。现在deep learning非常的火,让人很好奇它是不是可以给数据压缩带来新的方案。

    注1:https://zh.wikipedia.org/zh-cn/%E6%9F%AF%E6%B0%8F%E5%A4%8D%E6%9D%82%E6%80%A7
    注2:https://github.com/inikep/lzbench/blob/v1.7.1/lzbench171_sorted.md
    注3:https://docs.influxdata.com/influxdb/v1.0/concepts/storage_engine/#compression
    注4:http://www.vldb.org/pvldb/vol8/p1816-teller.pdf

    相关阅读:

    十分钟看懂时序数据库(I)-存储

    共享行业的分布式MQTT设计

    展开全文
  • 截止目前,IotHub 使用 MongoDB 作为数据存储,这很好,不过在物联网的应用中,在某些情况下,我们可能还会用到别的存储方案,比如说时序数据库,那么这一节我们就来聊聊时序数据库。 时序数据 首先让我们来看一下...

    在前面的课程中,我们完成了 IotHub 上行数据处理的功能。截止目前,IotHub 使用 MongoDB 作为数据存储,这很好,不过在物联网的应用中,在某些情况下,我们可能还会用到别的存储方案,比如说时序数据库,那么这一节我们就来聊聊时序数据库。

    时序数据

    首先让我们来看一下什么是时序数据。时序数据是一类按照时间维度进行索引的数据,它记录了某个被测量的实体在一定时间范围内,每个时间点上的一组测试值。比如说,传感器上传的大棚每小时的湿度和温度数据、A 股中某支股票每个时间点的股价、计算机系统的监控数据等,都属于时序数据,时序数据有以下一些特点:

    • 数据量较大,写入操作是持续且平稳的,而且写多读少
    • 只有写入操作,几乎没有更新操作,比如去修改大棚温度和湿度的历史数据,那是没有什么意义的;
    • 没有随机删除,即使删除也是按照时间范围进行删除。 删除大棚 08:35 的温度记录没有任何实际意义,但是删除 6 个月以前的记录是有意义的。
    • 数据实时性和时效性很强,数据随着时间的推移不断追加,旧数据很快失去意义。
    • 大部分以时间和实体为维度进行查询,很少以测试值为维度查询,比如会去查询某个大棚某个时间段的温度数据,但是很少会去查温度高于多少度的记录。

    如果说你的业务数据符合上面的条件,比如,你的业务数据属于监控、运维类的数据,或者你的数据需要用折线图之类的进行可视化&#

    展开全文
  • 近年来,由于IOT,APM等系统的需求,一种以时间戳为主键的数据模型,越来越流行,存储该数据模型的数据库被称为时序数据库。 若干年中,市面上出现了很多种不同的时序数据库,他们或数据模型不同,或生态不同,或...

    近年来,由于IOT,APM等系统的需求,一种以时间戳为主键的数据模型,越来越流行,存储该数据模型的数据库被称为时序数据库。
    若干年中,市面上出现了很多种不同的时序数据库,他们或数据模型不同,或生态不同,或存储架构不同。经过数年的发展,InfluxDB一枝独秀,在DB-Engines中,遥遥领先其他的时序数据库,成为最受用户欢迎的数据库之一。

     

    阿里云时序数据库InfluxDB®️版上线

    为了满足广大物联网企业客户的对于InfluxDB的商业化需求, 阿里云时序数据库团队正式推出时序数据InfluxDB®️版。 时序数据InfluxDB®️版是基于开源InfluxDB提供的商业化时序数据库服务,免部署,零运维,高可靠,提供7*24小时专家答疑服务。

    现在已经开始全面公测。
    公测购买页面:
    https://common-buy.aliyun.com/?spm=5176.11451019.0.0.144575d16d7RE1&commodityCode=hitsdb_influxdb_pre&accounttraceid=7545ae3e-f0e4-4df9-a0fc-b931328048fd#/buy

    InfluxDB场景

    InfluxDB是因为物联网而兴起的数据库,其天生具有IOT的特性。几乎所有的物联网数据都可以通过InfluxDB存储,分析与展示。

    InfluxDB的具体使用场景包括:智慧物联网监控分析系统,传统石油化工、采矿以及制造企业设备数据采集与分析,医疗数据采集与分析,车联网,智慧交通等。InfluxDB同时还可以用于日志数据存储与分析,各种服务、软件以及系统监控数据采集、分析与报警,金融数据采集与分析等。

    总之,只要符合写多读少、无事务要求、海量高并发持续写入、基于时间区间聚合分析以及基于时间区间快速查询的数据都可以使用InfluxDB。

     

    InfluxDB介绍

    InfluxDB之所以能在众多时序数据库中成为DB-Engines中排名第一的时序数据库,来源它的几大优势:

    • 完整的生态
    • 易用性

    完整的生态TICK
    InfluxDB不仅仅只提供存储服务,还提供了周边的工具,他们包括Telegraf, Chronograf以及Kapacitor。加上InfluxDB,他们的首字母恰好组成一个秒钟跳动一次的英文单词TICK。

    Telegraf: Telegraf是一个开源的时序数据收集器。它收集各种不同的时序数据,并把数据通过InfluxDB标准API发送给InfluxDB。Telegraf采用插件的方式,目前支持100多种不同服务的时序数据收集,用户可以开发自定义的插件收集数据。

    Chronograf: Chronograf是整个TICK生态的UI界面层。它让用户可以通过图形界面展现InfluxDB中的数据,同时它可以配置InfluxDB参数以及收集Kapacitor发送的报警信息

    Kapacitor: Kapacitor是一个事件处理及报警引擎,它能够根据建立的规则对异常时序数据进行报警,同时能够将这些警告发送给其他系统。

    通过使用TICK生态,用户能轻松构建一个时序数据收集,存储,分析以及告警的完整系统。

    InfluxDB易用性

    InfluxDB数据写入以及数据查询特别方便,其读写采用的是Restful API,用户可以通过HTTP/HTTPS方式直接读写数据。

    数据写入

    InfluxDB数据采用行协议方式写入。下面是一个行协议的示例数据:

    InfluxDB支持通过curl直接将数据写入InfluxDB:

    curl -i -XPOST 'https://localhost:8086/write?db=mydb' --data-binary 'temperature,machine=unit42,type=assembly >external=25,internal=37 1434055562000000000'


    同时,用户也可以通过InfluxDB提供Command Line Interface(命令行界面)写入数据:

    INSERT weather,location=us-midwest temperature=82 1465839830100400200

    InfluxDB提供的多样化数据插入方式,可以让用户在不同平台快速的插入数据。

    数据查询

    InfluxDB提供SQL-like的查询语句:InfluxQL。InfluxSQL支持SQL风格的查询操作,关系型数据库的用户可以无缝切换到InfluxDB的使用。例如:从measurement h2o_feet查询5条记录:

    SELECT * FROM h2o_feet LIMIT 5
    name: h2o_feet

    time level description location water_level
    2015-08-18T00:00:00Z below 3 feet santa_monica 2.064
    2015-08-18T00:00:00Z between 6 and 9 feet coyote_creek 8.12
    2015-08-18T00:06:00Z between 6 and 9 feet coyote_creek 8.005
    2015-08-18T00:06:00Z below 3 feet santa_monica 2.116
    2015-08-18T00:12:00Z between 6 and 9 feet coyote_creek 7.887


    关于InfluxQL的具体用法,可以参考阿里云时序数据库InfluxDB®️的文档:数据探索
    https://help.aliyun.com/document_detail/113131.html

    InfluxQL支持按照时间戳对数据分组的查询方式,只需要在influxQL后加上group by(分组时间间隔)即可:

    SELECT MAX("water_level") FROM "h2o_feet" WHERE "location"='coyote_creek' AND time >= '2015-09-18T16:00:00Z' AND time <= '2015-09-18T16:42:00Z' GROUP BY time(12m)
    name: h2o_feet

    time max
    2015-09-18T16:00:00Z 3.599
    2015-09-18T16:12:00Z 3.402
    2015-09-18T16:24:00Z 3.235
    2015-09-18T16:36:00Z

    group by的具体用法请参考:数据探索

    先进的时序数据分析技术

    InfluxQL除了支持SQL-like的查询语句,提供了大量的函数支持对时序数据进行分析。这些分析函数分为四大类:

    Aggregation(聚合),Selector(选择),Transformation(转换)和预测(Prediction)。这些分析函数能够帮助用户轻松地时序数据转化为有用的信息。

    除此之外,InfluxDB提供8种不同的分析技术,用户无需自己用InfluxQL实现这几种分析技术,可以直接使用这些分析技术进行金融以及投资方面的数据分析。

    InfluxQL函数以及分析技术的具体用法请参考:InfluxQL函数
    https://help.aliyun.com/document_detail/113126.html

     

    阿里云时序数据库InfluxDB®️版优势

    阿里云时序数据库InfluxDB®️版,在完全兼容InfluxDB行协议以及InfluxQL的基础上做了很多改进,给用户更多稳定、可靠、方便的服务。

    数据高可靠
    阿里云时序数据库InfluxDB®️版的数据存储在阿里云的高效云盘上,高效云盘提供99.9999999%数据高可靠的保障。这样可以保障InfluxDB中数据一旦写入,就永远不会丢失。

    高稳定性
    阿里云时序数据库InfluxDB®️版实现了对内存,硬盘等资源的有效管理,可以极大地减少由于硬件资源不够引起的InfluxDB不稳定的情况。

    数据图形化展示
    阿里云时序数据库InfluxDB®️版与grafana,chronograf等图形展示平台无缝链接,用户购买阿里云时序数据库InfluxDB®️,阿里云自动为用户配置好图形展示平台的数据源,用户直接到图形展示平台完成自己需要的图形化dashboard。(公测结束后提供该功能)

    全自动化数据迁移工具
    阿里云时序数据库InfluxDB®️版提供全自动的数据迁移工具,用户“一键式”将自建的InfluxDB迁移到阿里云时序数据库InfluxDB®️版。

    全自动Failover
    阿里云时序数据库InfluxDB®️版提供全自动Failover机制,一旦所在硬件发生不可恢复的故障,InfluxDB会在非常短的时间内使用其他硬件替换故障硬件,然后重启InfluxDB。这样可以减少因为不可控故障引发的服务中断时间。该Failover是全自动的,无需人工干预,即使是在节假日以及午夜,用户也无需担心服务由于硬件故障造成的长时间不可用。(全自动Failover公测期间暂时不可用)

    高可用版InfluxDB®️
    阿里云时序数据库InfluxDB®️版将在公测结束以后提供高可用版本。高可用版将提供更加稳定的服务,对稳定性要求比较高的用户,将会从中感受到无限稳定的服务。

    原文链接

    展开全文
  • 昆岳互联的“a环保”APP基于自主打造的环保产业互联网平台(INECO平台),对环境基础设施海量数据实时处理与分析,可以秒...对采集到的海量数据进行分析、展示,在时序数据库的选型中,经过对比,最终选择了TDengine。
  • 多协议数据采集网关结合TDEngine时序数据库在车辆环境监测中的应用 一、项目背景 随着经济发展,国家对环境越来越重视,为贯彻《中华人民共和国大气污染防治法》,落实《汽油车污染物排放限值及测量方法(双怠速法及...
  • 近日,东方国信时序数据库CirroData-TimeS(基于Apache IoTDB)完成了与大连图扑TopLink组态软件的适配。在某核电站数据展示项目中,数据经过Toplink的解析,...
  • 除核心的快 10 倍以上的时序数据库功能外,还提供缓存、数据订阅、流式计算等功能,最大程度减少研发和运维的复杂度。 TDengine 作为时序处理引擎,可以完全不用 Kafka、HDFS/HBase/Spark、Redis 等软件,大幅简化...
  • 前言 InfluxDB 是一个用于存储和分析时间序列数据的开源数据库,内置 HTTP API...通过 EMQ X 消息引擎,我们可以自定义 Template 文件,然后将 Json 格式的 MQTT 消息转换为 Measurement 写入 InfluxDB: 场景介绍 ...
  • 相比之下,时间序列数据库(可以基于关系型数据库或NoSQL数据库)将时间视作一等公民,通过提高效率来处理这种大规模数据,并带来性能的提升,包括:更高的容纳率(Ingest Rates)、更快的大规模查询(尽管有一些比...
  • 以搭建连接机器人的物联网平台为例,机器人的生产厂家、序列号等数据可以存放在关系型数据库中,机器人运行的实时数据,比如电机电流信号、温度信号等,可以存放在时序数据库中(非关系型数据库的一种)。 ▎图5 根据...
  • 它还是没有额外依赖的开源时序数据库,用于记录 metrics、events,进行数据分析。 何谓时间序列数据库? 什么是时间序列数据库,最简单的定义就是数据格式里包含Timestamp字段的数据,比如某一时间环境的温度,CPU的...
  • 一、基本概念 时序时空数据库 TSDB :英文全称为Time ...是一种高性能、低成本、稳定可靠的在线时序时空数据库服务,提供高效读写、高压缩比存储、时序数据插值及聚合计算等服务,广泛应用于物联网(IoT)设备监...
  • mqtt中间件和influxdb时序数据库的安装另外介绍,这里不说明 一、服务架构 IoT Simulator(publisher)----> MQTT broker---->Telegraf(subscriber)---->InfluxDB 二、Telegraf下载地址 下面主要以windows...
  • 一.mqtt客户端和ssh框架整合 1.在maven的pom.xml文件中加入依赖jar包 <!--paho.mqtt--> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>...
  • mqtt连接百度天工物接入平台

    千次阅读 2020-06-15 23:05:09
    mqtt连接到百度天工物接入...物接入分为设备型和数据型两种项目类型,我们在这里使用数据型项目类型,传输一些温湿度数据,同时可以无缝对接时序数据库TSDB、物可视等,将数据实时显示出来,同时我们采用MQTT协议与云端
  • 之前使用Rabbitmq部署了一个简单的MQTT服务器,暂未做用户隔离,也部署了InfluxDB时序数据库,但是并不能直接通过配置将MQTT服务器的数据转存至时序数据库中,于是我决定自己写脚本实现下. 准备 打开shell使用 pip ...
  • 百度云的天工物联网服务目前包括:物接入、物解析、物管理、时序数据库和规则引擎等5大部分,本篇文章仅介绍物接入
  • MQTT与TCP 长连接

    2021-07-13 17:02:40
    在接触到MQTT之后,总是会有疑问,为什么用MQTT不用TCP长连接透传?看起来【TCP长连接+私有协议透传】和【MQTT+业务主题】似乎都能达到同样的目的,甚至用MQTT会使得设备端逻辑实现、APP端逻辑实现、云端架构实现...
  • 前言寒假的时候开始搭建mqtt服务器,一开始使用的是RabbitMQ,基于Erlang语言.但是RabbitMQ的本职工作是AMQP,MQTT只是他的一个插件功能,似乎有些大材小用,很多MQTT的功能也没有集成.这次我打算使用EMQ来重新部署我的...
  • 设备和服务器通信,需要做设备管理和控制,在MQTT和私有协议间纠结,最终选定MQTT作为通信标准,更规范普及,功能也能满足需求。 开搞! 这里是引用 MQTT相比于TCP长连接的优势 1、协议更标准 MQTT是标准的RFC协议...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 770
精华内容 308
关键字:

mqtt时序数据库