<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=MQTT_nodejs_Erkl%C3%A4rung</id>
	<title>MQTT nodejs Erklärung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=MQTT_nodejs_Erkl%C3%A4rung"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=MQTT_nodejs_Erkl%C3%A4rung&amp;action=history"/>
	<updated>2026-06-29T16:54:43Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=MQTT_nodejs_Erkl%C3%A4rung&amp;diff=57947&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „==== Erklärung der server.js für MQTT und Node.js ====  ==== Import von Modulen ==== Zu Beginn importierst du die benötigten Bibliotheken: *'''const mqtt =…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=MQTT_nodejs_Erkl%C3%A4rung&amp;diff=57947&amp;oldid=prev"/>
		<updated>2024-10-21T20:40:31Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „==== Erklärung der server.js für MQTT und Node.js ====  ==== Import von Modulen ==== Zu Beginn importierst du die benötigten Bibliotheken: *&amp;#039;&amp;#039;&amp;#039;const mqtt =…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==== Erklärung der server.js für MQTT und Node.js ====&lt;br /&gt;
&lt;br /&gt;
==== Import von Modulen ====&lt;br /&gt;
Zu Beginn importierst du die benötigten Bibliotheken:&lt;br /&gt;
*'''const mqtt = require('mqtt');''' // Für MQTT-Verbindungen&lt;br /&gt;
*'''const fs = require('fs');''' // Um Dateien zu lesen (z.B. Zertifikate)&lt;br /&gt;
*'''const express = require('express');''' // Für den Webserver&lt;br /&gt;
*'''const path = require('path');''' // Um Dateipfade zu verwalten&lt;br /&gt;
&lt;br /&gt;
Diese Module fügen Funktionen zu Node.js hinzu, die du für die Verarbeitung von MQTT-Nachrichten, Zertifikate und den Webserver benötigst.&lt;br /&gt;
&lt;br /&gt;
==== MQTT-Verbindung herstellen ====&lt;br /&gt;
Hier baust du die Verbindung zu deinem MQTT-Broker auf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
const options = {&lt;br /&gt;
  port: 8883, // Der verschlüsselte MQTT-Port&lt;br /&gt;
  host: 'mqtt.lab.int', // Der Hostname oder die IP deines MQTT-Brokers&lt;br /&gt;
  protocol: 'mqtts', // Das Protokoll (verschlüsselt)&lt;br /&gt;
  username: 'xinux', // Dein MQTT-Benutzername&lt;br /&gt;
  password: 'geheim', // Dein Passwort&lt;br /&gt;
  ca: fs.readFileSync('/root/home-control/ca.crt') // Das CA-Zertifikat, um die Verbindung zu sichern&lt;br /&gt;
};&lt;br /&gt;
const client = mqtt.connect(options); // Stellt die Verbindung zum Broker her&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Verbindung stellt sicher, dass Node.js sich sicher über TLS mit deinem Broker verbindet und das Zertifikat verwendet, um die Verbindung zu authentifizieren.&lt;br /&gt;
&lt;br /&gt;
==== MQTT-Nachrichten abonnieren ====&lt;br /&gt;
Sobald die Verbindung steht, abonnierst du die relevanten MQTT-Themen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client.on('connect', () =&amp;gt; {&lt;br /&gt;
  console.log('Verbunden mit dem Broker');&lt;br /&gt;
  client.subscribe('home/+/status', (err) =&amp;gt; {&lt;br /&gt;
    if (!err) {&lt;br /&gt;
      console.log('Alle Topics abonniert');&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**home/+/status** bedeutet, dass du alle Statusmeldungen für Räume wie Wohnzimmer, Schlafzimmer etc. abonnierst. Das `+` ist ein Platzhalter.&lt;br /&gt;
&lt;br /&gt;
==== Verarbeitung von MQTT-Nachrichten ====&lt;br /&gt;
Wenn eine Nachricht auf einem der abonnierten Themen ankommt, wird sie verarbeitet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client.on('message', (topic, message) =&amp;gt; {&lt;br /&gt;
  const room = topic.split('/')[1]; // Extrahiert den Raum (z.B. wohnzimmer)&lt;br /&gt;
  status[room] = message.toString(); // Speichert den Status (on/off) für den Raum&lt;br /&gt;
  console.log(`Status von ${room}: ${status[room]}`);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird das MQTT-Thema analysiert (z.B. `home/wohnzimmer/status`), und der Status (z.B. &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot;) wird in der Variable **status** für den jeweiligen Raum gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Webserver erstellen ====&lt;br /&gt;
Du startest einen Webserver, der die aktuellen Status der Lichter und der Haustür bereitstellt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app.get('/status', (req, res) =&amp;gt; {&lt;br /&gt;
  res.send(status); // Sendet den Status der Lichter und der Haustür an den Browser&lt;br /&gt;
});&lt;br /&gt;
app.listen(port, () =&amp;gt; {&lt;br /&gt;
  console.log(`Webserver läuft auf http://localhost:${port}`);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn du in deinem Browser **http://localhost:3000/status** aufrufst, bekommst du den aktuellen Status der Lichter und der Haustür angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== Zusammenfassung ====&lt;br /&gt;
- **Node.js** verbindet sich über **TLS** sicher mit dem MQTT-Broker.&lt;br /&gt;
- Es werden MQTT-Nachrichten empfangen und verarbeitet, die den Status der Lichter und der Haustür angeben.&lt;br /&gt;
- Diese Informationen werden in einem kleinen Webserver zur Anzeige bereitgestellt.&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>