我们在网页上享受的大部分服务都是由网站数据库应用程序提供的。
要构建一个现代网站,您需要开发一个数据库应用程序。MySQL 数据库适用于各种案例,包括关键任务应用程序、动态网站,以及作为软件、硬件和设备的嵌入式数据库。
像AWS、Google 和 IBM 在内的许多 IOT 平台都支持 MQTT,但大多数在线代理(例如 Mosquitto)无法将传入的消息存储在数据库中。大多数解决方案是我们订阅主题并接收所有传入主题的消息,然后将传入消息存储在数据库中。
带有 MySQL 数据库的 MQTT
在本篇文章中,您将学习如何使用 EMQ 代理将 MQTT 消息存储在数据库中。使用 EMQ 代理,您可以编写插件,这些插件可用于通过“挂钩”点击传入和传出消息。挂钩是发生特定事件时调用的函数。
让我们开始在 Amazon AWS 控制台上创建一个名为 EMQ 的新Ubuntu 实例。创建实例后,为该实例分配 IP 地址。
更新 AWS 中的安全组。添加入站规则以授予对运行 MQTT 代理的端口的访问权限。
现在打开putty 并通过 SSH 访问 AWS 服务器上的Ubuntu,方法是提供分配给实例的 IP 地址。默认用户名是 Ubuntu。
登录后我们开始安装EMQ 代理。输入以下命令以安装依赖项和代理
$ sudo apt-get update $ sudo apt-get install build-essential $ Sudo apt-get install erlang $ git clone https://github.com/emqtt/emq-relx.git $ cd emq-relx && make $ cd _rel /emqttd && ./bin/emqttd console
安装 EMQ 代理后,我们可以按照以下步骤安装 MySQL
$ sudo apt-get update $ sudo apt-get install mysql-server $ mysql_secure_installation $ sudo apt-get install git curl zip unzip $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get install php7.4-fpm php7.4-common php7.4-xml php7.4-cli php7.4-curl php7.4-json php7.4-mcrypt php7.4-mysqlnd php7.4-sqlite php7.4-soap php7.4-mbstring php7.4-zip php7.4-bcmath $ sudo nano /etc/php/7.4/fpm/php.ini
找到读取 cgi.fix_pathinfo=1 的行并将其更改为读取 cgi.fix_pathinfo=0
$ cd ~ $ mkdir bin $ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $ php composer-setup.php --install-dir=/home/ubuntu/bin --filename=composer $ mysql –u root –p Mysql>CREATE DATABASE dreamfactory; Mysql>GRANT ALL PRIVILEGES ON dreamfactory.* to 'dfadmin'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD_HERE'; Mysql>FLUSH PRIVILEGES; Mysql> quit
$ sudo mkdir /opt/dreamfactory $ sudo chown -R ubuntu /opt/dreamfactory $ cd /opt/dreamfactory $ git clone https://github.com/dreamfactorysoftware/dreamfactory.git $ composer install --no-dev --ignore-platform-reqs $ php artisan df:env
如下图所示配置dreamfactory。用户名和密码是 dfadmin。
$ nano .env Uncomment (remove the ##) the two lines that read ##DB_CHARSET=utf8 and ##DB_COLLATION=utf8_unicode_ci $ php artisan df:setup
回答屏幕提示为系统创建您的第一个管理员用户
$ sudo chown -R www-data:ubuntu storage/ bootstrap/cache/ $ sudo chmod -R 2775 storage/ bootstrap/cache/ $ php artisan cache:clear $ sudo apt-get install nginx $ cd /etc/nginx/sites-available $ sudo cp default default.bak $ sudo nano default Copy and paste from the file attached and exit editor $ sudo service php7.4-fpm restart && sudo service nginx restart
至此,dreamfactory 应用程序就安装好了。
DreamFactory 是一个开源 REST API 中间件平台,为构建手机、网站和 IoT 应用程序提供 RESTful 服务。
接下来我们去安装mySql数据库并创建新用户以便dreamfactory可以访问它。
使用在设置过程中输入的默认用户名和密码登录dreamfactory。我们必须创建角色,这些角色是设备的权限。输入创建 EMQ 实例时生成的 ip 地址,例如 35.172.132.132/dreamfacrory/dist/index.html
转到应用程序并为设备生成远程访问密钥的 API 密钥。输入详细信息如下图所示
生成 API 密钥后,我们将连接到 MySQL 数据库,单击服务并创建,然后选择 MySQL 数据库。填写用户名、端口号数据库、用户名和密码。
API 密钥需要在 emq_plugin_template 中更新 ,以便将数据发送到 MySQL 数据库,如下所示。
我们现在可以从任何客户端发送数据并将其保存在数据库中。我们以连接了温度、压力和湿度等传感器的树莓派为例:树莓派上运行的 paho-mqtt 客户端将数据发送到 MySQL 数据库。
在终端输入树莓派安装 paho mqtt。
$ pip3 install paho-mqtt
要连接到服务器,我们可以键入
client = mqtt.Client() client.on_connect = on_connect client.connect("35.172.132.132", 1883, 60)
下面的命令会将主题发送到代理并保存在 MySQL 数据库中。
client.publish('raspberry/topic', payload=i, qos=0, retain=False)
全部0条评论
快来发表一下你的评论吧 !