ThingsBoard 3.1.1版本在window本地运行之TB-Gateway ODBC数据上传(四)

news2024/11/23 18:43:11

目录

1、前言

 2、Thingsboard Gateway

 1.tb-gateway的概念

 2.tb-gateway的配置

 3.odbc连接器配置

3、ODBC的配置

1.安装window的ODBC驱动程序

2.配置ODBC的驱动程序信息

4、效果展示


1、前言

       项目中会出现这样的情况,有个平台搭建在本地,而数据也存在了本地服务器,而不能IOT云平台,远程查看或操控,那么有什么方法去解决呢?

       1.可在本地平台的项目中改代码,加入云平台配置属性,但耗时耗力,不利于后期IOT平台的发展;

       2.可做数据同步,云平台在己绑定的数据库中拿到数据,但同步数据往往会中断,也不利于IOT平台的后期发展;

       3.利用Thingsboard对接ODBC协议,可直接上传到IOT平台,利于后期出现同样情况,可以直接部署,省时省力。

这种方式是以数据库通过ODBC做数据定时上报给TB-Gateway,然后再在TB上显示数据库。 

 2、Thingsboard Gateway

     1.tb-gateway的概念

      ThingsBoard Gateway是为TB平台提供支持更多协议的数据收集功能和未来扩展的设备管理功能,新版对接的协议都是基于TB-Gateway来对接的,可以说TB-Gateway相当于是大管家,能允许各类设备提交数据至TB平台,能提供基于内存或本地文件两种方式的数据缓存机制,用于连接中断时,暂存数据,当连接恢复时,自动将数据上传到服务器。

      而TB支持协议:MQTT协议、HTTP(S)协议、CoAP协议,新版本还支持OPC-UA协议、ModBus协议、BACnet协议、CAN协议、SNMP协议、BLE协议、ODBC协议以及其他扩展对接,都要用tb-gateway做载体来接收、发送数据的,当然,直连除外!

       2.tb-gateway的配置

       这个可编辑文档tb_gateway.yaml在config文件夹下

对其修改编辑:

thingsboard:
  host: localhost     ##连接本地搭建的TB平台
  port: 1883          ##默认端口是1883
  remoteShell: false
  remoteConfiguration: false
  statistics:
    enable: true
    statsSendPeriodInSeconds: 3600
    configuration: statistics.json
  minPackSendDelayMS: 0
  checkConnectorsConfigurationInSeconds: 60
  handleDeviceRenaming: true
  checkingDeviceActivity:
    checkDeviceInactivity: false
    inactivityTimeoutSeconds: 120
    inactivityCheckPeriodSeconds: 10
  security:
    accessToken: A7fxD4c90QA1IYmewjyn   ##必须要连接tb平台上的一个网关设备的令牌,不然创建的设备是接收不到信息
  qos: 1
storage:
  type: memory
  read_records_count: 100
  max_records_count: 100000
#  type: file
#  data_folder_path: ./data/
#  max_file_count: 10
#  max_read_records_count: 10
#  max_records_per_file: 10000
#  type: sqlite
#  data_file_path: ./data/data.db
#  messages_ttl_check_in_hours: 1
#  messages_ttl_in_days: 7
grpc:
  enabled: false
  serverPort: 9595
  keepaliveTimeMs: 10000
  keepaliveTimeoutMs: 5000
  keepalivePermitWithoutCalls: true
  maxPingsWithoutData: 0
  minTimeBetweenPingsMs: 10000
  minPingIntervalWithoutDataMs: 5000
connectors:
 # -
 #   name: MQTT Broker Connector
 #   type: mqtt
 #   configuration: mqtt.json
  ##开启了两个odbc的连接器
  -
    name: ODBC Connector
    type: odbc
    configuration: odbc.json
  -
    name: ODBC Connector
    type: odbc
    configuration: odbc_vb.json

 3.odbc连接器配置

 别忘了,这篇博客的主角是ODBC,而该可编辑文档也在config文件夹中:

 对其修改编辑:

{
  "connection": {
##数据库连接信息,包括数据库驱动,ip,端口,数据库名称,用户名,密码
    "str": "Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Port=3306;Database=mysql;Uid=root;Pwd=123456;",  
    "attributes": {
      "autocommit": true,
      "timeout": 0
    },
    "encoding": "utf-8",
    "decoding": {
      "char": "utf-8",
      "wchar": "utf-8",
      "metadata": "utf-16le"
    },
    "reconnect": true,
    "reconnectPeriod": 60
  },
  "pyodbc": {
    "pooling": false
  },
  "polling": {
##从数据库中获取相关的数据,获取当前最新的一组数据,ps:如果有与数据库某些特殊字符相冲突,如这个`force`,一定要用` `来标识,不然会出现数据错误。
    "polling": {
    "query": "SELECT id, channelName, eu, length, `force` , dataTime FROM t_cbbody1 WHERE id > ? ORDER BY id ASC LIMIT 1",
    "period": 26,   ##上报给TB的频率,这里设置每隔26s就上报一次
    "iterator": {
      "column": "id",  ##从自增的ID判断最新的数据
      "query": "SELECT Max(id)-1 FROM results1",
      "persistent": false
    }
  },
  "mapping": {
    "device": {
      "type": "'odbc'",   ##连接器的连接方式是odbc
      "name": "'t_cbdevice'"   ##tb平台上的设备名称
    },
    "sendDataOnlyOnChange": false,
    "timeseries": "*"
  },
  "serverSideRpc": {
    "enableUnknownRpc": false,
    "overrideRpcConfig": false,
    "methods": [
    ]
  }
}

 注意看这句:"str": "Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Port=3306;Database=mysql;Uid=root;Pwd=123456;",

这里的“MySQL ODBC 8.0 Unicode”就是我们接下来要详细说的。

3、ODBC的配置

1.安装window的ODBC驱动程序

  下载安装包:https://dev.mysql.com/downloads/connector/odbc/

   选择window版本即可

选择与你电脑相匹配的64位还是32位,然后按照默认选项进行安装即可。

2.配置ODBC的驱动程序信息

   ①打开windows 下的控制面板下的管理工具,找到ODBC数据源。

②在【用户DSN】选项卡中单击【添加】按钮,然后选择“MySQL ODBC 8.0 Unicode Driver”。

 

【注意】:这里要说明一下“MYSQL ODBC 8.0 ANSI Driver”和“MySQL ODBC 8.0 Unicode Driver”的区别:

MySQL ODBC 8.0 ANSI Driver 只针对有限的字符集的范围;

MySQL ODBC 8.0 Unicode Driver 提供了更多字符集的支持,也就是提供了多语言的支持。

 填写完后可点击【Test】按钮,测试一下连接是否配置成功!如果成功会有成功提示! 

④在用户DSN处即可查看到最新创建的ODBC

此时就算大功告成,与前面的odbc.json里的驱动配置已全部完成,接下来看成果了。

4、效果展示

这是我的表结构:

 具体的数据:

 在thingsboard_gateway文件夹下运行dos,输入“py tb_gateway.py”即可运行

 运行结果:

在 TB平台收到数据:

大功告成,接下来还会有很多实例去验证,等着我吧! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jenkins构建并部署一个go语言项目

Jenkins安装 1、下载 安装java [rootlocalhost ~]# yum install java-1.8.0-openjdk* -y 方式一: #下载安装包 [rootlocalhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.249.1-1.1.noarch.rpm #安装Jenkins [rootlocalhost…

【excel导入、导出】pom、实体类、工具类、例子

目录 一、环境搭建: pom: 实体类(ExcelClassField ): 工具类: 二、【示例】导入 controller: service 实体类: 注意: 三、【示例】导出 controller: …

搜索与图论 - bellman-ford 算法

文章目录一、为什么 Dijkstra 算法不适用于含负权的图1. 理论推导2. 实例演示2.1 详细步骤2.2 结果二、bellman-ford 算法1. 简介2. 基本思路3. 简单举例4. bellman-ford 算法具体实现过程详见例题有边数限制的最短路。三、bellman-ford 算法例题——有边数限制的最短路具体实现…

仓库24代 “ CK_Label_v24

产品型号 CK_Label_v24 尺寸 124x90x12mm(不含安装支架) 屏幕尺寸 4.2 inch 显示技术 电子墨水屏显示 显示区域面积 (mm) 84.8(H) x 63.6(V) 分辨率 400*300 像素密度 120dpi 显示颜色 黑/白 外观颜色 白色&灰外圏 按键 3 指示灯…

【C++】STL标准模板库

目录 一、概念 STL的四种基本组件 容器vector 迭代器iterator 函数对象function object 算法algorithm 二、使用 容器vector的使用 泛型程序设计: 所谓泛型程序设计就是编写不依赖于具体数据类型的程序。C中,模板就是泛型程序设计的主要…

一次疑似 JVM native 内存泄漏的排查实录

最近开发同学反馈,某定时任务服务疑似有内存泄漏,整个进程的内存占用比 Xmx 内存大不少,而且看起来是缓慢上升的,做了下面这次分析,包括下面的内容: 分析 JVM native 内存的一些常见思路内存增长了&#x…

关于Arduino连接L298N供电问题

关于Arduino连接L298N供电问题 查看原文 该L298N板声称有一个5V稳压器为Arduino供电,在这种情况下,您可以使用单个电源,并让电机板为Arduino供电。 关于为Arduino和电机提供动力有两种思想流派: 使用两个独立的电源&#xff0…

NumPy 的使用

NumPy(Numerical Python)是Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,同时也针对数组运算提供大量的数学函数库。 NumPy 的前身 Numeric 最早由 Jim Hugunin 与其他协作者共同开发,2005 年&#xff0…

百万千万爆款视频的脚本是怎么写出来的?两套模板教你做同款

那些百万千万爆款视频的脚本是怎么写出来的?两套模板教你做同款。 每天都能刷到百万赞的短视频,看看自己的视频点赞量,失落是一种感觉,其实你也可以做出优秀的爆款文案。 今天给大家介绍两种短视频脚本模板,大家可以…

idea手动创建干净的maven项目,很简单

大家好,今天我们分享使用idea开发工具创建干净的maven项目 这是Maven的官网: 点一下就可以 首先,我们来了解一下什么是Maven,就是说关于Maven这个东西你要知道的是 1.Maven是一个跨平台(在很多平台上都可以使用&…

B4:Unity制作Moba类游戏——小兵AI系统

若想取得战争的胜利,必先控好兵线。 ———— 麦克阿瑟 是时候让敌人经历一下我们兵线的洗礼。 ———— 拿破仑 在LOL对局中,职业选手对兵线的控制可以说是达到了“运筹帷幄之中,决胜千里之外”。其实普通玩家只要控好兵线,在对线中一样可以…

Java Servlet详解(补充,极其重要)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

SwiftUI 中列表行(List Row)展开和收起无动画或动画诡异的解决

文章目录 问题现象问题分析1. 为什么 List 行展开与收起没有动画效果?2. 第一种解决方法3. 另一种巧妙的解决总结结束语问题现象 SwiftUI 中展开(expand)和收起(collapse)列表行(List Row)是一个常见的操作,不过默认来说这样的操作不会有动画效果: 如上图所示,我们为…

粒子滤波算法(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

CpG ODN——艾美捷ODN 1826 (TLRGRADE)说明书

艾美捷CpG ODN系列——ODN 1826 (TLRGRADE):具有硫代磷酸酯骨架的CpG寡脱氧核苷酸(B型)。小鼠TLR9(Toll样受体9)的特异性配体。 艾美捷CpG ODN 丨ODN 1826 (TLRGRADE)化学性质: 备选名称:CpG-B…

Suspense组件

先上官网&#xff1a;https://cn.vuejs.org/guide/built-ins/suspense.html 注意一下 <Suspense> 是一项实验性功能。它不一定会最终成为稳定功能&#xff0c;并且在稳定之前相关 API 也可能会发生变化。 在使用了之后在浏览器控制台会有如下打印&#xff0c;至少目前是…

【大数据】有关zookeeper的问题

如图&#xff0c;启动zookeeper失败&#xff0c;输入 zkServer.sh start-foreground 查看失败原因 Invalid config&#xff0c;我得知是配置文件出了问题&#xff0c;但是检查配置文件没有发现错误 最终在配置文件末尾配置参数结尾发现了未删除的空格 将三个节点配置文件中的…

C/C++ 和 Java的编译运行机制比较 个人理解

计算机程序语言按程序的执行方式可分为编译型语言和解释性语言。 编译型语言是指使用专用的编译器&#xff0c;针对某操作系统将高级语言源代码一次性地翻译成可被该系统硬件执行的机器码(包括机器指令和操作数&#xff09;&#xff0c;并包装成该系统所能识别的可执行程序的格…

同事开源我的微服务深度实践笔记到 GitHub,短短 3 天竟吸粉 1W+

说Spring成就了Java&#xff0c;Spring是Java程序员必修课之一&#xff0c;应该没人反对吧&#xff1f;前几年面试最常问的且可以顺利拿到高薪的技能是Spring&#xff0c;随着Spring体系的壮大&#xff0c;除非你在简历上添加Spring Boot和Spring Cloud的技能&#xff0c;才可以…

Kubernetes——Debug Static Pod

1. 问题背景 注意&#xff0c;我这里的Static Pod并非Kubernetes的Static Pod&#xff0c;而是需要把想要Debug的程序放到Delve环境中重新打包一个镜像。因为还有另外一种场景&#xff0c;那就是我们需要不重启Running Pod&#xff0c;为了和这种方式区分&#xff0c;才以此为…