外贸公司网站制作公司,建网站收费吗,如何做起一个网站推广,网站建设项目分期目录 介绍 环境 先决条件 - 设置静态 IP 地址 安装 Mosquitto 启动/停止 Mosquitto 配置先决条件 - 安装 mqtt_spy 配置 Mosquitto 配置 Mosquitto - 无安全性 测试 Mosquitto 配置 - 无安全性 配置 Mosquitto - 使用密码身份验证 Mosquitto 测试 - 带密码验证 概括 介绍 在本文… 目录 介绍 环境 先决条件 - 设置静态 IP 地址 安装 Mosquitto 启动/停止 Mosquitto 配置先决条件 - 安装 mqtt_spy 配置 Mosquitto 配置 Mosquitto - 无安全性 测试 Mosquitto 配置 - 无安全性 配置 Mosquitto - 使用密码身份验证 Mosquitto 测试 - 带密码验证 概括 介绍 在本文中这是致力于令人惊叹的 Raspberry Pi 的系列文章的第二篇文章我们将使用 Mosquitto 将 Pi 配置为 MQTT 消息代理。Mosquitto 是一个轻量级但功能强大的发布/订阅模型消息传递系统可以安装在各种平台上。本教程的目标是在 Rasspberry Pi 2 上安装、配置和测试软件并且不仅能够在 Pi 上发布和订阅消息还能够在其他计算机上发布和订阅消息。 如果您还没有阅读描述如何加载和配置操作系统的第一篇文章您可以在Raspberry Pi 2, 1 of n - 初始设置或代码项目中找到它。虽然不是必需阅读但如果您是 Linux 或 Pi 的新手我鼓励您查看一下。 本文或多或少是我使用 Mosquitto 将 Raspberry Pi 设置为 MQTT 消息代理的步骤的记录。我使用 SwitchDoc Labs [3]的教程作为参考但对其进行了修改以满足我的特定需求。在以后的文章中我计划悬挂各种设备例如ESP8266-12E WiFi 模块、嵌入式处理器板例如 Arduino UNO 以及可能的其他板有望在今年夏天趁远足和露营天气炎热时抽出时间来做这件事。 环境 我为此项目设置的开发环境是 Windows 桌面运行 64 位 Windows 7 操作系统配备 AMD-FX-8350 8 核处理器和 32GB 内存。Raspberry Pi 2BCM2709 ARMv7 4 核具有 1GB RAM运行 Raspian Jesse 操作系统。下载站点上有一个新的 Raspbian Jessie Lite 版本我最初为该项目加载和配置了该版本但它没有 GUI我计划在以后的文章中使用 NginX 和 WebSockets 来提供用于控制各种设备的前端所以我恢复使用完整版本并删除其中的垃圾软件。Pi 上的 WiFi 由edimax 适配器 提供。运行 Ubuntu 12.04 LTS 的 VirtualBox VM我的配置几乎与 Pi 相同但修改了一些针对 Ubuntu 的项目。虽然我已经将其设置为自己使用但我不会详细介绍我是如何做到这一点的我会将其留给您作为额外的学分练习。祝蚱蜢好运 先决条件 - 设置静态 IP 地址 尽管此步骤是可选的但我强烈建议您在 Pi 上设置静态 IP 地址[8,11]。如果不这样做Pi 可能会 在启动时选择不同的 IP 地址并且每次启动 Pi 时都必须编辑配置文件这将是一个 PITA。对我来说使用廉价的edimax 加密狗 这是一个无痛的过程。如果您愿意等待可以通过 eBay 购买 802.11 加密狗每件价格约为 2 美元。我订购了其中一些它们工作得相当好尽管我还没有确定是否会在生产环境中使用它们。 此处描述的过程使用 edimax 加密狗但应该适用于 Pi 支持的任何兼容 WiFi 加密狗。在编辑配置网络所需的系统文件之前我们需要收集一些信息。 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbb#To display current network info type;
ifconfig/span/span/span/span 输出应该与此类似 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbbwlan0 Link encap:Ethernet HWaddr b8:span stylecolor:#00008027/span:eb:a8:cf:a4inet addr:span stylecolor:#000080192/span.span stylecolor:#000080168/span.span stylecolor:#000080254/span.span stylecolor:#00008020/span Bcast:span stylecolor:#000080192/span.span stylecolor:#000080168/span.span stylecolor:#000080254/span.span stylecolor:#000080255/span Mask:span stylecolor:#000080255/span.span stylecolor:#000080255/span.span stylecolor:#000080255/span.span stylecolor:#0000800/spanUP BROADCAST RUNNING MULTICAST MTU:span stylecolor:#0000801500/span Metric:span stylecolor:#0000801/spanRX packets:span stylecolor:#000080161/span errors:span stylecolor:#0000800/span dropped:span stylecolor:#0000800/span overruns:span stylecolor:#0000800/span frame:span stylecolor:#0000800/spanTX packets:span stylecolor:#000080227/span errors:span stylecolor:#0000800/span dropped:span stylecolor:#0000800/span overruns:span stylecolor:#0000800/span carrier:span stylecolor:#0000800/spancollisions:span stylecolor:#0000800/span txqueuelen:span stylecolor:#0000801000/spanRX bytes:span stylecolor:#00008026075/span (span stylecolor:#00008025/span.span stylecolor:#0000804/span KiB) TX bytes:span stylecolor:#00008046356/span (span stylecolor:#00008045/span.span stylecolor:#0000802/span KiB)/span/span/span/span inet addr 和 Mask 值是我们要寻找的值在我的例子中addr是 192.168.254.20Mask 是 255.255.255.0在大多数情况下都是如此。接下来我们需要找到网关地址。 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbb#To display network gateway address type;
netstat -n -r/span/span/span/span 输出应该看起来像这样 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbbKernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
span stylecolor:#0000800/span.span stylecolor:#0000800/span.span stylecolor:#0000800/span.span stylecolor:#0000800/span span stylecolor:#000080192/span.span stylecolor:#000080168/span.span stylecolor:#000080254/span.span stylecolor:#000080254/span span stylecolor:#0000800/span.span stylecolor:#0000800/span.span stylecolor:#0000800/span.span stylecolor:#0000800/span UG span stylecolor:#0000800/span span stylecolor:#0000800/span span stylecolor:#0000800/span eth0
span stylecolor:#000080192/span.span stylecolor:#000080168/span.span stylecolor:#000080254/span.span stylecolor:#0000800/span span stylecolor:#0000800/span.span stylecolor:#0000800/span.span stylecolor:#0000800/span.span stylecolor:#0000800/span span stylecolor:#000080255/span.span stylecolor:#000080255/span.span stylecolor:#000080255/span.span stylecolor:#0000800/span U span stylecolor:#0000800/span span stylecolor:#0000800/span span stylecolor:#0000800/span eth0/span/span/span/span 由此我们得到目标或网络地址是 192.168.254.0网关地址是 192.168.254.254现在我们准备配置我们的网络。 我们需要修改的第一个文件是 wpa_supplicant [12]文件。wpa_supplicant [13]实现无线网络的安全协议。[13] span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbbctrl_interfaceDIR/var/run/wpa_supplicant GROUPnetdev
update_configspan stylecolor:#0000801/span
network{ssidspan stylecolor:#800080/spanspan stylecolor:#800080Your SSID Here/spanpskspan stylecolor:#800080/spanspan stylecolor:#800080YourPresharedKeyHere/span
}/span/span/span/span 请注意“network{”中没有空格这是故意的。将 ssid 和 psk 值替换为您的无线网络值保存并关闭文件。我使用nano来编辑这些文件当要求保存文件时保存和退出的过程是ctrlX和“Y” 。 接下来我们将继续讨论网络接口文件我们将在其中配置 wlan0 无线网络适配器。使用您在前面的步骤中收集的值并将它们插入文件中的适当区域如下所示。 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbballow-hotplug wlan0
iface span stylecolor:#0000ffdefault/span inet span stylecolor:#0000ffstatic/spanwpa-roam /etc/wpa_supplicant/wpa_supplicant.confaddress span stylecolor:#000080192/span.span stylecolor:#000080168/span.span stylecolor:#000080254/span.span stylecolor:#00008020/spannetmask span stylecolor:#000080255/span.span stylecolor:#000080255/span.span stylecolor:#000080255/span.span stylecolor:#0000800/spannetwork span stylecolor:#000080192/span.span stylecolor:#000080168/span.span stylecolor:#000080254/span.span stylecolor:#0000800/spangateway span stylecolor:#000080192/span.span stylecolor:#000080168/span.span stylecolor:#000080254/span.span stylecolor:#000080254/span/span/span/span/span 重新启动 Pi 并尝试从另一台计算机执行 ping 操作或尝试使用您选择的浏览器访问网站。Jessie 预装了 IceWeasel即 Firefox。如果一切按计划进行那么您应该在线并准备好继续如果没有重新访问前面的步骤或谷歌搜索适合您特定硬件配置的解决方案。 安装 Mosquitto 安装 Mosquitto 相当简单我们将配置代理侦听端口 1883 进行测试它默认为端口 80。 在 Pi 上打开一个终端并一次输入以下命令。 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbbsudo wget http:span stylecolor:#008000em///em/spanspan stylecolor:#008000emrepo.mosquitto.org/debian/mosquitto-repo.gpg.key/em/span
sudo apt-key span stylecolor:#0000ffadd/span mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http:span stylecolor:#008000em///em/spanspan stylecolor:#008000emrepo.mosquitto.org/debian/mosquitto-jessie.list/em/span
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients/span/span/span/span wget [4]代表“web get”是一个从网站递归下载文件和目录结构的实用程序。在这种情况下我们将获得一个 GPGGnu Privacy Guard Key它允许提供商使用通用密钥系统对您的数据和通信进行加密和签名。apt-key [3]用于管理 apt高级打包工具用于验证包的密钥列表。更改目录并使存储库可供 apt 使用。获取存储库文件其中包含指向下载包的 URL 的链接。使用 apt-get 更新 apt 信息[5]最后安装 Mosquitto 和客户端。客户端提供 mosquitto_pub 和 mosquitto_sub 实用程序。我们将在稍后的测试阶段使用它们 如果一切按计划进行Mosquitto 应该已安装并且默认情况下将启动由于我们需要配置它因此我们需要停止它。请参阅下一节了解如何阻止 Mosquitto。 启动/停止 Mosquitto 当 Pi 启动时它会自动启动 Mosquitto因此我们想了解如何启动、停止和重新启动该应用程序。 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbb#To start the Mosquitto service
sudo /etc/init.d/mosquitto start
#To stop the Mosquitto service
sudo /etc/init.d/mosquitto stop
#To restart the Mosquitto service
sudo /etc/init.d/mosquitto restart/span/span/span/span 配置先决条件 - 安装 mqtt_spy 这也是一个可选步骤但我发现 mqtt_spy [7]实用程序在配置/测试阶段非常有价值。mqtt-spy 是一个 JavaFX 应用程序因此理论上应该可以在安装了适当版本的 Java 8 的任何操作系统上运行。 当 mqtt_spy 首次启动时用户会看到以下窗口敏锐的观察者会注意到应用程序认为我拥有的版本不是最新的但它是吗无论如何显示已配置连接的部分是我们主要关心的。该应用程序预装了几种常见的配置例如本地主机等。 要为我们的目的配置连接请从主菜单中选择“连接”“新建连接”菜单项。这将显示所示的窗口并输入与您的配置相关的信息并使用适当的名称保存。 连接建立后我们就可以开始工作了。如本教程前面所述MQTT 协议是一种发布订阅模型因此下面显示的窗口分为 2 个部分顶部是发布部分底部是订阅部分。 首先我们通过单击“新建”按钮创建一个新订阅并在弹出的对话框中输入主题信息输入主题后单击“订阅”按钮。 接下来我们将向刚刚配置的主题发布一条消息因此在发布部分中输入主题、一条消息然后单击“发布”按钮。该消息应显示在“订阅”部分的“数据”文本框中。瞧这就是全部了不是很酷吗 在本教程的其余部分中我将参考 mqtt_spy 实用程序如果您没有安装它请忽略它因为我还将提供 Mosquitto 客户端命令行命令来从 Linux 终端测试配置。配置 mqtt_spy 时单击主窗口中的连接按钮断开连接这将导致按钮变为红色进行适当的更改然后再次单击连接按钮如果连接成功按钮将变为绿色。 配置 Mosquitto 在下面的部分中我们将讨论 Mosquitto 可以配置运行的各种方式以及我们将用来测试配置的技术。当 Mosquitto 启动时它会在 /etc/mosquitto/conf.d 目录中查找任何带有 .conf 扩展名的文件[10] 如果找到则使用它们来配置 Mosquitto。我们将创建一个文件 /etc/mosquitto/conf.d/mosquitto.conf 并输入后面代码部分中概述的数据。 配置 Mosquitto - 无安全性 这是没有安全性的基本配置在端口 80 上侦听 IP 地址 localhost。使用您选择的编辑器编辑 /etc/mosquitto/conf.d/mosquitto.conf 文件保存并重新启动 Mosquitto。 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbb# span stylecolor:#339999Boolean/span span stylecolor:#339999value/span that determines whether clients that connect without providing a username are
# allowed to connect. If span stylecolor:#0000ffset/span to span stylecolor:#0000fffalse/span then another means of connection should be created to
# control authenticated client access. Defaults to span stylecolor:#0000fftrue/span.
allow_anonymous span stylecolor:#0000fftrue/span
#
# Listen span stylecolor:#0000fffor/span incoming network connection on the specified port. A second optional argument
# allows the listener to be bound to a specific ip address/hostname. If span stylecolor:#0000ffthis/span variable span stylecolor:#0000ffis/span used
# and neither the span stylecolor:#0000ffglobal/span bind_address nor port options are used then the span stylecolor:#0000ffdefault/span listener will
# not be started.
# listener port [bind address/host]
listener span stylecolor:#0000801883/span span stylecolor:#000080192/span.span stylecolor:#000080168/span.span stylecolor:#000080254/span.span stylecolor:#00008020/span/span/span/span/span 测试 Mosquitto 配置 - 无安全性 使用 mqtt_spy 实用程序只需在服务器 URI 文本框中输入 IP 地址应用并连接。然后转到发布/订阅窗口并输入适当的信息。 从命令行测试时您需要打开 2 个窗口一个用于发布另一个用于订阅。在端口 1883 上输入以下内容其中 topic hello/world。 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbb#In the publish terminal window
sudo mosquitto_pub -d -t hello/world -m span stylecolor:#800080/spanspan stylecolor:#800080The message/span#In the subscribeterminal window
sudo mosquitto_sub -d -t hello/world/span/span/span/span 配置 Mosquitto - 使用密码身份验证 为了使用密码身份验证我们需要编辑 mosquitto.conf 文件并添加 password_file 指令以及 pwfile 的路径。 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbb# span stylecolor:#339999Boolean/span span stylecolor:#339999value/span that determines whether clients that connect without providing a username are
# allowed to connect. If span stylecolor:#0000ffset/span to span stylecolor:#0000fffalse/span then another means of connection should be created to
# control authenticated client access. Defaults to span stylecolor:#0000fftrue/span.
allow_anonymous span stylecolor:#0000fffalse/span
#
# Listen span stylecolor:#0000fffor/span incoming network connection on the specified port. A second optional argument
# allows the listener to be bound to a specific ip address/hostname. If span stylecolor:#0000ffthis/span variable span stylecolor:#0000ffis/span used
# and neither the span stylecolor:#0000ffglobal/span bind_address nor port options are used then the span stylecolor:#0000ffdefault/span listener will
# not be started.
#listener port [bind address/host]
listener span stylecolor:#0000801883/span span stylecolor:#000080192/span.span stylecolor:#000080168/span.span stylecolor:#000080254/span.span stylecolor:#00008020/span
#
# Set the path to a password file. If defined, the contents of the file are used to control
# client access to the broker. The file can be created span stylecolor:#0000ffusing/span the mosquitto_passwd(span stylecolor:#0000801/span) utility.
# If mosquitto span stylecolor:#0000ffis/span compiled without TLS support (it span stylecolor:#0000ffis/span recommended that TLS support span stylecolor:#0000ffis/span
# included), then the password file should be a text file with each line span stylecolor:#0000ffin/span the format
# span stylecolor:#800080/spanspan stylecolor:#800080username:password/span, span stylecolor:#339999where/span the colon and password are optional but recommended.
# If allow_anonymous span stylecolor:#0000ffis/span span stylecolor:#0000ffset/span to span stylecolor:#0000fffalse/span, only users defined span stylecolor:#0000ffin/span span stylecolor:#0000ffthis/span file will be able to connect.
# Setting allow_anonymous to span stylecolor:#0000fftrue/span span stylecolor:#339999when/span password_fileis defined span stylecolor:#0000ffis/span valid and could be used with
# acl_file to have e.g. read only guest/anonymous accounts and defined users that can publish.
#password_file file path
password_file /etc/mosquitto/pwfile/span/span/span/span 接下来我们需要使用 mosquitto_passwd 实用程序创建 pwfile方法是在终端窗口中输入以下内容。 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbbsudo mosquitto_passwd -c /etc/mosquitto/pwfile username/span/span/span/span 系统将提示您输入密码并输入另一个密码进行确认。 Mosquitto 测试 - 带密码验证 使用 mqtt_spy 选择菜单选项 ConnectionsManage Connections然后选择 Security 选项卡、User auth。标签。选中启用用户身份验证复选框并输入配置 pwfile 时使用的用户名密码。然后连接并配置发布/订阅信息。 使用 pub/sub 终端输入以下命令 span stylecolor:#111111span stylebackground-color:#ffffffspan stylecolor:#000000span stylebackground-color:#fbedbb#In the publish terminal window
sudo mosquitto_pub -d -t hello/world -p span stylecolor:#0000801883/span -u span stylecolor:#800080/spanspan stylecolor:#800080username/span -P span stylecolor:#800080/spanspan stylecolor:#800080password/span -m span stylecolor:#800080/spanspan stylecolor:#800080The message/span#In the subscribeterminal window
sudo mosquitto_sub -d -t hello/world -p span stylecolor:#0000801883/span -u span stylecolor:#800080/spanspan stylecolor:#800080username/span -P span stylecolor:#800080/spanspan stylecolor:#800080password/span/span/span/span/span 概括 我发现 Mosquitto 易于使用功能强大有足够的文档和教程来帮助我入门而且足够直观我可以在短时间内安装和配置它。本教程已经做了好几次了而且很简单因此我的目的是在以后的文章和家庭物联网项目中使用它这将是本系列的最终目标。