当前位置:首页 » 云服务器 » 树莓派4b搭建mqtt服务器

树莓派4b搭建mqtt服务器

发布时间: 2023-02-05 14:43:13

❶ 黑群晖怎样搭建MQTT服务器

1、打开群晖Docker,注册表搜索:mqtt;
2、点击下载好的镜像文件创建容器,输入容器名字,点击高级设置
3、勾选启用自动重新启动
4、点击网络—-勾选与docker host相同的网络,点击应用,一直下一步直到创建完成

❷ 使用 Node-RED 处理 MQTT 数据

本文将介绍使用 Node-RED 连接到 MQTT 服务器,并对 MQTT 数据进行过滤和处理后再将其发送至 MQTT 服务器的完整操作流程。读者可以快速了解如何使用 Node-RED 对 MQTT 数据进行简单的流处理。

Node-RED 无论是在你本地的电脑上,还是树莓派等设备,亦或是云端服务器,都可以快速安装和使用,下面将使用两种比较常见的安装方式:

使用 npm 进行全局安装:

使用 Docker 进行安装:

如果使用的是 npm 进行的全局安装,那么在提示安装成功后,只需要在全局运行 node-red 命令就可以立即启动 Node-RED。

无论是使用 Docker 还是 npm 在启动成功后,我们只需要打开浏览器,输入当前地址加 1880 端口号,即可打开 Node-RED 的浏览器编辑器页面,例如在本地运行的话,打开浏览器,输入 http://127.0.0.1:1880,当看到如下图所示页面后,说明 Node-RED 已经成功启动:

本文将使用 EMQ 提供的 免费公共 MQTT 服务器,该服务基于 MQTT 物联网云平台 - EMQX Cloud 创建,服务器接入信息如下:

在下面的功能演示中,我们将提供一个使用 Node-RED 来处理接收到的包含温湿度信息的 JSON 数据,然后对温度值进行规则判断,当温度发生改变的时候,就将当前发生改变的温度值通过 MQTT 再次发送出去的简单使用案例。

我们首先在左侧菜单栏中,拖拽一个 MQTT in 的节点到页面中,双击节点后,右侧出现一个编辑 MQTT 节点的配置页面,我们根据内容提示,新建一个连接信息后,再填入 MQTT 的其它连接信息后,点击 Done 按钮后,即可保存该节点信息。

接入数据:我们拖拽一个 JSON 节点到页面中,可以在 JSON 节点的配置页面中,配置一个 Action,我们设置为 Always convert to JavasScript Object ,因为我们无法确定发送过来的数据是一个 JSON 格式的数据还是一个 JSON 字符串,因此第一步都将接收到的消息进行一个 JSON 转换。配置完成后,我们将该节点与 MQTT in 节点进行连接。

过滤数据

我们配置完成格式化发送过来的消息数据后,我们就可以拖拽一个 filter 节点到页面中,同样双击节点后,在配置页面中配置规则,我们先选择一个 Mode,我们设置为 blcok unless value changes ,过滤规则为需要当前接收到数据的值发生改变,因为目前数据为 JSON 格式,我们判断的是 JSON 数据内的某一个值,因此我们需要在 Property 这里设置值为 msg.payload.temperature 配置完成后我们点击 Done 按钮来保存数据过滤节点的配置,最后将该节点连接到上一步配置完成后的 JSON 节点。

使用模版

当过滤完数据后,同样拖拽一个 template 节点到页面中,双击节点后来配置模版内容,使过滤完成后的数据,能通过模版将数据进行输出。当然也可以不需要这个步骤,直接将过滤后的数据进行输出。

完成以上对数据的处理和过滤后,最后我们再来将处理完成后的数据使用 MQTT 将其发送出去,拖拽一个 MQTT out 的节点到页面中,填入和 MQTT in 节点相同的连接信息,配置一个用户接收数据的 Topic,最后保存完成后,再将其和 template 节点进行连接,点击右上角的 Deploy 按钮,即可对当前规则应用进行在线部署。

在完成整个流数据处理的功能编排以后,我们使用 MQTT 5.0 客户端工具 - MQTT X 来测试和验证该功能的可用性。我们新建一个连接,连接到刚才在 Node-RED 中配置的 MQTT 云服务地址,然后输入 MQTT in 节点内的 Topic 来发送一条消息,使 Node-RED 能够接收到我们发送的 MQTT 数据。

然后我们再在 MQTT X 中订阅一个在 MQTT out 节点内配置的 Topic,用于接收处理过的消息数据。当发送一条包含了温湿度的消息数据后,我们可以接收到一条根据我们设定的消息模版发送过来的消息,再次发送就无法接收到。

因为此时温度值没有发生变化,当我们再次修改温度值后,就会发现我们又接收到了一条包含提醒温度值发生变化的消息。

至此,我们完成了安装并使用 Node-RED 连接到 MQTT 云服务,以及对 MQTT 消息数据进行过滤和处理,最后再将处理完成后的数据消息发送至 MQTT 服务器的全部流程。

Node-RED 的交互和使用方式,即用 UI 方式描述通用业务逻辑,可以降低非专业开发人员的上手门槛,使用一个可视化工具快速地创建需要的复杂执行任务,可以通过简单 Node 即节点连接构建出复杂的任务,特别是针对一些物联网的应用场景,都很有帮助。

❸ 《树莓派4B家庭服务器搭建指南》第七期:使用树莓派解锁网易云灰色音乐

网易云横跨Window, macOS,linux ,安卓, iOS平台,而且提供了免费的音乐云盘存储各种无版权歌曲,本文提供一种通过树莓派解锁网易云灰色歌曲,并将歌曲存储到网易云网盘,实现全平台听各种灰色无版权歌曲的方法;本文也提供了,将解锁服务通过内网穿透发布到了互联网上的方法,你也可以将解锁服务分享给自己的小伙伴。

在某宝上,这套解锁服务还能当商品来卖,一本万利。

如果测试没有问题,可以Ctrl + C组合键关闭服务,然后使用 sudo docker-compose up -d 后台启用服务

我们可以将树莓派8686端口的服务,映射到云端服务器

如果对frpc配置有疑问,请查看往期 《树莓派4B家庭服务器搭建指南》刷Ubuntu Server 20.04,绑定公网域名,对公网提供http服务,SSH登录服务 https://www.v2fy.com/p/2021-10-01-pi-server-1633066843000/

由于我们前几期已经将frp.v2fy.com绑定到云服务器
这里可以直接通过 http://frp.v2fy.com:8686 访问树莓派的网易云解锁服务

云盘有免费60GB的空间,对于普通人而言,只要不大量传无损音乐,完全够用了

另外, 最近网易云PC版更新了全屏纯享功能

大屏唱片机风格的UI,非常震撼!

本文已经完成了公网的解锁服务,Windows版是最容易配置解锁的,如果你想在iOS, 安卓等移动平台解锁,理论上也是可行的,但配置操作起来比较繁琐,感兴趣的可以参考 https://github.com/nondanee/UnblockNeteaseMusic/issues/22

❹ 树莓派搭建文件服务器

https://www.raspberrypi.org/downloads/raspberry-pi-os/

安装 Etcher 之后启动 Etcher,插入 SD 卡、选择要安装的 img 文件、选择 SD 卡对应的磁盘分区
https://www.balena.io/etcher/

① 新建一个ssh空白文件,放到root目录下,树莓派开机会自动启用
② 网络优先选择有线网络
③ 无线网络
将刷好 Raspbian 系统的 SD 卡用电脑读取。在 boot 分区,也就是树莓派的 /boot 目录下新建

具体详情看下面
https://shumeipai.nxez.com/2017/09/13/raspberry-pi-network-configuration-before-boot.html

方法1:利用路由器软件查看IP地址

方法2:

ssh连接默认用户名:pi 密码:raspberry

方法3:IP Scanner

1.切换 root权限 sudo su
2.编辑下列文件

连接raw.githubusercontent.com失败
step1 :
在 https://site.ip138.com/raw.Githubusercontent.com/
输入raw.githubusercontent.com查询IP地址
step2 :
sudo nano /etc/hosts
你查到的ip地址,香港的就行 raw.githubusercontent.com
比如:
151.101.76.133 raw.githubusercontent.com

OpenMediaVault项目地址:
https://github.com/OpenMediaVault-Plugin-Developers/installScript

执行安装脚本

step1:
输入树莓派的IP地址
初始用户名:admin
密码:openmediavault
step2:
1.连接硬盘
2.文件系统—>卸载硬盘
3.磁盘—>擦除
4.文件系统—>新建 文件系统选择EXT4
5.挂载—>应用
6.共享文件夹—>新建一个文件夹 设置权限
7.SMB/CIFS —>启用
8.共享—>添加共享

mac登陆
前往:连接服务器 smb://树莓派的ip地址
windows
我的电脑—>右键—>映射网络驱动器—>找到共享的文件夹

❺ 树莓派利用ftp搭建文件服务器教程

在局域网内共享文件除了可以使用SAMBA外还有FTP服务器

这里我们选用的FTP服务器是VSFTP

vsftpd是一个基于GPL发布的类UNIX操作系统上使用的FTP服务器软件,它的全称是“very secure FTP ”,从名称可以看出来高安全性是它的特点,除了安全性它的高速性与稳定性也是它的重要特点。

把配置文件修改成如下图(最简单配置)

修改后保存并退出(ctrl x)

更多详细配置

新建会话

名称自己起名字
主机处填写树莓派IP
端口号21
用户名为树莓派用户名默认为pi
密码为树莓派登录密码默认为raspberry
确定后就成功了

❻ 树莓派4B+ Centos7 部署k3s集群工具

kubernetes用于大型集群管理,而k3s属于kubernetes的一个轻量级版本,常用于嵌入式设备使用。现把它安装到树莓派上使用。

这里用到树莓派的系统是:CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-4-2009-sda.raw,型号是4B+,8g内存。
树莓派初次启动需要扩容,并且做一些基本调整:

cgroup是linux用来对进程分配cpu、内存资源的工具,需要在启动系统时开启他,k3s会用到。
在/boot/cmdline.txt后加入这个,然后reboot

k3s是一个轻量级的k8s,适用于树莓派这种嵌入式设备。

这个脚本跑完的时候,会把k3s添加到systemd里面,可以通过systemctl status k3s来查看运作状态。启动成功就可以使用啦

官方参考: https://rancher.com/docs/k3s/latest/en/installation/ha-embedded/

等它重启个好几次之后,基本就成功了。

如果一直失败,可以输入命令刷一下iptable缓冲
iptables --flush
iptables -tnat --flush

等第二个结点加入后,在任意结点执行命令,都能查看到已有的2个Server(Master)结点了

当Server结点数大于等于3个且为奇数时,集群才可以实现高可用。
大于等于3是因为k3s使用了Raft算法来实现一致性,而Raft算法的容崩率为1/3,也就是只要集群中有2/3台机器正常运作,集群就能正常运作,所以3台机器是最低要求;要奇数个结点是因为Raft算法过程中有一个很重要的随机投票选Leader的流程,结点们通过定期投票选举出一个Leader角色,然后其他结点在它的任期内就向他同步数据,这个时候如果结点数是偶数,那么容易出现平票问题,选不出leader,并且,崩溃后集群进行数据恢复过程中,实现一致的方法是多数服从少数,如果是偶数Master结点,且刚好被分割成2个结点规模一样的集团,就没办法恢复数据了[裂开],所以需要奇数个结点以避免权力平分问题。
以上为个人理解。

有兴趣的同学可以一起探讨这类共识算法,与此类似的还有联盟链的PBFT类算法,比特币PoW算法等等。

因为集群并非开放式集群,加入集群需要获取一个token作为校验。这个token可以从Master服务器上获取。(手动加入的话,仅需要使用相同的K3S_TOKEN参数启动即可。)

这样,结点就正常连接上啦:

关闭k3s进程后,后台还留存一些服务占用着端口,需要用官方脚本关闭他们

可以flush一下iptables,等他自己重启就行了。

有可能发生了一些冲突,可以试下重装k3s-agent

目前系统已经伴随k3s安装的一些软件:
crictl :类似与docker的命令行工具,比如:

k3s :封装了kubeneters基本工具在里面的集成,如使用kubectl:

这里示范部署一个最简单的web应用

--net host 代表与本机享受同一个网络命名空间

这里可以在docker容器内开启ssh服务: https://blog.csdn.net/Leo_csdn_/article/details/96150534

做好docker镜像后,就可以部署到集群上了。

等一会儿就能在pods列表里面看到了:

但这时候,这个pod并没有对外开放,只能在集群内部相互访问,通过get services命令查看集群的服务,发现并没有我们的hello-node服务。

expose命令其实是创建了一个service,用于给这个pod提供访问入口。
(如果使用--type=LoadBalancer,则代表一个deployment上管理的所有POD进行均衡负载,但这里还没用上deployment,第四章节会使用到)
等一会儿,pod上就有一个结点IP的对外端口,供外部访问了。

运行结束后,刚启动过的pod和service就不见了,服务也停止了。

docker容器,其实就是一个运行的轻量级系统,里面可以跑我们的业务应用。
而POD则是代表容器的集合,一个POD可以运行多个容器,一台机器上可以运行多个POD。
POD未必是一个对外开放的服务,他可能只是内部计算的程序,默认只能集群内部通信,所以还有Service的概念,用于让POD对外开放端口,供外部访问。这里的service本质上是个集群内部的负载均衡器,用来给同一个Deployment分流;对应的还有Ingress,外部负载均衡器,用于给多个Deployment分流。
而Deployment顾名思义,就是一次部署的抽象实例,比如说,现在需要部署一个3台机器均衡负载的nodejs业务应用,那么这个部署任务则代表一个deployment实例。

很快,我们可以看到POD和deployment的部署情况,都已经正常运作。

进入容器后可以使用基本linux命令,也可见8080端口已经被我们的node应用占用了。

但是此时service还没有他们,也就是正处于无法提供外部服务的状态。

这里对一个deployment里面的3个pod启动了个默认均衡负载服务,暴露出来的一个端口是30057,访问可通。
也能够通过logs命令查看控制台输出的日志。

因为deployment实例中包含了pod的部署配置,所以删除deployment时,k3s就会直接把pod也删除掉。
但service并不在deployment部署的范围内,所以需要同步删除它,在删除命令中通过","与deployment分割开来即可。
至此已经把刚起来的服务全部关闭掉了。

这里我们看到3个Server(Master)结点由于需要维护集群高可用,对CPU持续20%左右的消耗,内存也需要一个G左右。而Agent(Wroker)结点只需要执行部署任务,所以对内存与CPU的需求都相对低一些,仅维持在10%左右的CPU和半个G左右的内存消耗。

参考: https://zhuanlan.hu.com/p/120171512
参考: http://kubernetes.kansea.com/docs/hellonode/

❼ 使用树莓派打造一个私人NAS+博客(1)——网络篇

title: 树莓派NAS_网络篇
date: 2021-01-26 10:35:00
tags:
- 树莓派
- NAS
- 网络
blog_home: http://www.smcbaq.top:8081/

我的计划是使用树莓派搭建一个 个人博客+NAS 的组合,一开始使用的是 树莓派3b+ ,已经做到了搭建基于 hexo 的个人博客,但是之前因为条件原因在电源,接线等问题上做出了各种妥协,最后导致有一定的问题,这次我重新使用 树莓派4b 部署一次,并且记录下这次的搭建过程留个记录,如果有人发现了这个系列文章,有兴趣可以试试,毕竟我也不知道这个可能能有多少人看。

在这个系列文章中,有的步骤可能按照别人的文章博客可以直接完成没有什么坑点,我就不再赘述了,直接使用链接,重点是中间可能涉及的坑点。

电脑一台、路由器一台(我使用安装了改版梅林的网件R6300U)、树莓派一个(带电源,我使用4b)、网线一根(可选,我使用支持千兆的超五类线)

家庭组网重点是把路由器搞好就成了,我们这一步的目标就是让树莓派可以内网访问,我家网络是如下结构:

很简单的结构,简单来讲就是主路由管客厅,从路由管房间,由于主路由性能更加优良树莓派计划接到主路由上,而我大部分时间是在房间里面连接从路由的WiFi,所以需要注意主从路由不能打开 AP隔离 ,不然电脑不能访问到路由,其他的默认就行了,路由器尤其是主路由推荐使用 dhcp模式 ,要想验证很简单,手机连接主路由,电脑连接从路由,电脑手机能互相ping通即可,安卓手机ping电脑使用APP: termux 。

树莓派安装好系统打开ssh连接即可,我使用的是 Raspberry Pi OS(Raspbian) 的desktop版,没有安装推荐软件的版本,具体开启方式是在boot盘符下添加一个名为 ssh 的文件即可,不要任何后缀。

安装树莓派系统可以学习这个 教程

然后将树莓派接好电源,插好网线连接到主路由的 LAN口 ,等待一段时间,在路由器管理界面找到树莓派分配到的 IP (设备名通常为 pi 或者 raspberrypi ),电脑ssh连接树莓派成功即可,树莓派初始用户名为 pi ,默认密码为 raspberry ,记得使用 passwd 和 sudo passwd root 来分别修改 pi 用户和 root 用户的密码。

如果没有网线,则先提前给树莓派 设置好WLAN连接 ,然后找IP连ssh都一样了,但是不建议这样做,具体原因后面的文章中 软件篇 会提到,当然如果到时候看了则另说。

公网访问其实并不是一个硬需求,可以通过 frp 来做内网穿透,但是这就需要一个额外的服务器,这就有点有违初心了,毕竟我本来搞这个的目的之一就是为了多出一个服务器嘛。

公网访问重点就是要有公网IP,有的运营商会直接给一个公网IP,比如我在学校的电信寝室宽带,但是绝大多数都不会给,所以需要提前判断一下,主要有两个方法:

如果没有公网IP,那么打自己家宽带提供商的电话叫客服开通一下,一般来说都是包含在了宽带服务中的,如果问起来你要干什么用可以说自己家里要弄监控需要公网IP随时查看,一般很快就开通了,免去扯皮的功夫。

虽然说拿到了公网IP但是一般来说运营商提供的都是动态IP,之后外网访问的时候会比较麻烦(路由器一般会提供远程查看软件,可以看到IP,但是经常都得换IP访问这根本方便嘛),所以我们需要使用动态域名解析——DDNS,这样就可以使用域名直接访问了

首先是梅林自带的华硕家的免费DDNS,由于我的网件刷魔改梅林的版本有BUG,DDNS经常会自己断掉,就得手动操作路由器打开,由于过于频繁大概2-3天一次所以我最后选择放弃,但是实测华硕AC68U的官方梅林不会出现这个BUG。

最后我的选择是阿里云的DDNS,魔改梅林的优势在这里就体现出来了,可以直接安装插件,设置好以下 标记 内容即可。

购买域名有一系列的实名制操作,如果已经有这个需求了请耐心完成

最后我购买的是一个比较便宜的域名,个人博客正在使用的就是这个域名 http://www.smcbaq.top:8081

这个很好理解,因为内网的设备不能直接访问,所以我们需要设置路由器做一个端口转发来映射设备,梅林固件在以下 标记 中设置通信端口和本地端口即可

通信端口是外网设备连接时访问的端口,本地端口是本地设备(这里是树莓派)开启的服务占用的端口,前者随便设,后者需要注意配置,例如:

我希望访问8081端口来访问我的博客,那么通信端口设置8081,这个博客服务运行在树莓派的8080端口上,那么本地端口设置为8080,本地IP是树莓派的IP,通信协议使用TCP。

添加后保存即可。

ps:这里面的操作我完成得比较早,教程是写文临时找的,可能在你的电脑上有点坑,记得仔细操作不要看见命令盲目 ctrl+c/v 。

如果从路由功能比较齐全,可以打开 AP模式 的话,则可以使用两个同名WiFi在家里无缝切换相当方便。

可以给树莓派设置一个固定分配的内网IP地址,虽然一般不会变动但是一旦变动了会比较麻烦。

ssh连接可以将电脑的公钥交给树莓派实现 免密ssh登录 ,具体教程 在这里 , windows生成公钥 教程是 这个 。

电脑可以使用vs-code安装Remote-SSH插件来方便文件操作,具体使用自行查找,挺简单的。

❽ 树莓派服务器集群架设

实际上每个派都要装系统,但是装的不是完整系统而是核心,和必要软件,某个pi要被设置为中心机,上面带完整系统和 相关软件安装文件。
理想情况是,一个pi接入网络,中心机配置后就在该pi上部署相关软件,然后接入集群开始工作。但是要想完成这个集群需要做很多工作,比如部署,接入,运行,监控,分离,分类(存储类型pi,业务派)。

❾ 在云服务器上搭建了mqtt,为什么手机连接不上mqtt,要怎么做才能连接上求求大神帮忙

MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如阿里云,网络云,华为云等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。
MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。
第一步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用虚拟机安装。如果仅仅是自己测试使用都可以。
第二步:下载mosquitto需要的依赖
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake

第三步:下载mosquitto并解压,现在mosquitto官网最新的版本是1.5.1
tar xzvf mosquitto-1.5.1.tar.gz
第四步:编译
cd mosquitto-1.5.1/
make
make install
第五步:启动mosquitto
./mosquitto -v
1535473957: mosquitto version 1.5.1 starting
1535473957: Using default config.
1535473957: Opening ipv4 listen socket on port 1883.
1535473957: Opening ipv6 listen socket on port 1883.
这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquitto.conf,
启动时候加上参数 -c,
./mosquitto -c mosquitto.conf
可以看到,mosquitto监听的端口为1883.
这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。
先发布一个主题“home/garden/fountain/2”
内容是“hello world”
这时候在mosquitto会打印出下面的log
535474247: New connection from 192.168.1.105 on port 1883.
1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).
1535474247: No will message specified.
1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)
1535474307: Received PINGREQ from MQTT_FX_Client
1535474307: Sending PINGRESP to MQTT_FX_Client
1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... (12 bytes))
1535474367: Received PINGREQ from MQTT_FX_Client
1535474367: Sending PINGRESP to MQTT_FX_Client

订阅主题“home/garden/fountain/2”

可以看到收到了自己发布的消息。
用wireshark抓包
可以看到抓到了一个MQTT的publish的报文。

热点内容
airpod安卓怎么切换下一曲 发布:2024-04-28 14:23:03 浏览:834
百姓网源码 发布:2024-04-28 14:18:56 浏览:892
war包防止反编译 发布:2024-04-28 14:17:16 浏览:327
linuxll命令 发布:2024-04-28 14:16:27 浏览:859
阿里云服务器增强安全配置取消 发布:2024-04-28 14:16:12 浏览:866
war3存储空间不足 发布:2024-04-28 13:20:54 浏览:949
微信密码已经忘记了如何找回 发布:2024-04-28 11:54:13 浏览:304
腾讯云服务器可以备案几个网站 发布:2024-04-28 11:54:12 浏览:458
影响编译速度的因素有哪些 发布:2024-04-28 11:53:58 浏览:255
安全配置汽车有哪些 发布:2024-04-28 11:48:07 浏览:830