MQTT-Client

Synchronisierung mit MQTT-Brokern

Aktueller Release
4.0.0
Entwickler
mcm1957, Pmant, algar42, Matthias Kleine, iobroker-community-adapters
Lizenz
MIT

Versionen

ioBroker-Zustände an MQTT-Broker veröffentlichen und abonnieren

Posten

Dieser Adapter nutzt die Sentry-Bibliotheken, um Ausnahmen und Codefehler automatisch an die Entwickler zu melden. Weitere Details und Informationen zum Deaktivieren der Fehlerberichterstattung finden Sie in der Sentry-Plugin-Dokumentation ! Die Sentry-Berichterstattung wird ab js-controller 3.0 verwendet.

Adaptereinstellungen

Adapter

zum Thema „Verbindung“ und zur Nachricht

Deron connect message wird veröffentlicht aufon connect topic jedes Mal, wenn der Client eine Verbindung zum Server herstellt oder die Verbindung wiederherstellt.

Thema und Nachricht zum Thema „Verbindungsabbruch“

Deron disconnect message wird veröffentlicht aufon disconnect topic wenn der Adapter ordnungsgemäß stoppt.

Thema und Nachricht des letzten Willens

Derlast will message wird veröffentlicht auflast will topic Jedes Mal, wenn sich der Client mit dem Server verbindet oder die Verbindung wiederherstellt, speichert der Server diese Nachricht und sendet sie an seine Abonnenten, wenn die Verbindung des Clients unerwartet abbricht.

Abonnements

Eine durch Kommas getrennte Liste von Themen, die noch nicht von bestehenden Zuständen abgedeckt werden. Empfangene Nachrichten werden in Zustände innerhalb des Namensraums des Adapters (z. B. mqtt.0) umgewandelt und abonniert. Themen können entfernt werden, nachdem alle Zustände erstellt wurden.

JSON in Zustände für Themen aufteilen

Durch Kommas getrennte Liste von MQTT-Themenfiltern (ohne Präfix,+ Und# sind erlaubt), z.B.zigbee2mqtt/+ Ein zu einem passenden Thema empfangenes JSON-Objekt wird nicht als Text gespeichert, sondern in einen Kanal aufgeteilt, wobei jeder Wert einen eigenen Status hat.zigbee2mqtt/sensor ={"battery":100,"occupancy":false,"color":{"x":0.3}} erstellt den Kanalmqtt-client.0.zigbee2mqtt.sensor mit den Staatenbattery (Nummer),occupancy (boolesch) und der Kanalcolor mit dem Staatx (Nummer).

  • Verschachtelte Objekte werden zu Kanälen (bis zu 5 Ebenen), Arrays werden als JSON-Text gespeichert.
  • Punkte, Leerzeichen und in IDs nicht zulässige Zeichen werden ersetzt durch_ in den IDs.
  • In ioBroker geschriebene Werte (ack=false werden als JSON an<topic>/set z.B.{"color":{"x":0.5}} Dies ist die Konvention von zigbee2mqtt. Das Gerät bestätigt den neuen Wert mit seiner nächsten Nachricht.
  • Nutzdaten, die kein JSON-Objekt sind (Arrays, Zahlen, Text), werden wie bisher behandelt.

Die Themen müssen noch abonniert werden, z. B. mitzigbee2mqtt/# In den zusätzlichen Abonnements wird angegeben, dass ältere, als Text erstellte Versionen dieser Themen nicht geändert werden und gelöscht werden können.

Veröffentlichungspräfix

Beim Veröffentlichen wird dies allen Themen vorangestellt. Standardmäßig ist es leer (kein Präfix).

Präfix abonnieren

Beim Abonnieren wird dies allen Themen vorangestellt. Standardmäßig ist es leer (kein Präfix).

Statuseinstellungen

Zustand

ermöglicht

Aktiviert oder deaktiviert die MQTT-Client-Funktionalität für diesen Zustand. Durch Deaktivieren werden alle MQTT-Client-Einstellungen dieses Zustands gelöscht.

Thema

Das Thema, in dem dieser Status veröffentlicht und von dem er abonniert wird. Standard: Status-ID, konvertiert in ein MQTT-Thema.

Wenn das Thema von der State-ID abgeleitet wird, werden Punkte in Trennzeichen auf Themenebene umgewandelt (/ ) und die folgenden Zeichen werden ersetzt durch_ :

  • die MQTT-Wildcards+ Und# - Sie sind in Themennamen nicht zulässig (verwendet z. B. von Shelly-IDs wieshelly.0.SHSW-1#B96701#1 )
  • Schrägstriche innerhalb der ID selbst würden zusätzliche Themenebenen erzeugen.
  • Leerzeichen dürfen nicht in Objekt-IDs gelangen, wenn das Thema zurückkonvertiert wird.

Alsoshelly.0.SHSW-1#B96701#1.Relay0.Switch wirdshelly/0/SHSW-1_B96701_1/Relay0/Switch Wenn zwei Status-IDs zum selben Thema gehören (z. B.a#b Unda+b ), wird eine Warnung protokolliert. Konfigurieren Sie in diesem Fall ein explizites Thema für eines davon.

veröffentlichen

abonnieren

Notiz

  • Wenn ack auf true gesetzt ist, überschreibt es die ack-Eigenschaft des Objekts (siehe unten).as object
  • Um Nachrichtenschleifen zu vermeiden, müssen sowohl Publish als auch Subscribe aktiviert sein.changes only ist immer zum Abonnieren verfügbar

Changelog

4.1.0 (2026-09-15)

  • (@GermanBluefox) Adapter requires node.js >= 22.19 now
  • (@Tarvion) Automatically derived topics no longer contain the mqtt wildcards + and # (as used by shelly IDs), slashes or whitespace taken from the state-ID. These characters are replaced by _ now
  • (@GermanBluefox) A warning is logged if two states derive to the same topic
  • (@GermanBluefox) Adapter icon converted to SVG
  • (@GermanBluefox) The adapter was refactored to TypeScript
  • (@GermanBluefox) Fixed: stopping the adapter waited for the timeout when no broker was configured or after stopInstance
  • (@GermanBluefox) Fixed: states created from received topics now have common.role instead of a role outside of common
  • (@GermanBluefox) Fixed: with "subscribe as object", the loop protection and "changes only" skipped changed values instead of unchanged ones
  • (@GermanBluefox) Fixed: deleting a state that was published with retain now also removes the retained message from the broker
  • (@GermanBluefox) Fixed: MQTT version 3 connects with the protocol name MQIsdp, so MQTT 3.1 brokers accept the connection. The versions are labeled 3.1, 3.1.1 and 5.0 in the settings (#169)
  • (@GermanBluefox) Fixed: special characters like % or : in the user name, password or client ID broke the connection (#200)
  • (@GermanBluefox) New option "split JSON into states for topics": JSON objects, e.g. from zigbee2mqtt, become a channel with one state per value; written values are sent to <topic>/set (#322)
  • (@GermanBluefox) Fixed: a subscribed state was not updated after a restart when an object of the adapter's namespace had the same topic. Changing the topic of a state now also unsubscribes the old topic, and no copy of a state is created for an old topic anymore (#418)
  • (@GermanBluefox) Fixed: every change of an object (e.g. extendObject by another adapter) published the current value of the state again, which could overwrite a newer value on the same topic. The value is now published once only when publishing starts or the topic changes (#467)

4.0.0 (2026-05-05)

  • (copilot) Adapter requires node.js >= 22 now
  • (copilot) Adapter requires admin >= 7.7.22 now
  • (copilot) Adapter requires js-controller >= 6.0.11 now
  • (@klein0r) Updated dependencies

3.0.0 (2025-01-24)

  • (@klein0r) Breaking change: Underscores are not replaced by spaces in the corresponding topic anymore

2.1.0 (2024-11-12)

  • (mcm1957) Adapter requires node.js 20 now.
  • (mcm1957) Adapter requires js-controller 5.0.19 and admin 6.17.14 now.
  • (simatec) Adapter changed to meet Responsive Design rules.
  • (mcm1957) Dependencies have been updated.

2.0.1 (2024-09-23)

  • (@klein0r) Added missing information in configuration dialog
  • (@klein0r) Fixed type of port configuration to avoid conflicts

License

The MIT License (MIT)

Copyright (c) 2025-2026 iobroker-community-adapters iobroker-community-adapters@gmx.de
Copyright (c) 2016-2023 Pmant

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.