MQTT Visualisierte Schaltzentrale von Lichtern und Haustüröffner

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Voraussetzungen

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.