大疆上云API基于源码部署

文章目录

  • 大疆上云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、启动后端

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

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'livestream.url.gb28181.local-port' to java.lang.Integer:

    Property: livestream.url.gb28181.local-port
    Value: "Please enter the local port."
    Origin: class path resource [application.yml] - 166:18
    Reason: 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这里端口号冲突,要保证唯一性。
在这里插入图片描述
运行,发现还是报通用样的错误,只不过这是报另一个字段的错误了。

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'livestream.url.gb28181.server-port' to java.lang.Integer:

    Property: livestream.url.gb28181.server-port
    Value: "Please enter the server port."
    Origin: class path resource [application.yml] - 162:19
    Reason: 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登录程序这个标题开始看。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI学习路线图-邱锡鹏-神经网络与深度学习

1 需求 神经网络与深度学习 2 接口 3 示例 4 参考资料

行业案例:高德服务单元化方案和架构实践

目录 为什么要做单元化 高德单元化的特点 高德单元化实践 服务单元化架构 就近接入实现方案 路由表设计 路由计算 服务端数据驱动的单元化场景 总结 系列阅读 为什么要做单元化 单机房资源瓶颈 随着业务体量和服务用户群体的增长,单机房或同城双机房无法支持服…

【计算机网络】lab7 TCP协议

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 实验目的…

docker中jenkins流水线式部署GitLab中springboot项目

本质就是将java项目拉取下来,并自动打包成docker镜像,运行 首先启动一个docker的jenkins 如果没有镜像使用我的镜像 通过网盘分享的文件:jenkins.tar 链接: https://pan.baidu.com/s/1VJOMf6RSIQbvW_V1zFD7eQ?pwd6666 提取码: 6666 放入服…

【初识扫盲】厚尾分布

厚尾分布(Fat-tailed distribution)是一种概率分布,其尾部比正态分布更“厚”,即尾部的概率密度更大,极端值出现的概率更高。 一、厚尾分布的特征 尾部概率大 在正态分布中,极端值(如距离均值很…

小程序租赁系统

内容概要 小程序租赁系统,听起来很复杂,但其实就是为那些想要快速搭建业务的人提供一个便捷的工具。随着移动互联网的迅猛发展,越来越多的企业和创业者开始寻找效率和灵活性,而小程序正好满足了这种需求。据统计,过去…

高可用虚拟IP-keepalived

个人觉得华为云这个文档十分详细:使用虚拟IP和Keepalived搭建高可用Web集群_弹性云服务器 ECS_华为云 应用场景:虚拟IP技术。虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个…

工厂人员定位管理系统方案(二)人员精确定位系统架构设计,适用于工厂智能管理

哈喽~这里是维小帮,提供多个场所的定位管理方案,如需获取工厂人员定位管理系统解决方案可前往文章最下方获取,如有项目合作及技术交流欢迎私信我们哦~撒花 在上一篇文章中,我们初步探讨了工厂人员定位管理系统的需求背景以及定位方…

虚假星标:GitHub上的“刷星”乱象与应对之道

在开源软件的世界里,GitHub无疑是最重要的平台之一。它不仅是一个代码托管平台,也是一个社交网络,允许开发者通过“点赞”(即加星)来表达对某个项目的喜爱和支持,“星标”(Star)则成…

RK3568 Android 13 内置搜狗输入法小计

问:为什么写? 答:网上搜出来的都试过了,不行!下面直接上代码和注意事项! 首先到这个目录(/RK3568/Rockchip_Android13_SDK_Release/device/rockchip/rk356x/tl3568_evm/preinstall&#xff09…

GO语言实现KMP算法

前言 本文结合朱战立教授编著的《数据结构—使用c语言(第五版)》(以下简称为《数据结构(第五版)朱站立》)中4.4.2章节内容编写,KMP的相关概念可参考此书4.4.2章节内容。原文中代码是C语言&…

基于springboot的疫情网课管理系统

作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 项目包含: 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…

FFmpeg硬件解码

使用FFmpeg进行硬件解码时,通常需要结合FFmpeg的API和硬件加速API(如CUDA、VAAPI、DXVA2等)。以下是一个简单的C代码示例,展示如何使用FFmpeg进行硬件解码。这个示例使用了CUDA作为硬件加速的后端。 1. 安装FFmpeg和CUDA 确保你…

unity如何在urp管线下合并spine的渲染批次

对于导入unity的spine来说,他会对每个spine生成独有的材质,虽然他们使用的是同一个shader,但由于附带独有的贴图,这样在项目使用中会由于材质贴图不同而导致无法合批. 而为什么选用urp,因为在built-in管线中,对于GPU-instancing,即使通过使用图集的方式统一了贴图,也会由于spi…

【Elasticsearch】批量操作:优化性能

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探…

深入 Flutter 和 Compose 在 UI 渲染刷新时 Diff 实现对比

众所周知,不管是什么框架,在前端 UI 渲染时,都会有构造出一套相关的渲染树,并且在 UI 更新时,为了尽可能提高性能,一般都只会进行「差异化」更新,而不是对整个 UI Tree 进行刷新,所以…

Docker 的安装和基本使用[SpringBoot之Docker实战系列] - 第535篇

历史文章(文章累计530) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…

介绍下不同语言的异常处理机制

Golang 在Go语言中,有两种用于处于异常的机制,分别是error和panic; panic panic 是 Go 中处理异常情况的机制,用于表示程序遇到了无法恢复的错误,需要终止执行。 使用场景 程序出现严重的不符合预期的问题&#x…

车联网安全--TLS握手过程详解

目录 1. TLS协议概述 2. 为什么要握手 2.1 Hello 2.2 协商 2.3 同意 3.总共握了几次手? 1. TLS协议概述 车内各ECU间基于CAN的安全通讯--SecOC,想必现目前多数通信工程师们都已经搞的差不多了(不要再问FvM了);…

【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列

系列文章目录 🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀 文章目录 系列文章目录前言 🍃一、实体对象更新1.1 单条与批量1.2 不更新某列1.3 只更新某列1.4 NULL列不更新1.5 无主键/指定列…