关于长连接的协议方式MQTT

协议名称
MQTT

远程控制水肥机项目

//选中订阅主题 w2320308267 waterFertilizer
var selectedTopics = [‘waterFertilizer’];

    //选中发布主题
    var currentTopic='waterFertilizer';

    //客户端选项
    var option = {
        "ServerUri": "39.98.155.166",
        "ServerPort": 8083,
        "UserName": "zzokq",
        "Password": "123456",
        "ClientId": "",
        "TimeOut": 5,
        "KeepAlive": 100,
        "CleanSession": false,
        "SSL":false
    }

    //客户端
    var client;
    var Afeisu,Bfeisu,Cfeisu,Dfeisu,suanLiu;
	
	option.ClientId = guid();

            client = new Paho.Client(option.ServerUri, option.ServerPort, option.ClientId)

            client.onConnectionLost = onConnectionLost;
            client.onMessageArrived = onMessageArrived;

            client.connect({
                invocationContext: {
                    host: option.ServerUri,//IP地址
                    port: option.ServerPort,//端口号
                    path: client.path,
                    clientId: option.ClientId//标识
                },
                timeout: option.TimeOut,//连接超时时间
                keepAliveInterval: option.KeepAlive,//心跳间隔
                cleanSession: option.CleanSession,//是否清理Session
                useSSL: option.SSL,//是否启用SSL
                userName: option.UserName,  //用户名
                password: option.Password,  //密码
                onSuccess: onConnect,//连接成功回调事件
                onFailure: onError//连接失败回调事件
            });

// var msg = “”;
// for(var i in selectedTopics){
// var t = selectedTopics[i];
// console.log(t.Topic)
// client.subscribe(t.Topic);
// msg+=t.Topic+“;”
// }
// WriteToStatus(“成功订阅主题:” + msg);

// setTimeout(function(){
// client.subscribe(‘waterFertilizer’);
// WriteToStatus(“成功订阅主题:” );
// },100)

	//连接成功事件
    function onConnect() {
        WriteToStatus("连接成功!")
        client.subscribe('waterFertilizer');
        WriteToStatus("成功订阅主题:水肥机主题" );
        client.subscribe('meteorology');
        WriteToStatus("成功订阅主题:环境监测主题" );
        enable($("#btnConnect"), false);
        enable($("#btnDisconnect"), true);
        enable($("#btnPublish"), true);
        enable($("#btnSubscribe"), true);
    }
    //连接失败事件
    function onError(e) {
        WriteToStatus("连接失败:" + e)

        enable($("#btnConnect"), true);
        enable($("#btnDisconnect"), false);
        enable($("#btnPublish"), false);
        enable($("#btnSubscribe"), false);
    }
    //连接断开事件
    function onConnectionLost(e) {
        if (e.errorCode !== 0) {
            WriteToStatus("连接异常断开:" + e.errorMessage);
            enable($("#btnConnect"), true);
            enable($("#btnDisconnect"), false);
            enable($("#btnPublish"), false);
            enable($("#btnSubscribe"), false);
        }
    }
    //接收消息事件
    function onMessageArrived(data) { //jinbang  dianchifaA shuifeiji chubeng dianchifaB
    	console.log(data.payloadString)
    	var returnData= JSON.parse(data.payloadString);
    	console.log(returnData)
    	
    	if(returnData.se){
    	
    	for (i = 0; i < returnData.se.length; i++) { 
		    console.log(returnData.se[i])

// if(returnData.se[i].ch==“电磁阀1”){
// console.log(returnData.se[i].val)
// if(returnData.se[i].val==“1”){
// console.log(“电磁阀1 “)
// $(”#dianchifaA”).lcs_on();
// }else{
// $(“#dianchifaA”).lcs_off();
// }
// }
// if(returnData.se[i].ch==“电磁阀2”){
// if(returnData.se[i].val==“1”){
// $(“#dianchifaB”).lcs_on(); $(“#dianchifaB”).lcs_off();
// }else{
// $(“#dianchifaB”).lcs_off();
// }
// }
//
// if(returnData.se[i].ch==“进水泵”){
// if(returnData.se[i].val==“1”){
// $(“#jinbang”).lcs_on();
// }else{
// $(“#jinbang”).lcs_off();
// }
// }
//
// if(returnData.se[i].ch==“施肥泵”){
// console.log(returnData.se[i].val)
// if(returnData.se[i].val==“1”){
// $(“#chubeng”).lcs_on();
// }else{
// $(“#chubeng”).lcs_off();
// }
// }

		    if(returnData.se[i].ch=="酸流速"){
		    	console.log(returnData.se[i].val)
		    	suanLiu=returnData.se[i].val
		    }
		    
		    if(returnData.se[i].ch=="B肥速"){
		    	console.log(returnData.se[i].val)
		    	Bfeisu=returnData.se[i].val
		    }
		    
		    if(returnData.se[i].ch=="C肥速"){
		    	console.log(returnData.se[i].val)
		    	Cfeisu=returnData.se[i].val
		    }
		    
		    if(returnData.se[i].ch=="D肥速"){
		    	console.log(returnData.se[i].val)
		    	Dfeisu=returnData.se[i].val
		    }
		    
		    if(returnData.se[i].ch=="A肥速"){
		    	console.log(returnData.se[i].val)
		    	Afeisu=returnData.se[i].val
		    }
		    
		    if(returnData.se[i].ch=="PH值"){
		    	console.log(returnData.se[i].val)

// suanLiu=returnData.se[i].val
}

		    if(returnData.se[i].ch=="EC电导率"){
		    	console.log(returnData.se[i].val)
		    }
		    
		    if(returnData.se[i].ch=="A肥用量"){
		    	console.log(returnData.se[i].val)
		    }
		    
		    if(returnData.se[i].ch=="B肥用量"){
		    	console.log(returnData.se[i].val)
		    }
		    
		    if(returnData.se[i].ch=="C肥用量"){
		    	console.log(returnData.se[i].val)
		    }
		    
		    if(returnData.se[i].ch=="D肥用量"){
		    	console.log(returnData.se[i].val)
		    }
		    
		    if(returnData.se[i].ch=="总肥量"){
		    	console.log(returnData.se[i].val)
		    }

// if(returnData.se[i].ch==“水肥机”){
// console.log(returnData.se[i].val)
// if(returnData.se[i].val==“1”){
// $(“#shuifeiji”).lcs_on();
// }else{
// $(“#shuifeiji”).lcs_off();
// }
// }

		 }
    }else if(returnData.environments){
    	console.log(returnData)
    	for (i = 0; i < returnData.environments.length; i++) { 
    		console.log(returnData.environments[i])
    		
    		
    		if(returnData.environments[i].name=="大气压"){
		    	console.log(returnData.environments[i].value)
		    	$("#daqiya").text(returnData.environments[i].value)
		    }
    		if(returnData.environments[i].name=="土壤温度"){
		    	console.log(returnData.environments[i].value)
		    	$("#trwd").text(returnData.environments[i].value)
		    }
    		if(returnData.environments[i].name=="土壤水分"){
		    	console.log(returnData.environments[i].value)
		    	$("#trsd").text(returnData.environments[i].value)
		    }
    		if(returnData.environments[i].name=="土壤PH"){
		    	console.log(returnData.environments[i].value)
		    	$("#PH").text(returnData.environments[i].value)
		    }
    		
    		if(returnData.environments[i].name=="空气溫度"){ //kqwd trwd daqiya kqwd trsd PH
		    	console.log(returnData.environments[i].value)
		    	$("#kqwd").text(returnData.environments[i].value)
		    }
    		if(returnData.environments[i].name=="空气湿度"){
		    	console.log(returnData.environments[i].value)
		    	$("#kqsd").text(returnData.environments[i].value)
		    }
    		
    		
    	}
    }
    	
    	var Ydata = [Afeisu,Bfeisu,Cfeisu,Dfeisu,suanLiu]
    	tongjiTu(Ydata);
    	
    	
    }

// var checkfun = function (val, checked) {
// var checkNode = $(“[name=dept][value=”+val+“]”)
// checked ? checkNode.lcs_on() : checkNode.lcs_off();
// }

	//生成GUID
    function guid() {
        function S4() {
            return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
        }
        return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
    }
	
	//切换按钮状态
    function enable(button,enabled) {
        if (enabled) {
            button.removeAttr("disabled");
        }
        else {

            button.attr("disabled", "disabled");
        }
    }
	
	//状态输出
    function WriteToStatus(data) {
        console.log(data)
    }
	

	
$(document).ready(function(e) {
	$('input').lc_switch();
	// triggered each time a field changes status
	$('body').delegate('.lcs_check', 'lcs-statuschange', function() {
		var status = ($(this).is(':checked')) ? 'checked' : 'unchecked';
		console.log('field changed status: '+ status );
		console.log(this.id)
		
		if(this.id=="jinbang"){
			if(status=="checked"){
					var datae = {
					"cmd": "relayctrl",
					"seq": 20,
					"src": "SERVER",
					"tar": "okqsfj",
				    "param":{
				         "ch": 4,
				        "port": 4,
				        "st": "OPEN"
				    }
				};
				ajaxTyy(datae)
			}else{
				var data = {
					"cmd": "relayctrl",
					"seq": 20,
					"src": "SERVER",
					"tar": "okqsfj",
				    "param":{
				         "ch": 4,
				        "port": 4,
				        "st": "CLOSE"
				    }
				}
				ajaxTyy(data)
			}
		}
		if(this.id=="dianchifaA"){
			if(status=="checked"){
				var data = {
					"cmd": "relayctrl",
					"seq": 20,
					"src": "SERVER",
					"tar": "okqsfj",
				    "param":{
				         "ch": 2004,
				        "port": 4,
				        "st": "OPEN"
				    }
				}
				ajaxTyy(data)
			}else{
				var data = {
				"cmd": "relayctrl",
				"seq": 20,
				"src": "SERVER",
				"tar": "okqsfj",
			    "param":{
			         "ch": 2004,
			        "port": 4,
			        "st": "CLOSE"
			    }
			}
				ajaxTyy(data)
			}
		}
		if(this.id=="shuifeiji"){
			if(status=="checked"){
				var data = {
				"cmd": "relayctrl",
				"seq": 20,
				"src": "SERVER",
				"tar": "okqsfj",
			    "param":{
			         "ch": 11111,
			        "port": 11111,
			        "st": "OPEN"
			    }
			}
				ajaxTyy(data)
				$("#jinbang").lcs_on(); 
				$("#chubeng").lcs_on(); 
				
			}else{
				var data = {
				"cmd": "relayctrl",
				"seq": 20,
				"src": "SERVER",
				"tar": "okqsfj",
			    "param":{
			         "ch": 11111,
			        "port": 11111,
			        "st": "CLOSE"
			    }
			    
			}
				ajaxTyy(data)
				$("#jinbang").lcs_off();
				$("#chubeng").lcs_off();
			}
		}
		if(this.id=="chubeng"){
			if(status=="checked"){
				var data = {
					"cmd": "relayctrl",
					"seq": 20,
					"src": "SERVER",
					"tar": "okqsfj",
				    "param":{
				         "ch": 1004,
				        "port": 4,
				        "st": "OPEN"
				    }
				}
				ajaxTyy(data)
			}else{
				var data = {
					"cmd": "relayctrl",
					"seq": 20,
					"src": "SERVER",
					"tar": "okqsfj",
				    "param":{
				         "ch": 1004,
				        "port": 4,
				        "st": "CLOSE"
				    }
				}
				ajaxTyy(data)
			}
		}
		if(this.id=="dianchifaB"){
			if(status=="checked"){
				var data = {
				"cmd": "relayctrl",
				"seq": 20,
				"src": "SERVER",
				"tar": "okqsfj",
			    "param":{
			         "ch": 3004,
			        "port": 4,
			        "st": "OPEN"
			    }
			}
				ajaxTyy(data)
			}else{
				var data = {
				"cmd": "relayctrl",
				"seq": 20,
				"src": "SERVER",
				"tar": "okqsfj",
			    "param":{
			         "ch": 3004,
			        "port": 4,
			        "st": "CLOSE"
			    }
			}
				ajaxTyy(data)
			}
		}
		
		
		
	});

	// triggered each time a field is checked
	$('body').delegate('.lcs_check', 'lcs-on', function() {
		console.log('field is checked');
	});
	
	
	// triggered each time a is unchecked
	$('body').delegate('.lcs_check', 'lcs-off', function() {
		console.log('field is unchecked');
	});
});



function ajaxTyy(datar){
$.ajax({
        url:"http:///waterfertilizer/commandTheme",//此处换成你的服务端地址
        type:'post',
        contentType: 'application/json;charset=UTF-8',
        data: JSON.stringify(datar),
        dataType: "json",
        success:function(datac){
        	console.log(datac)
        },
        error:function (err) {
  alert('500网站后台出错了');
        }
    });
}


function tongjiTu(Ydata){
	   //月运单量统计图
var myChart1 = echarts.init(document.getElementById('myChart1'));
var option1 = {

	tooltip: {
		trigger: 'item',  
        formatter: function(params) {  
            var res = ''+params.name+'流速为:'+params.data; 
            return res;  
        }  
	},
	grid: {
		top: '5%',
		left: '0%',
        width: '100%',
        height: '95%',
        containLabel: true
    },
	xAxis: {
		data: ['A肥速','B肥速','C肥速','D肥速','酸流速'],
		axisLabel: {
            show: true,
            textStyle: {
                fontSize: 17,
                color: '#fff',
            }
       	},
       	axisLine:{  
            lineStyle:{  
                color:'#fff',  
                width:1, 
            }  
        }  
	},

	yAxis: {
		axisLabel: {
            show: true,
            textStyle: {
                fontSize: 23,
                color: '#fff',
            }
       	},
       	axisLine:{  
            lineStyle:{  
                color:'#fff',  
                width:1, 
            }  
        },
        splitLine:{  
            show:false,
		}  
	},

	series :{
		name: '',
		type: 'bar',
		barWidth : 25,
		data: Ydata,
		itemStyle: {
            normal: {
            	barBorderRadius:[5, 5, 5, 5],
                color: new echarts.graphic.LinearGradient(
                    0, 0, 0, 1,
                    [
                        {offset: 0, color: '#3876cd'},
                        {offset: 0.5, color: '#45b4e7'},
                        {offset: 1, color: '#54ffff'}
                    ]
                ),
            },
        },
	},
}
  myChart1.setOption(option1);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,常用于物联网设备之间的通信。它通过建立连接实现高效的数据传输。 MQTT采用的是发布-订阅模式,其中有一个MQTT服务器(broker)负责接收和转发消息。设备通过发布者(publisher)将消息发送到服务器,服务器再将消息转发给订阅者(subscriber)。这种方式可以实现一对多的消息传输,方便设备间的通信和数据交换。 MQTT连接与传统的短连接有所不同。传统的短连接方式每次数据交互后会主动断开连接,下次需要再次建立连接。而MQTT连接则保持连接状态,设备在需要发送消息时不再重复建立和断开连接,而是始终保持连接状态。这样可以大大减少建立连接的开销,提高数据传输的效率。 通过使用连接MQTT可以在设备和服务器之间建立稳定的通信通道,反复传输不同的消息,并且能够实时感知设备状态的变化。例如,IoT设备可以实时上传传感器数据,或者接收服务器发送的控制指令。同时,在不同网络环境下,连接也具有良好的适应性,可以保证设备与服务器之间的持久连接。 总之,MQTT连接机制可以提高通信效率,减少建立连接的开销,并保持设备与服务器之间的稳定和持续通信。这种特性使得MQTT成为物联网设备通信的一种理想选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值