<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jorge3711</id>
	<title>FHEMWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jorge3711"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Jorge3711"/>
	<updated>2026-04-10T22:44:09Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Structure&amp;diff=21354</id>
		<title>Structure</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Structure&amp;diff=21354"/>
		<updated>2017-04-18T20:10:58Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: /* Define */ Typos gefixt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:structure}} &amp;lt;!-- correct title to lowercase first letter --&amp;gt;&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Zusammenfassung von Geräten (gemeinsam schalten, Status zusammenfassen)&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=structure&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModTechName=98_structure.pm&lt;br /&gt;
|ModOwner=rudolfkoenig&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[structure]] ist ein Erweiterungsmodul zur Zusammenfassung von Geräten, ursprünglich nur, um diese gemeinsam schalten zu können. Die Funktionalität wurde später erweitert um die Darstellung von Zuständen der in der Struktur zusammengefassten Geräte.&lt;br /&gt;
&lt;br /&gt;
Es ist die Bildung von mehrstufigen Strukturen möglich.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
&amp;lt;pre&amp;gt;define structure_name structure &amp;lt;struct_type&amp;gt; &amp;lt;dev1&amp;gt; &amp;lt;dev2&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;code&amp;gt;&amp;lt;struct_type&amp;gt;&amp;lt;/code&amp;gt; ein beliebiger Bezeichner ist, welcher frei vergeben werden kann und in alle Mitglieder des Structure Devices als Attribut propagiert wird; &amp;lt;code&amp;gt;&amp;lt;dev1&amp;gt; &amp;lt;dev2&amp;gt;&amp;lt;/code&amp;gt; bezeichnen die Mitglieder des angelegten Structure Gerätes.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Gesamtaufstellung: siehe Befehlsreferenz.&lt;br /&gt;
&lt;br /&gt;
==== clientstate_behavior ====&lt;br /&gt;
Mögliche Werte:&lt;br /&gt;
* absolute&lt;br /&gt;
* relative&lt;br /&gt;
* relativeKnown&lt;br /&gt;
* last - der Status der Struktur entspricht dem Status des Gerätes, das zuletzt eine Statusänderung erfahren hat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== clientstate_priority ====&lt;br /&gt;
Definiert das Verhalten der structure in Abhängigkeit der enthaltenen Geräte. Das Beispiel&lt;br /&gt;
:&amp;lt;code&amp;gt;attr myStructure clientstate_priority present absent&amp;lt;/code&amp;gt;&lt;br /&gt;
bedeutet: wenn mindestens eines des Geräte der Struktur den Status &#039;&#039;present&#039;&#039; hat, bekommt die Struktur den Status &#039;&#039;present&#039;&#039; (unabhängig vom Status der anderen Geräte der Struktur). Nur, wenn &#039;&#039;&#039;alle&#039;&#039;&#039; Geräte den Status &#039;&#039;absent&#039;&#039; haben, bekommt auch die Struktur den Status &#039;&#039;absent&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das Verhalten dieses Attributs ist zusätzlich beeinflusst durch den Wert des Attributs [[structure#clientstate_behavior|clientstate_behavior]].&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
{{Todo|Bis zur Verfügbarkeit komplexerer Beispielbeschreibungen bitte unbedingt auf die commandref zurückgreifen.}}&lt;br /&gt;
&lt;br /&gt;
=== EnOcean - Physischer EnOcean- und virtueller Fhem-Schalter zu einem Device zusammenfassen ===&lt;br /&gt;
* [[EnOcean_Starter_Guide#Physischer_EnOcean-_und_virtueller_Fhem-Schalter_zu_einem_Device_zusammenfassen|Anwendungsbeispiel zur Visualisierung unidirektionaler EnOcean-Aktoren]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=63255|LinkText=Erklärung}} des &amp;lt;code&amp;gt;struct_type&amp;lt;/code&amp;gt; im define String.&lt;br /&gt;
* {{Link2Forum|Topic=8354|LinkText=Diskussion}} über die Erweiterung des Moduls um Funktionen für die Status-Anzeige&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Kategorie:xyz]] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- (Modulkategorie wird automatisch gesetzt) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Structure&amp;diff=21353</id>
		<title>Structure</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Structure&amp;diff=21353"/>
		<updated>2017-04-18T19:39:22Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: /* Define */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:structure}} &amp;lt;!-- correct title to lowercase first letter --&amp;gt;&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Zusammenfassung von Geräten (gemeinsam schalten, Status zusammenfassen)&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=structure&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModTechName=98_structure.pm&lt;br /&gt;
|ModOwner=rudolfkoenig&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[structure]] ist ein Erweiterungsmodul zur Zusammenfassung von Geräten, ursprünglich nur, um diese gemeinsam schalten zu können. Die Funktionalität wurde später erweitert um die Darstellung von Zuständen der in der Struktur zusammengefassten Geräte.&lt;br /&gt;
&lt;br /&gt;
Es ist die Bildung von mehrstufigen Strukturen möglich.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
&amp;lt;pre&amp;gt;define structure_name structure &amp;lt;struct_type&amp;gt; &amp;lt;dev1&amp;gt; &amp;lt;dev2&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;code&amp;gt;&amp;lt;struct_type&amp;gt;&amp;lt;/code&amp;gt; ein beliebiger Bezeichner ist, welcher frei vergeben werden kann und in alle Mitglieder des Structre Devices als Attribut propagiert wird; &amp;lt;code&amp;gt;&amp;lt;dev1&amp;gt; &amp;lt;dev2&amp;gt;&amp;lt;/code&amp;gt; bezeichnen die Mitglieder des angelegten Structre Gerätes.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Gesamtaufstellung: siehe Befehlsreferenz.&lt;br /&gt;
&lt;br /&gt;
==== clientstate_behavior ====&lt;br /&gt;
Mögliche Werte:&lt;br /&gt;
* absolute&lt;br /&gt;
* relative&lt;br /&gt;
* relativeKnown&lt;br /&gt;
* last - der Status der Struktur entspricht dem Status des Gerätes, das zuletzt eine Statusänderung erfahren hat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== clientstate_priority ====&lt;br /&gt;
Definiert das Verhalten der structure in Abhängigkeit der enthaltenen Geräte. Das Beispiel&lt;br /&gt;
:&amp;lt;code&amp;gt;attr myStructure clientstate_priority present absent&amp;lt;/code&amp;gt;&lt;br /&gt;
bedeutet: wenn mindestens eines des Geräte der Struktur den Status &#039;&#039;present&#039;&#039; hat, bekommt die Struktur den Status &#039;&#039;present&#039;&#039; (unabhängig vom Status der anderen Geräte der Struktur). Nur, wenn &#039;&#039;&#039;alle&#039;&#039;&#039; Geräte den Status &#039;&#039;absent&#039;&#039; haben, bekommt auch die Struktur den Status &#039;&#039;absent&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das Verhalten dieses Attributs ist zusätzlich beeinflusst durch den Wert des Attributs [[structure#clientstate_behavior|clientstate_behavior]].&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
{{Todo|Bis zur Verfügbarkeit komplexerer Beispielbeschreibungen bitte unbedingt auf die commandref zurückgreifen.}}&lt;br /&gt;
&lt;br /&gt;
=== EnOcean - Physischer EnOcean- und virtueller Fhem-Schalter zu einem Device zusammenfassen ===&lt;br /&gt;
* [[EnOcean_Starter_Guide#Physischer_EnOcean-_und_virtueller_Fhem-Schalter_zu_einem_Device_zusammenfassen|Anwendungsbeispiel zur Visualisierung unidirektionaler EnOcean-Aktoren]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=63255|LinkText=Erklärung}} des &amp;lt;code&amp;gt;struct_type&amp;lt;/code&amp;gt; im define String.&lt;br /&gt;
* {{Link2Forum|Topic=8354|LinkText=Diskussion}} über die Erweiterung des Moduls um Funktionen für die Status-Anzeige&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Kategorie:xyz]] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- (Modulkategorie wird automatisch gesetzt) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Structure&amp;diff=21352</id>
		<title>Structure</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Structure&amp;diff=21352"/>
		<updated>2017-04-18T19:38:56Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: /* Define */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:structure}} &amp;lt;!-- correct title to lowercase first letter --&amp;gt;&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Zusammenfassung von Geräten (gemeinsam schalten, Status zusammenfassen)&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=structure&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModTechName=98_structure.pm&lt;br /&gt;
|ModOwner=rudolfkoenig&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[structure]] ist ein Erweiterungsmodul zur Zusammenfassung von Geräten, ursprünglich nur, um diese gemeinsam schalten zu können. Die Funktionalität wurde später erweitert um die Darstellung von Zuständen der in der Struktur zusammengefassten Geräte.&lt;br /&gt;
&lt;br /&gt;
Es ist die Bildung von mehrstufigen Strukturen möglich.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
&amp;lt;pre&amp;gt;define structure_name structure &amp;lt;struct_type&amp;gt; &amp;lt;dev1&amp;gt; &amp;lt;dev2&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;code&amp;gt;&amp;lt;struct_type&amp;gt;&amp;lt;/code&amp;gt; ein beliebiger Bezeichner ist, welcher frei vergeben werden kann und in alle Mitglieder des Structre Devices als Attribut propagiert wird; &amp;quot;&amp;lt;code&amp;gt;&amp;lt;dev1&amp;gt; &amp;lt;dev2&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; bezeichnen die Mitglieder des angelegten Structre Gerätes.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Gesamtaufstellung: siehe Befehlsreferenz.&lt;br /&gt;
&lt;br /&gt;
==== clientstate_behavior ====&lt;br /&gt;
Mögliche Werte:&lt;br /&gt;
* absolute&lt;br /&gt;
* relative&lt;br /&gt;
* relativeKnown&lt;br /&gt;
* last - der Status der Struktur entspricht dem Status des Gerätes, das zuletzt eine Statusänderung erfahren hat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== clientstate_priority ====&lt;br /&gt;
Definiert das Verhalten der structure in Abhängigkeit der enthaltenen Geräte. Das Beispiel&lt;br /&gt;
:&amp;lt;code&amp;gt;attr myStructure clientstate_priority present absent&amp;lt;/code&amp;gt;&lt;br /&gt;
bedeutet: wenn mindestens eines des Geräte der Struktur den Status &#039;&#039;present&#039;&#039; hat, bekommt die Struktur den Status &#039;&#039;present&#039;&#039; (unabhängig vom Status der anderen Geräte der Struktur). Nur, wenn &#039;&#039;&#039;alle&#039;&#039;&#039; Geräte den Status &#039;&#039;absent&#039;&#039; haben, bekommt auch die Struktur den Status &#039;&#039;absent&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das Verhalten dieses Attributs ist zusätzlich beeinflusst durch den Wert des Attributs [[structure#clientstate_behavior|clientstate_behavior]].&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
{{Todo|Bis zur Verfügbarkeit komplexerer Beispielbeschreibungen bitte unbedingt auf die commandref zurückgreifen.}}&lt;br /&gt;
&lt;br /&gt;
=== EnOcean - Physischer EnOcean- und virtueller Fhem-Schalter zu einem Device zusammenfassen ===&lt;br /&gt;
* [[EnOcean_Starter_Guide#Physischer_EnOcean-_und_virtueller_Fhem-Schalter_zu_einem_Device_zusammenfassen|Anwendungsbeispiel zur Visualisierung unidirektionaler EnOcean-Aktoren]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=63255|LinkText=Erklärung}} des &amp;lt;code&amp;gt;struct_type&amp;lt;/code&amp;gt; im define String.&lt;br /&gt;
* {{Link2Forum|Topic=8354|LinkText=Diskussion}} über die Erweiterung des Moduls um Funktionen für die Status-Anzeige&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Kategorie:xyz]] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- (Modulkategorie wird automatisch gesetzt) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Structure&amp;diff=21351</id>
		<title>Structure</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Structure&amp;diff=21351"/>
		<updated>2017-04-18T19:35:51Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: Define Abschnitt ausformuliert und vor allem struct_type erklärt mit Belegen ins Forum&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:structure}} &amp;lt;!-- correct title to lowercase first letter --&amp;gt;&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Zusammenfassung von Geräten (gemeinsam schalten, Status zusammenfassen)&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=structure&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModTechName=98_structure.pm&lt;br /&gt;
|ModOwner=rudolfkoenig&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[structure]] ist ein Erweiterungsmodul zur Zusammenfassung von Geräten, ursprünglich nur, um diese gemeinsam schalten zu können. Die Funktionalität wurde später erweitert um die Darstellung von Zuständen der in der Struktur zusammengefassten Geräte.&lt;br /&gt;
&lt;br /&gt;
Es ist die Bildung von mehrstufigen Strukturen möglich.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
&amp;lt;pre&amp;gt;define structure_name structure &amp;lt;struct_type&amp;gt; &amp;lt;dev1&amp;gt; &amp;lt;dev2&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;code&amp;gt;&amp;lt;struct_type&amp;gt;&amp;lt;/code&amp;gt; ein beliebiger Bezeichner ist, welcher frei vergeben werden kann und in alle Devices als Attribut propagiert wird; &amp;quot;&amp;lt;code&amp;gt;&amp;lt;dev1&amp;gt; &amp;lt;dev2&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; bezeichnen die Mitglieder des angelegten Structre Gerätes.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Gesamtaufstellung: siehe Befehlsreferenz.&lt;br /&gt;
&lt;br /&gt;
==== clientstate_behavior ====&lt;br /&gt;
Mögliche Werte:&lt;br /&gt;
* absolute&lt;br /&gt;
* relative&lt;br /&gt;
* relativeKnown&lt;br /&gt;
* last - der Status der Struktur entspricht dem Status des Gerätes, das zuletzt eine Statusänderung erfahren hat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== clientstate_priority ====&lt;br /&gt;
Definiert das Verhalten der structure in Abhängigkeit der enthaltenen Geräte. Das Beispiel&lt;br /&gt;
:&amp;lt;code&amp;gt;attr myStructure clientstate_priority present absent&amp;lt;/code&amp;gt;&lt;br /&gt;
bedeutet: wenn mindestens eines des Geräte der Struktur den Status &#039;&#039;present&#039;&#039; hat, bekommt die Struktur den Status &#039;&#039;present&#039;&#039; (unabhängig vom Status der anderen Geräte der Struktur). Nur, wenn &#039;&#039;&#039;alle&#039;&#039;&#039; Geräte den Status &#039;&#039;absent&#039;&#039; haben, bekommt auch die Struktur den Status &#039;&#039;absent&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das Verhalten dieses Attributs ist zusätzlich beeinflusst durch den Wert des Attributs [[structure#clientstate_behavior|clientstate_behavior]].&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
{{Todo|Bis zur Verfügbarkeit komplexerer Beispielbeschreibungen bitte unbedingt auf die commandref zurückgreifen.}}&lt;br /&gt;
&lt;br /&gt;
=== EnOcean - Physischer EnOcean- und virtueller Fhem-Schalter zu einem Device zusammenfassen ===&lt;br /&gt;
* [[EnOcean_Starter_Guide#Physischer_EnOcean-_und_virtueller_Fhem-Schalter_zu_einem_Device_zusammenfassen|Anwendungsbeispiel zur Visualisierung unidirektionaler EnOcean-Aktoren]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=63255|LinkText=Erklärung}} des &amp;lt;code&amp;gt;struct_type&amp;lt;/code&amp;gt; im define String.&lt;br /&gt;
* {{Link2Forum|Topic=8354|LinkText=Diskussion}} über die Erweiterung des Moduls um Funktionen für die Status-Anzeige&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Kategorie:xyz]] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- (Modulkategorie wird automatisch gesetzt) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Kategorie:HomeMatic_Components&amp;diff=21228</id>
		<title>Kategorie:HomeMatic Components</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Kategorie:HomeMatic_Components&amp;diff=21228"/>
		<updated>2017-04-09T07:57:34Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: Homematic-Geräteübersicht oben in der Kategoriebeschreibung verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNText=Neue Artikel für diese Kategorie bitte nach folgendem Namensschema anlegen:&lt;br /&gt;
# &#039;&#039;&#039;Systemname&#039;&#039;&#039;, wie von ELV verwendet (siehe auch [[HomeMatic Namen verstehen|Namensschema]])&lt;br /&gt;
# &amp;quot;sprechende&amp;quot; &#039;&#039;Bezeichnung&#039;&#039; des Gerätes&lt;br /&gt;
also beispielsweise &#039;&#039;&#039;HM-PBI-4-FM&#039;&#039;&#039; &#039;&#039;Funk-Tasterschnittstelle 4fach&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
DE: Diese Kategorie listet die [[Bekannte HomeMatic Geräte|verschiedenen Geräte]] des HomeMatic-Systems auf.&lt;br /&gt;
&lt;br /&gt;
EN: This category lists [[Bekannte HomeMatic Geräte|hardware components]] of the HomeMatic system.&lt;br /&gt;
&lt;br /&gt;
Basisinformationen zum Themenbereich [[HomeMatic]]:&lt;br /&gt;
* [[HomeMatic|Allgemeine Informationen]].&lt;br /&gt;
* Im Anhang &amp;quot;Das Hardwaresystem HomeMatic&amp;quot; des [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Einsteigerdokuments &amp;quot;Heimautomatisierung-mit-fhem&amp;quot;]&lt;br /&gt;
* Geräteübergreifende Informationen zum [[HomeMatic Devices pairen|Pairen]], dem Einbinden von Geräten in ein System.&lt;br /&gt;
* Ein tabellarische Geräteübersicht gibt im Artikel [[Homematic-Geräteübersicht]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Hardware]]&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homematic-Ger%C3%A4te%C3%BCbersicht&amp;diff=21227</id>
		<title>Homematic-Geräteübersicht</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homematic-Ger%C3%A4te%C3%BCbersicht&amp;diff=21227"/>
		<updated>2017-04-09T07:54:50Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: HM-LC-Sw1-Pl-DN-R1hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite strukturiert die vorhandenen Wiki-Seiten zu Homematic-Geräten in Gruppen zur leichteren Orientierung. Derzeit sind nicht alle Homematic-Geräte aufgeführt, da die zugehörigen Wiki-Seiten noch nicht erstellt wurden.&lt;br /&gt;
&lt;br /&gt;
Für alle Geräte mit AA/AAA-Batterien werden empfohlen: [http://www.ikea.com/de/de/catalog/products/80240505/ IKEA Akalisk AAA] und [http://www.ikea.com/de/de/catalog/products/50240502/ IKEA Akalisk AA], die sehr temperaturbeständig und dauerhaft sind. Die [http://www.elv.de/installationsadapter-homematic-smart-home.html Übersicht von ELV] zeigt die vorhandenen Installationsadapter (55mm Maßeinheit) zur Integration in vorhandene Schalterserien.&lt;br /&gt;
&lt;br /&gt;
== Homematic Managen ==&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Zentrale CCU2&lt;br /&gt;
|HM-Cen-O-TW-X-X-2&lt;br /&gt;
|[http://www.elv.de/homematic-zentrale-ccu-2.html Produkt] [https://files.elv.com/Assets/Produkte/10/1035/103584/Downloads/HM-Cen-O-TW-x-x-2_UM_GE_eQ-3_web.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Einzige Möglichkeit, &#039;&#039;&#039;Homematic IP&#039;&#039;&#039;-Geräte anzusteuern&lt;br /&gt;
|-&lt;br /&gt;
|LAN Konfigurationsadapter&lt;br /&gt;
|[[HM-CFG-LAN_LAN_Konfigurations-Adapter|HM-CFG-LAN]]&lt;br /&gt;
|&lt;br /&gt;
|[[HM-LGW-O-TW-W-EU_Funk-LAN_Gateway|HM-LGW-O-TW-W-EU]]&lt;br /&gt;
|End-of-Sale, 230V Steckernetzteil&lt;br /&gt;
|-&lt;br /&gt;
|LAN Konfigurationsadapter&lt;br /&gt;
|[[HM-LGW-O-TW-W-EU_Funk-LAN_Gateway|HM-LGW-O-TW-W-EU]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-lan-gateway.html Produkt] [https://files.elv.com/Assets/Produkte/10/1040/104029/Downloads/104029_lan_gateway_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|5VDC 1A, LAN-Firmwareversionen &amp;lt; 1.1.5 haben Stabilitätsprobleme&lt;br /&gt;
|-&lt;br /&gt;
|USB Konfigurationsadapter&lt;br /&gt;
|[[HM-CFG-USB_USB_Konfigurations-Adapter|HM-CFG-USB]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|End-of-Sale, USB&lt;br /&gt;
|-&lt;br /&gt;
|Raspberry Pi Homematic-Modul&lt;br /&gt;
|[[HM-MOD-RPI-PCB_HomeMatic_Funkmodul_für_Raspberry_Pi|HM-MOD-RPI-PCB]]&lt;br /&gt;
|[http://www.elv.de/homematic-funkmodul-fuer-raspberry-pi-bausatz.html Produkt]&lt;br /&gt;
|&lt;br /&gt;
|1,8-3,6VDC, Aufsteckplatine für Raspberry Pi, empfohlene Lösung&lt;br /&gt;
|-&lt;br /&gt;
|Repeater&lt;br /&gt;
|[[HM-Sys-sRP-Pl_Funk-Zwischenstecker_Repeater|HM-SYS-SRP-P1]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|End-of-Sale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Homematic DIY ==&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Sendemodul 8-Kanal&lt;br /&gt;
|[[HM-MOD-EM-8_8-Kanal-Sendemodul|HM-MOD-EM-8]]&lt;br /&gt;
|[http://www.elv.de/homematic-8-kanal-sendemodul.html Produkt] [https://files.elv.com/Assets/Produkte/13/1329/132939/Downloads/132939_sendemodul_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
||2,3-3V/3,5-12V DC, für eigene Entwicklungen - Bastlermodul&lt;br /&gt;
|-&lt;br /&gt;
|Empfängermodul 8-Kanal&lt;br /&gt;
|[[HM-MOD-Re-8_8-Kanal-Empfangsmodul|HM-MOD-Re-8]]&lt;br /&gt;
|[http://www.elv.de/homematic-8-kanal-empfangsmodul.html Produkt] [https://files.elv.com/Assets/Produkte/13/1321/132143/Downloads/132143_Empfangsmodul_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|2,3-3V/3,5-12V DC, für eigene Entwicklungen - Bastlermodul&lt;br /&gt;
|-&lt;br /&gt;
|NC/NO-Zustands-Sendemodul&lt;br /&gt;
|[[HM-SCI-3-FM_3-Kanal-Funk-Schließerkontakt-Interface|HM-SCI-3-FM]]&lt;br /&gt;
|[http://www.elv.de/homematic-schliesserkontakt-interface-fuer-oeffner-und-schliesserkontakte.html Produkt] [https://files.elv.com/Assets/Produkte/9/914/91461/Downloads/91461_HM_SCI_3FMD1_GB_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|CR2032 Batterie, für eigene Entwicklungen - Bastlermodul&lt;br /&gt;
|-&lt;br /&gt;
|Klingelsignalsensor&lt;br /&gt;
|[[HM-Sen-DB-PCB_Klingelsignalsensor|HM-SEN-DB-PCB]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-klingelsignalsensor-bausatz.html Produkt] [https://files.elv.com/Assets/Produkte/13/1328/132846/Downloads/132846_HM-Sen-DB-PCB_UM_G_eQ-3_150608_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|2 AAA Batterien, sendet keine zyklischen Statusmeldungen, erkennt Signale 5-12V AC/DC&lt;br /&gt;
|-&lt;br /&gt;
|Relais-Schaltmodul&lt;br /&gt;
|RSM1&lt;br /&gt;
|[https://www.elv.de/elv-relais-schaltmodul-rsm1-bausatz.html Produkt]&lt;br /&gt;
|&lt;br /&gt;
|Unterstützt verschiedene Relaistypen, als Erweiterung für OpenCollector-Ausgänge&lt;br /&gt;
|-&lt;br /&gt;
|Funk-Schaltaktor Kleinspannung&lt;br /&gt;
|HM-LC-Sw1-PCB&lt;br /&gt;
|[https://www.elv.de/elv-homematic-funk-schaltaktor1fach-fuer-kleinspannunghm-lc-sw1-pcb-bausatz.html Produkt]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Funk-Sendemodul, 8-Bit&lt;br /&gt;
|HM-MOD-EM-8Bit&lt;br /&gt;
|[https://www.elv.de/elv-homematic-funk-sendemodul-8-bit-bausatz.html Produkt]&lt;br /&gt;
|&lt;br /&gt;
|Taster und Dateneingänge&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Homematic Remote ==&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Taster Unterputz, 2fach&lt;br /&gt;
|[[HM-PB-2-FM_2fach-Funk-Wandtaster_für_Markenschalter|HM-PB-2-FM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-wandsender-fuer-markenschalter-2fach-unterputzmontage-komplettbausatz.html Produkt] [https://files.elv.com/Assets/Produkte/13/1324/132438/Downloads/132438_HM-PB-2-FM_UM_G_eQ-3_150317_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|2 AAA Batterien, passend zu 55mm-Installationsrahmen verschiedener Hersteller &lt;br /&gt;
|-&lt;br /&gt;
|Taster Unterputz, 2fach&lt;br /&gt;
|[[HM-RC-2-PBU-FM_Unterputz-Wandsender|HM-RC-2-PBU-FM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-wandsender-2-fach-fuer-markenschalter-230-v-unterputzmontage.html Produkt] [https://files.elv.com/Assets/Produkte/14/1422/142237/Downloads/142237_funkwandsender_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, passend zu verschiedenen Installationsrahmen&lt;br /&gt;
|-&lt;br /&gt;
|Taster, 2fach&lt;br /&gt;
|[[HM-PB-2-WM55_2fach-Funk-Wandtaster|HM-PB-2-WM55]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-wandsender-2fach.html Produkt] [https://files.elv.com/Assets/Produkte/9/992/99240/Downloads/99240_HM_PB_2_WM55_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|2 AAA Batterien, passend zu Installationsrahmen verschiedener Hersteller&lt;br /&gt;
|-&lt;br /&gt;
|Taster, 3 x 2fach&lt;br /&gt;
|[[HM-PB-6-WM55 6fach-Funk-Wandtaster|HM-PB-6-WM55]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-wandtaster-6fach.html Produkt] [https://files.elv.com/Assets/Produkte/13/1301/130113/Downloads/130113_6fach_Wandtaster_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|2 AAA Batterien, passend zu Installationsrahmen verschiedener Hersteller&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Wandtaster mit OLED Display&lt;br /&gt;
|[[HM-PB-4DIS-WM_Funk-Wandtaster_mit_Display|HM-PB-4Dis-WM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-wandtaster-mit-display.html Produkt] [https://files.elv.com/Assets/Produkte/8/859/85975/Downloads/85975_Display_Wandtaster_v1.2_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|3 AAA Batterien, kleines Display, nur altweiß (nicht reinweiß)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Tasterschnittstelle, 4fach&lt;br /&gt;
|[[HM-PBI-4-FM_Funk-Tasterschnittstelle_4fach|HM-PBI-4-FM]]&lt;br /&gt;
|[http://www.elv.de/homematic-hm-pbi-4-fm-funk-tasterschnittstelle-4fach-unterputzmontage.html Produkt] [https://files.elv.com/service/manuals/76120_HM_PBI_4_FM_UM_GE_eQ_3_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
||CR2032 Batterie, für die Kombination mit Installationstastern verschiedener Hersteller&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Fernbedienung, 12 Tasten&lt;br /&gt;
|[[HM-RC-12_Funkfernbedienung_12_Tasten|HM-RC-12]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-fernbedienung-12-tasten-weiss-1.html Produkt] [https://files.elv.com/service/manuals/Homematic/73968_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|3 AAA Batterien, In Schwarz als HM-RC-12-B&lt;br /&gt;
|-&lt;br /&gt;
|Fernbedienung, 4 Tasten&lt;br /&gt;
|[[HM-RC-4-2_Funkfernbedienung_4_Tasten|HM-RC-4-2]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-handsender-4-tasten.html Produkt] [https://files.elv.com/Assets/Produkte/10/1053/105397/Downloads/105397_4tasten_sender_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|AAA Batterie, Schlüsselanhänger, verschiedene Varianten HM-RC-Key4-2, HM-RC-Sec4-2&lt;br /&gt;
|-&lt;br /&gt;
|Fernbedienung, 19 Tasten&lt;br /&gt;
|HM-RC-19&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Fernbedienung, 8 Tasten&lt;br /&gt;
|HM-RC-8&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Homematic Schalten ==&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck: Aussen&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Schalter Aufputz 4fach&lt;br /&gt;
|[[HM-LC-Sw4-SM_4fach_Schaltaktor_Aufputz|HM-LC-Sw4-SM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-schaltaktor-4fach-aufputzmontage.html Produkt] [https://files.elv.com/Assets/Produkte/7/767/76796/Downloads/76796_hm_lc_sw4_sm_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, IP65, enge Bauweise&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck: Hutschiene&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Schalter &lt;br /&gt;
|[[HM-LC-Sw1-DR_1fach_Schaltaktor_Hutschiene|HM-LC-Sw1-DR]]&lt;br /&gt;
|[http://www.elv.de/homematic-1-kanal-schaltaktor-im-hutschienengehaeuse-1.html Produkt] [https://files.elv.com/Assets/Produkte/14/1413/141379/Downloads/141379_schaltaktor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
||230V, mit Tastereingang, auch als Bausatz verfügbar&lt;br /&gt;
|-&lt;br /&gt;
|Schalter 4fach&lt;br /&gt;
|[[HM-LC-Sw4-DR_4fach_Schaltaktor_Hutschiene|HM-LC-Sw4-DR]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-schaltaktor-4fach-hutschiene.html Produkt] [https://files.elv.com/Assets/Produkte/9/918/91836/Downloads/91836_Funk_Schaltaktor_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, 4 TE, kein Tastereingang, auch als Bausatz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck: Unterputz&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Schalter &lt;br /&gt;
|[[HM-LC-SW1-FM_Schaltaktor_1-fach_UP|HM-LC-Sw1-FM]]&lt;br /&gt;
|[http://www.elv.de/homematic-hm-lc-sw1-fm-unterputzschalter-1fach.html Produkt] [https://files.elv.com/Assets/Produkte/7/767/76793/Downloads/76793_HM_LC_Sw1_FM_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, mit Tastereingang, 16A&lt;br /&gt;
|-&lt;br /&gt;
|Schalter 2fach&lt;br /&gt;
|[[HM-LC-SW2-FM_Schaltaktor_2-fach_UP|HM-LC-Sw2-FM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-schaltaktor-2fach-unterputzmontage-1.html Produkt] [https://files.elv.com/service/manuals/76793_HM_Unterputzschalter_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, mit Tastereingang, 5A zusammen. 2 x HM-LC-Sw1-FM empfohlen.&lt;br /&gt;
|-&lt;br /&gt;
|Schalter &lt;br /&gt;
|[[HM-LC-Sw1PBU-FM_Unterputz-Schaltaktor_1-fach|HM-LC-Sw1PBU-FM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-schaltaktor-fuer-markenschalter-1fach-unterputzmontage.html Produkt] [https://files.elv.com/Assets/Produkte/10/1030/103029/Downloads/103029_FunkSchaltaktor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, passend zu 55mm-Installationsrahmen verschiedener Hersteller &lt;br /&gt;
|-&lt;br /&gt;
|Schalter PEHA&lt;br /&gt;
|[[HM-LC-Sw1PB-FM_Schaltaktor_mit_Tasteraufsatz_1fach|HM-LC-Sw1PB-FM]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|230V, End-of-Sale&lt;br /&gt;
|-&lt;br /&gt;
|Schalter 2fach PEHA&lt;br /&gt;
|[[HM-LC-Sw2PB-FM_Schaltaktor_mit_Tasteraufsatz_2fach|HM-LC-Sw2PB-FM]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|230V, End-of-Sale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck: Zwischenstecker&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Schalter Zwischenstecker&lt;br /&gt;
|[[HM-LC-Sw1-Pl2_Funk-Zwischenstecker-Schaltaktor_1fach|HM-LC-Sw1-Pl2]]&lt;br /&gt;
|&lt;br /&gt;
|[[HM-LC-Sw1-Pl-DN-R1|HM-LC-Sw1-Pl-DN-R1]]&lt;br /&gt;
|End-of-Sale&lt;br /&gt;
|-&lt;br /&gt;
|Schalter Zwischenstecker&lt;br /&gt;
|[[HM-LC-Sw1-Pl-DN-R1|HM-LC-Sw1-Pl-DN-R1]]&lt;br /&gt;
|[https://www.elv.de/homematic-132989-funk-schaltaktor-zwischenstecker-fuer-smart-home-hausautomation.html Produkt] [https://files.elv.com/Assets/Produkte/13/1329/132989/Downloads/HM-LC-Sw1-Pl-DN-R1_UM_GEFN_eQ-3_150407.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Nachfolger des HM-LC-Sw1-Pl2&lt;br /&gt;
|-&lt;br /&gt;
|Schalter Frankreich, Polen, Belgien&lt;br /&gt;
|ADDME&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|Artikelnummer 141127&lt;br /&gt;
|-&lt;br /&gt;
|Schalter England, Irland&lt;br /&gt;
|ADDME&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|Artikelnummer 131132&lt;br /&gt;
|-&lt;br /&gt;
|Schalter Italien&lt;br /&gt;
|ADDME&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|Artikelnummer 141129&lt;br /&gt;
|-&lt;br /&gt;
|Schalter Schweiz&lt;br /&gt;
|ADDME&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|Artikelnummer 141130&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck: Batterie&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Schalter 1fach&lt;br /&gt;
|[[HM-LC-Sw1-Ba-PCB_1-Kanal-Funk-Schaltaktor_für_Batteriebetrieb|HM-LC-Sw1_Ba-PCB]]&lt;br /&gt;
|[http://www.elv.de/elv-homematic-schaltaktor-fuer-batteriebetrieb-fertiggeraet.html Produkt] [https://files.elv.com/Assets/Produkte/10/1048/104895/Downloads/104895_Funk_Schaltaktor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|4-15VDC oder 2-3VDC, Bausatz&lt;br /&gt;
|-&lt;br /&gt;
|Schalter 4fach&lt;br /&gt;
|[[HM-LC-Sw4-Ba-PCB_4-Kanal-Funk-Schaltaktor_für_Batteriebetrieb|HM-LC-Sw4-Ba-PCB]]&lt;br /&gt;
|[http://www.elv.de/homematic-4-kanal-funk-schaltaktor-fuer-batteriebetrieb-bausatz.html Produkt] [https://files.elv.com/Assets/Produkte/13/1305/130557/Downloads/130557_hm_schaltaktor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|7-15VDC, 160mA, schaltet 4 x 42VDC/30VAC, 1A auch als Bausatz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Homematic Steuern ==&lt;br /&gt;
Für die Konfiguration der Jalousieaktoren ist [[HomeMatic_Type_Blind]] hilfreich.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Jalousieaktor Unterputz&lt;br /&gt;
|[[HM-LC-BL1-FM_Funk-Jalousieaktor|HM-LC-BL1-FM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-rollladenaktor-1fach-unterputzmontage.html Produkt] [https://files.elv.com/Assets/Produkte/7/767/76799/Downloads/76799_HM_LC_Sw1_FM_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, 250W Motorlast&lt;br /&gt;
|-&lt;br /&gt;
|Jalousieaktor Unterputz PEHA&lt;br /&gt;
|[[HM-LC-BL1-PB-FM_Unterputz_Jalousieaktor_PEHA|HM-LC-BL1-PB-FM]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|230V, End-of-Sale&lt;br /&gt;
|-&lt;br /&gt;
|Jalousieaktor Aufputz&lt;br /&gt;
|[[HM-LC-Bl1-SM_Funk-Jalousieaktor|HM-LC-Bl1-SM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-rollladenaktor-1fach-aufputzmontage.html Produkt] [https://files.elv.com/Assets/Produkte/7/768/76800/Downloads/76800_hm_lc_bl1_sm_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, 800W Motorlast&lt;br /&gt;
|-&lt;br /&gt;
|Jalousieaktor Unterputz&lt;br /&gt;
|[[HM-LC-Bl1PBU-FM_Unterputz-Jalousieaktor|HM-LC-Bl1PBU-FM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-rollladenaktor-fuer-markenschalter-1fach-unterputzmontage.html Produkt] [https://files.elv.com/Assets/Produkte/10/1030/103038/Downloads/103038_FunkRollladenaktor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V Motorlast, passend zu 55mm-Installationsrahmen verschiedener Hersteller&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer Zwischenstecker Anschnitt&lt;br /&gt;
|[[HM-LC-Dim1L-Pl-2_Funk-Zwischenstecker-Dimmaktor_1fach_Phasenanschnitt|HM-LC-Dim1L-Pl-2]]&lt;br /&gt;
|&lt;br /&gt;
|HM-LC-Dim1L-Pl-3&lt;br /&gt;
|End-of-Sales&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer Zwischenstecker Anschnitt&lt;br /&gt;
|[[HM-LC-Dim1L-Pl-2_Funk-Zwischenstecker-Dimmaktor_1fach_Phasenanschnitt|HM-LC-Dim1L-Pl-3]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-dimmaktor-zwischenstecker-phasenanschnitt.html Produkt] [https://files.elv.com/Assets/Produkte/7/767/76797/Downloads/76797_HM-LC-Sw1-Pl-2_UM_GE_eQ-3_120723_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Phasen&#039;&#039;&#039;an&#039;&#039;&#039;schnitt, identische Konfiguration&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer Zwischenstecker Anschnitt&lt;br /&gt;
|HM-LC-Dim1T-Pl-3&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|230V, Phasen&#039;&#039;&#039;ab&#039;&#039;&#039;schnitt&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer Unterputz PWM/LED&lt;br /&gt;
|[[HM-LC-Dim1PWM-CV_Dimmaktor_PWM_DC-LED|HM-LC-Dim1PWM-CV]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-dimmer-1-fach-12v-pwm-fertiggeraet.html Produkt] [https://files.elv.com/Assets/Produkte/9/994/99444/Downloads/99444_Funk_Dimmaktor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|12-24VDC, 60VA Anschlußleistung&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer PWM/LED&lt;br /&gt;
|[[HM-LC-RGBW-WM_Funk-RGBW-Controller|HM-LC-RGBW-WM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-rgbw-controller.html Produkt] [https://files.elv.com/Assets/Produkte/14/1419/141952/Downloads/141952_rgbw_controller_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|12-24VDC, 34W je Kanal, auch als Bausatz erhältlich&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer Unterputz&lt;br /&gt;
|[[HM-LC-DIM1T-FM_1-Kanal-Dimmer_UP|HM-LC-Dim1T-FM]]&lt;br /&gt;
|[http://www.elv.de/elv-1-kanal-unterputzdimmer-phasenabschnitt.html Produkt] [https://files.elv.com/Assets/Produkte/9/918/91816/Downloads/91816_HM_LC_Dim1T_FM_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, 180W Anschlußleistung, Phasen&#039;&#039;&#039;ab&#039;&#039;&#039;schnitt&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer Zwischendecke&lt;br /&gt;
|HM-LC-Dim1T-CV&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|230V, Phasen&#039;&#039;&#039;ab&#039;&#039;&#039;schnitt&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer Zwischendecke&lt;br /&gt;
|HM-LC-Dim1L-CV&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|230V, Phasen&#039;&#039;&#039;an&#039;&#039;&#039;schnitt&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer Unterputz&lt;br /&gt;
|[[HM-LC-Dim1TPBU-FM_1-Kanal-Dimmer_UP|HM-LC-Dim1TPBU-FM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-dimmaktor-1fach-fuer-markenschalter-phasenabschnitt-unterputzmontage.html Produkt] [https://files.elv.com/Assets/Produkte/10/1030/103020/Downloads/103020_FunkDimmaktor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, 180VA Anschlußleistung, passend zu 55mm-Installationsrahmen verschiedener Hersteller &lt;br /&gt;
|-&lt;br /&gt;
|Dimmer Aufputz, 2fach Abschnitt&lt;br /&gt;
|HM-LC-Dim2T-SM&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|230V, Phasen&#039;&#039;&#039;ab&#039;&#039;&#039;schnitt&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer Aufputz, 2fach Anschnitt&lt;br /&gt;
|HM-LC-Dim2L-SM&lt;br /&gt;
|ADDME&lt;br /&gt;
|&lt;br /&gt;
|230V, Phasen&#039;&#039;&#039;an&#039;&#039;&#039;schnitt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Homematic Messen ==&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Zählermodul Gas, Strom&lt;br /&gt;
|[[HM-ES-TX-WM_Zählersensor_für_Strom-_und_Gaszähler|HM-ES-TX-WM]]&lt;br /&gt;
|[http://www.elv.de/homematic-komplettbausatz-zaehlersensor-sendeeinheit-strom-gas.html Produkt] [https://files.elv.com/Assets/Produkte/14/1401/140143/Downloads/140143_sensor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Nur als Bausatz verfügbar, 4 AA Batterien, Gaszähler-Reedrelais leicht tauschbar&lt;br /&gt;
|-&lt;br /&gt;
|Schalter Hutschiene mit Leistungsmessung&lt;br /&gt;
|[[HM-ES-PMSw1-DR_Hutschienen-Schaltaktor_mit_Leistungsmessung|HM-ES-PMSw1-DR]]&lt;br /&gt;
|[http://www.elv.de/output/controller.aspx?cid=74&amp;amp;detail=10&amp;amp;detail2=51780 Produkt] [https://files.elv.com/Assets/Produkte/14/1411/141107/Downloads/HM-ES-PMSw1-DR_UM_G_150506.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, nur als Bausatz verfügbar, hohe Funklast durch Messung&lt;br /&gt;
|-&lt;br /&gt;
|Schalter Zwischenstecker mit Leistungsmessung&lt;br /&gt;
|[[HM-ES-PMSw1-Pl_Funk-Schaltaktor_1-fach_mit_Leistungsmessung|HM-ES-PMSw1-Pl]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-schaltaktor-1fach-mit-leistungsmessung-zwischenstecker.html Produkt] [https://files.elv.com/Assets/Produkte/13/1302/130248/Downloads/130248_schaltaktor_messen_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V Zwischenstecker, hohe Funklast durch Messung&lt;br /&gt;
|-&lt;br /&gt;
|Füllstandsmesser&lt;br /&gt;
|[[HM-Sen-Wa-Od_kapazitiver_Funk-Füllstandsmesser|HM-SEN-WA-OD]]&lt;br /&gt;
|[http://www.elv.de/kapazitiver-fuellstandsmesser-hm-sen-wa-od-komplettbausatz.html Produkt] [https://files.elv.com/Assets/Produkte/10/1049/104945/Downloads/104945_HMSenWaOd_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|3 AA Batterien, kapazitive Messung, z.B. für Zisternen&lt;br /&gt;
|-&lt;br /&gt;
|Temperatur/Luftfeuchte aussen&lt;br /&gt;
|[[HM-WDS10-TH-O_Funk-Temperatur-/Feuchtesensor_außen_(OTH)|HM-WDS10-TH-O]]&lt;br /&gt;
|[http://www.elv.de/homematic-hm-wds10-th-o-funk-temperatur-luftfeuchtesensor-oth.html Produkt] [https://files.elv.com/Assets/Produkte/7/769/76923/Downloads/76923_HM_WDS10_TH_O_UM_GE_eQ3_120921_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|2 AA Batterien, Falsche Werte bei schwachen Batterien, nur bis -19,9°C&lt;br /&gt;
|-&lt;br /&gt;
|Temperatur/Luftfeuchte aussen&lt;br /&gt;
|HM-WDS30-TO&lt;br /&gt;
|[http://www.elv.de/homematic-hm-wds30-t-o-funk-temperatursensor-aussen.html Produkt] [https://files.elv.com/service/manuals/76857_HM-WDS30_T_O_GE.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Abgesetzter Sensor, nur bis -19,9°C&lt;br /&gt;
|-&lt;br /&gt;
|Temperatur/Luftfeuchte innen&lt;br /&gt;
|[[HM-WDS40-TH-I_Funk-Temperatur-/Feuchtesensor_innen_(IT)|HM-WDS40-TH-I]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-innensensor-ith.html Produkt] [https://files.elv.com/service/manuals/76998_HM_GE_WDS40_TH_I_GE_V1_1.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Kombi-Sensor Wetter Aussen&lt;br /&gt;
|[[HM-WDS100-C6-O_Funk-Kombi-Sensor_OC3|HM-WDS100-C6-O]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-kombisensor.html Produkt] [https://files.elv.com/Assets/Produkte/13/1321/132192/Downloads/132192_kombisensor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Im Vergleich zu Vantage Pro schlechte Messungen, schlechtere Böen-Erkennung&lt;br /&gt;
|-&lt;br /&gt;
|Differenz-Temperatur&lt;br /&gt;
|[[HM-WDS30-OT2-SM_Differenz-Temperatur-Sensor|HM-WDS30-OT2-SM]]&lt;br /&gt;
|[http://www.elv.de/homematic-differenz-temperatur-sensor-fuer-smart-home-hausautomation-1.html Produkt] [https://files.elv.com/Assets/Produkte/14/1434/143420/Downloads/143420_temperatur_sensor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Fühler nicht dauerhaft wasserdicht&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Homematic Sicherheit ==&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Bewegungsmelder Innen&lt;br /&gt;
|[[HM-Sec-MDIR_Funk-Bewegungsmelder_innen|HM-SEC-MDIR]]&lt;br /&gt;
|&lt;br /&gt;
|HM-Sec-MDIR-2&lt;br /&gt;
|End-of-Sale, Nachfolgemodell identisch zu konfigurieren&lt;br /&gt;
|-&lt;br /&gt;
|Bewegungsmelder Innen&lt;br /&gt;
|[[HM-Sec-MDIR_Funk-Bewegungsmelder_innen|HM-SEC-MDIR-2]]&lt;br /&gt;
|[http://www.elv.de/homematic-bewegungsmelder-1.html Produkt] [https://files.elv.com/Assets/Produkte/13/1317/131776/Downloads/131776_hm_sec_mdir_2_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|3 AA Batterien&lt;br /&gt;
|-&lt;br /&gt;
|Bewegungsmelder Außen&lt;br /&gt;
|[[HM-Sen-MDIR-O_Funk-IR-Bewegungsmelder_außen|HM-SEN-MDIR-O]]&lt;br /&gt;
|&lt;br /&gt;
|HM-SEN-MDIR-O-2&lt;br /&gt;
|End-of-Sale, Nachfolgemodell identisch zu konfigurieren&lt;br /&gt;
|-&lt;br /&gt;
|Bewegungsmelder außen&lt;br /&gt;
|[[HM-Sen-MDIR-O_Funk-IR-Bewegungsmelder_außen|HM-SEN-MDIR-O-2]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-ir-bewegungsmelder-aussen-2.html Produkt] [https://files.elv.com/Assets/Produkte/10/1041/104109/Downloads/104109_Funk_IR_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Es wird von Problemen mit Ameisen im Sensor und Ausfällen nach zwei Jahren berichtet&lt;br /&gt;
|-&lt;br /&gt;
|Bewegungsmelder außen&lt;br /&gt;
|[[HM-Sen-MDIR-SM_Außen-Bewegungsmelder|HM-SEN-MDIR-SM]]&lt;br /&gt;
|[http://www.elv.de/homematic-hm-sen-mdir-aussen-bewegungsmelder-komplettbausatz.html Produkt] [https://files.elv.com/service/manuals/84579_HM_Sen_MDIR_SM_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|IP65 für Außeneinsatz, Bausatz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Fenster Drehgriffkontakt&lt;br /&gt;
|[[HM-Sec-RHS_Funk-Fenster-Drehgriffkontakt|HM-SEC-RHS]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-fenster-drehgriffkontakt-1.html Produkt] [https://files.elv.com/service/manuals/75643_HM_Sec_RHS_GE_V1_0.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|LR44 Batterien, [http://www.techwriter.de/beispiel/funkeig1.htm Sendeeigenschaften verbessern]&lt;br /&gt;
|-&lt;br /&gt;
|Tür/Fenster-Kontakt&lt;br /&gt;
|[[HM-SEC-SC_Tür-Fensterkontakt|HM-SEC-SC]]&lt;br /&gt;
|[http://www.elv.de/homematic-hm-sec-sc-funk-tuer-fensterkontakt-1.html Produkt] [https://files.elv.com/service/manuals/76788_HM_Sec_SC_GE_V1_0_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|LR44 Batterien, [[HomeMatic_Type_threeStateSensor|Notwendige Konfiguration]]&lt;br /&gt;
|-&lt;br /&gt;
|Tür/Fenster-Kontakt (optisch)&lt;br /&gt;
|[[HM-Sec-SCo_Tür-Fensterkontakt,_optisch|HM-SEC-SCo]]&lt;br /&gt;
|[http://www.elv.de/homematic-ir-tuer-fensterkontakt.html Produkt] [https://files.elv.com/Assets/Produkte/13/1302/130297/Downloads/130297_fensterkontakt_optisch_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|AAA Batterie, [[HomeMatic_Type_threeStateSensor|Notwendige Konfiguration]]&lt;br /&gt;
|-&lt;br /&gt;
|Zylinderschloss steuern&lt;br /&gt;
|[[HM-SEC-KEY_KeyMatic|HM-SEC-KEY]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-tuerschlossantrieb-keymatic-weiss-inkl-funk-handsender.html Produkt] [https://files.elv.com/Assets/Produkte/13/1317/131761/Downloads/131761_keymatic_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|3 AA Batterien, eigener AES-Key &#039;&#039;dringend&#039;&#039; empfohlen, auch in Silber&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Rauchmelder&lt;br /&gt;
|[[HM-SEC-SD_Rauchmelder|HM-SEC-SD]]&lt;br /&gt;
|&lt;br /&gt;
|HM-Sec-SD-2&lt;br /&gt;
|End-of-Sale&lt;br /&gt;
|-&lt;br /&gt;
|Rauchmelder&lt;br /&gt;
|[[HM-SEC-SD_Rauchmelder|HM-SEC-SD-2]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-rauchmelder-hm-sec-sd-2.html Produkt] [https://files.elv.com/Assets/Produkte/13/1314/131408/Downloads/131408_rauchmelder_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Lithium, 10 Jahresbatterie&lt;br /&gt;
|-&lt;br /&gt;
|Sirenensteuerung&lt;br /&gt;
|[[HM-Sec-SFA-SM_Funk-Sirenensteuerung|HM-SEC-SFA-SM]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-sirenenansteuerung-bidcos.html Produkt] [https://files.elv.com/Assets/Produkte/8/843/84392/Downloads/84392_HM_Sec_SFA_GE_V1_1_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V, stellt 2x12V 1A für Sirene und Blitzer zur Verfügung, Notakku 1.2Ah&lt;br /&gt;
|-&lt;br /&gt;
|Neigungssensor&lt;br /&gt;
|[[HM-SEC-TIS_Funk-Neigungssensor|HM-SEC-TIS]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-neigungssensor-hm-sec-tis.html Produkt] [https://files.elv.com/Assets/Produkte/8/831/83146/Downloads/83146_neu_HM_Sec_TIS_GE_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|CR2032, erkennt nur offen/zu, keine Winkel&lt;br /&gt;
|-&lt;br /&gt;
|Wassermelder&lt;br /&gt;
|[[HM-Sec-WDS_Funk-Wassermelder|HM-SEC-WDS]]&lt;br /&gt;
|&lt;br /&gt;
|HM-SEC-WDS-2&lt;br /&gt;
|End-of-Sale&lt;br /&gt;
|-&lt;br /&gt;
|Wassermelder&lt;br /&gt;
|[[HM-Sec-WDS_Funk-Wassermelder|HM-SEC-WDS-2]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-wassermelder.html Produkt] [https://files.elv.com/service/manuals/Homematic/83459_HM_Sec_WDS_D_v1_0_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|2 AA Batterien, unterstützt nicht die Alarmzentrale HM-SEC-Cen&lt;br /&gt;
|-&lt;br /&gt;
|Regensensor&lt;br /&gt;
|[[HM-Sen-RD-O_Funk-Regensensor|HM-SEN-RD-O]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-regensensor-1.html Produkt] [https://files.elv.com/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|7,5-30VDC 1W max, auch als Bausatz verfügbar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Homematic Anzeigen ==&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Retro-Anzeige&lt;br /&gt;
|[[HM-Dis-TD-T_Retro_Anzeige|HM-Dis-TD-T]]&lt;br /&gt;
|[http://www.elv.de/homematic-statusanzeige-mit-batteriebetrieb-und-klappanzeige-komplettbausatz.html Produkt] [https://files.elv.com/Assets/Produkte/10/1037/103721/Downloads/103721_HM-Dis-TD-T_UM_G_150226_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Nur als Bausatz (enge Bestückung) verfügbar, Temperaturbereich 0°-50°C&lt;br /&gt;
|-&lt;br /&gt;
|Farbige Statusanzeige OLED&lt;br /&gt;
|[[HM-Dis-WM55_Funk_Statusanzeige|HM-Dis-WM55]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-statusanzeige-aufputzmontage-bausatz.html Produkt] [https://files.elv.com/Assets/Produkte/13/1326/132656/Downloads/132656_statusanzeige.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Passend zu 55mm-Installationsrahmen verschiedener Hersteller&lt;br /&gt;
|-&lt;br /&gt;
|B&amp;amp;W Statusanzeige ePaper&lt;br /&gt;
|HM-Dis-EP-WM55&lt;br /&gt;
|[http://www.elv.de/homematic-komplettbausatz-funk-statusanzeige-mit-e-paper-display.html Produkt] [https://files.elv.com/Assets/Produkte/14/1424/142414/Downloads/HM-Dis-EP-WM55_UM_GE_142413_160519.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Passend zu 55mm-Installationsrahmen verschiedener Hersteller&lt;br /&gt;
|-&lt;br /&gt;
|LED Statusanzeige 16fach&lt;br /&gt;
|[[HM-OU-LED16_Funk-Statusanzeige_LED16|HM-OU-LED16]]&lt;br /&gt;
|[http://www.elv.de/elv-homematic-statusanzeige-fertiggeraet.html Produkt] [https://files.elv.com/Assets/Produkte/10/1047/104798/Downloads/104798_HM_OU_LED16_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|7,5VDC Netzteil&lt;br /&gt;
|-&lt;br /&gt;
|Funkgong mit Signalleuchte&lt;br /&gt;
|[[HM-OU-CFM-Pl_MP3_Funk-Gong_mit_Signalleuchte|HM-OU-CFM-Pl]]&lt;br /&gt;
|[http://www.elv.de/homematic-mp3-funk-tuergong-mit-signal-led.html Produkt] [https://files.elv.com/Assets/Produkte/9/990/99060/Downloads/99060_tuergong_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|230V Steckdose, unterstützt abspielen von MP3s von Speicherkarte&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Homematic Heizen ==&lt;br /&gt;
Die Heizungsgeräte sind für den Inneneinsatz gedacht und werden mit AA/AAA-Batterien betrieben. Die Wiki-Seiten [[HomeMatic_Type_Thermostat|Homematic-Thermostaten]] und [[HomeMatic_HMInfo_TempList/Weekplan|Homematic-Temperaturlisten]] geben einen Überblick, wie Temperaturlisten zu lesen und zu speichern sind. Für den HM-CC-RT-DN gibt es bei ELV im Zubehör-Bereich eine große Anzahl von Ventiladaptern aus Plastik und Messing, manchmal helfen auch Cent-Münzen als Unterlegscheibe, erhöhen jedoch die Lautstärke.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|Heizkörperthermostat&lt;br /&gt;
|[[HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat|HM-CC-RT-DN]]&lt;br /&gt;
|[http://www.elv.de/homematic-heizkoerperthermostat-1.html Produkt] [https://files.elv.com/Assets/Produkte/10/1051/105155/Downloads/105155_thermostat_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Heizkörperthermostat&lt;br /&gt;
|[[HM-CC-VD_Funk-Stellantrieb|HM-CC-VD]]&lt;br /&gt;
|&lt;br /&gt;
|HM-CC-RT-DN&lt;br /&gt;
|End-of-Sale&lt;br /&gt;
|-&lt;br /&gt;
|Wandthermostat&lt;br /&gt;
|[[HM-CC-TC_Funk-Wandthermostat|HM-CC-TC]]&lt;br /&gt;
|&lt;br /&gt;
|HM-TC-IT-WM-W-EU&lt;br /&gt;
|End-of-Sale&lt;br /&gt;
|-&lt;br /&gt;
|Wandthermostat&lt;br /&gt;
|[[HM-TC-IT-WM-W-EU_Funk-Wandthermostat_AP|HM-TC-IT-WM-W-EU]]&lt;br /&gt;
|[http://www.elv.de/homematic-funk-wandthermostat-1.html Produkt] [https://files.elv.com/Assets/Produkte/13/1320/132030/Downloads/132030_thermostat_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|Passend zu Installationsrahmen verschiedener Hersteller&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Homematic Wired ==&lt;br /&gt;
Alle Homematic-Wired Geräte sind zur Hutschienen-Montage (DIN Rail) innerhalb eines Schaltschrankes gedacht. Die Geräte benötigen zum Betrieb ein Netzteil 24V DC innerhalb des Schaltschrankes. Der [https://de.wikipedia.org/wiki/EIA-485 RS485]-Bus wird von dem LAN-Gateway bereitgestellt und unterstützt maximal 127 Module. Zur Verkabelung eignet sich JSTY 4x2x0.6-Kabel.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-datatable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:350px&amp;quot;|Einsatzzweck&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|fhem Wiki&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|ELV&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Nachfolger&lt;br /&gt;
!style=&amp;quot;width:650px&amp;quot;|Zu beachten&lt;br /&gt;
|-&lt;br /&gt;
|LAN-Gateway&lt;br /&gt;
|HMW-Sys-OP-DR&lt;br /&gt;
|[http://www.elv.de/homematic-rs485-gateway-1.html Produkt] [https://files.elv.com/Assets/Produkte/10/1037/103755/Downloads/103755_rs485_gateway_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IO-Modul, 12xIN&lt;br /&gt;
|HMW-Sen-SC-12-DR&lt;br /&gt;
|[http://www.elv.de/homematic-wired-rs485-schliesserkontakt-12-eingaenge-hutschienenmontage.html Produkt] [https://files.elv.com/Assets/Produkte/8/858/85840/Downloads/85840_HMW_Sen_SC_12_DR_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IO-Modul 12xIN, 14xOUT&lt;br /&gt;
|[[HMW-IO-12-Sw14-DR_Wired_RS485_I/O-Modul_12_Eingänge_14_Ausgänge|HMW-IO-12-SW14-DR]]&lt;br /&gt;
|[http://www.elv.de/homematic-wired-rs485-i-o-modul-12-eingaenge-14-ausgaenge.html Produkt]  [https://files.elv.com/Assets/Produkte/9/920/92011/Downloads/wired_rs485_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IO-Modul 12xIN, 7xOUT&lt;br /&gt;
|[[HMW-IO-12-Sw7-DR_Wired_RS485_I/O-Modul_12_Eingänge_7_Ausgänge|HMW-IO-12-SW7-DR]]&lt;br /&gt;
|[http://www.elv.de/homematic-wired-rs485-i-o-modul-12-eingaenge-7-schaltausgaenge-1.html Produkt] [https://files.elv.com/Assets/Produkte/7/768/76805/Downloads/76805_HMWIO12DRV1_02_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dimmer, Phasenanschnitt&lt;br /&gt;
|HMW-LC-Dim1L-DR&lt;br /&gt;
|[http://www.elv.de/homematic-wired-rs485-dimmaktor-1fach-phasenanschnitt-1.html Produkt] [https://files.elv.com/Assets/Produkte/7/768/76803/Downloads/76803_hmw_lc_dim1l_dr_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Jalousieaktor&lt;br /&gt;
|HMW-LC-Bl1-DR&lt;br /&gt;
|[http://www.elv.de/homematic-wired-hmw-lc-bl1-dr-wired-rs485-rollladenaktor-1fach.html Produkt] [https://files.elv.com/Assets/Produkte/7/768/76802/Downloads/76802_hmw_lc_bl1_dr_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Schalter, 2fach&lt;br /&gt;
|HMW-LC-Sw2-DR&lt;br /&gt;
|[http://www.elv.de/homematic-wired-hmw-lc-sw2-dr-rs485-schaltaktor-2fach.html Produkt] [https://files.elv.com/Assets/Produkte/7/768/76801/Downloads/76801_hmw_lc_sw2_dr_um.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Überspannungsschutz&lt;br /&gt;
|HMW-Sys-OP-DR&lt;br /&gt;
|[http://www.elv.de/homematic-wired-rs485-ueberspannungsschutz.html Produkt] [https://files.elv.com/Assets/Produkte/8/859/85978/Downloads/85978_HMW_Sys_OP_DR_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Busabschluss-Widerstand&lt;br /&gt;
|HMW-Sys-Tm-DR&lt;br /&gt;
|[http://www.elv.de/homematic-wired-rs485-busabschluss-widerstand-hutschienenmontage-1.html Produkt] [https://files.elv.com/Assets/Produkte/7/768/76807/Downloads/75168_HMW_Sys_TM_UM.pdf Anleitung]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-Sw1-Pl2_Funk-Zwischenstecker-Schaltaktor_1fach&amp;diff=21226</id>
		<title>HM-LC-Sw1-Pl2 Funk-Zwischenstecker-Schaltaktor 1fach</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-Sw1-Pl2_Funk-Zwischenstecker-Schaltaktor_1fach&amp;diff=21226"/>
		<updated>2017-04-09T07:45:02Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: Bild des Zwischensteckers eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-LC-Sw1-Pl-DN-R1.png&lt;br /&gt;
|Bildbeschreibung=HM-LC-Sw1-Pl-2 Funk-Zwischenstecker-Schaltaktor 1fach&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=230V&lt;br /&gt;
|HWPowerConsumption=0,5W (Standby)&lt;br /&gt;
|HWPoweredBy=Netz&lt;br /&gt;
|HWSize=125x63x40mm&lt;br /&gt;
|HWDeviceFHEM=[[CUL_HM]]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3 &lt;br /&gt;
|FWVersion=1.12&lt;br /&gt;
|FWDownload={{Link2Forum|Topic=25527}}&lt;br /&gt;
|FWChangelog=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
In der Zwischenzeit wird der Aktor mit der Modellbezeichnung HM-LC-Sw1-Pl-DN-R1 vertrieben. Der Zwischenstecker ist auch als Bausatz bei ELV erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Schalten eines angeschlossenen Verbrauchers mittels CUL/CUN/HMLAN Konfigurator.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
* Schaltvermögen: 16A bei 230V/50Hz (ohmsche Last)&lt;br /&gt;
* Relais: 1x Schließer&lt;br /&gt;
* Schutzart: IP20&lt;br /&gt;
* Farbe: Reinweiß mit silberner Blende&lt;br /&gt;
&lt;br /&gt;
* Aktuelle Firmware: 1.12 (via get DEVICE param firmware)&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Das [[Pairing (HomeMatic)|Pairing]] sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Ein exemplarischer Auszug aus der fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define internet CUL_HM 1BEXXX&lt;br /&gt;
attr internet .devInfo 010100&lt;br /&gt;
attr internet .stc 10&lt;br /&gt;
attr internet autoReadReg 4_reqStatus&lt;br /&gt;
attr internet devStateIcon on:black_Steckdose.on off:black_Steckdose.off&lt;br /&gt;
attr internet expert 2_full&lt;br /&gt;
attr internet firmware 1.9&lt;br /&gt;
attr internet model HM-LC-SW1-PL2&lt;br /&gt;
attr internet peerIDs 00000000,&lt;br /&gt;
attr internet room CUL_HM&lt;br /&gt;
attr internet serialNr JEQ0461XXX&lt;br /&gt;
attr internet subType switch&lt;br /&gt;
attr internet webCmd toggle:on:off:statusRequest&lt;br /&gt;
define FileLog_internet FileLog /var/log/fhem/internet-%Y.log internet&lt;br /&gt;
attr FileLog_internet logtype text&lt;br /&gt;
attr FileLog_internet room CUL_HM&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mögliche Schaltoperationen ===&lt;br /&gt;
Der Aktor versteht folgende Aktionen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on -&amp;gt; Schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off -&amp;gt; Schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle -&amp;gt; Schaltet den Aktor um&lt;br /&gt;
set &amp;lt;name&amp;gt; on-for-timer &amp;lt;time&amp;gt;-&amp;gt; Schaltet den Aktor für &amp;lt;time&amp;gt; an&lt;br /&gt;
set &amp;lt;name&amp;gt; on-till &amp;lt;time&amp;gt; -&amp;gt; schaltet den Aktor biz zur Uhrzeit &amp;lt;time&amp;gt; an&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszug ===&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-Sw1-Pl-2 folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-11-10_16:26:28 internet level: 100 %&lt;br /&gt;
2013-11-10_16:26:28 internet pct: 100&lt;br /&gt;
2013-11-10_16:26:28 internet deviceMsg: on (to HMLAN0)&lt;br /&gt;
2013-11-10_16:26:28 internet on&lt;br /&gt;
2013-11-10_16:26:28 internet timedOn: off&lt;br /&gt;
2013-11-10_16:26:28 internet RSSI: -55&lt;br /&gt;
2013-11-10_16:26:28 internet RAWMSG: E1BEE7E,0000,004EC156,FF,FFC9,05A4101BEE7EF112120601C80038&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Ein Schaltaktor hatte nach einigen Wochen des ungestörten Funktionierens nur noch &amp;quot;MISSING ACK&amp;quot;s im Geräte-Log (zu den Schaltzeiten). Er schaltete auch nicht mehr zuverlässig (2 An- und 2 Ausschaltvorgänge je Tag per &amp;quot;at&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Log-Auszug dazu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-01-24_17:00:00 UG.AR.Luefter deviceMsg: on (to HMLAN1)&lt;br /&gt;
2013-01-24_17:00:00 UG.AR.Luefter on&lt;br /&gt;
2013-01-24_23:30:00 UG.AR.Luefter deviceMsg: off (to HMLAN1)&lt;br /&gt;
2013-01-24_23:30:00 UG.AR.Luefter off&lt;br /&gt;
2013-01-25_06:00:04 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-25_08:00:04 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-25_17:00:04 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-25_23:30:04 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-26_07:30:04 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-26_18:57:42 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-26_18:58:01 UG.AR.Luefter MISSING ACK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Reset des Schaltaktors mit anschließendem pairen brachte Abhilfe.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-01-26_19:31:38 UG.AR.Luefter deviceMsg: on (to HMLAN1)&lt;br /&gt;
2013-01-26_19:31:38 UG.AR.Luefter on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Anleitung (ELV, PDF{{DocLink|elv|/service/manuals/Homematic/74799_HM_Zwischenstecker_G_V1_0_WEB_um.pdf}})&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:HM-LC-Sw1-Pl-DN-R1.png&amp;diff=21225</id>
		<title>Datei:HM-LC-Sw1-Pl-DN-R1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:HM-LC-Sw1-Pl-DN-R1.png&amp;diff=21225"/>
		<updated>2017-04-09T07:43:47Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: Homematic HM-LC-Sw1-Pl-DN-R1

Lizenz: CC-BY-SA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Homematic HM-LC-Sw1-Pl-DN-R1&lt;br /&gt;
&lt;br /&gt;
Lizenz: CC-BY-SA&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-Sw1-Pl2_Funk-Zwischenstecker-Schaltaktor_1fach&amp;diff=21224</id>
		<title>HM-LC-Sw1-Pl2 Funk-Zwischenstecker-Schaltaktor 1fach</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-Sw1-Pl2_Funk-Zwischenstecker-Schaltaktor_1fach&amp;diff=21224"/>
		<updated>2017-04-09T06:56:19Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: Hinweis auf neue Modellbezeichnung unter TOC hinzugefügt und doppelten Überschrift über TOC entfernt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=PlatzHalter.png&lt;br /&gt;
|Bildbeschreibung=HM-LC-Sw1-Pl-2 Funk-Zwischenstecker-Schaltaktor 1fach&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=230V&lt;br /&gt;
|HWPowerConsumption=0,5W (Standby)&lt;br /&gt;
|HWPoweredBy=Netz&lt;br /&gt;
|HWSize=125x63x40mm&lt;br /&gt;
|HWDeviceFHEM=[[CUL_HM]]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3 &lt;br /&gt;
|FWVersion=1.12&lt;br /&gt;
|FWDownload={{Link2Forum|Topic=25527}}&lt;br /&gt;
|FWChangelog=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
In der Zwischenzeit wird der Aktor mit der Modellbezeichnung HM-LC-Sw1-Pl-DN-R1 vertrieben. Der Zwischenstecker ist auch als Bausatz bei ELV erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Schalten eines angeschlossenen Verbrauchers mittels CUL/CUN/HMLAN Konfigurator.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
* Schaltvermögen: 16A bei 230V/50Hz (ohmsche Last)&lt;br /&gt;
* Relais: 1x Schließer&lt;br /&gt;
* Schutzart: IP20&lt;br /&gt;
* Farbe: Reinweiß mit silberner Blende&lt;br /&gt;
&lt;br /&gt;
* Aktuelle Firmware: 1.12 (via get DEVICE param firmware)&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Das [[Pairing (HomeMatic)|Pairing]] sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Ein exemplarischer Auszug aus der fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define internet CUL_HM 1BEXXX&lt;br /&gt;
attr internet .devInfo 010100&lt;br /&gt;
attr internet .stc 10&lt;br /&gt;
attr internet autoReadReg 4_reqStatus&lt;br /&gt;
attr internet devStateIcon on:black_Steckdose.on off:black_Steckdose.off&lt;br /&gt;
attr internet expert 2_full&lt;br /&gt;
attr internet firmware 1.9&lt;br /&gt;
attr internet model HM-LC-SW1-PL2&lt;br /&gt;
attr internet peerIDs 00000000,&lt;br /&gt;
attr internet room CUL_HM&lt;br /&gt;
attr internet serialNr JEQ0461XXX&lt;br /&gt;
attr internet subType switch&lt;br /&gt;
attr internet webCmd toggle:on:off:statusRequest&lt;br /&gt;
define FileLog_internet FileLog /var/log/fhem/internet-%Y.log internet&lt;br /&gt;
attr FileLog_internet logtype text&lt;br /&gt;
attr FileLog_internet room CUL_HM&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mögliche Schaltoperationen ===&lt;br /&gt;
Der Aktor versteht folgende Aktionen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on -&amp;gt; Schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off -&amp;gt; Schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle -&amp;gt; Schaltet den Aktor um&lt;br /&gt;
set &amp;lt;name&amp;gt; on-for-timer &amp;lt;time&amp;gt;-&amp;gt; Schaltet den Aktor für &amp;lt;time&amp;gt; an&lt;br /&gt;
set &amp;lt;name&amp;gt; on-till &amp;lt;time&amp;gt; -&amp;gt; schaltet den Aktor biz zur Uhrzeit &amp;lt;time&amp;gt; an&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszug ===&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-Sw1-Pl-2 folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-11-10_16:26:28 internet level: 100 %&lt;br /&gt;
2013-11-10_16:26:28 internet pct: 100&lt;br /&gt;
2013-11-10_16:26:28 internet deviceMsg: on (to HMLAN0)&lt;br /&gt;
2013-11-10_16:26:28 internet on&lt;br /&gt;
2013-11-10_16:26:28 internet timedOn: off&lt;br /&gt;
2013-11-10_16:26:28 internet RSSI: -55&lt;br /&gt;
2013-11-10_16:26:28 internet RAWMSG: E1BEE7E,0000,004EC156,FF,FFC9,05A4101BEE7EF112120601C80038&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Ein Schaltaktor hatte nach einigen Wochen des ungestörten Funktionierens nur noch &amp;quot;MISSING ACK&amp;quot;s im Geräte-Log (zu den Schaltzeiten). Er schaltete auch nicht mehr zuverlässig (2 An- und 2 Ausschaltvorgänge je Tag per &amp;quot;at&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Log-Auszug dazu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-01-24_17:00:00 UG.AR.Luefter deviceMsg: on (to HMLAN1)&lt;br /&gt;
2013-01-24_17:00:00 UG.AR.Luefter on&lt;br /&gt;
2013-01-24_23:30:00 UG.AR.Luefter deviceMsg: off (to HMLAN1)&lt;br /&gt;
2013-01-24_23:30:00 UG.AR.Luefter off&lt;br /&gt;
2013-01-25_06:00:04 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-25_08:00:04 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-25_17:00:04 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-25_23:30:04 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-26_07:30:04 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-26_18:57:42 UG.AR.Luefter MISSING ACK&lt;br /&gt;
2013-01-26_18:58:01 UG.AR.Luefter MISSING ACK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Reset des Schaltaktors mit anschließendem pairen brachte Abhilfe.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-01-26_19:31:38 UG.AR.Luefter deviceMsg: on (to HMLAN1)&lt;br /&gt;
2013-01-26_19:31:38 UG.AR.Luefter on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Anleitung (ELV, PDF{{DocLink|elv|/service/manuals/Homematic/74799_HM_Zwischenstecker_G_V1_0_WEB_um.pdf}})&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-Sw1-Pl-DN-R1&amp;diff=21223</id>
		<title>HM-LC-Sw1-Pl-DN-R1</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-Sw1-Pl-DN-R1&amp;diff=21223"/>
		<updated>2017-04-09T06:49:23Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: Neue Modellbezeichnung für Zwischenschalter, Weiterleitung auf bestehenden Artikel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[HM-LC-Sw1-Pl2_Funk-Zwischenstecker-Schaltaktor_1fach]]&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DbLog&amp;diff=21198</id>
		<title>DbLog</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DbLog&amp;diff=21198"/>
		<updated>2017-04-06T19:36:23Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: /* Datenbank */ Primary Key Infos hinzugefügt und Abschnitt etwas umgestellt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Protokolliert Ereignisse in einer Datenbank&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModTechName=93_DbLog.pm&lt;br /&gt;
|ModOwner=tobiasfaust ({{Link2FU|118|Forum}}/[[Benutzer Diskussion:Tobias.faust|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
Mit der Zeit entstehen im fhem recht umfangreiche Log-Daten für die verschiedensten konfigurierten Devices. Die übliche Einstiegs-[[Konfiguration]] sieht vor, dass die Logs als [http://fhem.de/commandref_DE.html#FileLog FileLog] gespeichert werden - je nach Einstellung in wenigen sehr großen oder vielen kleineren Dateien. Der Datei-basierte Zugriff ist allerdings nicht wirklick performant und kann schnell zum Flaschenhals werden (z.B. bei der Darstellung von Graphen über einen längeren Zeitraum).&lt;br /&gt;
&lt;br /&gt;
Alternativ kann Fhem die Log-Daten mittels [http://fhem.de/commandref_DE.html#DbLog DbLog] in einer Datenbank speichern. Diese kann lokal als einfache SQLite- oder als zentrale Server-Datenbank (s.u.) gestaltet sein. Schon eine lokale einfache SQLite-Datenbank ist in der Regel deutlich performanter als File-basierte Logs.&lt;br /&gt;
&lt;br /&gt;
Damit eine Datenbank-Nutzung möglich ist, müssen folgende Anpassungen gemacht werden:&lt;br /&gt;
# [[#Datenbank|Erstellen einer entsprechenden Datenbank]]&lt;br /&gt;
# [[#Datenbank-Anbindung mittels db.conf|Konfiguration der Datenbank-Anbindung in FHEM]]&lt;br /&gt;
# [[#Konfiguration als Device in fhem.cfg|Anpassen aller (oder einzelner) Konfigurationen von FileLog nach DbLog]]&lt;br /&gt;
# [[#Anpassen der gplot-Konfigurationen|Ggf. Anpassen der gplot-Konfigurationen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
=== Datenbank-Anbindung mittels db.conf ===&lt;br /&gt;
DbLog wird durch 2 verschiedene Einträge aktiviert/definiert. In einer Datei namens &#039;&#039;&#039;db.conf&#039;&#039;&#039; werden die Parameter für eine Verbindung zur Datenbank (host, username, password, etc.) hinterlegt. Diese Datei kann in einem beliebigen Verzeichnis angelegt werden. Für eine MySQL-Datenbank sieht die db.conf folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 %dbconfig= (&lt;br /&gt;
     connection =&amp;gt; &amp;quot;mysql:database=fhem;host=db;port=3306&amp;quot;,&lt;br /&gt;
     user =&amp;gt; &amp;quot;fhemuser&amp;quot;,&lt;br /&gt;
     password =&amp;gt; &amp;quot;fhempassword&amp;quot;,&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis &#039;&#039;&#039;contrib/dblog&#039;&#039;&#039; der FHEM-Installation befindet sich eine Beispielkonfiguration mit der Syntax für jeden unterstützen Datenbanktyp.&lt;br /&gt;
Es wird empfohlen diese Datei zu kopieren und erst dann entsprechend zu bearbeiten. Am Besten kopiert man diese Datei in das FHEM Home Directory /opt/fhem/ und achtet auf die entsprechenden Rechte!&lt;br /&gt;
 chown fhem:dialout /opt/fhem/db.conf&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration als Device ===&lt;br /&gt;
Das DbLog Device wird dann definiert mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; DbLog &amp;lt;configfilename&amp;gt; &amp;lt;regexp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&amp;lt;configfilename&amp;gt;&#039;&#039; dem Pfad zur zuvor angelegten db.conf entspricht.&lt;br /&gt;
Ein Beispiel hierfür wäre:&lt;br /&gt;
:&amp;lt;code&amp;gt;define logdb DbLog ./db.conf .*:.* &amp;lt;/code&amp;gt;&lt;br /&gt;
Die Angabe von &amp;lt;code&amp;gt;.*:.*&amp;lt;/code&amp;gt; bedeutet, dass sämtliche DeviceMessages (Messwerte, Batteriestatus, KeepAlives, etc.) in die Datenbank geschrieben werden. Dies führt u.U. dazu, dass die Datenbank auch mit vielen teils irrelevanten Werten gefüllt wird. Man kann daher die zu loggenden Werte einschränken, indem man genau angibt welche Werte übertragen werden sollen. Dies ist in [[#Finetuning des Loggings]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Finetuning des Loggings ===&lt;br /&gt;
Bei der Konfiguration des Log-Devices werden die zu loggenden Daten definiert - in der einfachsten Form sieht das so aus: &amp;lt;code&amp;gt;define logdb DbLog ./db.conf .*:.* &amp;lt;/code&amp;gt;. Die Angabe von &amp;lt;code&amp;gt;.*:.*&amp;lt;/code&amp;gt; bedeutet, dass sämtliche DeviceMessages (Messwerte, Batteriestatus, KeepAlives, etc.) in die Datenbank geschrieben werden. Dies führt u.U. dazu, dass die Datenbank auch mit sehr vielen und teils nicht benötigten Werten gefüllt wird und schnell wächst. Die Datenbank ist zwar deutlich leistungsfähiger, was große Datenmengen angeht, Datensparsamkeit kann aber schnell sinnvoll werden...&lt;br /&gt;
&lt;br /&gt;
Um das Log-Aufkommen einzugrenzen gibt es 2 Ansätze:&lt;br /&gt;
* Einschränkung über den &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt;-Eintrag&lt;br /&gt;
* Einschränkung über DbLogExclude-Einträge der jeweiligen Devices&lt;br /&gt;
* Einschränkung über DbLogInclude-Einträge des jeweiligen Devices&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung über den zentralen &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt;-Eintrag ====&lt;br /&gt;
Man kann die zu loggenden Werte einschränken, indem man genau angibt welche Werte übertragen werden sollen. Die erste Wildcard, also das erste &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, entspricht dem in FHEM verwendeten Device-Namen. Die zweite Wildcard entspricht dem vom Device ausgegebenen zu loggenden Wert. Separiert werden beiden Angaben durch einen Doppelpunkt. &lt;br /&gt;
&lt;br /&gt;
Ein Beispiel, um zwar alle definierten Devices zu erfassen, aber nur die Werte Temperatur, Ventilposition und Luftfeuchte in die Datenbank zu schreiben wäre:&lt;br /&gt;
:&amp;lt;code&amp;gt;define myDbLog DbLog ./db.conf .*:(temperature|valveposition|humidity).* &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung über die jeweiligen Devices ====&lt;br /&gt;
Man kann die zu loggenden Werte für einzelne Devices separat einschränken, ohne dies im zentralen define-Eintrag machen zu müssen. Dies kann interessant sein, wenn beispielsweise ein Device Fehlerwerte meldet, die uninteressant sind, oder es meldet unnötig häufig Werte - beides ist z.B. bei 1-wire-Temperatursensoren gerne der Fall.&lt;br /&gt;
&lt;br /&gt;
Um das einzuschränken gibt es 2 Stellparameter, die als Attribute direkt zum jeweiligen Device konfiguriert werden:&lt;br /&gt;
* DbLogExclude - definiert Werte, die nicht geloggt werden sollen&lt;br /&gt;
* DbLogInclude - definiert Werte, die geloggt werden sollen ( siehe attr DbLogSelectionMode )&lt;br /&gt;
* event-min-interval, event-on-change-reading und event-on-update-reading beeinflussen, wie häufig Werte geloggt werden (vgl. [http://fhem.de/commandref_DE.html#event-on-update-reading commandref])&lt;br /&gt;
&lt;br /&gt;
Eine konkrete Konfiguration für einen sehr gesprächigen 1-wire-Temperatursensor könnte wie folgt aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define EG_Balkon GPIO4 BUSMASTER&lt;br /&gt;
attr EG_Balkon DbLogExclude failures,T,85     # logge keine &amp;quot;failures&amp;quot;, &amp;quot;T&amp;quot;-Werte und &amp;quot;85&amp;quot;-Werte (default-Werte, wenn keine Temperatur gelesen werden kann)&lt;br /&gt;
attr EG_Balkon event-on-change-reading state  # logge nur, wenn sich ein Wert ändert (wenn sich die Temperatur nicht ändert, logge das nicht)&lt;br /&gt;
attr EG_Balkon event-min-interval state:900   # logge spätestens alle 900sec = 15min&lt;br /&gt;
attr EG_Balkon event-on-update-reading .*     # logge alle Werte, die aktualisiert werden&lt;br /&gt;
&lt;br /&gt;
attr &amp;lt;1-Wire-Device vom Typ OWTHERM oder OWSWITCH&amp;gt; DbLogExclude data.*      # verhindert das Logging der state-Eintragungen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine in diesem {{Link2Forum|Topic=33697|Message=264127}} vorgestellte Strategie zur Vermeidung unnötigen Loggings ist, dass bei der Definition von Devices durch das nachfolgende &amp;lt;code&amp;gt;notify&amp;lt;/code&amp;gt; automatisch ein DbLogExclude für alle Werte (.*) des Devices zugewiesen wird und dies nur bei Interesse an geloggten Werten gelöscht bzw. angepasst wird:&lt;br /&gt;
&amp;lt;code&amp;gt;define nDbLogExclude notify global:DEFINED.* attr $EVTPART1 DbLogExclude .*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenso ist es mittlerweile möglich, lediglich erwünschte Werte (Positiv-Liste) zu loggen und alle anderen zu verwerfen. Hierfür wird im LogDevice das attribut DbLogSelectionMode Include verwendet. Nun kann für jedes Device mit DbLogInclude &amp;lt;Reading1&amp;gt;,&amp;lt;Reading2&amp;gt;,... angegeben werden, welche Readings geloggt werden sollen. &lt;br /&gt;
Integriert ist ebenfalls ein &amp;quot;min-interval&amp;quot;, siehe commandref.&lt;br /&gt;
&lt;br /&gt;
== Datenbank ==&lt;br /&gt;
Unterstützte Datenbanksysteme (Auswahl):&lt;br /&gt;
* Sqlite&lt;br /&gt;
* MySQL&lt;br /&gt;
* PostGreSql&lt;br /&gt;
&lt;br /&gt;
=== Tabellen ===&lt;br /&gt;
Die Datenbank ist relativ simpel gestaltet und besteht lediglich aus den folgenden beiden Tabellen:&lt;br /&gt;
* current&lt;br /&gt;
* history&lt;br /&gt;
&lt;br /&gt;
DbLog ist auf eine feste Tabellenstruktur angewiesen. Man muss daher in seiner Datenbank eine Tabelle mit folgenden Spalten anlegen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Spalte&lt;br /&gt;
! Beschreibung (en)&lt;br /&gt;
! Beschreibung (de)&lt;br /&gt;
! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TIMESTAMP&#039;&#039;&#039;&lt;br /&gt;
| timestamp of event&lt;br /&gt;
| Zeitstempel&lt;br /&gt;
| 2007-12-30 21:45:22 &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;DEVICE&#039;&#039;&#039;&lt;br /&gt;
| device name&lt;br /&gt;
| Device-Name&lt;br /&gt;
| Wetterstation&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TYPE&#039;&#039;&#039;&lt;br /&gt;
| device type&lt;br /&gt;
| Device-Typ&lt;br /&gt;
| KS300&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EVENT&#039;&#039;&#039;&lt;br /&gt;
| event specification as full string&lt;br /&gt;
| Eventspezifikation als Text&lt;br /&gt;
| humidity: 71 (%)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;READING&#039;&#039;&#039;&lt;br /&gt;
| name of reading extracted from event&lt;br /&gt;
| Bezeichnung des Readings&lt;br /&gt;
| humidity&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VALUE&#039;&#039;&#039;&lt;br /&gt;
| actual reading extracted from event&lt;br /&gt;
| Wert des Readings&lt;br /&gt;
| 71&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UNIT&#039;&#039;&#039;&lt;br /&gt;
| unit extracted from event&lt;br /&gt;
| Einheit des Readings&lt;br /&gt;
| %&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Vorlagen zur Anlage von Tabellen und Indizes sind für jeden unterstützten Datenbanktyp im Verzeichnis &#039;&#039;&#039;contrib/dblog&#039;&#039;&#039; der FHEM-Installation, oder hier zu finden: [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/dblog/ Link]. Das MySQL-Skript (db_create_mysql.sql) legt eine neue Datenbank, das PostGres-Skript (db_create_postgresql.sql) ein neues Schema mit Namen &amp;quot;fhem&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
==== current ====&lt;br /&gt;
Die Tabelle current enthält für jedes zu loggende Device lediglich den letzten Wert. Falls noch kein Wert geloggt wurde, ist diese Tabelle leer. &lt;br /&gt;
Falls der Inhalt gelöscht wird, bauen sich die Daten automatisch wieder auf. Es gehen durch das löschen der Tabelle current keine Log-Informationen verloren.&lt;br /&gt;
Der Inhalt wird aber u.a. für die Dropdown-Felder beim Plot-Editor verwendet.&lt;br /&gt;
&lt;br /&gt;
Um doppelte Einträge in der Tabelle zu vermeiden, wurden die Möglichkeit geschaffen Primary Keys zu definieren. Da in der Spalte &amp;lt;code&amp;gt;READING&amp;lt;/code&amp;gt; u.U. bei verschiedenen Geräten gleiche Namen vorkommen können, sollte der Primary Key um den Gerätenamen erweitert werden. Der Primary Key sollte also aus &amp;lt;code&amp;gt;DEVICE&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;READING&amp;lt;/code&amp;gt; bestehen. Um in der Datenbank &#039;&#039;fhem&#039;&#039; diesen PK zu setzen, kann folgender SQL Code verwendet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE `fhem`.`current` &lt;br /&gt;
CHANGE COLUMN `DEVICE` `DEVICE` VARCHAR(64) CHARACTER SET &#039;utf8&#039; COLLATE &#039;utf8_bin&#039; NOT NULL ,&lt;br /&gt;
CHANGE COLUMN `READING` `READING` VARCHAR(64) CHARACTER SET &#039;utf8&#039; COLLATE &#039;utf8_bin&#039; NOT NULL ,&lt;br /&gt;
ADD PRIMARY KEY (`DEVICE`, `READING`);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== history ====&lt;br /&gt;
Die Tabelle history enthält alle bisher geloggten Daten. Löschen in dieser Tabelle bedeutet automatisch Datenverlust (gewollt oder nicht ... )&lt;br /&gt;
Der Inhalt dieser Tabelle wird verwendet, um die Plots zu zeichnen.&lt;br /&gt;
&lt;br /&gt;
== Anpassen der gplot-Konfigurationen ==&lt;br /&gt;
Die meisten gplot-Konfigurationen sind bisher lediglich auf FileLog-Konfigurationen ausgelegt. Deshalb müssen sie für die Verwendung mit DbLog angepasst werden. Glücklicherweise beschränkt sich dies auf die reinen FileLog-Zeilen - es müssen die DbLog-Äquivalente hinzugefügt werden. Die FileLog-Einträge müssen zwar nicht gelöscht werden, wenn man aber FileLog und DbLog parallel betreibt, sollte man getrennte gplot-Dateien für beide Logging-Typen haben um Auswertungsprobleme erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Für die fht.gplot Konfiguration sähe die Anpassung wie folgt aus (lediglich die vier DbLog-Zeilen wurden hinzugefügt):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2014-12-25 21:53:30&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set ytics nomirror&lt;br /&gt;
set y2tics &lt;br /&gt;
set grid y2tics&lt;br /&gt;
set ylabel &amp;quot;Actuator/Window (%)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Temperature in C&amp;quot;&lt;br /&gt;
set yrange 0:100&lt;br /&gt;
set y2range 5:25&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:.measured-temp\x3a:0:&lt;br /&gt;
#FileLog 4:.actuator\x3a:0:int&lt;br /&gt;
#FileLog 4:.desired-temp::&lt;br /&gt;
#FileLog 4:.window\x3a::&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:.measured-temp:0:&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:.actuator:0:int&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:.desired-temp::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:.window::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Measured temperature&#039; ls l0 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Actuator (%)&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Desired Temperature&#039; ls l2 lw 1 with steps,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Window&#039; ls l3 lw 1 with steps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Des weiteren ist zu beachten: &lt;br /&gt;
&lt;br /&gt;
On-Off-Plots&lt;br /&gt;
&lt;br /&gt;
 EG_Bad:window:::$val=~s/(on|off)(\d*).*/$1eq&amp;quot;on&amp;quot;?1:0/eg&lt;br /&gt;
&lt;br /&gt;
unter Berücksichtigung von dim-Werten:&lt;br /&gt;
&lt;br /&gt;
 EG_WoZi_Licht:value:::$val=~s/(on|off)(\d*).*/$1eq&amp;quot;on&amp;quot;?1:($1eq&amp;quot;dim&amp;quot;?$2*0.01:0)/eg&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Anlegen und Nutzung einer SQLite-Datenbank ==&lt;br /&gt;
Im folgenden wird eine lokale SQLite-Datenbank auf einen Ubuntu-System angelegt (nach Quelle: [http://www.tatsch-it.de/fhem-dblog/ http://www.tatsch-it.de/fhem-dblog/])&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;Installation von SQLite:&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo aptitude install sqlite3 libdbi-perl libdbd-sqlite3-perl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;Anlegen der SQLite-Datenbank fhem.db&#039;&#039; (öffnet auch direkt eine SQL-Kommandozeile):&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sqlite3 /opt/fhem/fhem.db&amp;lt;/pre&amp;gt;&lt;br /&gt;
In der geöffneten SQL-Kommandozeile eingeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE &#039;history&#039; (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));&lt;br /&gt;
CREATE TABLE &#039;current&#039; (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Kommandozeile verlässt man mit &amp;lt;code&amp;gt;.exit&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;Anpassen des Besitzers und der Rechte der Datenbank-Datei:&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo chown fhem /opt/fhem/fhem.db&lt;br /&gt;
sudo chmod 666 /opt/fhem/fhem.db&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;Datenbank-Anbindung des FHEM konfigurieren:&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /opt/fhem/db.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
Inhalt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%dbconfig= (&lt;br /&gt;
  connection =&amp;gt; &amp;quot;SQLite:dbname=/opt/fhem/fhem.db&amp;quot;,&lt;br /&gt;
  user =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;
  password =&amp;gt; &amp;quot;&amp;quot;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;Logging des FHEM auf die Datenbank konfigurieren:&#039;&#039; (hier sind nur die Anpassungen aufgeführt)&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /opt/fhem/fhem.cfg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
attr global userattr DbLogExclude ...  # erlaubt es einzelne Einträge nicht zu loggen&lt;br /&gt;
...&lt;br /&gt;
define logdb DbLog ./db.conf .*:.*     # logt alle(!) auflaufenden Events aller Konfigurationen&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Da durch diese &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt;-Definition alle auflaufenden Events gelogt werden, müssen keine weiteren Anpassungen in der Konfiguration gemacht werden. Die FileLog-Einträge können bedenkenlos bestehen bleiben - dann wird in Datenbank und FileLog gelogt und man verliert keine Daten, falls etwas nicht klappt. Wenn alles wie geplant läuft, können die FileLog-Definitionen gelöscht werden (ebenso die Log-Dateien). Ebenso können die zu loggenden Daten später eingegrenzt werden (s. [[#Finetuning des Loggings]]).&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;FHEM neu starten:&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo service fhem stop&lt;br /&gt;
sudo service fhem start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;Kontrollieren, ob Logs in die Datenbank geschrieben werden:&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sqlite3 /opt/fhem/fhem.db&amp;lt;/pre&amp;gt;&lt;br /&gt;
In der geöffneten SQL-Kommandozeile eingeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select * from history order by TIMESTAMP;       # dies gibt alle(!) Logs chronologisch aus (kann nach längerem Betrieb recht lange dauern)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Kommandozeile verlässt man mit &amp;lt;code&amp;gt;.exit&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&#039;&#039;Anpassung der glot-Dateien:&#039;&#039; siehe [[#Anpassen der gplot-Konfigurationen]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Anlegen und Nutzung einer Mysql-Datenbank ==&lt;br /&gt;
Anstatt nano kann jeder andere kompatible Editor verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Unter Ubuntu/debian: &lt;br /&gt;
 apt-get update &amp;amp;&amp;amp; apt-get install mysql-server mysql-client libdbd-mysql libdbd-mysql-perl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der Installation sollte man aus Sicherheitsgründen ein Passwort für den mysql-root vergeben, wenn man nicht sogar ganz den Login verbietet.&lt;br /&gt;
&lt;br /&gt;
Hinweis: im Folgenden ist &amp;quot;#&amp;quot; der normale Prompt und &amp;quot;mysql&amp;gt;&amp;quot; der prompt innerhalb mysql, dieser kann mit exit verlassen werden. &lt;br /&gt;
&lt;br /&gt;
Zum Test mal mit mysql verbinden:&lt;br /&gt;
 # mysql -p -u root&lt;br /&gt;
 Enter password:&lt;br /&gt;
 mysql&amp;gt; exit&lt;br /&gt;
&lt;br /&gt;
Jetzt die Tabellenstruktur anlegen. &lt;br /&gt;
Hierfür kann die Datei /opt/fhem/contrib/dblog/db_create_mysql.sql als Vorlage verwendet und das Passwort und der Benutzername geändert werden. &lt;br /&gt;
 cp /opt/fhem/contrib/dblog/db_create_mysql.sql&lt;br /&gt;
 nano db_create_mysql.sql&lt;br /&gt;
Dann wird die Datei eingelesen (root Passwort wird abgefragt): &lt;br /&gt;
&lt;br /&gt;
 # mysql -u root -p &amp;lt; db_create_mysql.sql&lt;br /&gt;
&lt;br /&gt;
Jetzt kann man den Zugang testen: &lt;br /&gt;
&lt;br /&gt;
 # mysql -p -u &amp;lt;fhemuser&amp;gt;&lt;br /&gt;
 Enter password: &amp;lt;fhempassword&amp;gt;&lt;br /&gt;
 mysql&amp;gt; show databases;&lt;br /&gt;
&lt;br /&gt;
Nun müsste eine Datenbank &amp;quot;fhem&amp;quot; angezeigt werden, die die Tabellen current und history enthält.&lt;br /&gt;
&lt;br /&gt;
Nun in der Datei db.conf den mysql-Block auskommentieren und ebenfalls Benutzername, Passwort UND HOST anpassen. Leider ist hier nicht standardmäßig localhost eingestellt.&lt;br /&gt;
 nano /opt/fhem/db.conf&lt;br /&gt;
&lt;br /&gt;
Jetzt kann unter FHEM ein DbLog-Device angelegt werden (mit dem beispiel wird alles geloggt: &lt;br /&gt;
 define logdb DbLog ./db.conf .*:.*&lt;br /&gt;
Als State muss ein &amp;quot;connected&amp;quot; angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
Ein rereadcfg in Fhem stellt sicher, dass die neue Konfiguration übernommen wird - ein Neustart ist nicht erforderlich&lt;br /&gt;
&lt;br /&gt;
Nun kann die Funktion noch einmal überprüft werden: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 # mysql -u &amp;lt;fhemuser&amp;gt; -p&lt;br /&gt;
 Enter password: &amp;lt;fhempassword&amp;gt;&lt;br /&gt;
 mysql&amp;gt; use fhem;&lt;br /&gt;
 Database changed&lt;br /&gt;
 mysql&amp;gt; show tables;&lt;br /&gt;
 +----------------+&lt;br /&gt;
 | Tables_in_fhem |&lt;br /&gt;
 +----------------+&lt;br /&gt;
 | current        |&lt;br /&gt;
 | history        |&lt;br /&gt;
 +----------------+&lt;br /&gt;
 2 rows in set (0,00 sec)&lt;br /&gt;
 mysql&amp;gt; select * from history; # Achtung, kann sehr groß werden .... #&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integration von DBLog in eigene Module ==&lt;br /&gt;
=== Bereitstellung der UNITS ===&lt;br /&gt;
Mit der DbLog_splitFn kann der Modulautor selbst festlegen, wie die Events des Moduls in die Bestandteile Reading/Value/Unit zerlegt werden um ein korrektes Logging per DbLog zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
Dazu muss der Modulautor in der [[DevelopmentModuleIntro#X_Initialize|Initialize-Funktion]] eine &amp;lt;code&amp;gt;DbLog_splitFn&amp;lt;/code&amp;gt; bereitstellen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub X_Initialize($)&lt;br /&gt;
{&lt;br /&gt;
	my ($hash) = @_;&lt;br /&gt;
	...&lt;br /&gt;
	$hash-&amp;gt;{DbLog_splitFn}      = &amp;quot;X_DbLog_splitFn&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die genaue Aufrufsyntax und Funktionweise einer DbLog_split-Funktion findet man [[DevelopmentModuleIntro#X_DbLog_split|hier]].&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Beim Anlegen der Datenbank per script wird die Value-Spalte nur als Varchar(32) definiert. Dieses kann dazu führen, dass besonders lange Readings (z.b. vom Modul sysmon) abgeschnitten werden und nicht in der Datenbank landen. Dieses lässt sich leicht beheben, indem man die Spalte auf Varchar(64) ändert (siehe auch {{Link2Forum|Topic=25648|Message=252433|LinkText=diesen Forenbeitrag}}).&lt;br /&gt;
&lt;br /&gt;
 mysql&amp;gt; ALTER TABLE current MODIFY VALUE VARCHAR(64);&lt;br /&gt;
 mysql&amp;gt; ALTER TABLE history MODIFY VALUE VARCHAR(64);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Werte auslesen ==&lt;br /&gt;
Manchmal möchte man Daten aus den Logs abrufen ohne händisch in der Datenbank herumzuwühlen (s.u.). Dies ist insb. auch dann hilfreich, wenn man eigenen Funktionen, Notifys oder spezielle Plots entwirft, bei denen man auf Logdaten zugreifen möchte.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich beschrieben ist dies in der [http://fhem.de/commandref_DE.html#DbLog commandref#DbLog] und unterscheidet sich minimal (aber entscheidend) von der Struktur bei [[FileLog#Werte_auslesen|FileLogs]].&lt;br /&gt;
&lt;br /&gt;
Hier ein paar Beispiele, was man damit anstellen kann:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;get meineDB - - 2016-10-01 2016-10-03 meinSensor&amp;lt;/code&amp;gt; alle Einträge des meinSensor vom 01.10.-03.10.2016&lt;br /&gt;
* &amp;lt;code&amp;gt;get meineDB - - 2016-10-01_08:00:00 2016-10-01_16:00:00 meinSensor&amp;lt;/code&amp;gt; alle Einträge des meinSensor von 8-16 Uhr am 01.10.2016&lt;br /&gt;
* &amp;lt;code&amp;gt;get meineDB - - 2016-10-01_08:00:00 2016-10-01_16:00:00 meinSensor:temperature&amp;lt;/code&amp;gt; nur die temperature Werte&lt;br /&gt;
* &amp;lt;code&amp;gt;{ ReadingsTimestamp(&amp;quot;meinSensor&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;0&amp;quot;) }&amp;lt;/code&amp;gt; Timestamp des aktuellen state des meinSensor&lt;br /&gt;
* &amp;lt;code&amp;gt;{ OldTimestamp(&amp;quot;meinSensor&amp;quot;) }&amp;lt;/code&amp;gt; Timestamp des letzten state des FHT_3a32&lt;br /&gt;
* &amp;lt;code&amp;gt;{ time_str2num(OldTimestamp(&amp;quot;meinSensor&amp;quot;)) }&amp;lt;/code&amp;gt; Timestamp in Sekunden des letzten state des meinSensor&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Bearbeitung von Datenbank-Einträgen ==&lt;br /&gt;
{{Hinweis|Dieser Abschnitt soll lediglich eine kleine Einführung in die Datenbank-Bearbeitung liefern. Für vertiefende Informationen sollte man sich grundsätzlich mit SQL beschäftigen. Eine umfassende und gut verständliche Anleitung zu SQL bietet bspw. [http://www.w3schools.com/sql/default.asp w3schools].}}&lt;br /&gt;
Irgendwann wird der Fall eintreten, dass in der Datenbank Einträge drinstehen, die geändert oder gelöscht werden sollen (zB. fehlerhafte Sensor-Rückmeldungen, umbenannte Readings). In klassischen Log-Dateien würde man diese einfach bearbeiten und löschen/anpassen (wobei man aber tunlichst zuvor den fhem ausmacht um Datenfehler zu vermeiden). Eine Datenbank kann bearbeitet werden ohne den fhem abschalten zu müssen. &lt;br /&gt;
&lt;br /&gt;
Datenbanken kann man ohne weiter Hilfsmittel direkt von der Kommandozeile/Shell aus bearbeiten. Alternativ gibt es auch verschiedenste Tools (webbasiert oder als Applikation), die einen dabei unterstützen (Bsp. findet man u.a. [https://wiki.ubuntuusers.de/SQLite/#Grafische-Benutzeroberflaechen hier]). Für einfache Arbeiten reicht allerdings idR. Shell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SQLite-Datenbanken ===&lt;br /&gt;
&#039;&#039;&#039;Öffnen der DB unter Linux:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
(Es werden Schreibrechte benötigt,ohne kann man die DB zwar öffnen, aber nichts machen)&lt;br /&gt;
 sudo sqlite3 fhem.db&lt;br /&gt;
Dadurch öffnet sich ein SQL-Konsole, auf der alle weiteren Befehle ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schliessen der DB:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sqlite&amp;gt; .exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hilfe anzeigen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sqlite&amp;gt; .help&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alle Tabellen anzeigen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sqlite&amp;gt; .tables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Schema der DB anzeigen:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
(vgl. oben [[DbLog#Datenbanken]] und [[DbLog#Beispiel: Anlegen und Nutzung einer SQLite-Datenbank]])&lt;br /&gt;
&lt;br /&gt;
 sqlite&amp;gt; .schema&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alle Eintäge anzeigen:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Die Einträge liegen alle in der Tabelle &amp;quot;History&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ganz wichtig&#039;&#039;&#039; ist immer das &amp;quot;;&amp;quot; am Ende Zeile (bei allen Kommandos, die nicht mit einem &amp;quot;.&amp;quot; anfangen). Wenn es vergessen wurde zeigt die Konsole solange neue Zeilen bis ein &amp;quot;;&amp;quot; eingegeben wird. So kann ein Befehl auch bequem über mehrere Zeilen geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
 sqlite&amp;gt; select * from HISTORY;&lt;br /&gt;
&lt;br /&gt;
Dies kann sehr lange dauern und kann ggf. mit &amp;lt;code&amp;gt;STRG-C&amp;lt;/code&amp;gt; abgebrochen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alle Einträge eines Geräts anzeigen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;where&amp;lt;/code&amp;gt;-Statements werden Strings in einfache Anführungsstriche gesetzt, Zahlen nicht.&lt;br /&gt;
&lt;br /&gt;
 sqlite&amp;gt; select * from HISTORY where DEVICE=&#039;Pollenflug&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alle Einträge eines Readings eines Geräts anzeigen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sqlite&amp;gt; select * from HISTORY where DEVICE=&#039;Pollenflug&#039; and READING=&#039;Graeser&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alle Einträge eines bestimmten Wertes eines Readings eines Geräts anzeigen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sqlite&amp;gt; select * from HISTORY where DEVICE=&#039;Pollenflug&#039; and READING=&#039;Graeser&#039; and VALUE&amp;gt;1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LÖSCHEN aller Einträge eines bestimmten Wertes eines Readings eines Geräts anzeigen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Löschen kann nicht rückgängig gemacht werden!! Also IMMER erst die entsprechenden SELECT-Statements solange verfeinern bis wirklich nur die gewünschten Einträge angezeigt werden. Dann das &amp;lt;code&amp;gt;select *&amp;lt;/code&amp;gt; durch &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt; ersetzen.&lt;br /&gt;
&lt;br /&gt;
 sqlite&amp;gt; delete from HISTORY where DEVICE=&#039;Pollenflug&#039; and READING=&#039;Graeser&#039; and VALUE&amp;gt;1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datenbank reparieren ==&lt;br /&gt;
Es kann immer wieder mal vorkommen, dass Datenbanken Fehler enthalten. Das muss im Alltag garnicht auffallen und auch nicht immer schlimm enden. Wenn man auf der SQL-Konsole aber bspw. eine Meldung &amp;lt;code&amp;gt;Error: database disk image is malformed&amp;lt;/code&amp;gt; erhält, sollte man ein Reparatur vornehmen.&lt;br /&gt;
&lt;br /&gt;
=== SQLite-Datenbanken ===&lt;br /&gt;
Die folgenden Schritte beschreiben, wie man eine SQLite-DB reparieren kann (Quelle: [http://techblog.dorogin.com/2011/05/sqliteexception-database-disk-image-is.html]):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
DB öffnen:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sqlite3 fhem.db&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Integritäts-Check durchführen:&lt;br /&gt;
&amp;lt;pre&amp;gt;sqlite&amp;gt; pragma integrity_check;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kommt hier ein &amp;quot;ok&amp;quot; ist die DB gesund. Ansonsten erscheint etwas wie&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*** in database main ***&lt;br /&gt;
On tree page 118786 cell 1: Rowid 75 out of order (previous was 816660)&lt;br /&gt;
On tree page 118786 cell 4: Rowid 815704 out of order (previous was 816727)&lt;br /&gt;
Corruption detected in cell 0 on page 118786&lt;br /&gt;
Multiple uses for byte 132 of page 118786&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Datenbank-Dump erstellen (Export gesamten DB in die Datei &amp;quot;dump_all_20160516_1043.sql&amp;quot;) und DB verlassen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sqlite&amp;gt; .mode insert&lt;br /&gt;
sqlite&amp;gt; .output dump_all_20160516_1043.sql&lt;br /&gt;
sqlite&amp;gt; .dump&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Neue Datenbank erstellen und den Dump einlesen, Integritäts-Check machen und verlassen:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sqlite3 fhem-neu.db&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sqlite&amp;gt; .read dump_all_20160516_1043.sql&lt;br /&gt;
sqlite&amp;gt; pragma integrity_check;&lt;br /&gt;
ok&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Spätestens jetzt fhem stoppen:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo service fhem stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Alte DB sichern und neue aktivieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mv fhem.db fhem.db.sv_20160516&lt;br /&gt;
sudo mv fhem-neu.db fhem.db&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Kontrollieren, dass die neue DB die gleichen Rechte wie die alte DB hat (und ggf. korrigieren):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/fhem$ ls -lha&lt;br /&gt;
insgesamt 6,3G&lt;br /&gt;
drwxr-xr-x 12 fhem root    4,0K Mai 16 11:07 .&lt;br /&gt;
drwxr-xr-x  4 root root    4,0K Dez 25 17:50 ..&lt;br /&gt;
...&lt;br /&gt;
-rw-r--r--  1 root root    1,4G Mai 16 11:04 fhem.db&lt;br /&gt;
-rw-r--r--  1 fhem root    2,6G Mai 16 10:59 fhem.db.sv_20160516&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
~/fhem$ sudo chown fhem:root fhem.db&lt;br /&gt;
&lt;br /&gt;
~/fhem$ ls -lha&lt;br /&gt;
insgesamt 6,3G&lt;br /&gt;
drwxr-xr-x 12 fhem root    4,0K Mai 16 11:07 .&lt;br /&gt;
drwxr-xr-x  4 root root    4,0K Dez 25 17:50 ..&lt;br /&gt;
...&lt;br /&gt;
-rw-r--r--  1 fhem root    1,4G Mai 16 11:04 fhem.db&lt;br /&gt;
-rw-r--r--  1 fhem root    2,6G Mai 16 10:59 fhem.db.sv_20160516&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
fhem wieder starten (und natürlich kontrollieren):&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo service fhem start&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nützliche Codeschnipsel ==&lt;br /&gt;
Anbei ein paar nützliche Codeschnipsel rund um DbLog&lt;br /&gt;
&lt;br /&gt;
=== Dateigrösse mitloggen ===&lt;br /&gt;
Da die Datenbank ins Unermessliche wachsen kann, empfiehlt es sich - je nach Speicherplatz - ab einer bestimmten Grösse tätig zu werden. Dazu muss diese Grösse allerdings ermittelt werden. Diese geschieht mittels des Userreadings, welches man vorteilshafterweise mit im DbLog-device anlegt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;attr myDbLog userReadings DbFileSize:lastReduceLogResult.* { (split(&#039; &#039;,`du -m fhem.db`))[0] }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels dieses Attributs wird die Grösse der .db-Datei immer nach dem Ausführen des ReduceLog in das Reading &amp;quot;DbFileSize&amp;quot; in ganzzahligen MByte abgelegt.&lt;br /&gt;
&lt;br /&gt;
Basierend auf diesem Reading können dann weitere Aktionen, beispielsweise ein Plot, erstellt werden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [[Heizleistung_und_Gasverbrauch|Beispiel das DbLog-Daten für SVG-Plots verwendet]]&lt;br /&gt;
* [[SVG-Plots von FileLog auf DbLog umstellen]]&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MQTT_Einf%C3%BChrung_Teil_3&amp;diff=21197</id>
		<title>MQTT Einführung Teil 3</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MQTT_Einf%C3%BChrung_Teil_3&amp;diff=21197"/>
		<updated>2017-04-06T17:41:18Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: /* Links */ Links zu Teil 1 und 2 in interne Links verwandelt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MQTT Einführung Teil 3 =&lt;br /&gt;
Zeit sich die Hände schmutzig zu machen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOCH NICHT GANZ FERTIG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Übersicht ==&lt;br /&gt;
Im folgenden basteln wir einen einfachen Temperatursensor.&lt;br /&gt;
&lt;br /&gt;
Das ist nicht aufregend. Jedoch ist der Code im Originalzustand sehr gut überschaubar. Man kann daher gut die Änderungen sehen.&lt;br /&gt;
&lt;br /&gt;
== Originales Projekt ==&lt;br /&gt;
[http://fluuux.de/2012/10/arduino-temperatur-und-luftfeuchtigkeit-mit-dem-dht22-prufen/ hier bitte nachlesen]&lt;br /&gt;
&lt;br /&gt;
Mit freundlicher Genehmigung des Autors hier der originale Quellcode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;arduino&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;DHT.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#define DHTPIN 9     &lt;br /&gt;
#define DHTTYPE DHT22 //DHT11, DHT21, DHT22&lt;br /&gt;
 &lt;br /&gt;
DHT dht(DHTPIN, DHTTYPE);&lt;br /&gt;
 &lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
  Serial.println(&amp;quot;DHT22 - Test!&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
  dht.begin();&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
  float h = dht.readHumidity();     //Luftfeuchte auslesen&lt;br /&gt;
  float t = dht.readTemperature();  //Temperatur auslesen&lt;br /&gt;
 &lt;br /&gt;
  // Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben.&lt;br /&gt;
  if (isnan(t) || isnan(h)) &lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;DHT22 konnte nicht ausgelesen werden&amp;quot;);&lt;br /&gt;
  } &lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.print(&amp;quot;Luftfeuchte: &amp;quot;); &lt;br /&gt;
    Serial.print(h);&lt;br /&gt;
    Serial.print(&amp;quot; %\t&amp;quot;);&lt;br /&gt;
    Serial.print(&amp;quot;Temperatur: &amp;quot;); &lt;br /&gt;
    Serial.print(t);&lt;br /&gt;
    Serial.println(&amp;quot; C&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Benötigte Hardware ===&lt;br /&gt;
* Arduino&lt;br /&gt;
* DHT-22 Sensor (nicht der Beste, aber seine Verwendung hält den Code einfach)&lt;br /&gt;
* 10 kOhm Widerstand&lt;br /&gt;
* Steckbrett&lt;br /&gt;
* Drähte&lt;br /&gt;
&lt;br /&gt;
Zusätzlich&lt;br /&gt;
* Ethernetshield mit W5100 Chip&lt;br /&gt;
* MQTT Broker (Testweise: 37.187.106.16 =&amp;gt; IP von test.mosquitto.org)&lt;br /&gt;
&lt;br /&gt;
== Kurze Beschreibung was der originale Code tut ==&lt;br /&gt;
* Zeilen 1-6: Library einbinden, PIN festlegen, initialisieren.&lt;br /&gt;
* Zeilen 8-14: Serielle Schnittstelle konfigurieren, netten Text schreiben...&lt;br /&gt;
* Zeilen 18-19: Sensorwerte auslesen&lt;br /&gt;
* Zeilen 21-25: Fehlerbehandlung&lt;br /&gt;
* Zeilen 26-34: Sensorwerte mit Beschreibung an die serielle Schnittstelle senden&lt;br /&gt;
&lt;br /&gt;
=== Bibliotheken die zu installieren sind ===&lt;br /&gt;
Anmerkung:&lt;br /&gt;
&lt;br /&gt;
Die Arduino IDE bietet viele Möglichkeiten Bibliotheken einzubinden. Bevorzugt verwendet man den eingebauten Library-Manager. Wer das nicht will, kann auch die Bibliotheken als ZIP Datei herunterladen, und dann mit &amp;quot;Bibliothek aus ZIP Datei hinzufügen&amp;quot; einbinden.&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Links zu den ZIP Dateien&lt;br /&gt;
Für den originalen Sketch&lt;br /&gt;
* [https://github.com/adafruit/DHT-sensor-library Adafruit DHT Library]&lt;br /&gt;
* [https://github.com/adafruit/Adafruit_Sensor Adafruit Sensor Library]&lt;br /&gt;
In der Adruino IDE gibt es eine Warnung, &#039;&#039;WARNUNG: Unberechtigter Ordner .github in der Bibliothek &#039;DHT sensor library&#039;&#039;&#039;; diese kann ignoriert werden. Da die Meldung aber immer kommt, löschen wir einfach besagten Ordner &amp;quot;.github&amp;quot; im Ordner der DHT Sensor Library.&lt;br /&gt;
&lt;br /&gt;
Für MQTT brauchen wir drei weitere Libraries:&lt;br /&gt;
* [https://github.com/knolleary/pubsubclient PubSubClient Library, MQTT]&lt;br /&gt;
* Ethernet, ist in der Arduino IDE schon mit dabei&lt;br /&gt;
* SPI, für das Netzwerkshield, ist auch schon dabei&lt;br /&gt;
&lt;br /&gt;
== Notwendige Änderungen ==&lt;br /&gt;
&lt;br /&gt;
Im folgenden bauen wir den Sketch um. Zunächst prüfen wir, was am Sketch an sich geändert werden muss, anschließend fügen wir den MQTT Code hinzu. Zuletzt nutzen wir noch einige MQTT Features für weitere Optimierungen.&lt;br /&gt;
&lt;br /&gt;
=== Änderungen am Skript selbst ===&lt;br /&gt;
Die einfachste Möglichkeit ein Skript auf MQTT umzustellen, ist das Ändern der Ausgabe von Serial.print in ein mqtt.publish. Hier ergibt sich im Sketch ein Problem: Pubsubclient kann keine Werte vom Typ &amp;quot;float&amp;quot; als Payload versenden. Daher müssen wir zwei Konvertierungen hinzufügen:&lt;br /&gt;
* dtostrf(h,6, 1, humidity);&lt;br /&gt;
* dtostrf(t,6, 1, temperature);&lt;br /&gt;
machen den Trick: Nehme float h, benutze insgesamt 6 Stellen, 1 Nachkommastelle und schreibe das Ergebnis in humidity.&lt;br /&gt;
&lt;br /&gt;
Weiterhin ist es angenehmer, Variablen etc. am Anfang eines Sketches zu definieren, das machen wir auch noch.&lt;br /&gt;
&lt;br /&gt;
=== Änderungen für MQTT ===&lt;br /&gt;
Am einfachsten ist, wir nehmen uns einen der mitgelieferten MQTT Beispielsketche: mqtt_reconnect_nonblocking. Das müssen wir eigentlich nur an den jeweiligen Stellen in den originalen Sketch kopieren.&lt;br /&gt;
Dabei sind die IP Adressen anzupassen und eine MAC Adresse zu vergeben.&lt;br /&gt;
&lt;br /&gt;
Statt oder zusätzlich zu unserer Ausgabe über die serielle Schnittstelle fügen wir noch einen client.publish ein, so dass die Werte auf dem Broker landen.&lt;br /&gt;
&lt;br /&gt;
Der Vollständigkeit halber, hier der Sketch für das nicht - blockierende MQTT reconnect:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;arduino&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Reconnecting MQTT example - non-blocking&lt;br /&gt;
&lt;br /&gt;
 This sketch demonstrates how to keep the client connected&lt;br /&gt;
 using a non-blocking reconnect function. If the client loses&lt;br /&gt;
 its connection, it attempts to reconnect every 5 seconds&lt;br /&gt;
 without blocking the main loop.&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Ethernet.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PubSubClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Update these with values suitable for your hardware/network.&lt;br /&gt;
byte mac[]    = {  0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };&lt;br /&gt;
IPAddress ip(172, 16, 0, 100);&lt;br /&gt;
IPAddress server(172, 16, 0, 2);&lt;br /&gt;
&lt;br /&gt;
void callback(char* topic, byte* payload, unsigned int length) {&lt;br /&gt;
  // handle message arrived&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
EthernetClient ethClient;&lt;br /&gt;
PubSubClient client(ethClient);&lt;br /&gt;
&lt;br /&gt;
long lastReconnectAttempt = 0;&lt;br /&gt;
&lt;br /&gt;
boolean reconnect() {&lt;br /&gt;
  if (client.connect(&amp;quot;arduinoClient&amp;quot;)) {&lt;br /&gt;
    // Once connected, publish an announcement...&lt;br /&gt;
    client.publish(&amp;quot;outTopic&amp;quot;,&amp;quot;hello world&amp;quot;);&lt;br /&gt;
    // ... and resubscribe&lt;br /&gt;
    client.subscribe(&amp;quot;inTopic&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  return client.connected();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  client.setServer(server, 1883);&lt;br /&gt;
  client.setCallback(callback);&lt;br /&gt;
&lt;br /&gt;
  Ethernet.begin(mac, ip);&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  lastReconnectAttempt = 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    long now = millis();&lt;br /&gt;
    if (now - lastReconnectAttempt &amp;gt; 5000) {&lt;br /&gt;
      lastReconnectAttempt = now;&lt;br /&gt;
      // Attempt to reconnect&lt;br /&gt;
      if (reconnect()) {&lt;br /&gt;
        lastReconnectAttempt = 0;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    // Client connected&lt;br /&gt;
&lt;br /&gt;
    client.loop();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Optimierungsmöglichkeiten === &lt;br /&gt;
&lt;br /&gt;
==== Unfreiwilliger Netzwerktest ====&lt;br /&gt;
Jedesmal wenn die Schleife durchgelaufen wird, bekämen wir eine Nachricht mit der Temperatur und eine mit der Luftfeuchtigkeit. Das ist nicht so wirklich schlau. Hier bieten sich 3 Alternativen an:&lt;br /&gt;
* Delay =&amp;gt; dumme Idee, blockiert den Arduino, nicht benutzen&lt;br /&gt;
* eine nicht-blockierende Methode für den Arduino nehmen =&amp;gt; kann man machen&lt;br /&gt;
* Senden nur bei Werteänderung =&amp;gt; vermutlich das Ressourcenschonendste&lt;br /&gt;
&lt;br /&gt;
Ich verwende Variante 3.&lt;br /&gt;
&lt;br /&gt;
Wir benötigen dazu noch zwei weitere Variablen (h_alt und t_alt); jedesmal wenn die Sendeschleife durchlaufen wird, speichern wir h und t in diese Variablen. Zusätzlich benötigt unsere Schleife nach der Fehlerbehandlung noch einen if Zweig, der dafür sorgt, dass nichts getan wird wenn beide Werte sich nicht geändert haben.&lt;br /&gt;
&lt;br /&gt;
Jetzt können wir MQTT anweisen, die letzten Messwerte retained zu senden. Sonst würden wir erst dann Werte bekommen, wenn sich entweder die Temperatur oder die Luftfeuchte verändert haben.&lt;br /&gt;
* client.publish(&amp;quot;zuHause/Arduino_1/Kueche/Kuehlschrank/Luftfeuchte&amp;quot;,humidity);&lt;br /&gt;
wird zu&lt;br /&gt;
* client.publish(&amp;quot;zuHause/Arduino_1/Kueche/Kuehlschrank/Luftfeuchte&amp;quot;,humidity, true);&lt;br /&gt;
* das true dahinter ist das Flag für retained Messages&lt;br /&gt;
&lt;br /&gt;
==== Nachtrag zum Thema Pausen ====&lt;br /&gt;
Mit den Codeänderungen oben haben wir schon mal ein dauerhaftes publishen der gleichen Daten verhindert. Jedoch gibt es natürlich noch einige technische Besonderheiten, die wir ebenfalls berücksichtigen sollten:&lt;br /&gt;
&lt;br /&gt;
Bis jetzt führt unser Sketch bei jedem Durchlauf durch void.loop() eine Messung durch. Das hat zwei Folgen:&lt;br /&gt;
* der Sensor ist im Dauerbetrieb&lt;br /&gt;
* kleine Schwankungen führen natürlich zu einem erneuten publishen.&lt;br /&gt;
Wenn wir den Code, sagen wir, nur alle 2 Minuten ausführen würden, würderd der Sensor weniger belastet. Beim dem Verwendeten spielt es nicht wirklich eine große Rolle, aber es gibt Sensoren die auf einen derart häufigen Zugriff durchaus empfindlich reagieren können.&lt;br /&gt;
&lt;br /&gt;
Gleichzeitig bekommen wir viele kleine Schwankungen  (ich nenne sie mal Messungenauigkeiten) übermittelt, die uns eigentlich nicht interessieren.&lt;br /&gt;
&lt;br /&gt;
Die einfache Variante wäre wieder ein Delay. Dieses würde recht schnell zu einem Fehler führen: Ein Delay blockiert. Für MQTT bedeutet es, dass keine Keep-alive Pakete mehr gesendet werden. Hätten wir eingehende Nachrichten, dann würden wir diese auch verpassen.&lt;br /&gt;
Wir merken uns: nutze niemals Delays.&lt;br /&gt;
&lt;br /&gt;
Die oben schon angesprochene Lösung, eine nicht blockierende Methode verwenden, ist sehr gut geeignet.&lt;br /&gt;
&lt;br /&gt;
Wie geht das?&lt;br /&gt;
&lt;br /&gt;
Zunächst zählt der Arduino seine Laufzeit in Millisekunden. Wir schreiben unseren Temperaturausleseteil in eine kleine Schleife.&lt;br /&gt;
* zwei weitere Variablen&lt;br /&gt;
** unsigned long previousMillis = 0; //Zählervariable, zählt Millisekunden seit dem letzten Funktionsaufruf nach oben&lt;br /&gt;
** const long interval = 120000; //120000 Millisekunden aka 120 Sekunden, das Interval wie oft der Sensor überhaupt benutzt wird&lt;br /&gt;
* Drei Zeilen Programmcode mehr:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;arduino&amp;quot;&amp;gt;&lt;br /&gt;
unsigned long currentMillis = millis();&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    &lt;br /&gt;
    h = dht.readHumidity();     //Luftfeuchte auslesen&lt;br /&gt;
    t = dht.readTemperature();  //Temperatur auslesen&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Last Will &amp;amp; Testament ====&lt;br /&gt;
Retten wir auch die Statusmeldungen des Skripts nach MQTT. Dazu ergänzen wir den client.connect Aufruf:&lt;br /&gt;
* if (client.connect(&amp;quot;Arduino_1&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
um folgendes:&lt;br /&gt;
* if (client.connect(&amp;quot;Arduino_1&amp;quot;, &amp;quot;zuHause/Arduino_1&amp;quot;, 0, true, &amp;quot;offline&amp;quot;)) { &lt;br /&gt;
** Arduino_1 nennt sich unser Sensor&lt;br /&gt;
** &amp;quot;zuHause/Arduino_1&amp;quot; ist das Topic für dessen Statusmeldungen&lt;br /&gt;
** 0 ist die QoS&lt;br /&gt;
** true bedeutet, Nachricht retained senden&lt;br /&gt;
** &amp;quot;offline&amp;quot; ist das, was auf dem Topic geschrieben werden soll, wenn die Verbindung abbricht&lt;br /&gt;
** Anmerkung:&lt;br /&gt;
** Unsauberes disconnect wird verursacht durch:&lt;br /&gt;
** Abbruch der Netzwerkverbindung&lt;br /&gt;
** Protokollfehler (z.B. ungültige Topics, fehlerhafte Payload)&lt;br /&gt;
&lt;br /&gt;
Warum machen wir das?&lt;br /&gt;
* beim Start des Sensors steht nun &amp;quot;online&amp;quot; im Status&lt;br /&gt;
* bei einem Sensorfehler werden wir auf den Sensorfehler aufmerksam gemacht &amp;quot;Sensorfehler&amp;quot;&lt;br /&gt;
* bricht die Netzwerkverbindung ab, steht automatisch &amp;quot;offline&amp;quot; in dem Topic&lt;br /&gt;
* bei einer erfolgreichen Messung mit Datenübertragung steht wieder &amp;quot;online&amp;quot; im Topic&lt;br /&gt;
Auf diese Art und Weise haben wir eine aussagekräftige Zustandsmeldung in unserem Topic. Diese können wir bequem mit FHEM überwachen, um bei einem Fehler weitere Maßnahmen einzuleiten. Ein Vergleich des Alters der Sensorwerte wird überflüssig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MQTT an sich ===&lt;br /&gt;
Wer keinen eigenen Broker hat und (für diesen einen Test) keinen aufsetzen will, kann testweise auch einen öffentlichen Broker benutzen: test.mosquitto.org stellt so einen bereit. Bitte beachten, dass dieser Broker wirklich öffentlich ist. Mit &#039;&#039;ping test.mosquitto.org&#039;&#039; bekommt man die IP Adresse, die man, ich möchte es nochmal betonen, zu Testzwecken, in seinen Sketch schreiben kann.&lt;br /&gt;
&lt;br /&gt;
Wir benötigen für MQTT entsprechende Topics.&lt;br /&gt;
* &amp;quot;zuHause/Arduino_1/Kueche/Kuehlschrank/Luftfeuchte&amp;quot;&lt;br /&gt;
* &amp;quot;zuHause/Arduino_1/Kueche/Kuehlschrank/Temperatur&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Daus ergibt sich letztlich folgender Sketch ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;arduino&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;DHT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Ethernet.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PubSubClient.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#define DHTPIN 9     &lt;br /&gt;
#define DHTTYPE DHT22 //DHT11, DHT21, DHT22&lt;br /&gt;
 &lt;br /&gt;
DHT dht(DHTPIN, DHTTYPE);&lt;br /&gt;
&lt;br /&gt;
byte mac[]    = {  0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED }; //eine MAC Adresse wählen, darf im eigenen Netz nur 1x vorkommen&lt;br /&gt;
IPAddress ip(192, 168, 5, 220); //eine gültige IP Adresse für das eigene Netz&lt;br /&gt;
IPAddress server(192, 168, 5, 2); //die Adresse wo der eigene MQTT Broker drauf läuft&lt;br /&gt;
&lt;br /&gt;
void callback(char* topic, byte* payload, unsigned int length) {&lt;br /&gt;
  // handle message arrived&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
EthernetClient ethClient;&lt;br /&gt;
PubSubClient client(ethClient);&lt;br /&gt;
&lt;br /&gt;
long lastReconnectAttempt = 0;&lt;br /&gt;
&lt;br /&gt;
boolean reconnect() {&lt;br /&gt;
  if (client.connect(&amp;quot;Arduino_1&amp;quot;, &amp;quot;zuHause/Arduino_1&amp;quot;, 0, true, &amp;quot;offline&amp;quot;)) {&lt;br /&gt;
    // Once connected, publish an announcement...&lt;br /&gt;
    client.publish(&amp;quot;zuHause/Arduino_1&amp;quot;,&amp;quot;online&amp;quot;, true);&lt;br /&gt;
    // ... and resubscribe&lt;br /&gt;
    client.subscribe(&amp;quot;inTopic&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  return client.connected();&lt;br /&gt;
}&lt;br /&gt;
static char humidity[15]; //Speicherbereich reservieren um die Fechtigkeit zu speichern&lt;br /&gt;
static char temperature[15];&lt;br /&gt;
float h = 0.0;&lt;br /&gt;
float h_alt = 0.0;&lt;br /&gt;
float t = 0.0;&lt;br /&gt;
float t_alt = 0.0;&lt;br /&gt;
unsigned long previousMillis = 0; //Zählervariable, zählt Millisekunden seit dem letzten Funktionsaufruf nach oben&lt;br /&gt;
const long interval = 120000; //120000 Millisekunden aka 120 Sekunden, das Interval wie oft der Sensor überhaupt benutzt wird&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  client.setServer(server, 1883);&lt;br /&gt;
  client.setCallback(callback);&lt;br /&gt;
&lt;br /&gt;
  Ethernet.begin(mac, ip);&lt;br /&gt;
  delay(1500);&lt;br /&gt;
  lastReconnectAttempt = 0;&lt;br /&gt;
  &lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
  Serial.println(&amp;quot;DHT22 - Test!&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
  dht.begin();&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    long now = millis();&lt;br /&gt;
    if (now - lastReconnectAttempt &amp;gt; 5000) {&lt;br /&gt;
      lastReconnectAttempt = now;&lt;br /&gt;
      // Attempt to reconnect&lt;br /&gt;
      if (reconnect()) {&lt;br /&gt;
        lastReconnectAttempt = 0;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    // Client connected&lt;br /&gt;
&lt;br /&gt;
    client.loop();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
unsigned long currentMillis = millis();&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    &lt;br /&gt;
    h = dht.readHumidity();     //Luftfeuchte auslesen&lt;br /&gt;
    t = dht.readTemperature();  //Temperatur auslesen&lt;br /&gt;
  }&lt;br /&gt;
    &lt;br /&gt;
  // Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben.&lt;br /&gt;
  if (isnan(t) || isnan(h)) &lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;DHT22 konnte nicht ausgelesen werden&amp;quot;);&lt;br /&gt;
    client.publish(&amp;quot;zuHause/Arduino_1&amp;quot;,&amp;quot;Sensorfehler&amp;quot;,true); //true sendet die Nachricht retained, d.h. die Nachricht bleibt solange auf dem Broker, bis etwas neues kommt&lt;br /&gt;
  }&lt;br /&gt;
  else if (h == h_alt &amp;amp;&amp;amp; t == t_alt)&lt;br /&gt;
  {&lt;br /&gt;
    //nix machen&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    client.publish(&amp;quot;zuHause/Arduino_1&amp;quot;,&amp;quot;online&amp;quot;, true);&lt;br /&gt;
    dtostrf(h,6, 1, humidity);&lt;br /&gt;
    dtostrf(t,6, 1, temperature);&lt;br /&gt;
    client.publish(&amp;quot;zuHause/Arduino_1/Kueche/Kuehlschrank/Luftfeuchte&amp;quot;,humidity, true);&lt;br /&gt;
    client.publish(&amp;quot;zuHause/Arduino_1/Kueche/Kuehlschrank/Temperatur&amp;quot;,temperature, true);&lt;br /&gt;
    h_alt = h; //den alten Messwert aufheben&lt;br /&gt;
    t_alt = t; //um nur bei Veränderung zu reagieren&lt;br /&gt;
    Serial.print(&amp;quot;Luftfeuchte: &amp;quot;); &lt;br /&gt;
    Serial.print(h);&lt;br /&gt;
    Serial.print(&amp;quot; %\t&amp;quot;);&lt;br /&gt;
    Serial.print(&amp;quot;Temperatur: &amp;quot;); &lt;br /&gt;
    Serial.print(t);&lt;br /&gt;
    Serial.println(&amp;quot; C&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
Um aus einem &amp;quot;normalen&amp;quot; Sketch einen MQTT Sketch zu machen muss man also:&lt;br /&gt;
* Netzwerk konfigurieren&lt;br /&gt;
* MQTT einrichten&lt;br /&gt;
Im wesentlichen kann man einfach den MQTT Beispielsketch &amp;quot;mqtt reconnect nonblocking&amp;quot; in seinen Sketch einbauen.&lt;br /&gt;
&lt;br /&gt;
Geringe Änderungen im vorhandenen Code sind nötig, um diversen Typen von Variablen als MQTT Payload verwenden zu können&lt;br /&gt;
&lt;br /&gt;
Als Bonus bekommen wir &amp;quot;vernünftige&amp;quot; Statuswerte für unseren Sensor, die sich einfach in FHEM abfangen und auswerten lassen. Als weiteren Bonus betrachte ich, dass die Netzwerklast sinkt. Zum Vergleich möchte ich hier die Jeelink Sensoren anführen, aber auch viele 433 MHz Sensoren, die einfach im &amp;quot;wenige Sekunden Takt&amp;quot; ihre Werte in der Gegend rumfunken. Von da her kann durch den Einsatz von MQTT-Techniken die Funkbelastung der Umgebung reduziert werden. Einerseits trägt man also weniger zur &amp;quot;Sensorischen Luftverschmutzung&amp;quot; bei, andererseits entlastet man auch sein FHEM vor der Aufgabe, unnötige Werte erst mal zu verwerfen.&lt;br /&gt;
&lt;br /&gt;
== Danke ==&lt;br /&gt;
Hier möchte ich mal Danke sagen. An Beta-User, der seit Teil 1 das Geschreibsel vorab durchliest und immer wertvolle Tipps und Änderungsvorschläge parat hat.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://fluuux.de/2012/10/arduino-temperatur-und-luftfeuchtigkeit-mit-dem-dht22-prufen/ Originales Projekt]&lt;br /&gt;
&lt;br /&gt;
[[MQTT_Einführung|Teil 1 der MQTT Einführung]]&lt;br /&gt;
&lt;br /&gt;
[[MQTT_Einführung_Teil_2|Teil 2 der MQTT Einführung]]&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,69954.0.html Diskussionsthread im Forum]&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MQTT_Einf%C3%BChrung_Teil_2&amp;diff=21196</id>
		<title>MQTT Einführung Teil 2</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MQTT_Einf%C3%BChrung_Teil_2&amp;diff=21196"/>
		<updated>2017-04-06T17:38:05Z</updated>

		<summary type="html">&lt;p&gt;Jorge3711: /* Vorwort */ Link zu Teil 1 in einen internen Link verwandelt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MQTT Teil 2 =&lt;br /&gt;
Konzepte und best practices&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Wer den Teil 1 noch nicht gelesen hat, ist herzlich eingeladen das vorher noch schnell zu machen :)&lt;br /&gt;
&lt;br /&gt;
[[MQTT_Einführung|Hier ist Teil 1]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel beschreibt, etwas trocken, weiterführend Konzepte und Denkweisen des Übertragungsprotokolls MQTT. Es wird etwas technischer als die Einführung und der ein oder andere Vergleich zu anderen Protokollen wird auch gezogen. Vieles davon kann man auch so nachlesen, wenngleich nicht immer auf deutsch. Ich gehe davon aus, dass der Leser MQTT vornehmlich mit FHEM einsetzen will.&lt;br /&gt;
&lt;br /&gt;
Ein Beispielkurs ist in Planung. Dort werden wir die Konzepte praktisch kennen lernen.&lt;br /&gt;
&lt;br /&gt;
== Retained Messages ==&lt;br /&gt;
=== Szenario ===&lt;br /&gt;
Stellen wir uns vor, wir starten FHEM neu. Wer Homematic Devices kennt weiß, spätestens nach einem Blick ins Logfile, dass nun zunächst ein Statusrequest aller Geräte erfolgt. Schließlich konnte sich zwischen Beenden und Neustart von FHEM etwas geändert haben.&lt;br /&gt;
* Homematic&lt;br /&gt;
* Es wird jedes Gerät angesprochen und abgefragt: &lt;br /&gt;
* &amp;quot;Lieber Lichtschalter, was tust du grade?&amp;quot; &lt;br /&gt;
* &amp;quot;Ich lasse das Licht über dir leuchten mein User.&amp;quot;&lt;br /&gt;
MQTT hat hier ein anderes Konzept. Wenn in ein Topic gepostet wird, kann ein &amp;quot;retained Flag&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Das bedeutet ===&lt;br /&gt;
Die zuletzt gepostete Nachricht wird vom Broker nicht gelöscht. Publishen wir also den Status unseres Lichts:&lt;br /&gt;
* zuHause/1OG/Kueche/Licht/state &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot; + retained flag&lt;br /&gt;
Sobald wir dieses Topic auf einem Gerät subscriben, bekommen wir den Status angezeigt. Ein neu startendes FHEM ist so ein Fall.&lt;br /&gt;
&lt;br /&gt;
Was bei Homematic erst über einen (zugegeben automatisierten Request) abläuft, kann MQTT mit den retained Messages auch so.&lt;br /&gt;
&lt;br /&gt;
Trifft am Broker eine neue retained Message ein, so wird die alte Nachricht gelöscht. Zum absichtlichen Löschen einer retained Message, etwa weil man weiß, dass dieses Topic zukünftig nicht mehr benötigt wird, kann man eine leere Message posten.&lt;br /&gt;
&lt;br /&gt;
=== Fazit ===&lt;br /&gt;
Retained Messages sind gut, um jeweils die letzte aktuelle Statusmeldung zu erhalten. Was damit nicht geht, ist z.B. die letzten 30 Messungen eines Temperatursensors zu speichern und auszuliefern! Sobald eine retained Message überschrieben wird, ist der alte Wert futsch.&lt;br /&gt;
&lt;br /&gt;
== Last Will and Testament (LWT) ==&lt;br /&gt;
=== Szenario ===&lt;br /&gt;
Letzter Wille und Testament. &amp;lt;hr&amp;gt;&lt;br /&gt;
Unser batteriebetriebener Sensor hat keinen Strom mehr, das billige 5V Netzteil stellt seinen Dienst ein, ein netter Nachbar eröffnet ein neues WLAN Netz welches unser Bestehendes gnadenlos stört, unsere süßen kleinen Miezekatzen finden Patchkabel so spannend, dass sie es für erfolgreiche Beißübungen verwenden…&lt;br /&gt;
Gründe für einen Sensorausfall gibt es durchaus.&lt;br /&gt;
Was passiert in FHEM?&lt;br /&gt;
Der letzte Sensorwert bleibt im Reading stehen. Blöd wenn man erst abends feststellt, dass der Kühlschrank offen stand oder der Schaltbefehl zum Heizung einschalten nicht angekommen ist. Ersteres sorgt für aufgetautes Essen, letzteres für kalte Füße.&lt;br /&gt;
Wie fängt man das ab?&lt;br /&gt;
FHEM-seitig könnte man einen Watchdog oder ein DOIF einrichten. Es muss geprüft werden, ob sich das entsprechende Reading in einer bestimmten Zeit verändert hat. &amp;lt;hr&amp;gt;&lt;br /&gt;
Möglich.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Lösung ===&lt;br /&gt;
Der Letzte Wille, das Testament (LWT)&lt;br /&gt;
&lt;br /&gt;
Beim Anmelden an einen Broker kann ein Last Will - Topic angegeben werden. Ebenso eine Payload. Wenn das Gerät verschwindet ohne sich sauber abgemeldet zu haben, wird der Broker die gewünschte Nachricht auf dem hinterlegten Topic publishen. Das retained Flag kann auch gesetzt werden.&lt;br /&gt;
Was bedeutet das für uns?&lt;br /&gt;
&lt;br /&gt;
Zusätzlich zu:&lt;br /&gt;
*zuHause/1_OG/Kueche/Licht/state&lt;br /&gt;
*zuHause/1_OG/Kueche/Licht/set&lt;br /&gt;
&lt;br /&gt;
könnten wir zusätzlich&lt;br /&gt;
* zuHause/1_OG/Kueche/Licht/status&lt;br /&gt;
definieren.&lt;br /&gt;
&lt;br /&gt;
Beim Anmelden an den Broker schicken wir (mit retained flag) ein &amp;quot;online&amp;quot;&lt;br /&gt;
Als LWT geben wir das gleiche Topic an, aber mit &amp;quot;offline&amp;quot; und retained flag. Meldet sich unser Device sauber ab (disconnect), wird das LWT nicht verwendet. Es dient nur dazu, einen Fehler deutlich zu machen.&lt;br /&gt;
&lt;br /&gt;
==== Vorsicht ====&lt;br /&gt;
LWT bezieht sich auf die Client ID. Was das schon wieder?&lt;br /&gt;
Jedes angemeldete Gerät hat eine einzige Client ID, unabhängig davon wie viele Topics es published und subscribed hat.&lt;br /&gt;
LWT auf ein Topic zu beziehen macht wenig Sinn, wenn es mehrere Topics auf dem Gerät gibt. Obiges Beispiel ist also gut, wenn an dem MC genau dieses eine Licht hängt!&lt;br /&gt;
* zuHause/1OG/Arduino_1&lt;br /&gt;
Ist der bessere Weg! Jetzt können wir in FHEM auf online / offline reagieren und den davon abhängigen Geräten eine Fehlerbehandlung spendieren. Da ist unser DOIF wieder :)&lt;br /&gt;
&lt;br /&gt;
==== Noch eine Falle ====&lt;br /&gt;
Wer denkt, er wirft alle Geräte in ein einziges retained last will Topic, sieht immer nur die letzte Meldung!&lt;br /&gt;
&lt;br /&gt;
Böse:&lt;br /&gt;
&lt;br /&gt;
zuHause/MQTT/Status (&amp;lt;= nicht nachmachen)&lt;br /&gt;
&lt;br /&gt;
=== Fazit ===&lt;br /&gt;
MQTT kann einen eleganten Weg bieten, über das Ende eines Gerätes zu informieren. Genau wie bei Homematic aber auch, muss man diese Meldungen auswerten um was sinnvolles damit anzufangen!&lt;br /&gt;
Im Fall eines einfachen Sensors ist es recht easy, bei einem Arduino Mega mit 30 Sensoren wird es dann aufwendig (außer man liest weiter bei den Filtern)&lt;br /&gt;
&lt;br /&gt;
== Organisation der Topics ==&lt;br /&gt;
=== Basics, erlaubte Zeichen ===&lt;br /&gt;
MQTT erlaubt prinzipiell den kompletten UTF8 Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Außer:&lt;br /&gt;
* U+0001..U+001F control characters&lt;br /&gt;
* U+007F..U+009F control characters&lt;br /&gt;
&lt;br /&gt;
Theoretisch gehen also Umlaute, Leerzeichen etc. Praktisch kann es passieren, dass ein Endgerät mit Umlauten einfach nix anfangen kann. Leerzeichen sind auch ein Problem, weil UTF 8 davon doch recht viele Möglichkeiten bietet. Ich würde daher empfehlen, Topicbezeichnungen eher wie Gerätenamen in FHEM zu betrachten: Unterstriche statt Leerzeichen, Umlaute ausschreiben (=&amp;gt; ü =&amp;gt; ue...)&lt;br /&gt;
&lt;br /&gt;
Groß- und Kleinschreibung muss beachtet werden. Ein Topic muss mindestens ein Zeichen haben, um gültig zu sein. Oh, und $ gehen auch gar nicht. Die verwendet der Broker nämlich für Interna...&lt;br /&gt;
&lt;br /&gt;
Schlechtes Beispiel:&lt;br /&gt;
* /zuHause/&lt;br /&gt;
* nicht ganz falsch, aber der / am Anfang ist nur zusätzlicher Overhead, daher weglassen&lt;br /&gt;
&lt;br /&gt;
Wirklich falsch:&lt;br /&gt;
* zuHause//1_OG&lt;br /&gt;
* Hier wird ein leeres Topic definiert. Das ist ungültig.&lt;br /&gt;
&lt;br /&gt;
=== Basics, Strukturierung ===&lt;br /&gt;
MQTT kennt publishen und subscriben.&lt;br /&gt;
&lt;br /&gt;
FHEM kennt für jedes Gerät einen &amp;quot;state&amp;quot; und ein &amp;quot;set&amp;quot; Kommando. Das ist bei MQTT nicht nötig, aber durchaus sehr sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Nehmen wir wieder unseren Lichtschalter: Ein Taster an einem Arduino mit einem Relais nebst Lampe daran.&lt;br /&gt;
&lt;br /&gt;
Unglücklich:&lt;br /&gt;
* zuHause/1_OG/Kueche/Lichtschalter&lt;br /&gt;
Wenn da ein &amp;quot;on&amp;quot; steht, woher will man wissen ob es sich um einen Befehl oder um eine Statusmeldung handelt? Daher bauen wir die FHEM übliche Logik einfach nach:&lt;br /&gt;
&lt;br /&gt;
Etwas glücklicher (kann man machen, man kann es aber schwer filtern)&lt;br /&gt;
* zuHause/1_OG/Kueche/Lichtschalter/set&lt;br /&gt;
* zuHause/1_OG/Kueche/Lichtschalter/state&lt;br /&gt;
&lt;br /&gt;
Richtig schlau (warum, kommt bei den Filtern)&lt;br /&gt;
* set/zuHause/1_OG/Kueche/Lichtschalter&lt;br /&gt;
* state/zuHause/1_OG/Kueche/Lichtschalter/state&lt;br /&gt;
&lt;br /&gt;
Jetzt wird es einfach:&lt;br /&gt;
&lt;br /&gt;
auf dem set-Topic publishen wir immer Schaltbefehle. Mit oder ohne retained flag, darüber kann man streiten. Unser Arduino muss also dieses Topic abhören und auswerten.&lt;br /&gt;
&lt;br /&gt;
Das state-Topic nehmen wir um darauf zu publishen (hier ist retained einfeutig praktisch), wie der Zustand unserer Lampe gerade ist. Unser Arduino muss dieses Topic nur schreiben, niemals selber lesen.&lt;br /&gt;
&lt;br /&gt;
Damit haben wir eine saubere Trennung von Befehl und Status erreicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufbau eines Topics ===&lt;br /&gt;
Wie bereits geschrieben, kann man die Topics recht frei einfach selbst erfinden. Sinnvoll ist es jedoch, jedem gewünschten Wert ein eigenes Topic zu spendieren.&lt;br /&gt;
&lt;br /&gt;
Ungünstig:&lt;br /&gt;
* zuHause/state/1_OG/Kueche &lt;br /&gt;
* =&amp;gt; In diesem Topic Licht, Temperatur, Luftfeuchte, Bewegungsmelder etc zu publishen ist eine nicht schlaue Idee; das Problem beginnt damit, dass man erst mal selber rausfinden muss, welchen Wert man gerade hat. Viel Programmcode für quasi umsonst; &amp;quot;on 20.3 66 motion&amp;quot; ist nun nicht wirklich toll.&lt;br /&gt;
&lt;br /&gt;
Besser:&lt;br /&gt;
* zuHause/state/1_OG/Kueche/Licht &lt;br /&gt;
* zuHause/state/1_OG/Kueche/Raumtemperatur &lt;br /&gt;
* zuHause/state/1_OG/Kueche/Luftfeuchte&lt;br /&gt;
* zuHause/state/1_OG/Kueche/Bewegungsmelder&lt;br /&gt;
=&amp;gt; Auf diese Weise weiß man vorher, welche (Zahlen)werte in einem Topic stehen und was sie bedeuten. Das hat man automatisch durch die geschickte Topic Wahl festgelegt.&lt;br /&gt;
&lt;br /&gt;
=== Filter ===&lt;br /&gt;
Eine witzige Sache von MQTT sind Filter. Das ist in etwa wie in FHEM eine readingsGroup für Arme. Wir möchten schnell einen Überblick haben, welchen Status bestimmte Devices haben.&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten von Filtern:&lt;br /&gt;
* Single Level Filter: +&lt;br /&gt;
* Multi Level Filter: #&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
* zuHause/state/1_OG/Kueche/Temperatur&lt;br /&gt;
* zuHause/state/1_OG/Kueche/Kuehlschrank/Temperatur&lt;br /&gt;
* zuHause/state/1_OG/Kueche/Licht&lt;br /&gt;
* zuHause/state/1_OG/Wohnzimmer/Licht&lt;br /&gt;
* zuHause/state/1_OG/Schlafzimmer/Licht&lt;br /&gt;
&lt;br /&gt;
Jetzt filtern wir:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;#&amp;quot; =&amp;gt; muss immer der letzte Filter sein (es gibt Broker, die die # auch als Platzhalter innerhalb eines Topics erlauben, aber Standard ist das nicht)&lt;br /&gt;
&lt;br /&gt;
* zuHause/state/# =&amp;gt; gibt uns alle oben genannten Beispiel-Topics zurück&lt;br /&gt;
* zuHause/state/1_OG/+/Licht =&amp;gt; gibt uns das Licht der Küche, des Wohn- und des Schlafzimmers&lt;br /&gt;
* zuHause/state/1_OG/+/Temperatur =&amp;gt; gibt nur die Küchentemperatur (+ steht für genau 1 Topic, der Kühlschrank fällt also nicht in das Muster)&lt;br /&gt;
&lt;br /&gt;
=== Diskussionspunkt, Devicenamen ===&lt;br /&gt;
Manchmal liest man auch den Tip, eine eindeutige Gerätebezeichnung in das Topic mit aufzunehmen.&lt;br /&gt;
* Arduino_1/state/Zimmer_1/Licht&lt;br /&gt;
* Arduino_1/state/Zimmer_1/Temperatur&lt;br /&gt;
* Arduino_1/state/Zimmer_2/Licht&lt;br /&gt;
* Arduino_2/state/Zimmer_3/Licht&lt;br /&gt;
&lt;br /&gt;
Hat im wesentlichen folgenden Vorteil:&lt;br /&gt;
&lt;br /&gt;
Wenn ich mir nur ansehen will, was ein bestimmter Mikrocontroller published, kann ich ihn sehr einfach filtern.&lt;br /&gt;
* Arduino_1/# =&amp;gt; perfekt um alle Werte des Arduino_1 zu lesen und sonst nichts&lt;br /&gt;
&lt;br /&gt;
Nachteilig:&lt;br /&gt;
&lt;br /&gt;
Tauscht man später den Controller aus, muss man ihn wieder so nennen. Fasst man später Arduino_1 und Arduino_2 auf einem Arduino Mega zusammen, stimmen die Topics schlicht nicht mehr und man muss seine ganzen Devicenamen anpassen.&lt;br /&gt;
&lt;br /&gt;
== Der Artikel hast &amp;quot;Best Practices&amp;quot; versprochen - wo sind sie? ==&lt;br /&gt;
Schwierig. Was die Benennung der Topics betrifft, so vom Zeichensatz her, gibt es Regeln und best practices, die stehen oben.&lt;br /&gt;
&lt;br /&gt;
Ob man jetzt eindeutige Gerätenamen vorne weg schreibt, oder ob man state und set weiter vorne im Topic Tree unterbringt oder hinten, ich fürchte da gibt es keine allgemein gültigen Regeln. MQTT lässt einem hier alle Freiheiten.&lt;br /&gt;
&lt;br /&gt;
Das eine sieht eher nach FHEM aus (set und state am Ende), das andere lässt sich besser filtern.&lt;br /&gt;
Hardcoreuser könnten auch auf die Idee kommen, einfach beide Varianten gleichzeitig zu nutzen. Für FHEM alleine ist das sicherlich nicht hilfreich (aber auch nicht störend).&lt;br /&gt;
&lt;br /&gt;
== Schlusswort ==&lt;br /&gt;
Hier endet vorübergehend unser kleiner Exkurs zu MQTT.&lt;br /&gt;
&lt;br /&gt;
Wer Fragen der Anregungen hat, bitte im [https://forum.fhem.de/index.php/topic,69701.0.html Diskussionsthread dieses Artikels] stellen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin haben wir ganz neu [https://forum.fhem.de/index.php/board,94.0.html einen eigenen Forumsbereich für MQTT].&lt;br /&gt;
&lt;br /&gt;
Je nachdem wie gut die Artikelserie ankommt, werde ich einen Teil 3 auflegen. Dieser ist dann zum &amp;quot;get your hands dirty&amp;quot;, zum Hände dreckig machen. Darin könnte ein kleiner Programmierkurs in der Arduino IDE kommen. Mir schwebt vor, einen kleinen Sketch zu nehmen, diesen mit MQTT auszurüsten und nach und nach die Dinge wie LWT, retained messages etc. einzubauen. Das ist im wesentlichen mit wenigen Änderungen möglich. Also durchaus anfängertauglich. &lt;br /&gt;
&lt;br /&gt;
Ich werde einen Arduino Uno oder Mega nehmen, sowie ein Ethernetshield mit W5100 Chip benutzen. Die Dinger kosten keine 6 € auf eBay. Die ENC28J60 (oder ähnliche) Chips werden explizit NICHT unterstützt werden! Wer lieber einen ESP8266 nimmt, der sei an dieser Stelle auf das Template von Pf@nne verwiesen [https://forum.fhem.de/index.php/topic,50238.0.html hier zu finden].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Jorge3711</name></author>
	</entry>
</feed>