# L9110s遠隔化答え ## CodeSandBox HTML ```html <!doctype html> <html> <head> <meta charset="utf-8" /> </head> <script type="module" src="pc.js"></script> <body> <h3 id="deviceTitle">Remote Example - Controller</h3> <input type="button" onclick="OnLED_A()" value="LED A ON"></input> <input type="button" onclick="OnLED_B()" value="LED B ON"></input> <input type="button" onclick="OffLED()" value="LED A, B OFF"></input> <div id="messageDiv" ></div> </body> </html> ``` JavaScript ```javascript import { RelayServer } from "https://chirimen.org/remote-connection/js/beta/RelayServer.js"; window.OnLED_A = OnLED_A; window.OnLED_B = OnLED_B; window.OffLED = OffLED; var channel; onload = async function () { // webSocketリレーの初期化 var relay = RelayServer("chirimentest", "chirimenSocket"); channel = await relay.subscribe("chirimenLED"); messageDiv.innerText = "web socketリレーサービスに接続しました"; channel.onmessage = getMessage; }; function getMessage(msg) { // メッセージを受信したときに起動する関数 messageDiv.innerText = msg.data; } function OnLED_A() { console.log("OnLED_A()"); channel.send("LED_A ON"); } function OnLED_B() { console.log("OnLED_B()"); channel.send("LED_B ON"); } function OffLED() { console.log("OffLED()"); channel.send("LED OFF"); } ``` ## ラズパイ Node.js ```javascript import { requestGPIOAccess } from "./node_modules/node-web-gpio/dist/index.js"; import nodeWebSocketLib from "websocket"; // https://www.npmjs.com/package/websocket import { RelayServer } from "./RelayServer.js"; var channel; let portA1A; let portA1B; const A1A = 20; const A1B = 26; const LOW = 0; const HIGH = 1; const led = async (char, portA, portB) => { if (char === "R") { await portA.write(LOW); await portB.write(HIGH); } else if (char == "L") { await portA.write(HIGH); await portB.write(LOW); } else { await portA.write(LOW); await portB.write(LOW); } }; async function connect() { const gpioAccess = await requestGPIOAccess(); portA1A = await gpioAccess.ports.get(A1A); portA1B = await gpioAccess.ports.get(A1B); await portA1A.export("out"); await portA1B.export("out"); // webSocketリレーの初期化 var relay = RelayServer("chirimentest", "chirimenSocket", nodeWebSocketLib, "https://chirimen.org"); channel = await relay.subscribe("chirimenLED"); console.log("web socketリレーサービスに接続しました"); channel.onmessage = controlLED; } async function controlLED(message) { const text = message.data if (text === "LED_A ON") { await led("R", portA1A, portA1B); console.log("LED A ON"); channel.send("LED A をオンにしました"); } else if (text === "LED_B ON") { await led("L", portA1A, portA1B); console.log("LED B ON"); channel.send("LED B をオンにしました"); } else if (text == "LED OFF") { await led("OFF", portA1A, portA1B) console.log("LED A, B OFF"); channel.send("LED A, Bをオフにしました"); } else { throw Error("不正なメッセージ") } } connect(); ```