{"id":1972,"date":"2019-08-05T09:42:53","date_gmt":"2019-08-05T09:42:53","guid":{"rendered":"https:\/\/www.horter.de\/blog\/?p=1972"},"modified":"2023-01-13T15:29:39","modified_gmt":"2023-01-13T15:29:39","slug":"mqtt-i2c-bridge","status":"publish","type":"post","link":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/","title":{"rendered":"MQTT &#8211; I2C &#8211; Bridge"},"content":{"rendered":"<p>Vielen Dank f\u00fcr diesen Beitrag an Thomas Plorin<\/p>\n<p>Viele Homeautomationsl\u00f6sungen bieten Connectoren f\u00fcr MQTT. MQTT oder Message Queuing Telemetry Transport ist ein offenes Nachrichtenprotokoll f\u00fcr M2M (Machine-to-Machine) Kommunikation. Die Informationen werden als Nachrichten \u00fcber sogenannte \u201eTopics\u201c verschickt. Ein \u201eTopic\u201c besteht aus einer Zeichenkette getrennt durch \u201e\/\u201c. Ein Interessent von Nachrichten, kann sich am MQTT-Server einloggen und sich f\u00fcr bestimmte Topics anmelden. Kommt es zu Nachrichten auf diesen Topics, verteilt der Server diese an die interessierten Clients. Ebenso kann ein Client auf verschiedenen Topics Nachrichten verschicken.<\/p>\n<p>Ich selbst nutze derzeit Node-RED als Homeautomationsl\u00f6sung. Diese bietet zwar auch Nodes f\u00fcr I2C. Diese habe ich aber in einer passablen Zeit nicht zur Laufen bekommen, so dass ich anfing mir selbst etwas zu \u00fcberlegen. Desweiteren gefiel mir nicht so gut, dass die Automationsl\u00f6sung damit sehr nahe an der verwendeten Hardware gekoppelt w\u00e4re. Dies macht ein Wechsel von Hard- bzw. Software immer sehr schwierig. Aus diesem Grund wollte ich das Hardwaresystem m\u00f6glichst unabh\u00e4ngig von der Automationssoftware halten und habe mich entschieden, selbst etwas umzusetzen. <a href=\"https:\/\/gitlab.com\/thomas.plorin\/i2c-mqtt\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Eine &quot;Br\u00fccke&quot; zwischen &quot;I2C&quot; und &quot;MQTT&quot;. (\u00f6ffnet in neuem Tab)\">Eine \u201eBr\u00fccke\u201c zwischen \u201eI2C\u201c und \u201eMQTT\u201c.<\/a><\/p>\n<p>Im Folgenden m\u00f6chte ich die Einrichtung und Funktionsweise kurz erkl\u00e4ren. Wen es genauer interessiert, kann sich auf gitlab den Source-Code anschauen. Verbesserungsvorschl\u00e4ge werden immer gern genommen. Gerne k\u00f6nnt Ihr auch einen Fork der Sourcen erstellen und mir Pull-Request zukommen lassen.<\/p>\n<p>&nbsp;<\/p>\n<h3>Vorbereitungen<\/h3>\n<p>Die Hardware besteht aus folgenden Komponenten:<\/p>\n<ul>\n<li>einem Raspberry PI<\/li>\n<li><a href=\"https:\/\/www.horter-shop.de\/de\/i2c-hutschienen-module\/173-bausatz-i2c-repeater-fur-raspberry-pi-4260404261155.html\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Pegelanpassungsplatine (\u00f6ffnet in neuem Tab)\">Pegelanpassungsplatine<\/a> f\u00fcr den PI<\/li>\n<li>Einer <a href=\"https:\/\/www.horter-shop.de\/de\/i2c-hutschienen-module\/232-bausatz-i2c-digital-input-modul-mit-optokoppler-4260404260851.html\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Hutschienen Input-Platine (\u00f6ffnet in neuem Tab)\">Hutschienen Input-Platine<\/a><\/li>\n<li>Einer <a href=\"https:\/\/www.horter-shop.de\/de\/i2c-hutschienen-module\/236-bausatz-i2c-digital-output-modul-mit-optokoppler-4260404260868.html\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Hutschienen Output-Platine (\u00f6ffnet in neuem Tab)\">Hutschienen Output-Platine<\/a><\/li>\n<li>Einem <a href=\"https:\/\/www.horter-shop.de\/de\/i2c-hutschienen-module\/253-bausatz-schaltnetzteil-5v-3a-4260404260905.html\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"5V Hutschienen Netzteil (\u00f6ffnet in neuem Tab)\">5V Hutschienen Netzteil<\/a><\/li>\n<\/ul>\n<div id=\"attachment_1965\" style=\"width: 610px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.horter.de\/blog\/mqtt-i2c-io\/\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1965\" class=\"wp-image-1965 size-full\" src=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg\" alt=\"\" width=\"600\" height=\"249\" srcset=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg 600w, https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io-300x125.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><p id=\"caption-attachment-1965\" class=\"wp-caption-text\">IO-Hardware f\u00fcr MQTT<\/p><\/div>\n<p>&nbsp;<\/p>\n<h2>Installation Mosquitto<\/h2>\n<p>Als aller erstes brauchen wir einen Message-Broker zum Verteilen der MQTT-Nachrichten. Dieser kann einfach \u00fcber den Paket Manager auf dem Raspberry PI installiert werden.<\/p>\n<p><code>sudo apt-get install mosquitto<\/code><\/p>\n<p>Anschlie\u00dfend startet man den PI neu oder startet mosquitto manuell durch folgenden Befehl:<\/p>\n<p><code>\/etc\/init.d\/mosquitto start<\/code><\/p>\n<p>&nbsp;<\/p>\n<h2>Installation MQTT.Fx<\/h2>\n<p>Um das Setup zu \u00fcberpr\u00fcfen empfiehlt sich ein MQTT-Client mit GUI. Ein auf Java-basiertes Programm ist <a href=\"https:\/\/mqttfx.jensd.de\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"MQTTFX (\u00f6ffnet in neuem Tab)\">MQTT.FX<\/a>. Nach dem Download und Start des Programmes, legt man ein neues Profil an. In diesem hinterlegt man die IP-Adresse des Systems, auf dem mosquitto installiert wurde. Man vergibt einen sprechenden Namen. Alles andere kann man erstmal auf Standardeinstellungen lassen.<\/p>\n<p><a href=\"https:\/\/www.horter.de\/blog\/mxtt_broker-profile\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1971 size-full\" src=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-profile.png\" alt=\"MQTT - Broker Settings\" width=\"571\" height=\"580\" srcset=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-profile.png 571w, https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-profile-295x300.png 295w\" sizes=\"auto, (max-width: 571px) 100vw, 571px\" \/><\/a><\/p>\n<p>Nach Klick auf OK und \u201eConnect\u201c im Hauptfenster sollten wir mit dem MQTT-Broker verbunden sein. Als kleinen Test abonnieren wir uns auf dem Subscribe-Tab ein Topic, an welches wir anschlie\u00dfend \u00fcber den Publish-Tab eine Nachricht verschicken.<\/p>\n<p>Wir abonnieren im Subscribe-Tab den Topic \u201etest\u201c:<\/p>\n<p><a href=\"https:\/\/www.horter.de\/blog\/mxtt_broker-1\/\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1966 size-full alignnone\" src=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-1.png\" alt=\"MQTT - Erster Test\" width=\"474\" height=\"155\" srcset=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-1.png 474w, https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-1-300x98.png 300w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<p>Dann senden wir auf diesem Topic im Publish-Tab den Payload \u201eHallo Welt\u201c:<\/p>\n<p><a href=\"https:\/\/www.horter.de\/blog\/mxtt_broker-2\/\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1967 size-full alignnone\" src=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-2.png\" alt=\"MQTT - Hallo Wlet\" width=\"504\" height=\"151\" srcset=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-2.png 504w, https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-2-300x90.png 300w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><\/a><\/p>\n<p>Der dann (hoffentlich) auf dem Subscribe-Tab, in dem unteren rechten Bereich, ankommt.<\/p>\n<p><a href=\"https:\/\/www.horter.de\/blog\/mxtt_broker-3\/\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1968 size-full alignnone\" src=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-3.png\" alt=\"MQTT - Erster Test\" width=\"530\" height=\"280\" srcset=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-3.png 530w, https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-3-300x158.png 300w\" sizes=\"auto, (max-width: 530px) 100vw, 530px\" \/><\/a><\/p>\n<p>Ist unten rechts, in dem schwarzen Bereich mit wei\u00dfer Schrift \u201eHallo Welt\u201c zu sehen, ist das Setup erledigt.<\/p>\n<p>&nbsp;<\/p>\n<h2>i2c-mqtt-bridge-server<\/h2>\n<h3>Voraussetzung<\/h3>\n<p>Ich gehe an dieser Stelle davon aus, dass alle Verbindungen richtig gesteckt sind und man sein Setup mittels der Linux \u2013 Tools i2cdetect und i2cset bzw. i2cget \u00fcberpr\u00fcft hat. Die Jumper sind richtig gesteckt und die Adressen der IO-Karten sind bekannt. (<a href=\"https:\/\/www.horter.de\/blog\/i2c-module-am-raspberry-pi\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"siehe auch hier (\u00f6ffnet in neuem Tab)\">siehe auch hier<\/a>)<\/p>\n<h3>Installation<\/h3>\n<p>Als erstes brauchen wir die GPIO-Interface-Library f\u00fcr den Raspberry PI<\/p>\n<p><code>sudo apt-get install wiringpi<\/code><\/p>\n<p>Anschlie\u00dfend brauchen wir eine Java-Laufzeitumgebung.<\/p>\n<p><code>sudo apt-get install oracle-java8-jdk<\/code><\/p>\n<p>Anschlie\u00dfend <a href=\"https:\/\/gitlab.com\/thomas.plorin\/i2c-mqtt\/-\/jobs\/artifacts\/master\/download?job=maven-build\">hier<\/a> die aktuelle Version herunterladen.<\/p>\n<p>In dem heruntergeladenen Archiv sind mehrere Jars enthalten. F\u00fcr die Raspberry PI Version bitte die JAR mit linux im Namen nutzen.<\/p>\n<h3 data-sourcepos=\"43:1-43:37\">Speziellen User f\u00fcr die Ausf\u00fchrung anlegen<\/h3>\n<p><code><span id=\"LC1\" lang=\"plaintext\">sudo useradd i2cmqtt<\/span><\/code><br \/>\n<span id=\"LC2\" lang=\"plaintext\"><code>sudo passwd i2cmqtt<\/code><\/span><\/p>\n<p>(Das Passwort spielt hierbei keine Rolle, es sollte aber dennoch nicht leicht zu erraten sein)<\/p>\n<h3 data-sourcepos=\"50:1-50:32\"><a id=\"user-content-add-user-to-use-gpio-and-i2c\" class=\"anchor\" href=\"#add-user-to-use-gpio-and-i2c\" aria-hidden=\"true\"><\/a>User den notwendigen Gruppen hinzuf\u00fcgen &#8222;gpio&#8220; und &#8222;i2c&#8220;<\/h3>\n<p><code>sudo adduser i2cmqtt gpio<\/code><br \/>\n<code>sudo adduser i2cmqtt i2c<\/code><\/p>\n<h3 data-sourcepos=\"59:1-59:75\"><a id=\"user-content-copy-your-executable-to-installation-location-eg-opti2c-mqtt-server\" class=\"anchor\" href=\"#copy-your-executable-to-installation-location-eg-opti2c-mqtt-server\" aria-hidden=\"true\"><\/a>Die Jar &#8211; Datei aus dem ZIP-File an den Installationsort kopieren, z.B.: \/opt\/i2c-mqtt-server<\/h3>\n<p><code>sudo mkdir \/opt\/i2c-mqtt-server<\/code><br \/>\n<code>sudo cp i2c-mqtt-server-linux-&lt;version&gt;-runnable.jar \/opt\/i2c-mqtt-server\/i2c-mqtt-server-linux.jar<\/code><\/p>\n<h3>Konfiguration<\/h3>\n<p>Dann muss eine Konfigurationsdatei (app.properties) parallel zur JAR angelegt werden. Eine Beispieldatei kann auch vom gitlab-Repository heruntergeladen werden.<\/p>\n<p><code>wget https:\/\/gitlab.com\/thomas.plorin\/i2c-mqtt\/raw\/master\/i2c-mqtt-server\/src\/main\/resources\/app.properties<\/code><\/p>\n<p>In der Datei sind dann die Einstellungen f\u00fcr das eigene Setup anzupassen. Das wichtigste hierbei ist die Anpassung von<\/p>\n<p><code>mqtt.server=&lt;Hier die &lt;IP&gt;:&lt;Port&gt; <\/code><br \/>\n<code>(Port ist in der Regel 1883) des mosquitto Servers eintragen&gt;<\/code><\/p>\n<p>Der Busname sollte so gelassen werden, wenn man keine besondere Konfiguration f\u00fcr den I2C Bus am Raspberry PI vorgenommen hat.<\/p>\n<p><code>i2c.busname=bus_1 <\/code><\/p>\n<p>Definition der vorhandenen Hardware:<\/p>\n<p><code>i2c.devices=&lt;Komma separierte Liste der angeschlossenen Devices&gt;<\/code><\/p>\n<p>Ein Eintrag der Liste setzt sich folgenderma\u00dfen zusammen:<\/p>\n<p><code>&lt;i2cDeviceName&gt;:&lt;name&gt;:&lt;address&gt;:&lt;input|output&gt;:&lt;inverted&gt;<\/code><\/p>\n<p>i2cDeviceName = Bis jetzt gibt es nur pcf8574 \ud83d\ude09<br \/>\nname = Der Name des Devices f\u00fcr den MQTT-Topic<br \/>\naddress = die Hardwareadresse des Chips in Hexadezimalschreibweise<br \/>\ninput|output = \u00dcber diese beiden Values wird definiert, ob die Karte als Input oder Output arbeiten soll<br \/>\ninverted = true, wenn die Ein\/Ausg\u00e4nge invertierend arbeiten<\/p>\n<p>Die Beispieldefinition der Devices aus der \u201eapp.properties\u201c von gitlab sieht so aus:<\/p>\n<p><code>i2c.devices=pcf8574:testInput:0x38:input:true,pcf8574:testOutput:0x68:output:true<\/code><\/p>\n<p>Sie definiert zwei pcf8574 Devices:<\/p>\n<ul>\n<li>den ersten als Input-Device,<br \/>\nmit dem Namen \u201etestInput\u201c, an der Adresse 0x38,<br \/>\nmit invertierten Eing\u00e4ngen<\/li>\n<li>den zweiten als Output-Device,<br \/>\nmit dem Namen \u201etestOutput\u201c, an der Adresse 0x68,<br \/>\nmit invertierten Ausg\u00e4ngen<\/li>\n<\/ul>\n<p>Weitere Devices k\u00f6nnen getrennt durch Komma hinzugef\u00fcgt werden. Der genaue Syntax ist in der Beispiel app.properties beschrieben.<\/p>\n<p>&nbsp;<\/p>\n<h3 data-sourcepos=\"114:1-114:32\">Die Berechtigungen m\u00fcssen jetzt noch korrigiert werden<\/h3>\n<p><code>sudo chown -R i2cmqtt:i2cmqtt \/opt\/i2c-mqtt-server <\/code><br \/>\n<code>sudo chmod 500 \/opt\/i2c-mqtt-server\/i2c-mqtt-server-linux.jar <\/code><br \/>\n<code>sudo chmod 400 \/opt\/i2c-mqtt-server\/app.properties<\/code><\/p>\n<h3 data-sourcepos=\"122:1-122:31\"><a id=\"user-content-prepare-jar-to-be-a-service\" class=\"anchor\" href=\"#prepare-jar-to-be-a-service\" aria-hidden=\"true\"><\/a>JAR-File als Linux Service einrichten<\/h3>\n<p><code>cd \/opt\/i2c-mqtt-server <\/code><br \/>\n<code>sudo ln -s \/opt\/i2c-mqtt-server\/i2c-mqtt-server-linux.jar \/etc\/init.d\/i2c-mqtt-server <\/code><br \/>\n<code>sudo update-rc.d i2c-mqtt-server defaults<\/code><\/p>\n<h3 data-sourcepos=\"130:1-130:27\"><a id=\"user-content-check-status-of-service\" class=\"anchor\" href=\"#check-status-of-service\" aria-hidden=\"true\"><\/a>Den Status des Services pr\u00fcfen<\/h3>\n<p dir=\"auto\" data-sourcepos=\"131:1-131:25\">(Im Moment sollte dort noch &#8222;Not running&#8220; angezeigt werden)<\/p>\n<p><code>sudo service i2c-mqtt-server status<\/code><\/p>\n<h3>Start des Programms<\/h3>\n<p><code>sudo service i2c-mqtt-server start<\/code><\/p>\n<p>Sollte es zu Problemen kommen, ist das LOG die erste Anlaufstelle:<\/p>\n<p><code>sudo tail -f \/var\/log\/i2c-mqtt-server.log<\/code><\/p>\n<h3>Funktionsweise<\/h3>\n<p>Durch dieses Setup \u201ePublished\u201c das Input-Device auf folgendem Topic die Eingangs\u00e4nderungen:<\/p>\n<p><code>i2c\/input\/testInput\/[1-8]\/STAT<\/code><\/p>\n<p>Die Ausgangsplatine \u201elauscht\u201c auf folgendem Topic, um die Ausg\u00e4nge schalten zu k\u00f6nnen.<\/p>\n<p><code>i2c\/output\/testOutput\/[1-8]\/POWER<\/code><\/p>\n<p>Der Payload ist hierbei entweder \u201eON\u201c oder \u201eOFF\u201c.<\/p>\n<p>Geht z.B. der Eingang 4 auf High, dann wird auf dem Topic:<\/p>\n<p><code>i2c\/input\/testInput\/4\/STAT<\/code><\/p>\n<p>der Payload<\/p>\n<p><code>ON<\/code><\/p>\n<p><a href=\"https:\/\/www.horter.de\/blog\/mxtt_broker-4\/\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1969 size-full alignnone\" src=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-4.png\" alt=\"MQTT - Erster Test\" width=\"588\" height=\"281\" srcset=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-4.png 588w, https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-4-300x143.png 300w\" sizes=\"auto, (max-width: 588px) 100vw, 588px\" \/><\/a><\/p>\n<p><em>Das \u201e+\u201c in dem Screenshot ist ein Wildcard. D.h. was in diesem Teil des Topics steht, spielt keine Rolle. Ein Client reagiert damit auf alle Messages von allen Eing\u00e4ngen der Eingabeplatine mit dem Namen \u201etestInput\u201c.<\/em><\/p>\n<p>M\u00f6chte man z.B. den Ausgang 6 einschalten, dann muss eine Nachricht mit dem Payload \u201eON\u201c an folgenden Topic gesendet werden:<\/p>\n<p><code>i2c\/output\/testOuput\/6\/POWER<\/code><\/p>\n<p><a href=\"https:\/\/www.horter.de\/blog\/mxtt_broker-5\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1970 size-full\" src=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-5.png\" alt=\"MQTT - Erster Test\" width=\"510\" height=\"149\" srcset=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-5.png 510w, https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mxtt_broker-5-300x88.png 300w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Nach dem Klick auf \u201ePublish\u201c sollte bei der Ausgangplatine, der Ausgang 6 auf High gehen.<\/p>\n<p>&nbsp;<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Mit dieser Br\u00fccke zwischen I2C-Bus und MQTT-Messaging ist es m\u00f6glich, IO-\u00c4nderungen von den I2C Platinen in MQTT-Messages zu \u201ekonvertieren\u201c und somit, losgel\u00f6st von der Hardware, in der jeweiligen Automationsl\u00f6sung zu nutzen. Weitere Platinen k\u00f6nnen einfach hinzugesteckt, am System konfiguriert und genutzt werden. Das Setup ist vergleichsweise einfach und l\u00e4sst sich schnell wiederherstellen.\u00a0<code><\/code><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vielen Dank f\u00fcr diesen Beitrag an Thomas Plorin Viele Homeautomationsl\u00f6sungen bieten Connectoren f\u00fcr MQTT. MQTT oder Message Queuing Telemetry Transport ist ein offenes Nachrichtenprotokoll f\u00fcr M2M (Machine-to-Machine) Kommunikation. Die Informationen werden als Nachrichten \u00fcber sogenannte \u201eTopics\u201c verschickt. Ein \u201eTopic\u201c besteht&#8230; <a class=\"continue-reading-link\" href=\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/\">mehr lesen<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[257,255],"tags":[73,74,86,80,149,7,77,114,260,262,258,259,261,66,164],"class_list":["post-1972","post","type-post","status-publish","format-standard","hentry","category-mqtt","category-raspberry-pi","tag-12v-schalten","tag-24v-schalten","tag-ausgang","tag-eingang","tag-funksteckdosen","tag-i2c","tag-i2c-input","tag-i2c-bus","tag-i2c-mqtt-bridge","tag-mosquitto","tag-mqtt","tag-mqtt-messaging","tag-mqtt-fx","tag-raspberri-pi","tag-schalter"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MQTT - I2C - Bridge - Horter &amp; Kalb Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MQTT - I2C - Bridge - Horter &amp; Kalb Blog\" \/>\n<meta property=\"og:description\" content=\"Vielen Dank f\u00fcr diesen Beitrag an Thomas Plorin Viele Homeautomationsl\u00f6sungen bieten Connectoren f\u00fcr MQTT. MQTT oder Message Queuing Telemetry Transport ist ein offenes Nachrichtenprotokoll f\u00fcr M2M (Machine-to-Machine) Kommunikation. Die Informationen werden als Nachrichten \u00fcber sogenannte \u201eTopics\u201c verschickt. Ein \u201eTopic\u201c besteht... mehr lesen\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/\" \/>\n<meta property=\"og:site_name\" content=\"Horter &amp; Kalb Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-05T09:42:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-13T15:29:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"249\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"JH\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"JH\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/\"},\"author\":{\"name\":\"JH\",\"@id\":\"https:\/\/www.horter.de\/blog\/#\/schema\/person\/a8a4c3c5d3167dce7c7d31df6088b5d2\"},\"headline\":\"MQTT &#8211; I2C &#8211; Bridge\",\"datePublished\":\"2019-08-05T09:42:53+00:00\",\"dateModified\":\"2023-01-13T15:29:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/\"},\"wordCount\":1043,\"commentCount\":8,\"publisher\":{\"@id\":\"https:\/\/www.horter.de\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg\",\"keywords\":[\"12V schalten\",\"24V schalten\",\"Ausgang\",\"Eingang\",\"Funksteckdosen\",\"I2C\",\"I2C Input\",\"I2C-Bus\",\"i2c-mqtt-bridge\",\"Mosquitto\",\"MQTT\",\"MQTT-Messaging\",\"MQTT.Fx\",\"Raspberri PI\",\"Schalter\"],\"articleSection\":[\"MQTT\",\"Raspberry PI\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/\",\"url\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/\",\"name\":\"MQTT - I2C - Bridge - Horter &amp; Kalb Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.horter.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg\",\"datePublished\":\"2019-08-05T09:42:53+00:00\",\"dateModified\":\"2023-01-13T15:29:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#primaryimage\",\"url\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg\",\"contentUrl\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg\",\"width\":600,\"height\":249,\"caption\":\"IO-Hardware f\u00fcr MQTT\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start\",\"item\":\"https:\/\/www.horter.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MQTT &#8211; I2C &#8211; Bridge\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.horter.de\/blog\/#website\",\"url\":\"https:\/\/www.horter.de\/blog\/\",\"name\":\"Horter & Kalb Blog\",\"description\":\"SPS, I2C und mehr\",\"publisher\":{\"@id\":\"https:\/\/www.horter.de\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.horter.de\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.horter.de\/blog\/#organization\",\"name\":\"Horter & Kalb Blog\",\"url\":\"https:\/\/www.horter.de\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.horter.de\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2026\/01\/hoka_Icon_400x400.png\",\"contentUrl\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2026\/01\/hoka_Icon_400x400.png\",\"width\":400,\"height\":400,\"caption\":\"Horter & Kalb Blog\"},\"image\":{\"@id\":\"https:\/\/www.horter.de\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.horter.de\/blog\/#\/schema\/person\/a8a4c3c5d3167dce7c7d31df6088b5d2\",\"name\":\"JH\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.horter.de\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2015\/07\/jhfb.jpg\",\"contentUrl\":\"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2015\/07\/jhfb.jpg\",\"caption\":\"JH\"},\"url\":\"https:\/\/www.horter.de\/blog\/author\/j-horter\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MQTT - I2C - Bridge - Horter &amp; Kalb Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/","og_locale":"de_DE","og_type":"article","og_title":"MQTT - I2C - Bridge - Horter &amp; Kalb Blog","og_description":"Vielen Dank f\u00fcr diesen Beitrag an Thomas Plorin Viele Homeautomationsl\u00f6sungen bieten Connectoren f\u00fcr MQTT. MQTT oder Message Queuing Telemetry Transport ist ein offenes Nachrichtenprotokoll f\u00fcr M2M (Machine-to-Machine) Kommunikation. Die Informationen werden als Nachrichten \u00fcber sogenannte \u201eTopics\u201c verschickt. Ein \u201eTopic\u201c besteht... mehr lesen","og_url":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/","og_site_name":"Horter &amp; Kalb Blog","article_published_time":"2019-08-05T09:42:53+00:00","article_modified_time":"2023-01-13T15:29:39+00:00","og_image":[{"width":600,"height":249,"url":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg","type":"image\/jpeg"}],"author":"JH","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"JH","Gesch\u00e4tzte Lesezeit":"6\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#article","isPartOf":{"@id":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/"},"author":{"name":"JH","@id":"https:\/\/www.horter.de\/blog\/#\/schema\/person\/a8a4c3c5d3167dce7c7d31df6088b5d2"},"headline":"MQTT &#8211; I2C &#8211; Bridge","datePublished":"2019-08-05T09:42:53+00:00","dateModified":"2023-01-13T15:29:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/"},"wordCount":1043,"commentCount":8,"publisher":{"@id":"https:\/\/www.horter.de\/blog\/#organization"},"image":{"@id":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#primaryimage"},"thumbnailUrl":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg","keywords":["12V schalten","24V schalten","Ausgang","Eingang","Funksteckdosen","I2C","I2C Input","I2C-Bus","i2c-mqtt-bridge","Mosquitto","MQTT","MQTT-Messaging","MQTT.Fx","Raspberri PI","Schalter"],"articleSection":["MQTT","Raspberry PI"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/","url":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/","name":"MQTT - I2C - Bridge - Horter &amp; Kalb Blog","isPartOf":{"@id":"https:\/\/www.horter.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#primaryimage"},"image":{"@id":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#primaryimage"},"thumbnailUrl":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg","datePublished":"2019-08-05T09:42:53+00:00","dateModified":"2023-01-13T15:29:39+00:00","breadcrumb":{"@id":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#primaryimage","url":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg","contentUrl":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2019\/08\/mqtt-i2c-io.jpg","width":600,"height":249,"caption":"IO-Hardware f\u00fcr MQTT"},{"@type":"BreadcrumbList","@id":"https:\/\/www.horter.de\/blog\/mqtt-i2c-bridge\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/www.horter.de\/blog\/"},{"@type":"ListItem","position":2,"name":"MQTT &#8211; I2C &#8211; Bridge"}]},{"@type":"WebSite","@id":"https:\/\/www.horter.de\/blog\/#website","url":"https:\/\/www.horter.de\/blog\/","name":"Horter & Kalb Blog","description":"SPS, I2C und mehr","publisher":{"@id":"https:\/\/www.horter.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.horter.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.horter.de\/blog\/#organization","name":"Horter & Kalb Blog","url":"https:\/\/www.horter.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.horter.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2026\/01\/hoka_Icon_400x400.png","contentUrl":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2026\/01\/hoka_Icon_400x400.png","width":400,"height":400,"caption":"Horter & Kalb Blog"},"image":{"@id":"https:\/\/www.horter.de\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.horter.de\/blog\/#\/schema\/person\/a8a4c3c5d3167dce7c7d31df6088b5d2","name":"JH","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.horter.de\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2015\/07\/jhfb.jpg","contentUrl":"https:\/\/www.horter.de\/blog\/wp-content\/uploads\/2015\/07\/jhfb.jpg","caption":"JH"},"url":"https:\/\/www.horter.de\/blog\/author\/j-horter\/"}]}},"_links":{"self":[{"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/posts\/1972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/comments?post=1972"}],"version-history":[{"count":15,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/posts\/1972\/revisions"}],"predecessor-version":[{"id":1991,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/posts\/1972\/revisions\/1991"}],"wp:attachment":[{"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/media?parent=1972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/categories?post=1972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.horter.de\/blog\/wp-json\/wp\/v2\/tags?post=1972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}