鼎鼎知识库
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

TDengine在项目中的使用.md 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. # TDengine时序数据库安装
  2. 云上Ubuntu服务器前期准备
  3. ```
  4. apt update
  5. sudo apt update
  6. apt-get update
  7. sudo apt-get update
  8. ```
  9. 安装可视化桌面
  10. ```
  11. apt-get install ubuntu-desktop
  12. ```
  13. Windows远程桌面连接Ubuntu.Ubuntu支持xrdp和vnc两种远程桌面协议。vnc是默认的基于RFB协议的远程桌面程序,但不够友好。
  14. ```
  15. sudo apt-get install xrdp
  16. sudo apt-get install vnc4server tightvnserver(有一次没有安装成功)
  17. sudo apt-get install xubuntu-desktop
  18. echo "xfce4-session" >~/.xsession
  19. sudo service xrdp restart
  20. 通过windows远程桌面连接,连接成功,输入用户名和密码,终于看到ubuntu的界面!并且可以浏览网站!
  21. ```
  22. 安装TDengine
  23. ```
  24. 确认是否有systemd命令:which systemd
  25. 登录网址:https://www.taosdata.com/cn/getting-started/
  26. 下载:下载deb包,输入邮件地址
  27. 安装位置:/root/Downloads/
  28. 打开命令行终端:alt+f2, gnome-terminal
  29. 查看当前位置:pwd
  30. 来到所在目录:cd Downloads
  31. 安装TDengine: sudo dpkg -i tdengine-1.6.2.2.deb
  32. 安装成功提示:
  33. TDengine is installed successfully!
  34. To configure TDengine: edt /etc/taos/taos.cfg
  35. To start TDengine: sudo systemctrl start taosd
  36. To access TDengine: use taos in shell
  37. 回到根目录: cd ~
  38. 来到TDengine的配置文件:cd /etc/taos/
  39. 检查taosd状态:systemctl status taosd
  40. 启动服务:systemctl start taosd
  41. 再次查看服务状态:systemctl status taosd
  42. ```
  43. 更新TDengine
  44. ```
  45. -- 远程登录服务器
  46. -- 检查taosd状态:systemctl status taosd
  47. -- 停掉taosd服务:systemctl stop taosd
  48. -- 登录网址:https://www.taosdata.com/cn/getting-started/ ,下载deb包,会把安装包发送到邮箱
  49. -- 查看当前目录:pwd
  50. -- 来到下载文件所在目录:cd Downloads
  51. -- 查看文件:ls
  52. -- 安装新版:sudo dpkg -i TDengine-server-1.6.6.0-Linux-x64.deb
  53. -- 提示:TDEngine is removed successfully!TDengine is installed successfully! /etc/taos/taos.cfg
  54. -- 再次查看状态:systemctl status taosd
  55. -- 再次启动: systemctl start taosd
  56. -- 下载客户端并安装,被安装到了C:\TDengine中
  57. -- 登录,版本已经升级为1.6.6.0
  58. ```
  59. 在linux上小试牛刀
  60. ```
  61. taos
  62. 创建数据库:create database db;
  63. 查看所有数据库:show databases;
  64. 使用数据库:use db;
  65. 创建表:create table t(ts timestamp, cdata int);
  66. 插入数据:
  67. insert into t values ('2019-07-15 00:00:00',10);
  68. insert into t values ('2019-07-15 01:00:00', 20);
  69. 查询:select * from t;
  70. ```
  71. Windows连接Ubuntu上的TDengine
  72. ```
  73. 初次连接失败: ./taos.exe -h ip
  74. 查看是否ping通:ping ip
  75. 安装最新的客户端版本
  76. ```
  77. 还是不行。熟悉vi的使用,修改配置文件。
  78. ```
  79. 三种命令模式:
  80. 命令模式切换到插入模式:i
  81. 从插入模式切回到命令模式:esc
  82. 在命令模式下,按 :wq 表示保存并退出, 按 :q! 表示不保存并退出
  83. 三种插入模式:
  84. i 从光标当前位置开始
  85. a 从光标所在位置的下一个位置开始
  86. o 从光标的行首插入一行
  87. 命令模式下光标的移动:
  88. h 向左
  89. l 向右
  90. k 向上
  91. j 向下
  92. 数字0 本行最开头
  93. G 最后一行最开头
  94. $ 本行行尾
  95. ^ 所在行行首
  96. w 下一个字母的开头
  97. e 下一个字母的结尾
  98. b 上一个字母的开头
  99. 命令模式下删除文字
  100. x 每按一次删除光标位置后面的一个字符
  101. 6x 删除光标位置后面的6个字符
  102. X 每按一次删除光标位置前面的一个字符
  103. 20X 删除光标位置前面的20个字符
  104. dd 删除光标所在行
  105. ```
  106. 修改taos.cfg配置文件
  107. ```
  108. - 确认配置:sudo vi /etc/taos/taos.cfg internalIP:是ifconfig中的地址
  109. - 确认开启服务:systemctl stop taosd systemctl start taosd systemctl status taosd
  110. - 确认服务器防火墙没在起作用:sudo ufw status
  111. - 确认服务器开放6020-6040端口,并且是TCP和UDP都要打开(安全组设置tcp和udp都要打开,小于64KB的包默认是udp发送)
  112. - 确认客户端命令正确:./taos.exe -h ip
  113. - ubuntu重启:reboot
  114. ```
  115. # 本地环境搭建
  116. - 本地服务器:192.168.8.131 teche123
  117. - 确认模块ip地址:187ED5314E0C 192.168.9.134
  118. - 登录模块:192.168.9.134:82 root abc123
  119. - 修改服务器指向:192.168.8.131:8080/ebx-bishop/data/carry
  120. - 确认服务打开:MysqlServer, redis-server
  121. - 启动网站:dot.net exe TaiHe.Electricity.Web.dll
  122. - 打开网站:192.168.8.131:8080 TecheFwd2018(泰和网站密码DrrnFwd2018,泰和服务器密码TecheFwd123)
  123. - 测试可视化界面是否可以操作
  124. # SDK使用原理
  125. > Startup.cs中的设置
  126. 包括参数、数据库、普通表和超级表配置、帮助类、模拟数据的背景现场。
  127. ```
  128. //参数配置
  129. services.Configure<TConfiguration>(Configuration.GetSection("TDegnine"));//在appsetting.json中配置TDengine结点
  130. //数据库配置
  131. services.AddTransient<ITDatabase, TDatabase>();//数据库接口和实现
  132. //普通表和超级表配置
  133. services.AddTransient<ITSuperTable<SuperReal>, TSuperTable<SuperReal>>();//超级表,实时数据
  134. services.AddTransient<ITSuperTable<SuperRealTj>, TSuperTable<SuperRealTj>>();//超级表,实时数据统计
  135. services.AddTransient<ITSuperTable<SuperWarning>, TSuperTable<SuperWarning>>();//超级表,报警
  136. services.AddTransient<ITSuperTable<SuperWarningTj>, TSuperTable<SuperWarningTj>>();//超级表,报警统计
  137. services.AddTransient<ITSuperTable<SuperDl>, TSuperTable<SuperDl>>();//超级表,电量
  138. services.AddTransient<ITSuperTable<SuperKg>, TSuperTable<SuperKg>>();//超级表,开关统计
  139. services.AddTransient<ITSuperTable<SuperKgTj>, TSuperTable<SuperKgTj>>();//超级表,开关统计的统计
  140. //子表配置
  141. services.AddTransient<ITChildTable<Real>, TChildTable<Real>>();//子表,实时数据
  142. services.AddTransient<ITChildTable<RealTj>, TChildTable<RealTj>>();//子表,实时数据统计
  143. services.AddTransient<ITChildTable<Warning>, TChildTable<Warning>>();//子表,报警
  144. services.AddTransient<ITChildTable<WarningTj>, TChildTable<WarningTj>>();//子表,报警统计
  145. services.AddTransient<ITChildTable<Dl>, TChildTable<Dl>>();//子表,电量
  146. services.AddTransient<ITChildTable<Kg>, TChildTable<Kg>>();//子表,开关统计
  147. services.AddTransient<ITChildTable<KgTj>, TChildTable<KgTj>>();//子表,开关统计统计
  148. //实时计算流返回结果保存到普通表
  149. //services.AddTransient<ITStream<RealTj>, TStream<RealTj>>(); //实时数据流计算结果
  150. //services.AddTransient<ITStream<WarningTj>, TStream<WarningTj>>();//报警数据流计算结果
  151. //services.AddTransient<ITStream<KgTj>, TStream<KgTj>>();//开关统计流计算结果
  152. //帮助类配置
  153. services.AddSingleton(typeof(CommonHelper));//共用帮助类
  154. services.AddTransient(typeof(MacHelper));//获取模块的帮助类
  155. services.AddSingleton(typeof(RealHelper));//帮助类,实时数据
  156. services.AddSingleton(typeof(RealTjHelper));//帮助类,实时数据统计
  157. services.AddTransient(typeof(WarningHelper));//帮助类,报警数据
  158. services.AddTransient(typeof(WarningTjHelper));//帮助类,报警数据统计
  159. services.AddTransient(typeof(DlHelper));//帮助类,电量数据
  160. services.AddTransient(typeof(KgHelper));//帮助类,开关统计
  161. services.AddTransient(typeof(KgTjHelper));//帮助类,开关统计
  162. //后台背景线程
  163. //services.AddSingleton<IHostedService, RealBackgroundService>();//模拟实时数据上传
  164. //services.AddSingleton<IHostedService, WarningBackgroundService>();//模拟报警数据上传
  165. //电量数据不能随机
  166. services.AddSingleton<IHostedService, KgBackgroundService>();//模拟每次开或关操作记录上传
  167. //统计实时数据、报警数据、开关数据,按分钟
  168. services.AddSingleton<IHostedService, TongJiByMinuteBackgroundService>();
  169. ```
  170. > appsettings.json中的配置
  171. ```
  172. "TDegnine": {
  173. "DataSource": "http://192.168.8.110:6020/rest/sql",
  174. "Username": "root",
  175. "Password": "taosdata",
  176. "Database": "liqun_nuode_1_1",
  177. "PlanInterval": 5000
  178. }
  179. ```
  180. > 生成SDK类库
  181. 类库的名称是:`TDengineTest.DD.dll`
  182. # 实际项目使用
  183. - 引入`TDengineTest.DD.dll`并生成
  184. - 在postman中测试TDengine接口是否可用
  185. ```
  186. POST http://47.102.145.164:6020/rest/sql
  187. Headers
  188. Authorization Basic cm9vdDp0YW9zZGF0YQ==
  189. Body
  190. show databases;
  191. ```
  192. - appsettings.json配置
  193. - Startup.cs配置
  194. - 出现报错:System.Runtime程序集版本高
  195. 修改TDengineTest.DD中如下,因为局域网版本是.net core 2.0版本
  196. ```
  197. <PropertyGroup>
  198. <TargetFramework>netcoreapp2.0</TargetFramework>
  199. </PropertyGroup>
  200. ```
  201. - 根据appSettings.json中的配置,创建`dingding_zhanting_1_1`数据库。
  202. ```
  203. create database dingding_zhanting_1_1;
  204. show databases;
  205. ```
  206. - 创建超级表控制器`SuperTableController`
  207. ```
  208. Microsoft.Extensions.Options版本高了,在类库中改成2.0的
  209. ```
  210. - 创建子表控制器`ChildTableController`
  211. - 打开超级表列表页
  212. ```
  213. 报错,提示没有Flurl
  214. <PackageReference Include="Flurl" Version="2.8.2" />
  215. <PackageReference Include="Flurl.Http" Version="2.4.2" />
  216. Could not load file or assembly 'Flurl.Http, Version=2.4.2.0, Culture=neutral, PublicKeyToken=null
  217. 重新生成,拷贝所有相关程序集到服务器
  218. ```
  219. - 创建子表控制器`ChildTableController`
  220. - 尝试计划任务
  221. ```
  222. //容器配置
  223. services.AddScheduler(); //计划
  224. services.AddTransient<RealDataToTDengine>();//IInvocable
  225. //管道配置
  226. provider.UseScheduler(s =>
  227. {
  228. //使用IInvocable 上传实时数据
  229. s.Schedule<RealDataToTDengine>()
  230. .EveryThirtySeconds();
  231. })
  232. //.LogScheduledTaskProgress(Services.GetService<ILogger<Coravel.Scheduling.Schedule.Interfaces.IScheduler>>())
  233. .OnError(exception => {
  234. Console.WriteLine(exception.Message);
  235. });
  236. //计划任务
  237. public class RealDataToTDengine : IInvocable{}
  238. //报错
  239. the located assembly's manifest definition doesn't match the assembly reference
  240. --重新生成发布解决
  241. //计划任务无法打印实体记录
  242. --改成字符串
  243. ```
  244. - 上传实时数据
  245. ```
  246. //报错
  247. Microsoft.Extensions.Logging.Abstraction Version=2.2.0
  248. --从NuGet下载
  249. ```
  250. - 检查上传的实时数据
  251. ```
  252. ./taos.exe -h
  253. use database
  254. select * from real_187ed5314e0c;
  255. ```
  256. - 报警数据上传
  257. ```
  258. 原理:
  259. -- 局域网breaker→kaiguan→WarningPolicy→breaker.Value.EnableNetCtrl。
  260. -- 在时序数据库中每种报警类型都有两条报警记录,一条开始,一条结束成对出现
  261. -- 当第一次出现报警,局域网创建一条,时序数据库也创建一条开始记录
  262. -- 当第二次出现报警,局域网不再创建,更新报警记录,时序数据库不动作
  263. -- 当某个开关没有报警,局域网闭环,时序数据库创建一条结束记录
  264. -- 放在本地的逻辑中实现
  265. ```
  266. - 电量数据上传:放在`DataServer`中