JavaScript and Node.js
JavaScript passt gut
Wenn kuandoHUB auf dem Zielrechner installiert ist, sind JavaScript und Node.js unkomplizierte Wege, um das Busylight zu steuern.
1. Browser-JavaScript mit GET​
Das ist der einfachste mögliche Test:
<button id="busy">Busy</button>
<button id="free">Free</button>
<button id="off">Off</button>
<script>
const baseUrl = 'http://localhost:8989';
async function setLight(query) {
const response = await fetch(`${baseUrl}?${query}`);
if (!response.ok) {
throw new Error(`Busylight request failed: ${response.status}`);
}
}
document.getElementById('busy').addEventListener('click', () => {
setLight('action=light&red=100');
});
document.getElementById('free').addEventListener('click', () => {
setLight('action=light&green=100');
});
document.getElementById('off').addEventListener('click', () => {
setLight('action=off');
});
</script>
Das funktioniert gut fĂĽr lokale interne Tools, bei denen Browser-Zugriff auf localhost akzeptabel ist.
2. Node.js-Helper​
const baseUrl = 'http://localhost:8989';
async function setColor({ red = 0, green = 0, blue = 0 }) {
const url = new URL(baseUrl);
url.searchParams.set('action', 'light');
url.searchParams.set('red', String(red));
url.searchParams.set('green', String(green));
url.searchParams.set('blue', String(blue));
const response = await fetch(url);
if (!response.ok) {
throw new Error(`Busylight error: ${response.status}`);
}
}
async function main() {
await setColor({ red: 100, green: 40, blue: 0 });
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
3. Strukturierte POST-Anfrage​
const baseUrl = 'http://localhost:8989';
async function postLight({ red = 0, green = 0, blue = 0 }) {
const body = {
action: 'Light',
sender: 'SDK',
eventtype: 'Light',
eventname: 'Color',
parameter: JSON.stringify({
RedRgbValue: red,
GreenRgbValue: green,
BlueRgbValue: blue,
}),
};
const response = await fetch(baseUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
});
if (!response.ok) {
throw new Error(`Busylight POST failed: ${response.status}`);
}
}
4. Registriere deine App als Quelle​
Für ein stärker integriertes Setup registrierst du beim Start einmalig eine Datenquelle:
async function registerDataSource() {
const body = {
action: 'RegisterDataSource',
sender: null,
eventtype: null,
eventname: null,
parameter: JSON.stringify({
DataSourceName: 'MyDashboard',
eventnames: {
Light: {
EventNames: ['Green', 'Yellow', 'Red', 'Off'],
IsAlertPriority: false,
},
Alert: {
EventNames: ['Alert'],
IsAlertPriority: true,
},
},
}),
};
await fetch('http://localhost:8989', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
});
}
Erstelle anschließend einen initialen Prioritätseintrag, wenn kuandoHUB diese Quelle als Teil seines Prioritätsmodells behandeln soll.
5. Gute JavaScript-Anwendungsfälle​
- Electron-Helper-Apps
- lokale Dashboards
- Support- oder NOC-Panels
- browserbasierte interne Tools
- Webhook-zu-Busylight-Bridges
- Teams-, CRM- oder Ticketing-Overlays
6. Wichtiger Vorbehalt​
Das öffentliche Manual enthält ein altes XMLHttpRequest-Beispiel. Bevorzuge in modernem Code fetch, sofern du nicht ausdrücklich eine Legacy-Umgebung nachbilden musst.