# TeamViewer ``` --TeamViewer注册邮箱 https://exmail.qq.com/login darren@ddingsafe.com TecheDing2019 --TeamViewer账号 激活码:09-32504-807106-224267 邮箱:darren@ddingsafe.com 密码:DingTeam2019 --诺德 伙伴ID: 1274815081 密码:teche --展厅 伙伴ID:1 724 163 309 密码:75s4tn ``` # 服务器 ``` --诺德 用户名:Administrator 密码:TecheFwd123 --展厅 服务器IP:192.168.9.108 用户名:Administrator 密码:teche123 187ED5314E0C: 192.168.9.118 187ED53159E4: 192.168.9.126 --云端 服务器地址: 47.103.61.198 用户名:administrator 密码:Teche123 云端智能照明接口文档:http://47.103.61.198:5001/swagger/index.html --云端数据库 "dingding_zhanting1": "server=47.103.61.198;port=3306;database=dingding_zhanting1;user=root;password=TecheDing2019;SslMode=none" ``` # 网站 ``` --诺德 管理员:DrrnFwd2018 设备管理员:shebei 888888 --展厅 管理员用户名:13800000000 密码:TecheFwd2018 ``` # 安装文件 ``` dd-dist_v...:各个版本的程序源代码 dd-env: 运行环境 dd-tools:其它工具,比如局域网内查找IP ``` # 版本 ``` --v1.1.5.3和nuode_stable:利群诺德使用稳定的版本,以nuode_stable为准。使用的是.NET Core 2.0 --v1.1.5.3,在诺德的基础上加了时序数据库以及和上传数据给云端,但没有严格测试过。使用的是.NET Core 2.0 --v1.0.0.0,使用的是.NET Core 3.0和云端关系数据库和时序数据库连接 ``` # 给开关编地址 - 手机直联:手机直联模块,密码88888888 - 添加模块:手机APP添加电线,密码admin - 组装:把电源、模块、开关组装好,所有保持分断状态 - 进入设置状态:在手机APP设置线路里让所有开关进入设置状态,设置状态的标志是开关橙色指示灯闪烁 - 从左到右依次按下开关上的橙色按钮 - 结束设置状态:在手机APP按结束设置按钮 - 手动编写地址: 按12秒进入设置状态,按几下就是地址编号,再按12秒退出设置状态 # 修改模块指向 - 如果指向云端,先连接本地局域网,在APP内设置 - 进入模块管理后台设置指向:192.168.0.131:82 root abc123 mandun_url 192.168.0.252:8080/ebx-biship/data/carry # .NET Core运行时环境 # MySQL - 安装:NT-mysql-Install.bat, 在服务中多出MySql服务 - 配置:my.ini, bind-address=0.0.0.0 port=3306 skip_grant_tables - 启动:NT-mysql-start.bat, 在进程中多了mysqld.exe - 安装客户端:Navicat - 连接MySQL: 主机名或IP地址:localhost;端口:3306;用户名:root;密码:lcDb_!@34%^_Mantunsci # Redis - 安装:NT-redis-Install.bat - 启动:NT-redis-Start.bat - 安装客户端:RedisDesktopManager - 连接Redis: 地址:127.0.0.1;端口:6321;验证:_ebx_cnto_r_srv;安全:无 # teche数据库 ``` 数据库名:teche 字符集:utf8mb4--UTF-8 Unicode 排序规则:utf8mbs_general_ci ``` # techeusr数据库 ``` 数据库名:techeusr 字符集:utf8mb4--UTF-8 Unicode 排序规则:utf8mbs_general_ci ``` # quartznet数据库 ``` 数据库名:quartznet 字符集:utf8mb4--UTF-8 Unicode 排序规则:utf8mbs_general_ci # By: Ron Cordell - roncordell # I didn't see this anywhere, so I thought I'd post it here. This is the script from Quartz to create the tables in a MySQL database, modified to use INNODB instead of MYISAM. # make sure you have UTF-8 collaction for best .NET interoperability # CREATE DATABASE quartznet CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; DROP TABLE IF EXISTS QRTZ_LOCKS; DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; DROP TABLE IF EXISTS QRTZ_TRIGGERS; DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; DROP TABLE IF EXISTS QRTZ_CALENDARS; CREATE TABLE QRTZ_JOB_DETAILS( SCHED_NAME VARCHAR(60) NOT NULL, JOB_NAME VARCHAR(60) NOT NULL, JOB_GROUP VARCHAR(60) NOT NULL, DESCRIPTION VARCHAR(250) NULL, JOB_CLASS_NAME VARCHAR(250) NOT NULL, IS_DURABLE BOOLEAN NOT NULL, IS_NONCONCURRENT BOOLEAN NOT NULL, IS_UPDATE_DATA BOOLEAN NOT NULL, REQUESTS_RECOVERY BOOLEAN NOT NULL, JOB_DATA BLOB NULL, PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)) ENGINE=InnoDB; CREATE TABLE QRTZ_TRIGGERS ( SCHED_NAME VARCHAR(60) NOT NULL, TRIGGER_NAME VARCHAR(60) NOT NULL, TRIGGER_GROUP VARCHAR(60) NOT NULL, JOB_NAME VARCHAR(60) NOT NULL, JOB_GROUP VARCHAR(60) NOT NULL, DESCRIPTION VARCHAR(250) NULL, NEXT_FIRE_TIME BIGINT(19) NULL, PREV_FIRE_TIME BIGINT(19) NULL, PRIORITY INTEGER NULL, TRIGGER_STATE VARCHAR(16) NOT NULL, TRIGGER_TYPE VARCHAR(8) NOT NULL, START_TIME BIGINT(19) NOT NULL, END_TIME BIGINT(19) NULL, CALENDAR_NAME VARCHAR(60) NULL, MISFIRE_INSTR SMALLINT(2) NULL, JOB_DATA BLOB NULL, PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)) ENGINE=InnoDB; CREATE TABLE QRTZ_SIMPLE_TRIGGERS ( SCHED_NAME VARCHAR(60) NOT NULL, TRIGGER_NAME VARCHAR(60) NOT NULL, TRIGGER_GROUP VARCHAR(60) NOT NULL, REPEAT_COUNT BIGINT(7) NOT NULL, REPEAT_INTERVAL BIGINT(12) NOT NULL, TIMES_TRIGGERED BIGINT(10) NOT NULL, PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) ENGINE=InnoDB; CREATE TABLE QRTZ_CRON_TRIGGERS ( SCHED_NAME VARCHAR(60) NOT NULL, TRIGGER_NAME VARCHAR(60) NOT NULL, TRIGGER_GROUP VARCHAR(60) NOT NULL, CRON_EXPRESSION VARCHAR(120) NOT NULL, TIME_ZONE_ID VARCHAR(80), PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) ENGINE=InnoDB; CREATE TABLE QRTZ_SIMPROP_TRIGGERS ( SCHED_NAME VARCHAR(60) NOT NULL, TRIGGER_NAME VARCHAR(60) NOT NULL, TRIGGER_GROUP VARCHAR(60) NOT NULL, STR_PROP_1 VARCHAR(512) NULL, STR_PROP_2 VARCHAR(512) NULL, STR_PROP_3 VARCHAR(512) NULL, INT_PROP_1 INT NULL, INT_PROP_2 INT NULL, LONG_PROP_1 BIGINT NULL, LONG_PROP_2 BIGINT NULL, DEC_PROP_1 NUMERIC(13,4) NULL, DEC_PROP_2 NUMERIC(13,4) NULL, BOOL_PROP_1 BOOLEAN NULL, BOOL_PROP_2 BOOLEAN NULL, TIME_ZONE_ID VARCHAR(80) NULL, PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) ENGINE=InnoDB; CREATE TABLE QRTZ_BLOB_TRIGGERS ( SCHED_NAME VARCHAR(60) NOT NULL, TRIGGER_NAME VARCHAR(60) NOT NULL, TRIGGER_GROUP VARCHAR(60) NOT NULL, BLOB_DATA BLOB NULL, PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP), FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) ENGINE=InnoDB; CREATE TABLE QRTZ_CALENDARS ( SCHED_NAME VARCHAR(60) NOT NULL, CALENDAR_NAME VARCHAR(60) NOT NULL, CALENDAR BLOB NOT NULL, PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)) ENGINE=InnoDB; CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS ( SCHED_NAME VARCHAR(60) NOT NULL, TRIGGER_GROUP VARCHAR(60) NOT NULL, PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)) ENGINE=InnoDB; CREATE TABLE QRTZ_FIRED_TRIGGERS ( SCHED_NAME VARCHAR(60) NOT NULL, ENTRY_ID VARCHAR(140) NOT NULL, TRIGGER_NAME VARCHAR(60) NOT NULL, TRIGGER_GROUP VARCHAR(60) NOT NULL, INSTANCE_NAME VARCHAR(60) NOT NULL, FIRED_TIME BIGINT(19) NOT NULL, SCHED_TIME BIGINT(19) NOT NULL, PRIORITY INTEGER NOT NULL, STATE VARCHAR(16) NOT NULL, JOB_NAME VARCHAR(60) NULL, JOB_GROUP VARCHAR(60) NULL, IS_NONCONCURRENT BOOLEAN NULL, REQUESTS_RECOVERY BOOLEAN NULL, PRIMARY KEY (SCHED_NAME,ENTRY_ID)) ENGINE=InnoDB; CREATE TABLE QRTZ_SCHEDULER_STATE ( SCHED_NAME VARCHAR(60) NOT NULL, INSTANCE_NAME VARCHAR(60) NOT NULL, LAST_CHECKIN_TIME BIGINT(19) NOT NULL, CHECKIN_INTERVAL BIGINT(19) NOT NULL, PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)) ENGINE=InnoDB; CREATE TABLE QRTZ_LOCKS ( SCHED_NAME VARCHAR(60) NOT NULL, LOCK_NAME VARCHAR(40) NOT NULL, PRIMARY KEY (SCHED_NAME,LOCK_NAME)) ENGINE=InnoDB; CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY ON QRTZ_JOB_DETAILS(SCHED_NAME,REQUESTS_RECOVERY); CREATE INDEX IDX_QRTZ_J_GRP ON QRTZ_JOB_DETAILS(SCHED_NAME,JOB_GROUP); CREATE INDEX IDX_QRTZ_T_J ON QRTZ_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP); CREATE INDEX IDX_QRTZ_T_JG ON QRTZ_TRIGGERS(SCHED_NAME,JOB_GROUP); CREATE INDEX IDX_QRTZ_T_C ON QRTZ_TRIGGERS(SCHED_NAME,CALENDAR_NAME); CREATE INDEX IDX_QRTZ_T_G ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP); CREATE INDEX IDX_QRTZ_T_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE); CREATE INDEX IDX_QRTZ_T_N_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE); CREATE INDEX IDX_QRTZ_T_N_G_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE); CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME ON QRTZ_TRIGGERS(SCHED_NAME,NEXT_FIRE_TIME); CREATE INDEX IDX_QRTZ_T_NFT_ST ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME); CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME); CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE); CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE); CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME); CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY); CREATE INDEX IDX_QRTZ_FT_J_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP); CREATE INDEX IDX_QRTZ_FT_JG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_GROUP); CREATE INDEX IDX_QRTZ_FT_T_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP); CREATE INDEX IDX_QRTZ_FT_TG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_GROUP); commit; ``` # appsettings.json # 确保一切正常 mysql, redis, teche, techeusr, quartznet, kaiguanapplication # 局域网网站跑起来 ``` dotnet.exe DD.Local.Web.dll INSERT INTO kaiguanapplication(NAME, DelFlag) VALUES('照明',0) ``` # 云端关系数据库添加项目数据库 在持久化层 - appsettings.json - GlobalSettings - DesignTimeDbContextFactoryBase - dotnet ef datbase update -c ... # 云端源代码Web层 - appsettings.json - GlobalSettings.json - Program.cs # 云端权限管理后台添加集团和项目 - 管理员登录:13800000000 DrrnFwd2018 TecheFwd2018 - 添加集团:group - 添加项目:project - 添加用户:ddaccount # 云端时序数据库 - 检查状态:systemctl status taosd - 启动服务:systemctl start taosd - 修改配置文件:cd /etc/taos/ vim taos.cfg - 客户端连接TDengine: ./taos.exe -h 47.102.145.164 - 创建数据库:create database reallq_realnuode_5_7; - 展示所有数据库:show databases; - 使用某个数据库:use reallq_realnuode_5_7; # 局域网网站启用云端 - 禁用一些背景线程,比如RealDataToCloud - 超级表 ``` - superreal - superrealtj - superwarning - superwarningtj - superdl ``` - 子表 ``` - real_187ed5314e0c; - realtj_187ed5314e0c_h; realtj_187ed5314e0c_d; realtj_187ed5314e0c_n;realtj_187ed5314e0c_y; - warning_187ed5314e0c; - warningtj_187ed5314e0c_h; warningtj_187ed5314e0c_d; warningtj_187ed5314e0c_n;warningtj_187ed5314e0c_y; - dl_187ed5314e0c ``` - 云端同步 # 清空数据库 ``` 云端: SET FOREIGN_KEY_CHECKS=0; truncate table realwarnings; truncate table warninghistories; truncate table notis; SET FOREIGN_KEY_CHECKS=1; 局域网: SET FOREIGN_KEY_CHECKS=0; truncate table kaiguanwarning; truncate table warninghistories; SET FOREIGN_KEY_CHECKS=1; ```