我使用 M5 Stick C+ 在 MacBook 上进行了可视化的基础设施建设
首先
我打算利用光度传感器来制作一种IoT设备,用于测量光照的时间。
它可以实际测量房间中使用了多少电力,并获取制造设备信号塔(叠层信号灯)的点亮状态等用途。
这篇文章的简介
要创建IoT系统,需要两个容器。
-
- 值得注意的是,数据库是一个容器,用于存储并让各个用户提取内容。
- 在将数据存入数据库之前,MQTT代理是一个用于存放传感器数据的池子。
在创建IoT程序之前,我们将介绍进行这两个准备步骤的方法。请注意,由于我们的目的是“先快速创建并尝试”,所以我们不会涉及太深的内容(尤其是与安全有关的内容)。请注意这一点。
希望的读者 (xī de dú zhě)
- IoTをやってみたいと思っているがインフラ関係の知識がない方
经过验证的环境
-
- Macbook Pro (Apple Silicon)
-
- Homebrew
-
- PostgreSQL 14
- Mosquitto
建立数据库
我們將使用PostgreSQL。PostgreSQL是一個免費的關係型資料庫管理系統(RDBMS)。RDBMS簡單來說就是用來管理資料庫的軟體。在這個軟體中,我們可以創建資料庫。然而,在進入資料庫的話題之前,我們需要先確認一下應該創建什麼樣的內容。
表格设计(希望发送什么样的信息)
让我们考虑想要放入数据库中的内容。期望数据库存储光照传感器的原始传感器值,按时间顺序排列,但除此之外还存在其他重要内容。让我们列举出每个必需的内容是什么。
关于传感器值
我们将使用M5Stack用的光传感器模块[U021]作为本次的传感器。
這個裝置內部配備了光敏電阻,該信號會被LM393(雙差分比較器)進行放大。然而,我查閱了德州儀器公司的文件後,無法理解有關輸出的內容… 根據結果來看,返回的數值在0至4000之間的自然數範圍。
因此,該傳感器值被存儲為整數型,最大值為5000。
另外,較大的值表示光照較低,而較小的值表示光照較高。
关于日期和时间
为了知道数据是何时获取的,我们希望能够存储日期和时间。关于时间的粒度取决于测量的时间间隔。本次测量的时间间隔为每分钟一次,所以只要能获取测量时间的秒,就可以了。
基于以上考虑,我们决定以秒级别获取日期和时间。
关于地点
将地点表达有很多种方式。有的是通过名称表示,有的是通过纬度和经度这样的坐标数据表示,还有的是通过地址表示。另外,也可以将它们放入另一个地方(表格)并进行引用。这次我们将其设定为“客厅”或“厨房”等名称。根据本次用途,我认为最多30个字符就足够了,所以将其限定为最大30个字符。
因此,我们决定将地点存储为文本类型的数据。
数据库安装
使用Homebrew安装PostgreSQL。
首先,请确保已经安装了Homebrew(可以使用brew命令)。
如果尚未安装,请使用以下命令进行安装(请参考官方网站)。
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
% (echo; echo 'eval "$(opt/homebrew/bin/brew shellenv"') >> /Users/mio/.zprofile
接下来我们将安装PostgreSQL。请键入以下命令。
% brew install postgresql@14
如果你没有记忆的话,但如果被告知需要继续进行数据库的初始化,请输入以下内容。
… 在上次购买 Macbook 后进行初始设置时,我拍了一张操作后的屏幕截图,因为似乎终端输出了自动执行的信息,所以我认为可能是不需要的。顺便提一下,如果是通过源代码安装的话,这个步骤是必须的。
% initdb --locale=C -E UTF-8 /opt/homebrew/var/postgresql@14
另外,如果输入上述内容时已经进行了初始化,只会返回错误而没有问题。我记得以前不小心做过这样的事情,因为目录内不为空,所以无法进行初始化,会出现错误提示。(对不清楚的部分表示抱歉)
我指定了版本,但这次的内容没有进行任何特殊操作,所以只要比14更新就没有问题。
创建数据库
用以下的命令创建数据库。名称设为【iot_db】。
% createdb -U (macのユーザ名) --encoding=UTF-8 --locale=ja_JP.UTF-8 --template=template0 iot_db
创建表
使用预先确定的数据内容创建表格。
表格类似于Excel表。数据库中的表格与Excel有所不同,可以在每个表格之间进行引用和合并。但是,在本次的内容中,我们并没有包含这种结构。
首先,您需要切换到可以输入SQL语言的数据库编程环境,可以从终端开始。请输入以下命令。
% psql -U (macのユーザ名) -d iot_db
如果在这里出现错误,可能是因为没有设置psql命令的路径,请检查路径是否正确。
当您完成环境的移动后,请输入以下命令。如果没有错误,应该已经创建了表格。
> CREATE TABLE IF NOT EXISTS
signal_light_table
(
id BIGSERIAL NOT NULL PRIMARY KEY,
location VARCHAR(30),
sensor_value INTEGER,
create_timestamp TIMESTAMP
)
;
我们来试着用以下命令确认表已经创建。
> \dl
以上完成了儲存感測器數據的容器——資料庫的設定工作。
辛苦了,這真是個漫長的過程。
建立MQTT Broker
在这里,我们将安装和配置MQTT Broker。尽管有多个MQTT Broker可用,但我们将在这里使用Eclipse Mosquitto。
MQTT Broker指的是MQTT代理服务器。
MQTT是什么意思?
MQTT是一种通信协议。HTTP和HTTPS是著名的通信协议之一。
MQTT的特点是轻量级。与其他协议相比,传输数据量更小。这样可以节省通信费用。
安装MQTT代理
在这里我们也将使用Homebrew。请键入以下指令。
% brew install mosquitto
配置文件
安装完成后,将创建配置文件。该文件位于【/opt/homebrew/etc/mosquitto/mosquitto.conf】,因此您可以使用任何编辑器对其进行编辑。
只要存在以下三个设置,就可以使用。我已经通过注释掉和追加的方式启用了它们。
listener 1883
allow_anonymous true
max_queued_messages 1000

开始
当设置文件编写完成后,将其作为服务启动。
% brew services start mosquitto
进行连通性测试
我要打开两个终端。
在一个终端上(在下面的图表中,是右侧的终端),请输入以下命令。
% mosquitto_sub -t test
请在另一个终端(图表左侧)中输入以下命令。
% mosquitto_pub -t test -m Hello_World
当你在第一个终端看到【Hello_World】的显示时,表示成功。

请参考以下资料。
请参考下列资料。
请参考以下参考资料。
请参考以下资料供您参考。
请查阅以下资料。
PostgreSQL 是一种关系数据库管理系统。
-
- Homebrew HP内のPostgreSQLページ
-
- 公式 ソースコードからのインストール手順
-
- Let’s Postgres
- PostgreSQL独自コマンドおよびSQLについて
蚊子
-
- Eclipse Mosquitto公式ページ
-
- AWSのMQTT解説記事
- IBMのMQTT解説記事
最后
我已经准备好了在物联网中使用的基本工具——PostgreSQL和Mosquitto。下一步我们将开始收集数据并展示。需要注意的是,这次只是为了验证先安装一下,这两个工具有很多设置选项。其中一些与性能和安全有关,建议在学习一定程度后再使用官方手册等重新学习。