# TDengine时序数据库安装 云上Ubuntu服务器前期准备 ``` apt update sudo apt update apt-get update sudo apt-get update ``` 安装可视化桌面 ``` apg-get install ubuntu-desktop ``` Windows远程桌面连接Ubuntu.Ubuntu支持xrdp和vnc两种远程桌面协议。vnc是默认的基于RFB协议的远程桌面程序,但不够友好。 ``` sudo apt-get install xrdp sudo apt-get install vnc4server tightvnserver sudo apt-get install xubuntu-desktop echo "xfce4-session" >~/.xsession sudo service xrdp restart 通过windows远程桌面连接,连接成功,输入用户名和密码,终于看到ubuntu的界面!并且可以浏览网站! ``` 安装TDengine ``` 确认是否有systemd命令:whick systemd 登录网址:https://www.taosdata.com/cn/getting-started/ 下载:下载deb包,输入邮件地址 安装位置:/root/Downloads/ 打开命令行终端:alt+f2, gnome-terminal 查看当前位置:pwd 来到所在目录:cd Downloads 安装TDengine: sudo dpkg -i tdengine-1.6.2.2.deb 安装成功提示: TDengine is installed successfully! To configure TDengine: edt /etc/taos/taos.cfg To start TDengine: sudo systemctrl start taosd To access TDengine: use taos in shell 回到根目录: cd ~ 来到TDengine的配置文件:cd /etc/taos/ 检查taosd状态:systemctl status taosd 启动服务:systemctl start taosd 再次查看服务状态:systemctl status taosd ``` 在linux上小试牛刀 ``` taos 创建数据库:create database db; 查看所有数据库:show databases; 使用数据库:use db; 创建表:create table t(ts timestamp, cdata int); 插入数据: insert into t values ('2019-07-15 00:00:00',10); insert into t values ('2019-07-15 01:00:00', 20); 查询:select * from t; ``` Windows连接Ubuntu上的TDengine ``` 初次连接失败: ./taos.exe -h ip 查看是否ping通:ping ip 安装最新的客户端版本 ``` 还是不行。熟悉vi的使用,修改配置文件。 ``` 三种命令模式: 命令模式切换到插入模式:i 从插入模式切回到命令模式:esc 在命令模式下,按 :wq 表示保存并退出, 按 :q! 表示不保存并退出 三种插入模式: i 从光标当前位置开始 a 从光标所在位置的下一个位置开始 o 从光标的行首插入一行 命令模式下光标的移动: h 向左 l 向右 k 向上 j 向下 数字0 本行最开头 G 最后一行最开头 $ 本行行尾 ^ 所在行行首 w 下一个字母的开头 e 下一个字母的结尾 b 上一个字母的开头 命令模式下删除文字 x 每按一次删除光标位置后面的一个字符 6x 删除光标位置后面的6个字符 X 每按一次删除光标位置前面的一个字符 20X 删除光标位置前面的20个字符 dd 删除光标所在行 ``` 修改taos.cfg配置文件 ``` - 确认配置:sudo vi /etc/taos/taos.cfg internalIP:是ifconfig中的地址 - 确认开启服务:systemctl stop taosd systemctl start taosd systemctl status taosd - 确认服务器防火墙没在起作用:sudo ufw status - 确认服务器开放6020-6040端口,并且是TCP和UDP都要打开(安全组设置tcp和udp都要打开,小于64KB的包默认是udp发送) - 确认客户端命令正确:./taos.exe -h ip - ubuntu重启:reboot ``` # 本地环境搭建 - 本地服务器:192.168.8.131 teche123 - 确认模块ip地址:187ED5314E0C 192.168.9.134 - 登录模块:192.168.9.134:82 root abc123 - 修改服务器指向:192.168.8.131:8080/ebx-bishop/data/carry - 确认服务打开:MysqlServer, redis-server - 启动网站:dot.net exe TaiHe.Electricity.Web.dll - 打开网站:192.168.8.131:8080 TecheFwd2018(泰和网站密码DrrnFwd2018,泰和服务器密码TecheFwd123) - 测试可视化界面是否可以操作 # SDK使用原理 > Startup.cs中的设置 包括参数、数据库、普通表和超级表配置、帮助类、模拟数据的背景现场。 ``` //参数配置 services.Configure(Configuration.GetSection("TDegnine"));//在appsetting.json中配置TDengine结点 //数据库配置 services.AddTransient();//数据库接口和实现 //普通表和超级表配置 services.AddTransient, TSuperTable>();//超级表,实时数据 services.AddTransient, TSuperTable>();//超级表,实时数据统计 services.AddTransient, TSuperTable>();//超级表,报警 services.AddTransient, TSuperTable>();//超级表,报警统计 services.AddTransient, TSuperTable>();//超级表,电量 services.AddTransient, TSuperTable>();//超级表,开关统计 services.AddTransient, TSuperTable>();//超级表,开关统计的统计 //子表配置 services.AddTransient, TChildTable>();//子表,实时数据 services.AddTransient, TChildTable>();//子表,实时数据统计 services.AddTransient, TChildTable>();//子表,报警 services.AddTransient, TChildTable>();//子表,报警统计 services.AddTransient, TChildTable
>();//子表,电量 services.AddTransient, TChildTable>();//子表,开关统计 services.AddTransient, TChildTable>();//子表,开关统计统计 //实时计算流返回结果保存到普通表 //services.AddTransient, TStream>(); //实时数据流计算结果 //services.AddTransient, TStream>();//报警数据流计算结果 //services.AddTransient, TStream>();//开关统计流计算结果 //帮助类配置 services.AddSingleton(typeof(CommonHelper));//共用帮助类 services.AddTransient(typeof(MacHelper));//获取模块的帮助类 services.AddSingleton(typeof(RealHelper));//帮助类,实时数据 services.AddSingleton(typeof(RealTjHelper));//帮助类,实时数据统计 services.AddTransient(typeof(WarningHelper));//帮助类,报警数据 services.AddTransient(typeof(WarningTjHelper));//帮助类,报警数据统计 services.AddTransient(typeof(DlHelper));//帮助类,电量数据 services.AddTransient(typeof(KgHelper));//帮助类,开关统计 services.AddTransient(typeof(KgTjHelper));//帮助类,开关统计 //后台背景线程 //services.AddSingleton();//模拟实时数据上传 //services.AddSingleton();//模拟报警数据上传 //电量数据不能随机 services.AddSingleton();//模拟每次开或关操作记录上传 //统计实时数据、报警数据、开关数据,按分钟 services.AddSingleton(); ``` > appsettings.json中的配置 ``` "TDegnine": { "DataSource": "http://192.168.8.110:6020/rest/sql", "Username": "root", "Password": "taosdata", "Database": "liqun_nuode_1_1", "PlanInterval": 5000 } ``` > 生成SDK类库 类库的名称是:`TDengineTest.DD.dll` # 实际项目使用 - 引入`TDengineTest.DD.dll`并生成 - 在postman中测试TDengine接口是否可用 ``` POST http://47.102.145.164:6020/rest/sql Headers Authorization Basic cm9vdDp0YW9zZGF0YQ== Body show databases; ``` - appsettings.json配置 - Startup.cs配置 - 出现报错:System.Runtime程序集版本高 修改TDengineTest.DD中如下,因为局域网版本是.net core 2.0版本 ``` netcoreapp2.0 ``` - 根据appSettings.json中的配置,创建`dingding_zhanting_1_1`数据库。 ``` create database dingding_zhanting_1_1; show databases; ``` - 创建超级表控制器`SuperTableController` ``` Microsoft.Extensions.Options版本高了,在类库中改成2.0的 ``` - 创建子表控制器`ChildTableController` - 打开超级表列表页 ``` 报错,提示没有Flurl Could not load file or assembly 'Flurl.Http, Version=2.4.2.0, Culture=neutral, PublicKeyToken=null 重新生成,拷贝所有相关程序集到服务器 ``` - 创建子表控制器`ChildTableController` - 尝试计划任务 ``` //容器配置 services.AddScheduler(); //计划 services.AddTransient();//IInvocable //管道配置 provider.UseScheduler(s => { //使用IInvocable 上传实时数据 s.Schedule() .EveryThirtySeconds(); }) //.LogScheduledTaskProgress(Services.GetService>()) .OnError(exception => { Console.WriteLine(exception.Message); }); //计划任务 public class RealDataToTDengine : IInvocable{} //报错 the located assembly's manifest definition doesn't match the assembly reference --重新生成发布解决 //计划任务无法打印实体记录 --改成字符串 ``` - 上传实时数据 ``` //报错 Microsoft.Extensions.Logging.Abstraction Version=2.2.0 --从NuGet下载 ``` - 检查上传的实时数据 ``` ./taos.exe -h use database select * from real_187ed5314e0c; ``` - 报警数据上传 ``` 原理: -- 局域网breaker→kaiguan→WarningPolicy→breaker.Value.EnableNetCtrl。 -- 在时序数据库中每种报警类型都有两条报警记录,一条开始,一条结束成对出现 -- 当第一次出现报警,局域网创建一条,时序数据库也创建一条开始记录 -- 当第二次出现报警,局域网不再创建,更新报警记录,时序数据库不动作 -- 当某个开关没有报警,局域网闭环,时序数据库创建一条结束记录 -- 放在本地的逻辑中实现 ``` - 电量数据上传:放在`DataServer`中