{"id":23074,"date":"2026-01-04T10:51:37","date_gmt":"2026-01-04T09:51:37","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=23074"},"modified":"2026-01-04T12:04:20","modified_gmt":"2026-01-04T11:04:20","slug":"rtl_433-mit-n8n-via-mqtt","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=23074","title":{"rendered":"rtl_433 mit n8n via mqtt"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-scaled.jpg\" alt=\"rtl_433\" width=\"2560\" height=\"1429\" \/><\/p>\n<p>Habe schon einige Beitr\u00e4ge \u00fcber <a href=\"http:\/\/blog.wenzlaff.de\/?s=rtl_433\" target=\"_blank\">rtl_433<\/a> geschieben. Dort kann auch die Installation von <a href=\"https:\/\/triq.org\/rtl_433\/\">rtl_433<\/a> nachgelesen werden. Heute mal mit Focus auf <a href=\"http:\/\/blog.wenzlaff.de\/?s=n8n\" target=\"_blank\">n8n<\/a>.<\/p>\n<p>Also auf meinem Raspberry Pi mit dem RTL_SDR-Stick l\u00e4uft der mosquitto Host, und es ist so aufgebaut:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/rtl_433-architektur-scaled.jpeg\" alt=\"rtl_433\" width=\"2560\" height=\"1429\" \/><\/p>\n<p>Startet mit diesem rtl_433-to-mqtt.sh Script den mqtt Server: <!--more--><\/p>\n<pre class=\"lang:sh decode:true \" >\r\n\r\n#!\/bin\/bash\r\n\r\n# Set Host\r\nMQTT_HOST=\"localhost\"\r\n# Set Topic\r\nTOPIC=\"\/data\/rtl\/433\"\r\n\r\nexport LANG=C\r\nPATH=\"\/usr\/local\/bin:\/usr\/local\/sbin:\/usr\/bin:\/usr\/sbin:\/bin:\/sbin\"\r\n\r\n# Start the listener and enter an endless loop\r\n# https:\/\/triq.org\/rtl_433\/OPERATION.html#center-frequency\r\n# Other interesting frequencies are e.g. -f 868M, -f 315M, -f 345M, -f 915M\r\n\r\nrtl_433 -c rtl_433\/rtl_433.conf -F json |  while read line\r\ndo\r\n# Log to file if file exists.\r\n# Create file with touch \/tmp\/rtl_433.log if logging is needed\r\n  [ -w \/tmp\/rtl_433.log ] &amp;&amp; echo $line &gt;&gt; rtl_433.log\r\n\r\n# Raw message to MQTT\r\n  echo $line  | \/usr\/bin\/mosquitto_pub -h $MQTT_HOST -i RTL_433 -l -t $TOPIC\r\ndone\r\n\r\n<\/pre>\n<p>F\u00fcr Prod noch Passwort und User in der Datei <strong>rtl_433\/rtl_433.conf<\/strong> setzen, die wird wie folgt angelegt:<\/p>\n<p><strong>sudo mosquitto_passwd -c \/etc\/mosquitto\/passwd pi-zero<\/strong><\/p>\n<p>Zum teste, ob alles l\u00e4uft auf den Pi:<\/p>\n<pre class=\"lang:default decode:true \" >mosquitto_sub -h 127.0.0.1 -p 1883 -u pi-zero -P passwort -t '#' -v<\/pre>\n<p>Damit von n8n auf den Pi zugegriffen werden kann, der l\u00e4uft bei mir auf einem anderen Pi im Docker noch die Datei <strong>\/etc\/mosquitto\/mosquitto.conf<\/strong> anpassen: <\/p>\n<pre class=\"lang:sh decode:true \" >listener 1883\r\nallow_anonymous true\r\npassword_file \/etc\/mosquitto\/passwd\r\n<\/pre>\n<p>In Prod den anonymous entfernen, wenn nur der User mit Passwort zugreifen soll (siehe <a href=\"https:\/\/mosquitto.org\/documentation\/authentication-methods\/\" target=\"_blank\">hier<\/a>).<\/p>\n<p>Der <strong>n8n<\/strong> Flow sieht wie folgt aus:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-workflog-scaled.jpeg\" alt=\"n8n Worklflow\" width=\"2560\" height=\"1657\" class=\"aligncenter size-full wp-image-23088\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-workflog-scaled.jpeg 2560w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-workflog-300x194.jpeg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-workflog-1024x663.jpeg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-workflog-768x497.jpeg 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-workflog-1536x994.jpeg 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-workflog-2048x1326.jpeg 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Im Trigger ist nur der Topic einzutragen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-3-scaled.jpeg\" alt=\"n8n Worklflow\" width=\"2560\" height=\"1616\" class=\"aligncenter size-full wp-image-23087\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-3-scaled.jpeg 2560w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-3-300x189.jpeg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-3-1024x647.jpeg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-3-768x485.jpeg 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-3-1536x970.jpeg 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-3-2048x1293.jpeg 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Im Filter die Modelle und als letzten eine f\u00fcr unbekannte:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-2-scaled.jpeg\" alt=\"n8n Worklflow\" width=\"2560\" height=\"1596\" class=\"aligncenter size-full wp-image-23089\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-2-scaled.jpeg 2560w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-2-300x187.jpeg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-2-1024x638.jpeg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-2-768x479.jpeg 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-2-1536x958.jpeg 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-2-2048x1277.jpeg 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Eine Tabelle anlegen mit den gew\u00fcnschten Feldern:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-db-scaled.jpeg\" alt=\"n8n Worklflow\" width=\"2560\" height=\"549\" class=\"aligncenter size-full wp-image-23091\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-db-scaled.jpeg 2560w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-db-300x64.jpeg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-db-1024x220.jpeg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-db-768x165.jpeg 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-db-1536x330.jpeg 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-db-2048x440.jpeg 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Und das gew\u00fcnschte Mapping in die Datentabelle:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-1-scaled.jpeg\" alt=\"\" width=\"2560\" height=\"1622\" class=\"aligncenter size-full wp-image-23090\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-1-scaled.jpeg 2560w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-1-300x190.jpeg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-1-1024x649.jpeg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-1-768x487.jpeg 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-1-1536x973.jpeg 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/01\/n8n-work-flow-1-2048x1298.jpeg 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Habe schon einige Beitr\u00e4ge \u00fcber rtl_433 geschieben. Dort kann auch die Installation von rtl_433 nachgelesen werden. Heute mal mit Focus auf n8n. Also auf meinem Raspberry Pi mit dem RTL_SDR-Stick l\u00e4uft der mosquitto Host, und es ist so aufgebaut: Startet mit diesem rtl_433-to-mqtt.sh Script den mqtt Server:<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,538,852,6267,1319],"tags":[107,2359,6255,3100,6288],"class_list":["post-23074","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-elektronik","category-heimautomatisierung","category-n8n","category-sicherheit-2","tag-architektur","tag-mqtt","tag-n8n","tag-rtl_433","tag-rtl_433-architektur"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=23074"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23074\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=23074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=23074"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=23074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}