|  | @@ -0,0 +1,157 @@
 | 
	
		
			
				|  |  | +<html>
 | 
	
		
			
				|  |  | +<meta charset="utf-8">
 | 
	
		
			
				|  |  | +<title>Coffee Loader Demo</title>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<!--
 | 
	
		
			
				|  |  | +<script src="mqttws31.min.js" type="text/javascript"></script>
 | 
	
		
			
				|  |  | +-->
 | 
	
		
			
				|  |  | +<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
 | 
	
		
			
				|  |  | +<style>
 | 
	
		
			
				|  |  | +button {
 | 
	
		
			
				|  |  | +            background-color: white;
 | 
	
		
			
				|  |  | +            border-radius:10px;
 | 
	
		
			
				|  |  | +            border: 3px solid lightgray;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +</style>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +// the URL or IP address of the MQTT server to connect to
 | 
	
		
			
				|  |  | +const mqtt_server = "60.250.156.234"
 | 
	
		
			
				|  |  | +// the port of the MQTT server to connect to
 | 
	
		
			
				|  |  | +const mqtt_port = 8080
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// the MQTT topic to publish to   9c:65:f9:1e:6c:68   b8:27:eb:84:e9:3f  b8:27:eb:f8:24:92   
 | 
	
		
			
				|  |  | +const mqtt_pub_topic = "AISKY/Coffee/MK-G/b8:27:eb:7e:24:78";
 | 
	
		
			
				|  |  | +// the MQTT topic to subscribe to   b8:27:eb:b4:59:3e b8:27:eb:7e:24:78
 | 
	
		
			
				|  |  | +const mqtt_sub_topic = "AISKY/Coffee/MK-G/b8:27:eb:7e:24:78/Log";
 | 
	
		
			
				|  |  | +var client = false;
 | 
	
		
			
				|  |  | +// the function to be executed when connected to the MQTT broker
 | 
	
		
			
				|  |  | +function onConnect() {
 | 
	
		
			
				|  |  | +    // once connected, start subscribing to the topic
 | 
	
		
			
				|  |  | +    console.log("onConnect: start subscribing to the topic");
 | 
	
		
			
				|  |  | +    client.subscribe(mqtt_sub_topic, { qos: Number(2) });
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// the function to be executed when the message is received
 | 
	
		
			
				|  |  | +function onMessageArrived(message) {
 | 
	
		
			
				|  |  | +    console.log("onMessageArrived:" + message.payloadString);
 | 
	
		
			
				|  |  | +    // display received messages on the webpage
 | 
	
		
			
				|  |  | +    document.getElementById("mqtt_monitor").innerText = message.payloadString;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function publish_message_otadownload() {
 | 
	
		
			
				|  |  | +    var url_text = document.getElementById("OTA_DOWNLOAD");
 | 
	
		
			
				|  |  | +    var payload = {
 | 
	
		
			
				|  |  | +        command: "a061",
 | 
	
		
			
				|  |  | +        url:"git clone "+url_text.value
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    var message = new Paho.MQTT.Message(JSON.stringify(payload));
 | 
	
		
			
				|  |  | +    message.destinationName = mqtt_pub_topic;
 | 
	
		
			
				|  |  | +    message.qos = Number(2);
 | 
	
		
			
				|  |  | +    client.send(message);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function publish_message_isp() {
 | 
	
		
			
				|  |  | +    var hex_text = document.getElementById("sensor").value;
 | 
	
		
			
				|  |  | +    var payload = {
 | 
	
		
			
				|  |  | +        command: "a063",
 | 
	
		
			
				|  |  | +        hex:hex_text+".hex",
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    var message = new Paho.MQTT.Message(JSON.stringify(payload));
 | 
	
		
			
				|  |  | +    message.destinationName = mqtt_pub_topic;
 | 
	
		
			
				|  |  | +    message.qos = Number(2);
 | 
	
		
			
				|  |  | +    client.send(message);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function publish_message_clear() {
 | 
	
		
			
				|  |  | +    var payload = {
 | 
	
		
			
				|  |  | +        command: "a064",
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    var message = new Paho.MQTT.Message(JSON.stringify(payload));
 | 
	
		
			
				|  |  | +    message.destinationName = mqtt_pub_topic;
 | 
	
		
			
				|  |  | +    message.qos = Number(2);
 | 
	
		
			
				|  |  | +    client.send(message);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//-------------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +function init() {
 | 
	
		
			
				|  |  | +    document.getElementById("mqtt_otadownload").addEventListener('click', publish_message_otadownload);
 | 
	
		
			
				|  |  | +    document.getElementById("mqtt_isp").addEventListener('click', publish_message_isp);
 | 
	
		
			
				|  |  | +    document.getElementById("mqtt_clear").addEventListener('click', publish_message_clear);
 | 
	
		
			
				|  |  | +    // assign the client ID for MQTT broker authentication, you can assign it on your own
 | 
	
		
			
				|  |  | +    var MQTT_CLIENT_ID = "iot_web_" + Math.floor((1 + Math.random()) * 0x10000000000).toString(16);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // create a MQTT client instance
 | 
	
		
			
				|  |  | +    // make sure the MQTT broker address and port number are correct
 | 
	
		
			
				|  |  | +    // the port number should be used for websocket, not other protocol
 | 
	
		
			
				|  |  | +    client = new Paho.MQTT.Client(mqtt_server, mqtt_port, '/ws', MQTT_CLIENT_ID);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // the public MQTT broker "iot.eclipse.org" can be used for testing
 | 
	
		
			
				|  |  | +    // client = new Paho.MQTT.Client("iot.eclipse.org", 80, '/ws', MQTT_CLIENT_ID);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // the function to be executed when the message is received
 | 
	
		
			
				|  |  | +    client.onMessageArrived = onMessageArrived;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // connect to the MQTT broker
 | 
	
		
			
				|  |  | +    client.connect({
 | 
	
		
			
				|  |  | +        // if you don't use user name and password, just remove these lines
 | 
	
		
			
				|  |  | +        userName: "aisky-server",
 | 
	
		
			
				|  |  | +        password: "aisky",
 | 
	
		
			
				|  |  | +        // the function to be executed when connected
 | 
	
		
			
				|  |  | +        onSuccess:onConnect
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +window.addEventListener('load', init, false);
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<body>
 | 
	
		
			
				|  |  | +<p><h2>
 | 
	
		
			
				|  |  | +Coffee Loader Demo
 | 
	
		
			
				|  |  | +</h2></p>
 | 
	
		
			
				|  |  | +<p>
 | 
	
		
			
				|  |  | +</p>
 | 
	
		
			
				|  |  | +<div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<input type="text" id="OTA_DOWNLOAD"/>
 | 
	
		
			
				|  |  | +<button id="mqtt_otadownload">燒錄檔案下載</button>
 | 
	
		
			
				|  |  | +<br><br>
 | 
	
		
			
				|  |  | +<form>
 | 
	
		
			
				|  |  | +<select id="sensor"style="font-size:20px">
 | 
	
		
			
				|  |  | + <option value="RELAY">RELAY</option>
 | 
	
		
			
				|  |  | + <option value="PH">PH</option>
 | 
	
		
			
				|  |  | + <option value="DO">DO</option>
 | 
	
		
			
				|  |  | + <option value="EC">EC</option>
 | 
	
		
			
				|  |  | +  <option value="LIDARS">LIDARS</option>
 | 
	
		
			
				|  |  | + <option value="ORP">ORP</option>
 | 
	
		
			
				|  |  | + <option value="SHT11">SHT11</option>
 | 
	
		
			
				|  |  | + <option value="SOIL">SOIL</option>
 | 
	
		
			
				|  |  | +  <option value="SONIC">SONIC</option>
 | 
	
		
			
				|  |  | + <option value="TEMP">TEMP</option>
 | 
	
		
			
				|  |  | + <option value="WATERLEVEL">WATERLEVEL</option>
 | 
	
		
			
				|  |  | +  <option value="PWM">PWM</option>
 | 
	
		
			
				|  |  | +  <option value="bmp280">BMP280</option>
 | 
	
		
			
				|  |  | +  <option value="servo">SERVO</option>
 | 
	
		
			
				|  |  | +  <option value="stepmotor">STEPMOTOR</option>
 | 
	
		
			
				|  |  | +  <option value="motorfeedback">MOTORFEEDBACK</option>
 | 
	
		
			
				|  |  | +  <option value="KIT0139">KIT0139</option>
 | 
	
		
			
				|  |  | +  ...
 | 
	
		
			
				|  |  | +</select>
 | 
	
		
			
				|  |  | +</form>
 | 
	
		
			
				|  |  | +<button id="mqtt_isp">燒錄</button>
 | 
	
		
			
				|  |  | +<br><br>
 | 
	
		
			
				|  |  | +<button id="mqtt_clear">清除</button>
 | 
	
		
			
				|  |  | +<br><br>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +</div><br>
 | 
	
		
			
				|  |  | +<div id="mqtt_monitor">
 | 
	
		
			
				|  |  | +</div>
 | 
	
		
			
				|  |  | +</body>
 | 
	
		
			
				|  |  | +</html>
 |