python下mqtt服务器的搭建_搭建MQTT服务器
大家好,又见面了,我是你们的朋友全栈君。
就让我来试试传说中最适用于IOT的MQTT协议。
安装
虽然搜索资料很多,但大多是MQTT的使用,尽管有搭建服务器的文章,但我感觉写的不太清楚,大多数文章选择了Mosquitto(也许是Eclipse大厂出品的原因)。
经过寻找,找到了Nodejs写的mosca,但在Pi上老是安装失败,翻了翻Issues,找到了同作者写的依赖性小,轻量化的aedes。npm install aedes –save//最小例子
var aedes = require(‘aedes’)();
var server = require(‘net’).createServer(aedes.handle);
server.listen(8266);
简单使用
将所有的订阅与推送保存到sqlite3数据库中://Nodejs
var aedes = require(‘aedes’)();
var colors = require(‘colors’);
var server = require(‘net’).createServer(aedes.handle);
var sqlite3 = require(‘sqlite3’).verbose();
var db = new sqlite3.Database(‘data.db’);
var port = 8266;
//更多事件查看Github:https://github.com/mcollina/aedes
aedes.on(‘publish’,function(packet,client) {
if (client) {
console.log(‘[ Publish ] CilentID:’.green,client.id,’ Qos:’.green,packet.qos,’ Data:[ ‘.green,String(packet.payload),’ ]’.green);
db.run(“INSERT INTO publish (date,client_id,topic,data) VALUES (datetime(‘now’),?,?,?);”,[client.id,packet.topic,String(packet.payload)]);
}
});
aedes.on(‘subscribe’, function (subscriptions, client) {
if (client) {
//subscriptions懒得历遍(一般情况同时只有一个吧)
db.run(“INSERT INTO subscribe (date,client_id,topic) VALUES (datetime(‘now’),?,?)”,[client.id,subscriptions[0].topic]);
console.log(‘[ Subscribe ] SubscripTions:’.green,subscriptions[0].topic,’ Qos:’.green,subscriptions[0].qos,’ CilentID:’.green,client.id);
}
});
aedes.on(‘unsubscribe’,function(unsubscriptions,client){
if(client){
//同理
console.log(‘[ unSubscribe ] unSubscripTions:’.green,unsubscriptions[0],’ CilentID:’.green,client.id);
db.run(“DELETE FROM subscribe WHERE client_id = ? AND topic = ?;”,[client.id,unsubscriptions[0]])
}
});
server.listen(port,function(){
console.log(‘[ Server ] server listening on port’.green,port)
});
//Sqlite3
CREATE TABLE “publish” ( `date` TEXT NOT NULL, `client_id` TEXT NOT NULL, `topic` TEXT NOT NULL, `data` TEXT NOT NULL );
CREATE TABLE “subscribe” ( `date` TEXT NOT NULL, `client_id` TEXT NOT NULL, `topic` TEXT NOT NULL );
//Micropython for ESP8266
>>> from umqtt.simple import MQTTClient
>>> conn = MQTTClient(‘esp8266′,’192.168.1.64’,8266)
>>> conn.connect()
0
>>> conn.publish(b’/test’,b’test’)
>>> conn.disconnect()
优缺点轻量化
可以更好的结合业务逻辑
不支持或不完全支持Qos2
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140313.html原文链接:https://javaforall.cn
相关文章
- Python基础19-面向对象(高级)
- Python面试基础知识_python自学需要哪些基础知识
- Python进阶39-drf框架(一)
- 【过程记录】python环境离线迁移
- Python项目47-前后端分离登录注册页(继续撸)
- python matplotlib 动态图_matplotlib怎么读
- python 变量与数据类型
- python 字符串转成数字_python数字转十六进制字符串
- .app 域名发布了,我们可以使用 Python 做点什么?
- python lambda拉姆达表达式「建议收藏」
- Easy Games With Python and Pygame(二)- Pygame 绘制图形
- Python基础13-模块的使用
- 超强 Python 数据可视化库,一文全解析
- python执行cmd命令并解析结果_python如何打包成可执行程序
- 做自动化测试选择Python还是Java?
- 使用Python验证并利用Redis未授权漏洞
- Win10配置Airsim环境并设置Python通信
- xgboost分类算法_python分类统计
- 干货 | OpenCV获取不规则区域的最大内切圆(附Python / C++ 源码)
- OpenCV—python 颜色直方图与直方图均衡化[通俗易懂]