Permobil Remote

BLE Button Controller

Status: Disconnected

(function() { const SERVICE_UUID = ‘4fafc201-1fb5-459e-8fcc-c5c9c331914b’; const CHARACTERISTIC_UUID = ‘beb5483e-36e1-4688-b7f5-ea07361b26a8’; let bleDevice = null; let bleCharacteristic = null; window.addEventListener(‘DOMContentLoaded’, () => { const connectBtn = document.getElementById(‘connectBle’); const statusText = document.getElementById(‘status’); const controlsDiv = document.getElementById(‘controls’); const btnUp = document.getElementById(‘btnUp’); const btnDown = document.getElementById(‘btnDown’); if (!connectBtn) return; connectBtn.addEventListener(‘click’, async () => { if (bleDevice && bleDevice.gatt.connected) { bleDevice.gatt.disconnect(); return; } try { statusText.innerText = “Status: Requesting Bluetooth device…”; bleDevice = await navigator.bluetooth.requestDevice({ filters: [{ services: [SERVICE_UUID] }] }); statusText.innerText = “Status: Connecting to GATT Server…”; const server = await bleDevice.gatt.connect(); statusText.innerText = “Status: Getting Service…”; const service = await server.getPrimaryService(SERVICE_UUID); statusText.innerText = “Status: Getting Characteristic…”; bleCharacteristic = await service.getCharacteristic(CHARACTERISTIC_UUID); statusText.innerText = “Status: Connected!”; connectBtn.style.backgroundColor = ‘#dc3545’; connectBtn.innerText = ‘Disconnect’; controlsDiv.style.display = ‘block’; bleDevice.addEventListener(‘gattserverdisconnected’, onDisconnected); } catch (error) { console.error(‘Connection failed:’, error); statusText.innerText = `Status: Error – ${error.message}`; } }); async function sendBleData(dataString) { if (!bleCharacteristic) return; try { const encoder = new TextEncoder(); const dataBuffer = encoder.encode(dataString); await bleCharacteristic.writeValue(dataBuffer); console.log(‘Sent: ‘ + dataString); } catch (error) { console.error(‘Transmission failed:’, error); } } btnUp.addEventListener(‘click’, () => sendBleData(‘A’)); btnDown.addEventListener(‘click’, () => sendBleData(‘B’)); function onDisconnected() { statusText.innerText = “Status: Disconnected”; connectBtn.style.backgroundColor = ‘#28a745’; connectBtn.innerText = ‘Connect to BLE Device’; controlsDiv.style.display = ‘none’; bleCharacteristic = null; } }); })();