MQTT Visualisierte Schaltzentrale von Lichtern und Haustüröffner
Voraussetzungen
Ein separater Node.js-Server wird für die Steuerung der MQTT-Nachrichten verwendet, um das Ein- und Ausschalten der Geräte unabhängig steuern zu können.
Neues Verzeichnis für den Steuerungsserver erstellen
- mkdir /usr/local/home-control-switch
- cd /usr/local/home-control-switch
Initialisiere das Node.js-Projekt
- npm init -y
Installiere die benötigten Pakete
- npm install mqtt express
Konfiguration des Steuerungsservers
Erstelle die Datei switch-server.js im Verzeichnis /usr/local/home-control-switch mit folgendem Inhalt:
const mqtt = require('mqtt');
const express = require('express');
const app = express();
const port = 3001;
// MQTT-Konfiguration
const client = mqtt.connect('mqtt://10.0.10.97:1883', {
username: 'xinux',
password: 'geheim'
});
client.on('connect', () => {
console.log('Verbunden mit dem Broker');
});
// Funktion zum Senden von MQTT-Nachrichten
function toggleDevice(topic, state) {
client.publish(topic, state);
}
// API-Endpunkte zum Steuern der Geräte
app.get('/toggle/wohnzimmer', (req, res) => {
toggleDevice('home/wohnzimmer/status', 'on');
res.send('Wohnzimmer Licht eingeschaltet');
});
app.get('/toggle/schlafzimmer', (req, res) => {
toggleDevice('home/schlafzimmer/status', 'on');
res.send('Schlafzimmer Licht eingeschaltet');
});
app.get('/toggle/kueche', (req, res) => {
toggleDevice('home/kueche/status', 'on');
res.send('Küchen Licht eingeschaltet');
});
app.get('/toggle/haustuer', (req, res) => {
toggleDevice('home/haustuer/status', 'offen');
res.send('Haustür geöffnet');
});
// Server starten
app.listen(port, () => {
console.log(`Schalt-Server läuft auf http://localhost:${port}`);
});
systemd-Unit für den Steuerungsserver erstellen
Erstelle die Datei /etc/systemd/system/home-control-switch.service mit folgendem Inhalt:
[Unit] Description=Home Control Switch Server [Service] Type=simple WorkingDirectory=/usr/local/home-control-switch ExecStart=/usr/bin/node switch-server.js ExecStartPost=/bin/echo "Schalt-Server gestartet" [Install] WantedBy=multi-user.target
Steuerungsserver starten und beim Booten aktivieren
- systemctl start home-control-switch.service
- systemctl enable home-control-switch.service
Steuerung der Geräte über HTTP
Nun können die Geräte über den separaten Server gesteuert werden:
- Wohnzimmerlicht einschalten: `http://localhost:3001/toggle/wohnzimmer` - Schlafzimmerlicht einschalten: `http://localhost:3001/toggle/schlafzimmer` - Küchenlicht einschalten: `http://localhost:3001/toggle/kueche` - Haustür öffnen: `http://localhost:3001/toggle/haustuer`
Der Server ist für die Steuerung der Geräte per HTTP zuständig und sendet die entsprechenden MQTT-Nachrichten.