乐联网TCP服务器通讯协议

乐联网http://www.lewei50.com是个很好玩的东西,你可以十分方便的将你的硬件设备的各种常用数据发到网上。

但初次接触乐联网让我十分苦恼,网站上的一些帮助手册基本是基于arduino客户端的一些教程名称,与我们一般的理解不太一样。

我们一般和服务器通讯,需要知道服务器IP,端口号,通讯协议,3要素。下面我们一起梳理一下通讯协议。了解清楚后,无论使用arduino还是其他硬件均可实现服务器通讯。

 

服务器信息

1、服务器域名tcp.lewei50.com

2、服务器IP:42.121.128.216  

3、服务器端口号:9960

 

服务器后台设置准备工作:

参考文档    http://www.lewei50.com/dev/doc/126

1、注册并登录乐联网后台,记住你的userkey用户编号,图片黑体字部分。


2、添加网关设备名称,记住网关标识编号,比如02


如果你LED、继电器之类的需要服务器来控制的设备,可勾选“是否可控”。否则可不选。

API地址:http://tcp.lewei50.com:9965/?method=send&gatewayNo=02

完全复制上面的链接文字段,文字段前后不要有空格等隐含多余字符,红色部分对应网关标识编号。

公网IP:tcp.lewei50.com  

完全复制上面的链接文字段,文字段前后不要有空格等隐含多余字符

 

3、添加测量设备,比如我添加了2个温度探头,分别标识为T1 T2


4、添加一个演示开关


添加控制设备完毕,会提示“网关离线”,忽略不管。



在说一遍,通过以上操作,你知道了4件事:

你的userkey用户编号,

你要操作的网关编号02

你要操作的测量设备标识T1,T2,

你要控制的设备标识POWER

 

 

 

客户端主动向服务器上传数据过程

该方法主要用于测量类型设备,比如我有2个温度探头,分别测到温度33度和96.2度。

客户端主动上传数据步骤:

 

1、连接tcp.lewei50.com 或者IP:42.121.128.216   端口号:9960

 

2、发送登录注册信息

{"method":"update","gatewayNo": "02","userkey":"6f289b7f11084520bd2aad8e425ee9b4"}&^!

 

完全复制上面的完整数据,红色部分替换成你网关的编号,绿色部分替换成你自己的userkey用户编号。

注意:发送后服务器不会有反馈响应。

 

3、发送具体数据

{"method":"upload","data":[{"Name":"T1","Value":"33"},{"Name":"T2","Value":"96.2"}]}&^!

 

完全复制上面的完整数据,红色部分替换成你设备的标识,绿色部分替换成对应的设备数据。

注意:发送后服务器不会有反馈响应。

 

4、客户端数据发送完毕可以主动断开链接。

 

实际操作验证一下

1、电脑端:建立客户端,设服务器IP,端口号,连接,发送登陆注册信息,发送具体数据33度和96.2度。


 2、服务器端:后台2个温度数据更新了。

 

 

 

服务器控制客户端的控制设备(客户端被动上传数据,反向控制)

该方法主要用于控制类型设备,比如有一个继电器开关,标识POWER

客户端被动上传数据步骤:

 

1、连接tcp.lewei50.com 或者IP:42.121.128.216   端口号:9960

 

2、发送登录注册信息

{"method":"update","gatewayNo": "02","userkey":"6f289b7f11084520bd2aad8e425ee9b4"}&^!

 

完全复制上面的完整数据,红色部分替换成你网关的编号,绿色部分替换成你自己的userkey用户编号。

注意:发送后服务器不会有反馈响应。

 

保持每隔40秒(注)登录注册一次,以保持服务器与客户端的链接。

注:注册连接超过1分钟,服务器会断开链接。

参考文档   http://www.lewei50.com/dev/doc/155

 

3、服务器后台,点击“我的设备----控制设备”-新建”,新建一个可控设备,标识POWER


 

3、服务器点击“控制设备”,客户端收到数据:

{"method":"send","gatewayNo":"02","userkey":"6f289b7f11084520bd2aad8e425ee9b4","f":"getAllSensors"}&^!

 

数据解析:通过 2号网关, Userkey 的用户,指令:读取全部设备参数。

 

客户端收到这个控制指令后,应向 TCP服务器做应答,如果不应答,服务器根据客户端连接状态情况显示超时提示,或显示客户端离线。

服务器指令列表

 

 

 

 

4、客户端应答:

 

从一个例子开始看吧,库请参考  https://github.com/lewei50/LeweiTcpClient/tree/LeweiTcpClientLite

 

这是注册的两个函数

void ledOn()

{

 client->setRevCtrlMsg("true","on");

  digitalWrite(LED_PIN,HIGH);

}

void ledOff()

{

 client->setRevCtrlMsg("true","off");

  digitalWrite(LED_PIN,LOW);

}

 

每次服务器调用这两个函数执行的时候,都要给服务器一个返回,返回值的内容就是从标红的那里赋值的。

 

赋值完了怎么用了?用SourceInsight工程搜一下关键词setRevCtrlMsg发现

voidLeweiTcpClient::setRevCtrlMsg(char* execResult,char* msg)

{

    _revCtrlResult = execResult;

    _revCtrlMsg = msg;

}

 

也就是只是赋值了_revCtrlResult,_revCtrlMsg

继续搜_revCtrlResult,_revCtrlMsg,发现getResponse()这里用到了。

 

 

                     intlen=strlen(_revCtrlResult)+strlen(_revCtrlMsg)+63;

                     //Serial.println(len);

                     commandString=(char*)malloc(len);

                     snprintf(commandString, len,"{\"method\":\"response\",\"result\":{\"successful\":%s,\"message\":\"%s\"}}&^!",_revCtrlResult, _revCtrlMsg);

                     Serial.println(commandString);

                     _clientRevCtrl.print(commandString);

 

commandString 就是客户端需要回复的格式,注意 \” 是转义符(等于

这些都在这里标注着:http://www.lewei50.com/dev/doc/155

 

 

 

 

 

服务器发送数据串给客户端

该方法主要用于控制类型设备,用于服务器发送一串指令,由客户端再具体解析执行。

客户端操作步骤:

 

1、连接tcp.lewei50.com 或者IP:42.121.128.216   端口号:9960

 

2、发送登录注册信息

{"method":"update","gatewayNo": "02","userkey":"6f289b7f11084520bd2aad8e425ee9b4"}&^!

 

完全复制上面的完整数据,红色部分替换成你网关的编号,绿色部分替换成你自己的userkey用户编号。

注意:发送后服务器不会有反馈响应。

 

每隔40秒(注)登录注册一次,以保持服务器与客户端的链接。

注:注册连接超过1分钟,服务器会断开链接。

 

3、服务器后台,点击“智能物联----控制命令管理”-添加执行命令”,点击测试

 

3、客户端收到服务器控制数据

{"method":"send","gatewayNo":"02","userkey":"6f289b7f11084520bd2aad8e425ee9b4","f":"updateSensor","p1":"123123"}&^!

客户端收到这个控制指令后,应向 TCP服务器做应答,如果不应答,服务器显示超时提示。

 

4、客户端应答:

{"method":"response","result":{"successful":true,"message":"Writeserial successful 0"}}&^!

 

 

5、服务器显示OK


6、如果客户端不应答,服务器显示


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值