python下mqtt服务器的搭建_搭建MQTT服务器

python下mqtt服务器的搭建_搭建MQTT服务器就让我来试试传说中最适用于IOT的MQTT协议。安装虽然搜索资料很多,但大多是MQTT的使用,尽管有搭建服务器的文章,但我感觉写的不太清楚,大多数文章选择了Mosquitto(也许是Eclipse大厂出品的原因)。经过寻找,找到了Nodejs写的mosca,但在Pi上老是安装失败,翻了翻Issues,找到了同作者写的依赖性小,轻量化的aedes。npminstallaedes–save//…

大家好,又见面了,我是你们的朋友全栈君。

就让我来试试传说中最适用于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.net/140313.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu设置虚拟显示器且远程连接[通俗易懂]

    ubuntu设置虚拟显示器且远程连接[通俗易懂]ps:如果需要再用显示器,需要删除或者重命名“xorg.conf”文件,后缀名改掉即可,如.conf_bak。虽然配置上面写了“1920×1080”,但是实际上最大支持“1360×768”,重启即可生效。重启计算机后,系统会默认使用虚拟显示器,即使接入了显示器,也不会输出信号到显示器上!使用teamviewer、todesk或者向日葵等远程工具实现远程连接即可。…

    2022年8月21日
    20
  • HC32F460开发之rtthread+finsh组件的移植

    HC32F460开发之rtthread+finsh组件的移植文章目录前言一、RT-Thread简介二、rtthread的移植1.裸机例程2.RT-Thread下载2.RT-Thread移植总结前言对于从事单片机的开发人员,操作系统可以说是绕不过的一个必修课程。在稍复杂的应用开发中,一个好的操作系统可以帮助我们将单片机的资源最大化的利用起来,而系统提供的各种API接口也可以可靠地帮我们实现各种应用逻辑功能。日常生活里,在各种各样的电子设备中,操作系统被广泛地应用,常见的有Linux,ucos,以及现在在各种物联网设备中被广泛应用的freertos,RT-Thre

    2022年5月11日
    85
  • p6使用说明_人员配置情况说明

    p6使用说明_人员配置情况说明P6SPY 是一个监控JDBC执行语句的开源产品,利用P6SPY很容易的就能监控到JDBC中执行的SQL语句,便于系统调试和性能调优。P6SPY 实现原理是对JDBC的关键类进行了一次包装,让应用系统调用自己的类;自己的类截获到SQL语句后再调用真实的JDBC驱动进行执行SQL,这样,在自己的类里面就可以监控到所有的SQL语句。    P6SPY 使用非常简单,只需要简单的几步即完成配置:

    2022年10月5日
    2
  • 打开python 报R6034 错误

    打开python 报R6034 错误我只在Python3和python2同时在anaconda3下安装出现的问题,后来移除python2也不起作用,找到了这个方法,解决的问题。6034指的是:”AnapplicationhasmadeanattempttoloadtheCruntimelibraryincorrectly.Pleasecontacttheapplication’ssuppor…

    2025年8月3日
    3
  • Python 爬虫 校花网[通俗易懂]

    Python 爬虫 校花网[通俗易懂]爬虫:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。福利来了校花网 ,首先说为什么要爬这个网站呢,第一这个网站简单爬起来容易,不会受到打击,第二呢你懂得…。1.第一步

    2022年8月4日
    3
  • Java过滤器与SpringMVC拦截器之间的关系与区别[通俗易懂]

    今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深夜,时间原因,我就把一些网友的观点重点摘录下来,大家仔细看后也一定会有一个比较新的认识(在此非常感谢那些大牛们的无私奉献,分享他们的经验与心得,才能让像我这样的小白有机会站一下你们这些巨人的肩膀,才能

    2022年4月12日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号