大疆上云API基于源码部署

embedded/2025/1/16 23:30:51/

文章目录

  • 大疆上云API基于源码部署
  • 注意事项
  • 1、学习官网
  • 2、环境准备
  • 注意事项
  • 3、注册成为DJI开发者
  • 4、下载前后端运行所需要的包/依赖
    • 前端依赖
    • 下载后端所需要的Maven依赖包
  • 用到的软件可以在这里下载
  • 5、MySQL数据库安装
    • 安装MySQL
    • 启动MySQL服务
    • 在IDEA中配置MySQL的连接信息
  • 6、Redis的安装
    • 安装Redis
    • 启动Redis
    • Redis启动可能有问题的情况
    • 在IDEA中配置自己的Redis连接信息
  • 7、安装emqx
    • 安装emqx
    • 启动emqx
    • 退出emqx
    • 配置emqx允许匿名访问
    • 开启Redis授权
    • 在IDEA中配置emqx的连接信息
  • 8、后端配置大疆上云API开发相关证书
  • 9、启动后端
    • 后端启动成功能正常运行可以发现有两个主题
    • 后端启动成功后能正常运行发现没有那两个主题
  • 10、修改启动前端配置
  • 11、连接遥控器

大疆上云API基于源码部署

本篇文章,主要用于记录本人部署的过程,仅供学习使用,如果不妥之处,还望告知。其实部署过程官网也有,其实看官网(上云API (dji.com))也是能看得懂的,也挺详细的,我感觉大家看官网也没问题,能部署起来。相对与官网。我这里多了安装EMQX,Redis,MySQL的安装过程,只是我这个稍微详细了一点点而已,我把EMQX、Redis、MySQL的环境准备了一下,方便后面我直接使用而已。

注意事项

在配置ip地址的时候,一定要注意空格,千万不要在ip前多一个空格,否则就是启动了,运行的程序也没报错,然后登录就是报错,怎么样都登不上去。这个特别是SpringBoot中yml文件的缩进问题这个,我就是因为在ip前多了个空格,导致出现这个问题。无空格的192.168.1.1 和有空格的 192.168.1.1是两回事。http:// 192.168.1.1http://192.168.3.220。也是一样的道理,ip配置的时候需要注意了。

1、学习官网

上云API (dji.com),大家可以直接看这里。

2、环境准备

需要的环境,根据官方文档的说明,上云API (dji.com),这个是官方要求的环境,不一定非要跟官方要求的环境一模一样。

本人电脑的环境如下所示:

  1. Windows 10 专业版
  2. Java版本:openJDK17,我这里为jdk-17.0.7版本
  3. MySQL版本:mysql-8.0.30-winx64绿色免安装版
  4. Redis版本:windows系统下的Redis-x64-3.2.100版本
  5. EMQX版本:windows系统下的emqx-5.3.2-windows-amd64版本
  6. Node.js版本:v18.16.0,使用Node这个版本内置的npm版本v9.5.1
  7. Intellij IDEA 2024.1.1版本,不一定非要用这个版本的IDEA,没有环境的可以直接去官网下载一个社区版免费版的都行,就使用社区免费版内置的Maven版本都可以。我试过了。
  8. Maven版本:使用的是IDEA内置的Maven版本,这里为Maven3.9.6版本,不一定非的是这个版本,只要能下载依赖,其他版本都可以,建议不要使用太老的版本,例如3.5版本的Maven建议不要用了。

注意事项

注意了,本文章中,说的ip是您自己电脑的ip地址。而不是就是192.168.1.1,我这里的ip地址刚好跟官网的192.168.1.1一样而已。windows系统下,自己电脑的ip地址,可以通过Win + R ,输入cmd。回车,然后输入ipconfig查看。

3、注册成为DJI开发者

上云API (dji.com),这里有说明,如何注册成为DJI开发者的过程,这里我们需要的是注册成为开发者的相关生成的license,就可以了。因为这个后续需要用到它的,不可或缺的。

4、下载前后端运行所需要的包/依赖

从这里https://developer.dji.com/doc/cloud-api-tutorial/cn/quick-start/environment-prepare-list.html下载克隆好对应的前后端代码之后,需要下载前后端运行所需要的包/依赖。

前端依赖

假设我的源码地址从git仓库中克隆下载在这里
在这里插入图片描述
在这里插入图片描述
然后输入

npm install

这里我的npm使用的是官方的镜像地址,并没有配置类似淘宝的镜像加速地址。

在这里插入图片描述
如果发现下载的时候在这个界面卡很久,要么是网络不够快。要么是下载过程中有一些问题,然后直接按两次CTRL + C或者按一次CTRL + C然后选择Y取消下载,重新npm install一下。等待依赖下载完成。然后发现报如下错误


npm WARN cleanup Failed to remove some directories [
npm WARN cleanup   [
npm WARN cleanup     'D:\\projects\\dajiangshangyunapixuexi\\Cloud-API-Demo-Web\\node_modules\\has-ansi',
npm WARN cleanup     [Error: EPERM: operation not permitted, rmdir 'D:\projects\dajiangshangyunapixuexi\Cloud-API-Demo-Web\node_modules\has-ansi'] {
npm WARN cleanup       errno: -4048,
npm WARN cleanup       code: 'EPERM',
npm WARN cleanup       syscall: 'rmdir',
npm WARN cleanup       path: 'D:\\projects\\dajiangshangyunapixuexi\\Cloud-API-Demo-Web\\node_modules\\has-ansi'
npm WARN cleanup     }
npm WARN cleanup   ],
npm WARN cleanup   [
npm WARN cleanup     'D:\\projects\\dajiangshangyunapixuexi\\Cloud-API-Demo-Web\\node_modules\\eslint',
npm WARN cleanup     [Error: EPERM: operation not permitted, rmdir 'D:\projects\dajiangshangyunapixuexi\Cloud-API-Demo-Web\node_modules\eslint\lib\rules\utils'] {
npm WARN cleanup       errno: -4048,
npm WARN cleanup       code: 'EPERM',
npm WARN cleanup       syscall: 'rmdir',
npm WARN cleanup       path: 'D:\\projects\\dajiangshangyunapixuexi\\Cloud-API-Demo-Web\\node_modules\\eslint\\lib\\rules\\utils'
npm WARN cleanup     }
npm WARN cleanup   ]
npm WARN cleanup ]
npm ERR! code ENOTFOUND
npm ERR! syscall getaddrinfo
npm ERR! errno ENOTFOUND
npm ERR! network request to https://registry.nlark.com/has-flag/download/has-flag-3.0.0.tgz failed, reason: getaddrinfo ENOTFOUND registry.nlark.com
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\W541\AppData\Local\npm-cache\_logs\2024-09-03T04_44_36_086Z-debug-0.log

出现这个报错,大概率是版本问题,导致依赖下载无法完成,那就删除node_modules、package-lock.json、yarn.lock这三个文件,然后再npm install一下下载依赖。

在这里插入图片描述

npm install

如果发现还是卡在进度条那里,就取消本次下载,重新npm install,依赖下载完成了。

在这里插入图片描述

下载后端所需要的Maven依赖包

使用IDEA打开项目,也就是你的源码克隆下载的地方。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

当右下角下载依赖的进度条小时时,说明依赖下载成功了。

在这里插入图片描述

用到的软件可以在这里下载

通过百度网盘分享的文件:文章需要用到的软件-可分享给他人.zip
链接:https://pan.baidu.com/s/1AFex3UjuX3e02m4ZDq0R2Q
提取码:8778
–来自百度网盘超级会员V5的分享

5、MySQL数据库安装

安装MySQL

如下图所示:直接复制解压这个绿色安装版的MySQL,在解压的时候不要有中文目录。

在这里插入图片描述

如这里,我把它解压到了

在这里插入图片描述

启动MySQL服务

进入bin目录

在这里插入图片描述

在这里插入图片描述

输入

mysqld --console

启动,MySQL服务。启动成功的界面如下图所示,这里注意了,这个窗口不要关闭。要保留着。

在这里插入图片描述
验证是否启动成功,登录MySQL。通过下图的方式打开一个新的窗口。

在这里插入图片描述

在窗口中输入

mysql -uroot -proot

回车登录MySQL,就可以看到大概如下图所示的MySQL了。

在这里插入图片描述

这个窗口可以关闭,现在可以使用MySQL的连接工具进行连接了。端口号是3306,用户名是:root,密码是:root。如我这里使用Navicat连接,这个Navicat现在已经有社区版了,直接去官网下载一个社区版就行了,这里只是导入数据而已。社区版能够支持这个功能。当然,这里您也可以使用MySQL相关的语句导入,我这里使用工具方便,还能直观看到数据表的信息。这个Navicat连接数据库这个过程就省略了,这个应该都会吧!

那么,这个数据在哪里呢?找到下载的后端代码,可以直接在IDEA中看。

在这里插入图片描述

创建MySQL连接

在这里插入图片描述

在这里插入图片描述

创建数据库完成之后,导入数据库表。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

导入成功之后,就可以关闭了,然后在Navicat中F5刷新一下就可以了。

在这里插入图片描述

在IDEA中配置MySQL的连接信息

在IDEA中修改数据库的连接信息。

在这里插入图片描述

6、Redis的安装

安装Redis

在这里插入图片描述

启动Redis

在这里插入图片描述

出现如下窗口,说明启动成功了。注意这个窗口不能关闭,要保留着。

在这里插入图片描述

Redis启动可能有问题的情况

如果Redis正常启动了,可以直接忽略这一步!!!
如果Redis正常启动了,可以直接忽略这一步!!!
如果Redis正常启动了,可以直接忽略这一步!!!

这里有一个需要注意的事项,就是如果EMQX先启动了,并且开启了Redis授权,具体看标题7安装EMQX。那么启动Redis会失败。这因为EMQX启动之后,是可以关闭命令窗口的的,然后有忘记停止EMQX时,在没有关机的情况下,下次进行代码运行的时候,EMQX有没有关闭,就会造成Redis怎么都启动不了,因为开启了Redis授权。至于怎么关闭EMQX,具体看标题7安装EMQX。关闭之后再启动。如果这样还是启动不了,那就是Redis的端口号被占用了,可以检查一下Redis的端口号是否被占用了,在Windows中,你可以使用netstat和taskkill命令来查找并杀死占用特定端口的进程。

按住键盘的Win + R建,然后输入cmd,打开命令提示符。
在这里插入图片描述
或者通过鼠标点击win图标,直接搜索cmd。这里怎么打开命令窗口不重要,只要能打开命令窗口就行了。
在这里插入图片描述

使用netstat命令查找特定端口的进程ID(PID):

netstat -ano | findstr :你的端口号

这将列出所有与指定端口相关的连接,包括PID。

使用taskkill命令杀死相应的进程:

taskkill /F /PID 该进程的PID

这里的/F参数用于强制杀死进程,/PID后跟进程的PID。

下面是一个实际的例子,假设我们要杀死占用端口8080的进程:

netstat -ano | findstr :6379

在这里插入图片描述

假设输出显示PID为4980。

taskkill /F /PID 4980

这样就会强制杀死占用端口4980的进程。
在这里插入图片描述
如果是先启动了EMQX时查询Redis端口号

这里还有需要注意的是,如果通过这种方式停止Redis。即使你启动了EMQX,也会查出EMQX的进程,然后通过同样的方式结束EMQX的进程,所以就可以按照后面的步骤一步一步走下去了。

在这里插入图片描述

在IDEA中配置自己的Redis连接信息

注意上面的窗口不能关闭,在IDEA中配置自己的Redis连接信息。

在这里插入图片描述

7、安装emqx

安装emqx

在这里插入图片描述

启动emqx

在这里插入图片描述

在这里插入图片描述

打开命令窗口,然后输入

emqx start

在这里插入图片描述

退出emqx

这个窗口关闭它都可以,因为emqx start这个命令,运行之后,会以程序的方式运行,可以在任务管理器中找到它。可以直接在任务管理器这里右键结束程序退出emqx。或者使用命令emqx stop。退出程序。
在这里插入图片描述
注意了,是启动成功之后!启动成功之后!启动成功之后!并没有执行退出命令或者在任务管理器中结束了它。然后,浏览器访问:http://localhost:18083/,会出现一个登录页面,用于登录emqx的。用户名是:admin,密码是:public。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

配置emqx允许匿名访问

这里为什么要配置这个,是因为尽量较少改动源代码,能够让上云API成功运行起来。在emqx4.4+的版本中,是不需要这一步配置的,因为在这个emqx4.4.0+这个大版本中,默认就设置了允许匿名访问了。但是在emqx5.1+以后的版本中,这个可以通过界面设置,将emqx改成允许匿名访问。一般默认就是允许匿名访问的。所以也不用改啥,看这里只是为了保证是否已经是匿名访问了而已。
在这里插入图片描述

开启Redis授权

由于大疆上云API的1.10.0版本,这里添加了Redis相关的授权。所以这里建议开启。Redis相关的授权。其实这里我刚开始没有开启这个授权的,然后也能正常连接无人机。(如下图所示)只不过主题和订阅数是十几个,然后我开启了Redis授权之后,正常连接无人机就有二十几个主题和订阅数了。但是好像也不影响使用,具体还需后续测试。这里刚开始的时候建议开启Redis授权!!!
在这里插入图片描述
那么如何开启Redis授权呢?请看下面的截图说明。
在这里插入图片描述
启用Redis授权的情况下,需要保证Redis服务是启动着的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建成功之后,可以发现多了一个Redis授权。

在IDEA中配置emqx的连接信息

在这里插入图片描述

8、后端配置大疆上云API开发相关证书

根据官方文档,这里配不配置,都是可以的。建议还是配置一下吧。这里只是我这里示例的ID,具体的要换成你们自己申请的ID。

在这里插入图片描述

9、启动后端

在这里插入图片描述
启动之后发现报如下所示的错误

java">***************************
APPLICATION FAILED TO START
***************************Description:Failed to bind properties under 'livestream.url.gb28181.local-port' to java.lang.Integer:Property: livestream.url.gb28181.local-portValue: "Please enter the local port."Origin: class path resource [application.yml] - 166:18Reason: failed to convert java.lang.String to @javax.validation.constraints.NotNull java.lang.Integer (caused by java.lang.NumberFormatException: For input string: "Pleaseenterthelocalport.")Action:Update your application's configuration

从,报错信息可以看出,某个字段不是整数的形式,所以才导致报错的。解决办法如下所示,要么改成整数的形式,要么直接注释掉它们。

在这里插入图片描述
在这里插入图片描述
如我这里改成了整数之后,这个整数不能跟上面MySQL、Redis、mqtt这里端口号冲突,要保证唯一性。
在这里插入图片描述
运行,发现还是报通用样的错误,只不过这是报另一个字段的错误了。

java">***************************
APPLICATION FAILED TO START
***************************Description:Failed to bind properties under 'livestream.url.gb28181.server-port' to java.lang.Integer:Property: livestream.url.gb28181.server-portValue: "Please enter the server port."Origin: class path resource [application.yml] - 162:19Reason: failed to convert java.lang.String to @javax.validation.constraints.NotNull java.lang.Integer (caused by java.lang.NumberFormatException: For input string: "Pleaseentertheserverport.")Action:Update your application's configuration

在这里插入图片描述
如我这里改成了整数之后,这个整数不能跟上面MySQL、Redis、mqtt这里端口号冲突,要保证唯一性。运行就成功了,啥报错都没有。

在这里插入图片描述

后端启动成功能正常运行可以发现有两个主题

然后访问emqx的页面:http://localhost:18083/,可以发现。有两个主题了。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

后端启动成功后能正常运行发现没有那两个主题

如果有上面描述的那两个主题,可以直接忽略这一步!!!
如果有上面描述的那两个主题,可以直接忽略这一步!!!
如果有上面描述的那两个主题,可以直接忽略这一步!!!

这里会遇到一个问题,如果后端配置的mqtt的ip地址不正确、mqtt没有启动或者mqtt没有开启匿名访问配置的用户名和密码不对的情况下,后端也是保持这运行状态的,也就是说后端并没有直接结束运行,还是保持着运行状态,这时就有可能是,后端已经运行起来了,但是EMQX的页面,就是没有上面说的那两个主题,说明后端与mqtt的连接失败了!!!

在这里插入图片描述

10、修改启动前端配置

我这里使用了Vscode打开它
在这里插入图片描述
修改保存好之后,运行

npm run serve

在这里插入图片描述

运行成功之后,访问:http://localhost:8080/project。
在这里插入图片描述
点击登录,成功进入界面之后,说明登录成功了。

在这里插入图片描述
到此,基于源码的本地部署已经完成了,接下来就是连接遥控器了。

11、连接遥控器

从这官方文档https://developer.dji.com/doc/cloud-api-tutorial/cn/quick-start/source-code-deployment-steps.html 的Pilot 2登录程序这个标题开始看。


http://www.ppmy.cn/embedded/154504.html

相关文章

数据结构9——二叉搜索树

🥇1.二叉搜索树的概念 二叉搜索树(Binary Search Tree,BST)又称二叉排序树或二叉查找树,其要么是一棵空树,要么具有以下性质: ①:左子树上所有节点的值都小于根节点; ②:右子树上所有节点的值都…

【Linux 之一 】Linux常用命令汇总

Linux常用命令 ./catcd 命令chmodclearcphistoryhtoplnmkdirmvpwdrmtailunamewcwhoami 我从2021年4月份开始才开始真正意义上接触Linux,最初学习时是一脸蒙圈,啥也不会,啥也不懂,做了很多乱七八糟,没有条理的笔记。不知…

计算机网络八股文学习笔记

总结来自于javaguide,本文章仅供个人学习复习 javaguide计算机网络八股 文章目录 计算机网络基础网络分层模型OSI七层模型TCP/IP四层模型 HTTP从输入URL到页面展示到底发生了什么?(非常重要)HTTP状态码HTTP Header中常见的字段有哪些?HTTP和HTTPS有什么区别?(重要)HTTP/1.0和…

Node.js、Vue 和 React 的关系和区别

Node.js、Vue 和 React 是前端和后端开发中常用的技术,它们各自有不同的作用,但可以协同工作来构建现代化的 Web 应用。为了通俗易懂地理解它们的关系,我们可以用一个餐厅的比喻来说明。 1. Node.js:厨房的后台 Node.js 是一个基…

【kubernetes】K8S节点状态的维护

1 节点状态 节点是K8S集群中的一类重要资源,节点的状态通常可以作为判断集群异常的重要手段。 为了展示节点在各方面的健康程度,在kubectl describe node k8s-master的输出结果中的Conditions部分可以查看k8s-master节点的一些状态数据: N…

设计一个流程来生成测试模型安全性的问题以及验证模型是否安全

要使用 Ollama 运行 llama3.3:70b 模型,并设计一个流程来生成测试模型安全性的问题以及验证模型是否安全,可以按照以下步骤进行设计和实现。整个过程包括环境配置、设计安全测试提示词、执行测试以及分析结果。以下是详细的步骤和指导: 1. 环…

uni-app h5修改浏览器导航栏的 title以及icon

1.title 在pages.json文件中修改:"navigationBarTitleText":"uni-app" 2.icon的修改 2.1 在static中新建一个index.html文件作为模板文件,并且将你的icon图片也放在static文件夹下 2.2 在index.html文件中加入如下代码(记得icon文件…

linux解压命令(可整理到CSDN)

1. tar -xvf ffmpeg-7.0.2.tar.xz x:表示解压文件。 v:表示在解压过程中显示文件(verbose模式)。这个选项是可选的,加上它可以让你看到正在解压的文件列表,但如果不加也不会影响解压过程。 f:…