<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
  <script src="https://unpkg.com/obniz@2.2.0/obniz.js" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js"></script>
  <script>
  	// Change this to your generated service UUID
	var userServiceUUID = "91E4E176-D0B9-464D-9fE4-52EE3E9F1552";
	// Change this to your Obniz ID
	var obniz = new Obniz("YOUR_OBNIZ_ID_HERE");

	var psdiServiceUUID = "E625601E-9E55-4597-A598-76018A0D293D";
	var psdiCharacteristicUUID = "26E2B12B-85F0-4F3F-9FDD-91D114270E6E";
	var notifyCharacteristicUUID = "62FBD229-6EDD-4D1A-B554-5C4E1BB29169";
	var writeCharacteristicUUID = "E9062E71-9E62-4BC6-B0D3-35CDCD9B027B";

	var customDeviceName = "LINE Things Starter Obniz"

	obniz.onconnect = async function () {
	  obniz.display.clear();
	  obniz.display.print("Obniz Ready");

	  obniz.ble.security.setAuth(['bonding']);
	  obniz.ble.security.setModeLevel(1, 2);

	  obniz.ble.security.onerror = function() {
	    console.error('security set params error');
	    obniz.reboot();
	  };
	  var enc = new TextEncoder();
	  var psdiCharacteristic = new obniz.ble.characteristic({
	    "uuid" : psdiCharacteristicUUID,
	    "properties" : ["read"],
	    "text" : sha256(obniz.id)
	  });

	  var notifyCharacteristic = new obniz.ble.characteristic({
	    "uuid" : notifyCharacteristicUUID,
	    "properties" : ["notify"],
	    "data" : [0x00],
	    "descriptors" : [{
	      "uuid" : "2902",
	      "data" : [0x00, 0x00]
	    }]
	  });

	  var writeCharacteristic = new obniz.ble.characteristic({
	    "uuid" : writeCharacteristicUUID,
	    "properties" : ["write"],
	    "data" : [0x00]
	  });

	  var psdiService = new obniz.ble.service({
	    "uuid" : psdiServiceUUID,
	    "characteristics" : [psdiCharacteristic]
	  });
	  obniz.ble.peripheral.addService(psdiService);

	  var userService = new obniz.ble.service({
	    "uuid" : userServiceUUID,
	    "characteristics" : [notifyCharacteristic, writeCharacteristic]
	  });
	  obniz.ble.peripheral.addService(userService); 

	  obniz.ble.advertisement.setAdvData(userService.advData);
	  obniz.ble.advertisement.setScanRespData({
	    localName : customDeviceName
	  });
	  obniz.ble.advertisement.start();

	  writeCharacteristic.onwritefromremote = function(address, newvalue) {
	    if (newvalue[0] <= 1 ) {
	      obniz.display.clear();
	      newvalue[0]==1 ? obniz.display.print("ON") : obniz.display.print("OFF");
	    }
	    console.log("remote address :", address);
	    console.log("remote data :", newvalue);
	  }

	  obniz.switch.onchange = async function(state) {
	    if (state === "push") {
	      await notifyCharacteristic.writeWait([1]);
	      notifyCharacteristic.notify();
	    } else if (state === "none") {
	      await notifyCharacteristic.writeWait([0]);
	      notifyCharacteristic.notify();
	    }
	  }
	}	
  </script>
</head>
<body>

<div id="obniz-debug"></div>
<h1>LINE Things Starter</h1>

</body>
</html>