mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 01:21:20 -04:00
add some automation to pi side
This commit is contained in:
@@ -4,6 +4,7 @@ const roverSelect = document.getElementById('roverSelect');
|
||||
const sensorToggleBtn = document.getElementById('sensorToggle');
|
||||
const motorsStopBtn = document.getElementById('motorsStop');
|
||||
const sensorOutput = document.getElementById('sensorOutput');
|
||||
const alertsEl = document.getElementById('alerts');
|
||||
const mediaRestartBtn = document.getElementById('mediaRestart');
|
||||
let selectedRover = null;
|
||||
let sensorEnabled = false;
|
||||
@@ -53,6 +54,24 @@ socket.on('commandAck', ({ roverId, status, error }) => {
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('roverEvent', ({ roverId, event, ts, data }) => {
|
||||
if (!alertsEl) return;
|
||||
const div = document.createElement('div');
|
||||
div.className = 'alert';
|
||||
const when = ts ? new Date(ts).toLocaleTimeString() : new Date().toLocaleTimeString();
|
||||
const details = data && data.error ? ` (${data.error})` : '';
|
||||
div.textContent = `[${when}] ${roverId}: ${event}${details}`;
|
||||
alertsEl.prepend(div);
|
||||
while (alertsEl.children.length > 5) {
|
||||
alertsEl.removeChild(alertsEl.lastChild);
|
||||
}
|
||||
setTimeout(() => {
|
||||
if (div.parentElement === alertsEl) {
|
||||
alertsEl.removeChild(div);
|
||||
}
|
||||
}, 15000);
|
||||
});
|
||||
|
||||
roverSelect.addEventListener('change', (e) => {
|
||||
selectedRover = e.target.value;
|
||||
});
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
#sensorOutput { font-family: monospace; height: 320px; overflow: auto; border: 1px solid #999; padding: 8px; }
|
||||
button { margin: 4px; }
|
||||
.row { margin-bottom: 8px; }
|
||||
#alerts { margin-top: 12px; max-width: 600px; }
|
||||
.alert { background: #fff1d2; border: 1px solid #f0b651; padding: 6px 8px; margin-bottom: 6px; font-size: 0.9rem; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -38,6 +40,7 @@
|
||||
<h3>Sensor Frames</h3>
|
||||
<pre id="sensorOutput"></pre>
|
||||
<p>Use WASD keys to drive the selected rover. Shift increases speed.</p>
|
||||
<div id="alerts"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/socket.io/socket.io.js"></script>
|
||||
|
||||
@@ -73,6 +73,17 @@ function handleRoverConnection(ws) {
|
||||
io.emit('commandAck', { roverId: pending.roverId, id: msg.id, status: msg.status, error: msg.error });
|
||||
}
|
||||
break;
|
||||
case 'event':
|
||||
if (!roverId) {
|
||||
return;
|
||||
}
|
||||
io.emit('roverEvent', {
|
||||
roverId,
|
||||
event: msg.event,
|
||||
ts: msg.ts || Date.now(),
|
||||
data: msg.data || {},
|
||||
});
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user