MQTT Pseudo-Glühbirnenprojekt mit Node.js und HTML
Version vom 21. Oktober 2024, 18:02 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== MQTT Pseudo-Glühbirnenprojekt mit Node.js und HTML == === Voraussetzungen === * Installiere Node.js (Version 20.x oder höher) * Installiere MQTT Broker (…“)
MQTT Pseudo-Glühbirnenprojekt mit Node.js und HTML
Voraussetzungen
- Installiere Node.js (Version 20.x oder höher)
- Installiere MQTT Broker (Mosquitto)
Projektstruktur
Verzeichnisstruktur:
mqtt-webserver/ ├── index.html └── server.js
Installation
- Erstelle ein Verzeichnis für dein Projekt:
mkdir mqtt-webserver cd mqtt-webserver
- Initialisiere das Node.js-Projekt:
npm init -y
- Installiere benötigte Pakete (Express und MQTT):
npm install mqtt express
Server.js (Node.js)
Erstelle die Datei server.js im Projektverzeichnis mit folgendem Inhalt:
const mqtt = require('mqtt');
const express = require('express');
const path = require('path');
const app = express();
const port = 3000;
let bulbStatus = 'Unbekannt';
// MQTT-Verbindung herstellen
const client = mqtt.connect('mqtt://localhost:1883');
client.on('connect', () => {
client.subscribe('gluebirne/status', (err) => {
if (!err) {
console.log('MQTT-Client abonniert');
}
});
});
client.on('message', (topic, message) => {
bulbStatus = message.toString();
console.log('Glühbirnenstatus: ', bulbStatus);
});
// API-Route für den Status der Glühbirne
app.get('/status', (req, res) => {
res.send({ status: bulbStatus });
});
// Statisches Verzeichnis für die Webseite
app.use(express.static(path.join(__dirname)));
// Starte den Webserver
app.listen(port, () => {
console.log(`Webserver läuft auf http://localhost:${port}`);
});
HTML-Datei
Erstelle eine Datei index.html im selben Verzeichnis, die den Status der Pseudo-Glühbirne anzeigt:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Pseudo Glühbirne</title>
<script>
function fetchStatus() {
fetch('/status')
.then(response => response.json())
.then(data => {
document.getElementById('status').innerText = 'Status: ' + data.status;
});
}
setInterval(fetchStatus, 1000); // Alle 1 Sekunde den Status abrufen
</script>
</head>
<body>
<h1>Pseudo Glühbirne</h1>
<p id="status">Status: Unbekannt</p>
</body>
</html>
Server starten
Starte den Node.js-Server im Projektverzeichnis:
node server.js
Öffne dann deinen Browser und gehe zu:
http://localhost:3000
MQTT-Nachrichten senden
Um den Status der Glühbirne zu ändern, kannst du über die Konsole MQTT-Nachrichten an den Broker senden:
- Nachricht für "An" senden:
mosquitto_pub -h localhost -t gluebirne/status -m "on"
- Nachricht für "Aus" senden:
mosquitto_pub -h localhost -t gluebirne/status -m "off"
Zusammenfassung
Dieses Projekt demonstriert, wie ein Node.js-Server MQTT-Nachrichten von einem Mosquitto-Broker empfängt und den Status einer Pseudo-Glühbirne über eine Webseite darstellt. Die Webseite wird kontinuierlich aktualisiert, um den aktuellen Status der Glühbirne anzuzeigen.