<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MQTT &#8211; SmartHomeNG | smarthome knx homematic mqtt hue 1wire home automation</title>
	<atom:link href="https://www.smarthomeng.de/tag/mqtt/feed" rel="self" type="application/rss+xml" />
	<link>https://www.smarthomeng.de</link>
	<description>Die Device Integrations-Plattform für Dein Smart Home</description>
	<lastBuildDate>Sat, 02 Nov 2024 12:48:25 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.5</generator>

<image>
	<url>https://www.smarthomeng.de/wp-content/uploads/global/logo_small_152x152-150x150.png</url>
	<title>MQTT &#8211; SmartHomeNG | smarthome knx homematic mqtt hue 1wire home automation</title>
	<link>https://www.smarthomeng.de</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Neuerungen bei MQTT in SmartHomeNG v1.7</title>
		<link>https://www.smarthomeng.de/neuerungen-bei-mqtt-in-smarthomeng-v1-7</link>
					<comments>https://www.smarthomeng.de/neuerungen-bei-mqtt-in-smarthomeng-v1-7#respond</comments>
		
		<dc:creator><![CDATA[Martin Sinn]]></dc:creator>
		<pubDate>Sun, 05 Apr 2020 23:02:30 +0000</pubDate>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[MQTT]]></category>
		<category><![CDATA[shelly]]></category>
		<category><![CDATA[tasmota]]></category>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=2441</guid>

					<description><![CDATA[MQTT in SmartHomeNG ab v1.7 Bisher war in SmartHomeNG das eigentliche MQTT Protokoll im mqtt Plugin implementiert. In SmartHomeNG v1.7 wurde die Unterstützung des eigentlichen MQTT Protokolls in den Core verlagert. Die Implementierung erfolgte als ein ladbares Modul. Es gibt nun ein neues mqtt Plugin, welches die Protokoll Unterstützung des<a class="moretag" href="https://www.smarthomeng.de/neuerungen-bei-mqtt-in-smarthomeng-v1-7"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<h2>MQTT in SmartHomeNG ab v1.7</h2>
<p>Bisher war in SmartHomeNG das eigentliche MQTT Protokoll im mqtt Plugin implementiert.</p>
<p>In SmartHomeNG v1.7 wurde die Unterstützung des eigentlichen MQTT Protokolls in den Core verlagert. Die Implementierung erfolgte als ein ladbares Modul. Es gibt nun ein neues mqtt Plugin, welches die Protokoll Unterstützung des Core nutzt.</p>
<p>Diese Änderung bringt neue Funktionalitäten mit sich:</p>
<ul>
<li>Logiken können das MQTT Protokoll nutzen. Wie das genau geht, ist in der <a href="https://www.smarthomeng.de/user/logiken/mqtt_nutzung.html">Anwender Dokumentation</a> zu SmartHomeNG beschrieben.</li>
<li>Weitere Plugins können das MQTT Protokoll nutzen und darauf aufbauend Payload-Protokolle zu verschiedenen Devices implementieren, ohne das eigentliche MQTT Protokoll selbst implementieren zu müssen. Ein Beispiel hierfür ist das <strong>shelly Plugin,</strong> welches mit SmartHomeNG v1.7 hinzugekommen ist und die einfache Ansteuerung verschiedener Shelly Devices über MQTT ermöglicht. Details zu diesem Plugin sind in der <a href="https://www.smarthomeng.de/user/plugins/shelly/user_doc.html">Anwender Dokumentation</a> zu SmartHomeNG beschrieben.</li>
</ul>
<h3>Konfiguration des MQTT Moduls</h3>
<p>Durch die Verlagerung in den Core, ist auch die Konfiguration des MQTT Protokolls an eine andere Stelle gewandert. Die Konfiguration kann über die graphische Oberfläche oder direkt in der entsprechenden Konfigurationsdatei erfolgen:</p>
<p>In der GUI finden sich die Einstellungen unter System/Konfiguration im Tab <strong>MQTT Modul</strong>:</p>
<p><img fetchpriority="high" decoding="async" src="https://www.smarthomeng.de/wp-content/uploads/2020/03/Capto_Capture-2020-03-29_04-26-55_PM-300x219.jpg" alt="MQTT Konfiguration" width="675" height="493" class=" wp-image-2452" srcset="https://www.smarthomeng.de/wp-content/uploads/2020/03/Capto_Capture-2020-03-29_04-26-55_PM-300x219.jpg 300w, https://www.smarthomeng.de/wp-content/uploads/2020/03/Capto_Capture-2020-03-29_04-26-55_PM-768x560.jpg 768w, https://www.smarthomeng.de/wp-content/uploads/2020/03/Capto_Capture-2020-03-29_04-26-55_PM-1024x746.jpg 1024w, https://www.smarthomeng.de/wp-content/uploads/2020/03/Capto_Capture-2020-03-29_04-26-55_PM.jpg 1260w" sizes="(max-width: 675px) 100vw, 675px" /></p>
<p>&nbsp;</p>
<p>Damit die Konfiguration wirksam wird und das MQTT Modul beim Restart von SmartHomeNG geladen wird, muss der Parameter <strong>enabled</strong> auf <strong>true</strong> gesetzt werden.</p>
<p>Alternativ kann die Konfiguration direkt in der Datei <strong>../etc/module.yaml</strong> erfolgen. In der Datei muss ein Abschnitt <strong>mqtt:</strong> angelegt werden, der einen Eintrag <strong>module_name: mqtt</strong> enthält. In diesem Abschnitt können dann die Parameter konfiguriert werden.</p>
<p>Beispiel:</p>
<pre><code class="language-yaml">
mqtt:
    module_name: mqtt
    # broker_host: smarthomeng.local
    broker_monitoring: true
    # qos: 1
    # acl: ''
    last_will_topic: devices/shng-module/$online
    last_will_payload: 'False'
    birth_topic: devices/shng-module/$online
    birth_payload: 'True'
    # bool_values: ['Falsch', 'Wahr']
    # user: user
    # password: geheim
</code></pre>
<p>&nbsp;</p>
<h3>Konfiguration des MQTT Plugins</h3>
<p>Die Funktionalität, die das MQTT Plugin zur Verfügung stellte, gibt es weiterhin. Das MQTT Plugin ist entsprechend angepasst worden und nutzt zur Kommunikation jetzt die MQTT Unterstützung des Core. Das Plugin hat jedoch keine Parameter mehr, die konfiguriert werden müssten. Die Item Attribute (mqtt_topic, mqtt_topic_in, mqtt_topic_out, etc.) sind unverändert erhalten geblieben.</p>
<p>Eine Konfiguration des mqtt Plugins in der Plugin Konfigurationsdatei <strong>../etc/plugin.yaml</strong> sieht folgendermaßen aus:</p>
<pre><code class="language-yaml">
mqtt:
    plugin_name: mqtt

</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/neuerungen-bei-mqtt-in-smarthomeng-v1-7/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verarbeiten von JSON Messsages in Items</title>
		<link>https://www.smarthomeng.de/verarbeiten-von-json-messsages-in-items</link>
					<comments>https://www.smarthomeng.de/verarbeiten-von-json-messsages-in-items#respond</comments>
		
		<dc:creator><![CDATA[Martin Sinn]]></dc:creator>
		<pubDate>Fri, 06 Apr 2018 19:33:11 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Items]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[MQTT]]></category>
		<category><![CDATA[mqtt1]]></category>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=1414</guid>

					<description><![CDATA[Verarbeiten von JSON Daten Eine Reihe von Devices liefert Antworten bzw. Stati in Form von JSON formatierten Daten zurück. Diese Daten können in Items verwendet werden, wenn sie in Items vom Typ dict oder vom Typ list eingelesen werden können. &#160; Einlesen von JSON Messages in dicts mit dem MQTT Plugin<a class="moretag" href="https://www.smarthomeng.de/verarbeiten-von-json-messsages-in-items"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<h2>Verarbeiten von JSON Daten</h2>
<p>Eine Reihe von Devices liefert Antworten bzw. Stati in Form von JSON formatierten Daten zurück. Diese Daten können in Items verwendet werden, wenn sie in Items vom Typ <strong>dict</strong> oder vom Typ <strong>list</strong> eingelesen werden können.</p>
<p>&nbsp;</p>
<h3>Einlesen von JSON Messages in <strong>dict</strong>s mit dem MQTT Plugin</h3>
<p>Besonders einfach ist das Einlesen von Daten in Items der Typs <strong>dict</strong>, wenn man MQTT Messages mit dem aktuellen MQTT Plugin empfängt. Das MQTT Protokoll bis zur Version 3.1x unterstützt keine Datentypen. Die Payload, also die übertragenen Daten, werden immer als Array of Byte übertragen.</p>
<p>Das aktuelle MQTT Plugin unterstützt das Casting in den Datentyp des Items. Wenn also z.B. das Item vom Typ <strong>str</strong> ist, wird beim Empfang das Array of Byte in einen String gewandelt.</p>
<p>Wenn man in der Payload der MQTT Message JSON formatierte Daten in ein Item vom Typ <strong>dict</strong> empfängt, werden die Daten in Form eines <strong>Python dict</strong> gespeichert und können in Logiken und eval-Ausdrücken entsprechend weiter verarbeitet werden.</p>
<p>Bei komplexen JSON Strukturen ist die Weiterverarbeitung mit einer Logik zu empfehlen. Bei einfacheren Strukturen kann die Weiterverarbeitung jedoch auch sehr gut in Items mit Hilfe von <strong>eval</strong> oder <strong>on_change</strong> erfolgen.</p>
<p>&nbsp;</p>
<h4>Ein einfaches JSON Beispiel</h4>
<p>Wenn eine MQTT Message z.B. folgende Daten liefert:</p>
<pre><code class="language-json">{  
   "key1":"value1",
   "key2":"value2",
   "key3":"value3"
}</code></pre>
<p>und Du nur den Wert von <strong>key2</strong> benötigst, kannst Du das über ein Hilfs-Item lösen, in dem Du die MQTT Payload einliest und den entsprechenden Wert in das Ziel-Item schreibst. Dazu musst Du die Items folgendermaßen definieren:</p>
<pre><code class="language-yaml">
test:
    hilfs_item:
        type: dict
        mqtt_topic_in: <mark>test/test</mark>
        on_change: ..ziel_item = value['key2']

    ziel_item:
        type: str</code></pre>
<p>Das MQTT Topic musst Du durch einen sinnvollen Wert ersetzen. Natürlich kann im <strong>on_change</strong> Attribut anstelle der relativen Item Adressierung auch die absolute Adressierung (<strong>test.ziel_item</strong>) verwendet werden.</p>
<p>&nbsp;</p>
<p>Alternativ kannst Du das auch mit <strong>eval</strong> / <strong>eval_trigger</strong> lösen:</p>
<pre><code class="language-yaml">test:
    hilfs_item:
        type: dict
        mqtt_topic_in: <mark>test/test</mark>

    ziel_item:
        type: str
        eval: sh.test.hilfs_item()['key2']
        eval_trigger: test.hilfs_item</code></pre>
<p>Diese Variante kannst Du natürlich auch mit relativer Item-Adressierung realisieren.</p>
<p>&nbsp;</p>
<h3>Einlesen von JSON Messages in <strong>list</strong>s mit dem MQTT Plugin</h3>
<p>Wenn man in der Payload der MQTT Message JSON formatierte Daten in ein Item vom Typ <strong>list</strong> empfängt, werden die Daten in Form eines <strong>Python list</strong> gespeichert und können in Logiken und eval-Ausdrücken entsprechend weiter verarbeitet werden.</p>
<p>&nbsp;</p>
<h4>Ein einfaches JSON Beispiel</h4>
<p>Wenn eine MQTT Message z.B. folgende Daten liefert:</p>
<pre><code class="language-json">[  
   "value1",
   "value2",
   "value3"
]</code></pre>
<p>und Du nur den zweiten Wert von benötigst, kannst Du das über ein Hilfs-Item lösen, in dem Du die MQTT Payload einliest und den entsprechenden Wert in das Ziel-Item schreibst.</p>
<p>Listen sind so definiert, dass das ersten Element den Index 0 hat. Um den zweiten Wert zu adressieren, musst Du den Index 1 verwenden. Dazu musst Du die Items folgendermaßen definieren:</p>
<pre><code class="language-yaml">
test:
    hilfs_item:
        type: list
        mqtt_topic_in: <mark>test/test</mark>
        on_change: ..ziel_item = value[1]

    ziel_item:
        type: str</code></pre>
<p>&nbsp;</p>
<h3>Auswertung komplexerer Datenstrukturen</h3>
<p>Ein <strong>dict</strong> oder eine <strong>list</strong> kann statt einfacher Daten auch <strong>dict</strong>s oder <strong>list</strong>s enthalten. Auch diese Daten lassen sich auswerten und es können Einzelwerte dieser Datenstruktur in Items gespeichert werden.</p>
<p>Wenn eine MQTT Message z.B. folgende Daten liefert:</p>
<pre><code class="language-json">{  
   "key1":"value1",
   "key2":[  
      "value21",
      "value22",
      "value23"
   ],
   "key3":{  
      "key31":"value31",
      "key32":"value32",
      "key33":"value33"
   }
}</code></pre>
<p>&nbsp;</p>
<p>kannst Du folgendermaßen auf den <strong>value22</strong> oder den <strong>value33</strong> zugreifen:</p>
<pre><code class="language-yaml">
test:
    hilfs_item:
        type: dict
        mqtt_topic_in: <mark>test/test</mark>
        on_change: 
          - ..ziel_item1 = value['key2'][0]
          - ..ziel_item2 = value['key3']['key33']

    ziel_item1:
        type: str

    ziel_item2:
        type: str
</code></pre>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/verarbeiten-von-json-messsages-in-items/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
