Ponte初体验

一、前言

这篇文章纯属作为Ponte的入门体验。至于是如何接触到这个解决方案(暂且称Ponte为一个解决方案,脑子笨,想不出什么词来形容它),是因为在使用IFTTT(if this, then that)时,想调用MQTT的Applets,然而并没有。只能通过HTTP的GET或者POST,再打通HTTP到MQTT的通路。Google了一下解决方案,发现Ponte这个方案还是挺好使的,然而,国内并没有它的中文介绍,所以就写了这篇入门级文章。

什么是Ponte?上面的说明应该清楚了,Ponte允许开发者通过物联网协议来发送、接收数据,这些物联网协议包括MQTT,CoAP,HTTP,Ponte充当这几个协议之间桥梁,有了它,三大协议之间彼此就可以互通了。后续会支持JSON, MsgPack, Byson, BSON and XML等数据格式。Ponte官网如下,它可是大名鼎鼎的eclipse下的产品。

官网:http://www.eclipse.org/ponte/#

Ponte

 

二、安装

Ponte基于Node.js框架,所以要安装的时候,确保服务器A有Node.js和npm。安装指令很简单,如下。

 

npm install ponte bunyan -g

 

运行指令也相当简单。

 

ponte -v

 

当然了,运行前请确保服务器A的1883 、3000、 5683端口没被占用,这样Ponte服务就跑起来了。如果服务器A有mosquitto服务,请修改mosquitto占用的1883端口,不然会和Ponte冲突。如何修改,请自行百度哈。不过我这里有两台服务器,我用服务器A搭Ponte服务,服务器B搭mosquitto服务(作测试用的,实际使用可以不适用服务器B的mosquitto)。

port

三、简单使用

Ponte可以充当MQTT、CoAP、HTTP彼此之间的bridge,这里就简单举HTTP和MQTT之间的例子。

1.从MQTT发布(Pub)消息,从HTTP订阅(Sub)消息

a.通过服务器B的mosquitto服务发布消息,如下。注意,-h后面的165.227.xxx.xxx是我的服务器ip,“打码了”,你换为你自己的服务器ip,-t后面的test是消息主题(topic),-m后面的是消息内容(message)。

 

mosquitto_pub -r -h 165.227.xxx.xxx -t test -m “testMessage”

 

b.从任意地方通过HTTP订阅消息,可以打开浏览器输入

 

http://165.227.xxx.xxx:3000/resources/test

 

注意165.227.xxx.xxx是我的服务器ip,“打码了”,你换为你自己的服务器ip,3000是HTTP端口,“resources”是必须要带的,“test”是上面消息的主题。结果如下。

http_mqtt

也可以在Linux命令行输入

 

curl http://165.227.xxx.xxx:3000/resources/test

 

如下。

curl_http_mqtt

 

2.从HTTP发布消息,从MQTT订阅

a.从Linux命令行,通过curl发布消息,输入

 

curl -X PUT -d “testHttp” http://165.227.xxx.xxx:3000/resources/test

 

其中,test是消息主题,testHttp是消息内容。

b.从服务器B命令行,订阅消息,输入

 

mosquitto_sub -h 165.227.xxx.xxx -t test

 

其中,165.227.xxx.xxx是服务器ip,“打码了”,test是消息主题,结果如下。

mqtt_http

 

四、结语

好了,就举上面简单的例子,具体的玩法大伙可以试一试,我就不一一展开了(熬夜不好,赶紧睡觉啦)。题外话,我这个文章,算不算全网第一篇中文的Ponte入门文章(不要脸)。

Posted in IOT, MQTT, Technology, 教程.

发表评论

电子邮件地址不会被公开。 必填项已用*标注