Added basic PIN to web interface, partially implemented back-end

This commit is contained in:
2026-06-03 17:55:26 +01:00
parent a13f73cb99
commit 739f3ec5b4
3 changed files with 8 additions and 3 deletions

2
app.py
View File

@ -60,11 +60,13 @@ def transmit():
action = ACTION_MAP[data['action']] action = ACTION_MAP[data['action']]
intensity = int(data.get('intensity', 0)) intensity = int(data.get('intensity', 0))
lucal = bool(data.get('lucalEncoded', False)) lucal = bool(data.get('lucalEncoded', False))
pin = int(data['shockerPin'])
# If any of those failed, return an error. # If any of those failed, return an error.
except (ValueError, KeyError): except (ValueError, KeyError):
return {'success': False, 'message': 'Request must contain the following keys:\n'+ return {'success': False, 'message': 'Request must contain the following keys:\n'+
'txID: int,\n'+ 'txID: int,\n'+
'channel: int,\n'+ 'channel: int,\n'+
'pin: int,\n'+
'action: "shock", "vibrate" or "beep",\n'+ 'action: "shock", "vibrate" or "beep",\n'+
'intensity (optional): int\n'+ 'intensity (optional): int\n'+
'lucalEncoded (optional): bool'}, 400 'lucalEncoded (optional): bool'}, 400

View File

@ -18,6 +18,8 @@
<input type="number" value="1" min="1" max="3" id="channelIDInput"> <input type="number" value="1" min="1" max="3" id="channelIDInput">
<h2>LucalEncoded?</h2> <h2>LucalEncoded?</h2>
<input type="checkbox" id="lucalEncodedInput"> <input type="checkbox" id="lucalEncodedInput">
<h2>PIN</h2>
<input type="number" id="shockerPinInput">
<h2>Shock</h2> <h2>Shock</h2>
<input type="range" min="0" max="99" value="0" id="shockIntensity" oninput="document.getElementById('sliderValueFirst').value = this.value" class="sliderInput"> <input type="range" min="0" max="99" value="0" id="shockIntensity" oninput="document.getElementById('sliderValueFirst').value = this.value" class="sliderInput">
<br> <br>

View File

@ -24,13 +24,13 @@ function assert(condition, message) {
} }
} }
async function transmit(transmitterID, channel, action, intensity=0, lucalEncoded=false) { async function transmit(transmitterID, channel, action, intensity=0, lucalEncoded=false, shockerPin) {
assert(typeof transmitterID === 'number'); assert(typeof transmitterID === 'number');
assert(typeof channel === 'number'); assert(typeof channel === 'number');
assert(['shock', 'vibrate', 'beep'].includes(action)); assert(['shock', 'vibrate', 'beep'].includes(action));
assert(typeof intensity === 'number'); assert(typeof intensity === 'number');
assert(typeof lucalEncoded === 'boolean'); assert(typeof lucalEncoded === 'boolean');
POST('/transmit', {transmitterID: transmitterID, channel: channel, action: action, intensity: intensity, lucalEncoded: lucalEncoded}); POST('/transmit', {transmitterID: transmitterID, channel: channel, action: action, intensity: intensity, lucalEncoded: lucalEncoded, shockerPin: shockerPin});
} }
@ -39,7 +39,8 @@ async function txFromUI(action, intensity=0) {
let transmitterID = Number(document.getElementById('transmitterIDInput').value); let transmitterID = Number(document.getElementById('transmitterIDInput').value);
let channel = Number(document.getElementById('channelIDInput').value); let channel = Number(document.getElementById('channelIDInput').value);
let lucalEncoded = document.getElementById('lucalEncodedInput').checked; let lucalEncoded = document.getElementById('lucalEncodedInput').checked;
transmit(transmitterID, channel, action, intensity, lucalEncoded); let shockerPin = document.getElementById('shockerPinInput').value;
transmit(transmitterID, channel, action, intensity, lucalEncoded, shockerPin);
} }
async function shock() { async function shock() {