AdventureControl ermöglicht es Anwendern, über das Stift-Icon (✏️) im Menü oder direkt
über die Seite "/custom_editor" eigene HTML-Seiten zu erstellen.
Diese Seiten können GPIO-Pins schalten, Servos bewegen oder Statusinformationen anzeigen.
Diese Anleitung zeigt Schritt für Schritt, wie eine eigene Seite aufgebaut ist und wie die verfügbaren API-Routen verwendet werden.
Jede Seite muss mit folgendem Block beginnen:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title id="title">AdventureControl</title> <link rel="icon" type="image/png" href="/icon-192.png"> <link rel="stylesheet" href="/style.css"> <style> </style> </head> <body> <div id="menu_header"></div> <h2 id="header">Meine Seite</h2>
Und mit diesem Block enden:
<div style="margin-top:10px;" id="registration_div"></div> <script src="load_header.js"></script> </body> </html>
AdventureControl stellt eine einfache Route bereit, um Pins zu schalten:
/toggle?pin=PINNUMMER&state=0|1
state=1 → Pin einschaltenstate=0 → Pin ausschaltenstate wird der Pin getoggeltfetch('/toggle?pin=4&state=1');
fetch('/toggle?pin=4&state=0');
function setPin(pin, state) {
fetch('/toggle?pin=' + pin + '&state=' + (state ? 1 : 0));
}
AdventureControl bietet zwei Routen:
/all_on
/all_off
Diese schalten ausschließlich Output-Pins (Servo-Pins werden ignoriert).
<button onclick="fetch('/all_on')">Alle AN</button>
<button onclick="fetch('/all_off')">Alle AUS</button>
Die Route:
/states
liefert ein JSON-Objekt mit allen Pin-Zuständen:
{
"4":1,
"5":0,
"12":1,
...
}
fetch('/states')
.then(r => r.json())
.then(states => {
console.log("Pin 4 ist:", states["4"] ? "AN" : "AUS");
});
Servo-Pins werden über die Route:
/servo?pin=PIN&angle=WINKEL&delay=MS
angle: 0–180°delay: optional, verlangsamt die Bewegungfetch('/servo?pin=12&angle=90');
fetch('/servo?pin=12&angle=180&delay=20');
function moveServo(pin, angle, delay = 0) {
fetch('/servo?pin=' + pin + '&angle=' + angle + '&delay=' + delay);
}
Diese Seite schaltet Pin 4 ein und aus.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title id="title">AdventureControl</title>
<link rel="stylesheet" href="/style.css">
<style>
</style>
</head>
<body>
<div id="menu_header"></div>
<h2 id="header">Meine Seite</h2>
<button onclick="setPin(4, 1)" class="button on">AN</button>
<button onclick="setPin(4, 0)" class="button off">AUS</button>
<script>
function setPin(pin, state) {
fetch('/toggle?pin=' + pin + '&state=' + (state ? 1 : 0));
}
</script>
<div style="margin-top:10px;" id="registration_div"></div>
<script src="load_header.js"></script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title id="title">AdventureControl</title>
<link rel="stylesheet" href="/style.css">
<style>
</style>
</head>
<body>
<div id="menu_header"></div>
<h2 id="header">Meine Seite</h2>
<button onclick="moveServo(12, 45)">45°</button>
<button onclick="moveServo(12, 90)">90°</button>
<button onclick="moveServo(12, 180, 30)">Langsam 180°</button>
<script>
function moveServo(pin, angle, delay = 0) {
fetch('/servo?pin=' + pin + '&angle=' + angle + '&delay=' + delay);
}
</script>
<div style="margin-top:10px;" id="registration_div"></div>
<script src="load_header.js"></script>
</body>
</html>
Mit diesen Bausteinen können Anwender beliebige Steuerseiten erstellen – von einfachen Schaltflächen bis hin zu komplexen Automationen.