MQTT,ESP8266以随机方式运行

时间:2017-04-11 19:06:43

标签: javascript mqtt arduino-esp8266

我一直在开发家庭自动化系统 情形:

ESP8266向Rasp pi MQTT服务器发送保持活动

使用IBM实用程序javascript Paho客户端在Chrome上的网页

ESP每10秒发送一次,并显示收到包含接收时间的消息时,这证明服务器正在按时发送消息。

网页(也有计时器)显示收到消息的时间

在网页上以随机的方式接收消息,我的意思是没有消息很长时间到达,然后同时到达所有消息 从esp我可以看到发布时收到的消息。网页代码似乎有问题 我只是想知道是否有人以前见过这个并且可以指出我正确的方向,我的代码如下:

提前谢谢 戴夫



/*
Original Copyright (c) 2015 IBM Corp.
Eclipse Paho MQTT-JS Utility
This utility can be used to test MQTT brokers
its been bent by me to fit my needs
*/

// global variables
	var MyLib = {};			// space for my bits
	MyLib.theMessage	= "";			// received message
	MyLib.theTopic		= "";			// received topic
	MyLib.clientId		= 'webRunpage2' + (Math.random() * 10);
	MyLib.connected		= false;
	MyLib.ticker		= setInterval(function(){MyLib.tickTime ++;}, 1000);	// 5secs 
	MyLib.tickTime		= 0;
	MyLib.aliveTimer	= setInterval(function(){keepMeAlive()}, 90000);	// 1.5 mins
//=============================================================
function keepMeAlive() {
	var topic='webpage', message='KeepAlive';
	publish(topic, 1, message, false);	// keeps the conection open
	console.info("Alive Time: ", MyLib.tickTime);
}
//=============================================================
function onMessageArrived(message) {
	MyLib.theTopic = message.destinationName; 	MyLib.theMessage = message.payloadString;
	var topic = MyLib.theTopic;		
	var messg = MyLib.theMessage;
	var id = messg.substring(0,6); 
	console.log('Message Recieved: Topic: ', message.destinationName, "Time ", MyLib.tickTime);
}
//=============================================================
function onFail(context) {
  console.log("Failed to connect");
  MyLib.connected = false;
}
//=============================================================
function connectionToggle(){
  if(MyLib.connected){ disconnect();
  } else { connect(); }
}
//=============================================================
function onConnect(context) {
  // Once a connection has been made
	console.log("Client Connected");
	document.getElementById("status").value = "Connected";
	MyLib.connected = true;
	client.subscribe('LIGHTS/#');  // subscribe to all 'LIGHTS' members
}
//=================================================
	// called when the client loses its connection
	function onConnectionLost() {
		console.log("Connection Lost: ");
		document.getElementById("status").value = "Connection Lost";
		MyLib.connected = false;
		connectionToggle();
	}
//=============================================================
function connect(){
    var hostname = "192.168.1.19";
    var port = 1884;
    var clientId = MyLib.clientId;
    var path = "/ws";
    var user = "dave";
    var pass = "vineyard01";
    var keepAlive = 120;			// 2 mins stay alive
    var timeout = 3;
    var ssl = false;
    var cleanSession = true;		//*******************
    var lastWillTopic = "lastwill";
    var lastWillQos = 0;
    var lastWillRetain = false;
    var lastWillMessage = "its Broken";

    if(path.length > 0){
      client = new Paho.MQTT.Client(hostname, Number(port), path, clientId);
    } else {
      client = new Paho.MQTT.Client(hostname, Number(port), clientId);
    }
   // console.info('Connecting to Server: Hostname: ', hostname, '. Port: ', port, '. Path: ', client.path, '. Client ID: ', clientId);
    // set callback handlers
    client.onConnectionLost = onConnectionLost;
    client.onMessageArrived = onMessageArrived;
    var options = {
      invocationContext: {host : hostname, port: port, path: client.path, clientId: clientId},
      timeout: timeout,
      keepAliveInterval:keepAlive,
      cleanSession: cleanSession,
      useSSL: ssl,
      onSuccess: onConnect,
      onFailure: onFail
    };
    if(user.length > 0){ options.userName = user; }
    if(pass.length > 0){ options.password = pass; }

    if(lastWillTopic.length > 0){
      var lastWillMessage = new Paho.MQTT.Message(lastWillMessage);
      lastWillMessage.destinationName = lastWillTopic;
      lastWillMessage.qos = lastWillQos;
      lastWillMessage.retained = lastWillRetain;
      options.willMessage = lastWillMessage;
    }

    // connect the client
    client.connect(options);
}
//=============================================================
function disconnect(){
   // console.info('Disconnecting from Server');
    client.disconnect();
    MyLib.connected = false;
}
//=============================================================
function publish(topic, qos, message, retain){
//	console.info('Publishing Message: Topic: ', topic, '. QoS: ' + qos + '. Message: ', message, '. Retain: ', retain);
    message = new Paho.MQTT.Message(message);
    message.destinationName = topic;
    message.qos = Number(qos);
    message.retained = retain;
    client.send(message);
}
//=============================================================
function subscribe(topic){
    var qos = 1;
    client.subscribe(topic, {qos: Number(qos)});
}
//=============================================================
// left next 4 functions but not used
function unsubscribe(topic){
    client.unsubscribe(topic, {
         onSuccess: unsubscribeSuccess,
         onFailure: unsubscribeFailure,
         invocationContext: {topic : topic}
     });
}
//=============================================================
function unsubscribeSuccess(context){
 //   console.info('Successfully unsubscribed from ', context.invocationContext.topic);
}
//=============================================================
function unsubscribeFailure(context){
//    console.info('Failed to  unsubscribe from ', context.invocationContext.topic);
}

//=============================================================
// Just in case someone sends html
function safe_tags_regex(str) {
   return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
//=============================================================
&#13;
&#13;
&#13;

0 个答案:

没有答案