Zum Hauptinhalt springen

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.