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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值