<?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=Markus1407</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=Markus1407"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Markus1407"/>
	<updated>2026-04-13T10:11:27Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=UserReadings&amp;diff=38210</id>
		<title>UserReadings</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=UserReadings&amp;diff=38210"/>
		<updated>2023-03-19T19:25:26Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Trigger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:userReadings}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über das Attribut [[userReadings]] können bei einem Device benutzerdefinierte [[reading|readings]] einschließlich der Anweisungen zum Befüllen derselben festgelegt werden. Das können zum Einen Formatänderungen (&amp;quot;sprintf&amp;quot;), oder aber auch durch die &#039;&#039;Modifier&#039;&#039;&lt;br /&gt;
* difference&lt;br /&gt;
* differential&lt;br /&gt;
* integral&lt;br /&gt;
* offset&lt;br /&gt;
* monotonic&lt;br /&gt;
gesteuerte Berechnungen sein.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=&#039;&#039;&#039;Geändertes Verhalten - bitte beachten&#039;&#039;&#039;&lt;br /&gt;
Im April 2016 hat sich die Verarbeitung des &#039;&#039;Triggers&#039;&#039; dahingehend geändert, dass die Trigger-Spezifikation jetzt als [[Regulärer Ausdruck]] interpretiert wird, damit also z.B. ein &amp;lt;code&amp;gt;avgTemp:temperature&amp;lt;/code&amp;gt; geändert werden muss in &amp;lt;code&amp;gt;avgTemp:temperature.*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Technische Details dazu wurden in {{Link2Forum|Topic=52165|LinkText=diesem Forenthread}} diskutiert.}}&lt;br /&gt;
Siehe {{Link2CmdRef|Anker=readingFnAttributes}}.&lt;br /&gt;
&lt;br /&gt;
* Bei Eingabe im Editor-Feld müssen mehrere Befehle mit einem &amp;quot;;&amp;quot; getrennt werden, bei Änderung in der Eingabezeile sind zwei &amp;quot;;&amp;quot; notwendig.&lt;br /&gt;
* Die Variable, dessen Wert man im Reading haben möchte, kann man einfach ans Ende stellen[https://perldoc.perl.org/functions/return.html]&lt;br /&gt;
* mehrere UserReadings werden durch Komma getrennt.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;myreading {my $v = ReadingsVal($name,&amp;quot;actuation&amp;quot;,&amp;quot;error&amp;quot;)+62; fhem(&amp;quot;set PID desired $v&amp;quot;); $v},&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;myreading2 {my $v = ReadingsVal($name,&amp;quot;actuation&amp;quot;,&amp;quot;error&amp;quot;)+62; fhem(&amp;quot;set PID2 desired $v&amp;quot;); $v}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Die nachfolgenden Beispiele sind ohne Trigger notiert. In der Regel sollte jedoch geprüft werden, ob nicht ein solcher Trigger gesetzt werden kann. Dies ist insbesondere in den Fällen sinnvoll, in denen in einem Gerät sehr viele Readings vorhanden sind, die ggf. zu unterschiedlichen Zeitpunkten aktualisiert werden. Das erste Beispiel wäre daher besser so zu schreiben:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;attr ElbePegelSchoena userReadings Pegel:value.* { ReadingsVal(&amp;quot;ElbePegelSchoena&amp;quot;,&amp;quot;value&amp;quot;,0) }&amp;lt;/code&amp;gt; }}&lt;br /&gt;
==== Ein Reading soll einen anderen Namen bekommen ====&lt;br /&gt;
Das vorhandene Reading &amp;quot;value&amp;quot; des Devices &amp;quot;ElbePegelSchoena&amp;quot; soll künftig in &amp;quot;Pegel&amp;quot; umbenannt werden. Das geht nicht. Man kann aber ein neues Reading &amp;quot;Pegel&amp;quot; mit genau gleichem Wert erzeugen: &lt;br /&gt;
:&amp;lt;code&amp;gt;attr ElbePegelSchoena userReadings Pegel { ReadingsVal(&amp;quot;ElbePegelSchoena&amp;quot;,&amp;quot;value&amp;quot;,0) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe eines Homematic 3-State Fenstersensor als Zahl für Visualisierung mit Icons ====&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr HM_XXXXXX userReadings Statenum {if(ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;closed&amp;quot;) {return 0} elsif (ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;tilted&amp;quot;) {return 1} elsif (ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;open&amp;quot;) {return 2} else {return -1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe als Moving Average und Formatierung mit sprintf ====&lt;br /&gt;
:&amp;lt;code&amp;gt;attr HZ_EINSTRAHLUNG_RAW userReadings Einstr_Mean.av {sprintf(&amp;quot;%.1f&amp;quot;,movingAverage(&amp;quot;HZ_EINSTRAHLUNG_RAW&amp;quot;,&amp;quot;reading&amp;quot;,1200))}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Umrechnung der Temperatur (durch 10 geteilt) und Einheit [°C] angehängt ====&lt;br /&gt;
:&amp;lt;code&amp;gt;attr HZ_EINSTRAHLUNG_T userReadings SolarTemp {ReadingsVal(&amp;quot;HZ_EINSTRAHLUNG_T&amp;quot;,&amp;quot;reading&amp;quot;,0)/10  .&amp;quot; °C&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batterieüberwachung durch Erweiterung mit notify und userReading ====&lt;br /&gt;
... ist im Detail auf der Seite [[Batterieüberwachung]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
==== Integralfunktion - integral ====&lt;br /&gt;
Die Verwendung der Integralfunktion bei &#039;&#039;userReadings&#039;&#039; ist ausführlich im Forenbeitrag {{Link2Forum|Topic=26300|Message=193084|LinkText=Integralfunktion bei UserReadings}} erklärt.&lt;br /&gt;
&lt;br /&gt;
==== Trigger ====&lt;br /&gt;
Die Trigger-Regex muss ein Event matchen inklusive Wert. Hier soll &#039;&#039;countTotalSum&#039;&#039; um den Wert im Reading &#039;&#039;count&#039;&#039; erhöht werden, natürlich nur wenn ein Event für das Reading &#039;&#039;count&#039;&#039; eintrifft, damit der Wert nur einmal hinzu addiert wird. (Alle anderen Events werden ignoriert.) Hier ist auf das Wortende zu achten &amp;quot;&#039;&#039;&#039;\b&#039;&#039;&#039;&amp;quot; in der Regex, damit z.B. Events für &#039;&#039;count1&#039;&#039;, &#039;&#039;count2&#039;&#039;, ... keinen Trigger auslösen. (Hinweis: Beim bilden der Summe kann die Benutzung von event-on-change-reading zu falschen Ergebnissen führen.) &lt;br /&gt;
:&amp;lt;code&amp;gt;attr GasPulseCounter userReadings countTotalSum:count\b.* {my $val=ReadingsVal($name,&amp;quot;countTotalSum&amp;quot;,0)+ReadingsVal($name,&amp;quot;count&amp;quot;,0);;$val}&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier werden einfach die Anzahl der Events für &#039;&#039;count&#039;&#039; gezählt. Events für Readingnamen, welche ledichglich mit &#039;&#039;count&#039;&#039; beginnen werden ignoriert, wegen &amp;quot;\b&amp;quot;.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr GasPulseCounter userReadings inc:count\b.* {my $val=ReadingsVal($name,&amp;quot;inc&amp;quot;,0)+1;;$val}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann der Trigger auf einen bestimmten Value beschränkt werden. Hier wird jedes auftreten des Wertes &amp;quot;5&amp;quot; gezählt.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr GasPulseCounter userReadings inc:count:.5 {my $val=ReadingsVal($name,&amp;quot;inc&amp;quot;,0)+1;;$val}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2CmdRef|Lang=de|Anker=userReadings}} - userReadings&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Attribut (allgemeingültig)]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Save&amp;diff=38209</id>
		<title>Save</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Save&amp;diff=38209"/>
		<updated>2023-03-19T15:20:49Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Speichert Konfigurationsänderungen&lt;br /&gt;
|ModType=cmd&lt;br /&gt;
|ModCmdRef=save&lt;br /&gt;
|ModTechName=fhem.pl&lt;br /&gt;
|ModOwner=rudolfkoenig/Rudolfkoenig ({{Link2FU|8|Forum}}/[[Benutzer Diskussion:Rudolfkoenig|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Der Befehl [[save]] gehört zu den FHEM-eigenen Befehlen. Mit ihm werden Änderungen der [[Konfiguration]] dauerhaft gespeichert.&lt;br /&gt;
&lt;br /&gt;
Auch das Anklicken der Schaltfläche &#039;&#039;&#039;&#039;&#039;Save config&#039;&#039;&#039;&#039;&#039; (siehe [[Konfiguration#Bearbeitung der Konfiguration|Beispielabbildung]]) resultiert in der Ausführung dieses Befehls.&lt;br /&gt;
&lt;br /&gt;
=== Config-file (Speichern der Konfiguration) ===&lt;br /&gt;
Im config-file wird die Konfiguration der Objekte gespeichert. Hierfür sollte folgendes Attribut angelegt sein:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;attr global configfile fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Protokollierung von Konfigurationsänderungen ====&lt;br /&gt;
Um Konfigurationsänderungen, die über das [[FHEMWEB|Webinterface]] gemacht wurden, zu protokollieren, kann mit (z.B.) dem folgenden Befehl eine spezielle [[FileLog|Logdatei]] angelegt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define myConfigLog FileLog ./log/configChangeHistory.log global:(MODIFIED|DEFINED|ATTR|RENAMED|DELETED).*&amp;lt;/code&amp;gt;&lt;br /&gt;
Wie bei Log Dateien üblich bestimmt der angegebene [[Regulärer Ausdruck|Reguläre Ausdruck]] den Umfang der Protokollierung, im gegebenen Beispiel würden also Neudefinitionen, Löschungen, Umbenennungen und Attributänderungen protokolliert. &lt;br /&gt;
&lt;br /&gt;
Um einen Block von Änderungen in der Logdatei zu kommentieren, kann beispielsweise das [[Attribut]] &amp;quot;comment&amp;quot; des betreffenden Geräts angelegt bzw. geändert werden.&lt;br /&gt;
&lt;br /&gt;
=== State-file (Speichern der Zustände) ===&lt;br /&gt;
https://fhem.de/commandref_DE.html#statefile &lt;br /&gt;
&lt;br /&gt;
Die internen Zustände (Readings) werden im statefile gespeichert. Voraussetzung ist die Definition des Attributes &lt;br /&gt;
:&amp;lt;code&amp;gt;attr global statefile ./fhem.save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Periodisches Speichern des Statefiles ====&lt;br /&gt;
Beispiel: &lt;br /&gt;
Statefile alle 15 Minuten speichern. (nicht die Konfiguration). Somit bleiben interne Zustände erhalten, wenn fhem nicht sauber beendet wird, z.B. beim Ausschalten des Systems (Raspberry Pi).&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;defmod saveStateFile at +*00:15:00 {WriteStatefile()}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe auch: https://forum.fhem.de/index.php?topic=71699.0&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Forenthema zur {{Link2Forum|Topic=112517|LinkText=Protokollierung von Konfigurationsänderungen}}&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Save&amp;diff=38208</id>
		<title>Save</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Save&amp;diff=38208"/>
		<updated>2023-03-19T15:18:48Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Speichert Konfigurationsänderungen&lt;br /&gt;
|ModType=cmd&lt;br /&gt;
|ModCmdRef=save&lt;br /&gt;
|ModTechName=fhem.pl&lt;br /&gt;
|ModOwner=rudolfkoenig/Rudolfkoenig ({{Link2FU|8|Forum}}/[[Benutzer Diskussion:Rudolfkoenig|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Der Befehl [[save]] gehört zu den FHEM-eigenen Befehlen. Mit ihm werden Änderungen der [[Konfiguration]] dauerhaft gespeichert.&lt;br /&gt;
&lt;br /&gt;
Auch das Anklicken der Schaltfläche &#039;&#039;&#039;&#039;&#039;Save config&#039;&#039;&#039;&#039;&#039; (siehe [[Konfiguration#Bearbeitung der Konfiguration|Beispielabbildung]]) resultiert in der Ausführung dieses Befehls.&lt;br /&gt;
&lt;br /&gt;
=== Config-file (Speichern der Konfiguration) ===&lt;br /&gt;
Im config-file wird die Konfiguration der Objekte gespeichert. Hierfür sollte folgendes Attribut angelegt sein:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;attr global configfile fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Protokollierung von Konfigurationsänderungen ====&lt;br /&gt;
Um Konfigurationsänderungen, die über das [[FHEMWEB|Webinterface]] gemacht wurden, zu protokollieren, kann mit (z.B.) dem folgenden Befehl eine spezielle [[FileLog|Logdatei]] angelegt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define myConfigLog FileLog ./log/configChangeHistory.log global:(MODIFIED|DEFINED|ATTR|RENAMED|DELETED).*&amp;lt;/code&amp;gt;&lt;br /&gt;
Wie bei Log Dateien üblich bestimmt der angegebene [[Regulärer Ausdruck|Reguläre Ausdruck]] den Umfang der Protokollierung, im gegebenen Beispiel würden also Neudefinitionen, Löschungen, Umbenennungen und Attributänderungen protokolliert. &lt;br /&gt;
&lt;br /&gt;
Um einen Block von Änderungen in der Logdatei zu kommentieren, kann beispielsweise das [[Attribut]] &amp;quot;comment&amp;quot; des betreffenden Geräts angelegt bzw. geändert werden.&lt;br /&gt;
&lt;br /&gt;
=== State-file (Speichern der Zustände) ===&lt;br /&gt;
https://fhem.de/commandref_DE.html#statefile &lt;br /&gt;
&lt;br /&gt;
Die internen Zustände (Readings) werden im statefile gespeichert. Voraussetzung ist die Definition des Attributes &lt;br /&gt;
:&amp;lt;code&amp;gt;attr global statefile ./fhem.save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Periodisches Speichern des Statefiles ====&lt;br /&gt;
Beispiel: &lt;br /&gt;
Statefile alle 15 Minuten speichern. (nicht die Konfiguration). Somit bleiben interne Zustände erhalten, wenn fhem nicht sauber beendet wird, z.B. beim Ausschalten des Systems (Raspberry Pi).&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;defmod saveStateFile at +*00:15:00 {WriteStatefile()}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Forenthema zur {{Link2Forum|Topic=112517|LinkText=Protokollierung von Konfigurationsänderungen}}&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Save&amp;diff=38207</id>
		<title>Save</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Save&amp;diff=38207"/>
		<updated>2023-03-19T14:58:43Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: Statefile hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Speichert Konfigurationsänderungen&lt;br /&gt;
|ModType=cmd&lt;br /&gt;
|ModCmdRef=save&lt;br /&gt;
|ModTechName=fhem.pl&lt;br /&gt;
|ModOwner=rudolfkoenig/Rudolfkoenig ({{Link2FU|8|Forum}}/[[Benutzer Diskussion:Rudolfkoenig|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Der Befehl [[save]] gehört zu den FHEM-eigenen Befehlen. Mit ihm werden Änderungen der [[Konfiguration]] dauerhaft gespeichert.&lt;br /&gt;
&lt;br /&gt;
Auch das Anklicken der Schaltfläche &#039;&#039;&#039;&#039;&#039;Save config&#039;&#039;&#039;&#039;&#039; (siehe [[Konfiguration#Bearbeitung der Konfiguration|Beispielabbildung]]) resultiert in der Ausführung dieses Befehls.&lt;br /&gt;
&lt;br /&gt;
== Protokollierung von Konfigurationsänderungen ==&lt;br /&gt;
Um Konfigurationsänderungen, die über das [[FHEMWEB|Webinterface]] gemacht wurden, zu protokollieren, kann mit (z.B.) dem folgenden Befehl eine spezielle [[FileLog|Logdatei]] angelegt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define myConfigLog FileLog ./log/configChangeHistory.log global:(MODIFIED|DEFINED|ATTR|RENAMED|DELETED).*&amp;lt;/code&amp;gt;&lt;br /&gt;
Wie bei Log Dateien üblich bestimmt der angegebene [[Regulärer Ausdruck|Reguläre Ausdruck]] den Umfang der Protokollierung, im gegebenen Beispiel würden also Neudefinitionen, Löschungen, Umbenennungen und Attributänderungen protokolliert. &lt;br /&gt;
&lt;br /&gt;
Um einen Block von Änderungen in der Logdatei zu kommentieren, kann beispielsweise das [[Attribut]] &amp;quot;comment&amp;quot; des betreffenden Geräts angelegt bzw. geändert werden.&lt;br /&gt;
&lt;br /&gt;
== Statefile (Speichern der Zustände) ==&lt;br /&gt;
https://fhem.de/commandref_DE.html#statefile &lt;br /&gt;
&lt;br /&gt;
Die internen Zustände (Readings) werden im statefile gespeichert. Voraussetzung ist die Definition des Attributes &lt;br /&gt;
:&amp;lt;code&amp;gt;attr global statefile ./fhem.save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Periodisches Speichern des Statefiles ==&lt;br /&gt;
Beispiel: Statefile alle 15 Minuten speichern. (nicht die Konfiguration)&lt;br /&gt;
:&amp;lt;code&amp;gt;defmod saveStateFile at +*00:15:00 {WriteStatefile()}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Forenthema zur {{Link2Forum|Topic=112517|LinkText=Protokollierung von Konfigurationsänderungen}}&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=UserReadings&amp;diff=38206</id>
		<title>UserReadings</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=UserReadings&amp;diff=38206"/>
		<updated>2023-03-17T12:54:01Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Trigger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:userReadings}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über das Attribut [[userReadings]] können bei einem Device benutzerdefinierte [[reading|readings]] einschließlich der Anweisungen zum Befüllen derselben festgelegt werden. Das können zum Einen Formatänderungen (&amp;quot;sprintf&amp;quot;), oder aber auch durch die &#039;&#039;Modifier&#039;&#039;&lt;br /&gt;
* difference&lt;br /&gt;
* differential&lt;br /&gt;
* integral&lt;br /&gt;
* offset&lt;br /&gt;
* monotonic&lt;br /&gt;
gesteuerte Berechnungen sein.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=&#039;&#039;&#039;Geändertes Verhalten - bitte beachten&#039;&#039;&#039;&lt;br /&gt;
Im April 2016 hat sich die Verarbeitung des &#039;&#039;Triggers&#039;&#039; dahingehend geändert, dass die Trigger-Spezifikation jetzt als [[Regulärer Ausdruck]] interpretiert wird, damit also z.B. ein &amp;lt;code&amp;gt;avgTemp:temperature&amp;lt;/code&amp;gt; geändert werden muss in &amp;lt;code&amp;gt;avgTemp:temperature.*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Technische Details dazu wurden in {{Link2Forum|Topic=52165|LinkText=diesem Forenthread}} diskutiert.}}&lt;br /&gt;
Siehe {{Link2CmdRef|Anker=readingFnAttributes}}.&lt;br /&gt;
&lt;br /&gt;
* Bei Eingabe im Editor-Feld müssen mehrere Befehle mit einem &amp;quot;;&amp;quot; getrennt werden, bei Änderung in der Eingabezeile sind zwei &amp;quot;;&amp;quot; notwendig.&lt;br /&gt;
* Die Variable, dessen Wert man im Reading haben möchte, kann man einfach ans Ende stellen[https://perldoc.perl.org/functions/return.html]&lt;br /&gt;
* mehrere UserReadings werden durch Komma getrennt.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;myreading {my $v = ReadingsVal($name,&amp;quot;actuation&amp;quot;,&amp;quot;error&amp;quot;)+62; fhem(&amp;quot;set PID desired $v&amp;quot;); $v},&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;myreading2 {my $v = ReadingsVal($name,&amp;quot;actuation&amp;quot;,&amp;quot;error&amp;quot;)+62; fhem(&amp;quot;set PID2 desired $v&amp;quot;); $v}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Die nachfolgenden Beispiele sind ohne Trigger notiert. In der Regel sollte jedoch geprüft werden, ob nicht ein solcher Trigger gesetzt werden kann. Dies ist insbesondere in den Fällen sinnvoll, in denen in einem Gerät sehr viele Readings vorhanden sind, die ggf. zu unterschiedlichen Zeitpunkten aktualisiert werden. Das erste Beispiel wäre daher besser so zu schreiben:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;attr ElbePegelSchoena userReadings Pegel:value.* { ReadingsVal(&amp;quot;ElbePegelSchoena&amp;quot;,&amp;quot;value&amp;quot;,0) }&amp;lt;/code&amp;gt; }}&lt;br /&gt;
==== Ein Reading soll einen anderen Namen bekommen ====&lt;br /&gt;
Das vorhandene Reading &amp;quot;value&amp;quot; des Devices &amp;quot;ElbePegelSchoena&amp;quot; soll künftig in &amp;quot;Pegel&amp;quot; umbenannt werden. Das geht nicht. Man kann aber ein neues Reading &amp;quot;Pegel&amp;quot; mit genau gleichem Wert erzeugen: &lt;br /&gt;
:&amp;lt;code&amp;gt;attr ElbePegelSchoena userReadings Pegel { ReadingsVal(&amp;quot;ElbePegelSchoena&amp;quot;,&amp;quot;value&amp;quot;,0) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe eines Homematic 3-State Fenstersensor als Zahl für Visualisierung mit Icons ====&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr HM_XXXXXX userReadings Statenum {if(ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;closed&amp;quot;) {return 0} elsif (ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;tilted&amp;quot;) {return 1} elsif (ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;open&amp;quot;) {return 2} else {return -1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe als Moving Average und Formatierung mit sprintf ====&lt;br /&gt;
:&amp;lt;code&amp;gt;attr HZ_EINSTRAHLUNG_RAW userReadings Einstr_Mean.av {sprintf(&amp;quot;%.1f&amp;quot;,movingAverage(&amp;quot;HZ_EINSTRAHLUNG_RAW&amp;quot;,&amp;quot;reading&amp;quot;,1200))}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Umrechnung der Temperatur (durch 10 geteilt) und Einheit [°C] angehängt ====&lt;br /&gt;
:&amp;lt;code&amp;gt;attr HZ_EINSTRAHLUNG_T userReadings SolarTemp {ReadingsVal(&amp;quot;HZ_EINSTRAHLUNG_T&amp;quot;,&amp;quot;reading&amp;quot;,0)/10  .&amp;quot; °C&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batterieüberwachung durch Erweiterung mit notify und userReading ====&lt;br /&gt;
... ist im Detail auf der Seite [[Batterieüberwachung]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
==== Integralfunktion - integral ====&lt;br /&gt;
Die Verwendung der Integralfunktion bei &#039;&#039;userReadings&#039;&#039; ist ausführlich im Forenbeitrag {{Link2Forum|Topic=26300|Message=193084|LinkText=Integralfunktion bei UserReadings}} erklärt.&lt;br /&gt;
&lt;br /&gt;
==== Trigger ====&lt;br /&gt;
Die Trigger-Regex muss ein Event matchen inklusive Wert. Hier soll &#039;&#039;countTotalSum&#039;&#039; um den Wert im Reading &#039;&#039;count&#039;&#039; erhöht werden, natürlich nur wenn ein Event für das Reading &#039;&#039;count&#039;&#039; eintrifft, damit der Wert nur einmal hinzu addiert wird. (Alle anderen Events werden ignoriert.) Hier ist auf das Wortende zu achten &amp;quot;&#039;&#039;&#039;\b&#039;&#039;&#039;&amp;quot; in der Regex, damit z.B. Events für &#039;&#039;count1&#039;&#039;, &#039;&#039;count2&#039;&#039;, ... keinen Trigger auslösen. (Hinweis: Beim bilden der Summe kann die Benutzung von event-on-change-reading zu falschen Ergebnissen führen.) &lt;br /&gt;
:&amp;lt;code&amp;gt;attr GasPulseCounter userReadings countTotalSum:count\b.* {my $val=ReadingsVal($name,&amp;quot;countTotalSum&amp;quot;,0)+ReadingsVal($name,&amp;quot;count&amp;quot;,0);;$val}&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Hier werden einfach die Anzahl der Events für &#039;&#039;count&#039;&#039; gezählt. Events für Readingnamen, welche ledichglich mit &#039;&#039;count&#039;&#039; beginnen werden ignoriert, wegen &amp;quot;\b&amp;quot;.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr GasPulseCounter userReadings inc:count\b.* {my $val=ReadingsVal($name,&amp;quot;inc&amp;quot;,0)+1;;$val}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2CmdRef|Lang=de|Anker=userReadings}} - userReadings&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Attribut (allgemeingültig)]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=UserReadings&amp;diff=38205</id>
		<title>UserReadings</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=UserReadings&amp;diff=38205"/>
		<updated>2023-03-17T12:50:48Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Trigger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:userReadings}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über das Attribut [[userReadings]] können bei einem Device benutzerdefinierte [[reading|readings]] einschließlich der Anweisungen zum Befüllen derselben festgelegt werden. Das können zum Einen Formatänderungen (&amp;quot;sprintf&amp;quot;), oder aber auch durch die &#039;&#039;Modifier&#039;&#039;&lt;br /&gt;
* difference&lt;br /&gt;
* differential&lt;br /&gt;
* integral&lt;br /&gt;
* offset&lt;br /&gt;
* monotonic&lt;br /&gt;
gesteuerte Berechnungen sein.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=&#039;&#039;&#039;Geändertes Verhalten - bitte beachten&#039;&#039;&#039;&lt;br /&gt;
Im April 2016 hat sich die Verarbeitung des &#039;&#039;Triggers&#039;&#039; dahingehend geändert, dass die Trigger-Spezifikation jetzt als [[Regulärer Ausdruck]] interpretiert wird, damit also z.B. ein &amp;lt;code&amp;gt;avgTemp:temperature&amp;lt;/code&amp;gt; geändert werden muss in &amp;lt;code&amp;gt;avgTemp:temperature.*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Technische Details dazu wurden in {{Link2Forum|Topic=52165|LinkText=diesem Forenthread}} diskutiert.}}&lt;br /&gt;
Siehe {{Link2CmdRef|Anker=readingFnAttributes}}.&lt;br /&gt;
&lt;br /&gt;
* Bei Eingabe im Editor-Feld müssen mehrere Befehle mit einem &amp;quot;;&amp;quot; getrennt werden, bei Änderung in der Eingabezeile sind zwei &amp;quot;;&amp;quot; notwendig.&lt;br /&gt;
* Die Variable, dessen Wert man im Reading haben möchte, kann man einfach ans Ende stellen[https://perldoc.perl.org/functions/return.html]&lt;br /&gt;
* mehrere UserReadings werden durch Komma getrennt.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;myreading {my $v = ReadingsVal($name,&amp;quot;actuation&amp;quot;,&amp;quot;error&amp;quot;)+62; fhem(&amp;quot;set PID desired $v&amp;quot;); $v},&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;myreading2 {my $v = ReadingsVal($name,&amp;quot;actuation&amp;quot;,&amp;quot;error&amp;quot;)+62; fhem(&amp;quot;set PID2 desired $v&amp;quot;); $v}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Die nachfolgenden Beispiele sind ohne Trigger notiert. In der Regel sollte jedoch geprüft werden, ob nicht ein solcher Trigger gesetzt werden kann. Dies ist insbesondere in den Fällen sinnvoll, in denen in einem Gerät sehr viele Readings vorhanden sind, die ggf. zu unterschiedlichen Zeitpunkten aktualisiert werden. Das erste Beispiel wäre daher besser so zu schreiben:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;attr ElbePegelSchoena userReadings Pegel:value.* { ReadingsVal(&amp;quot;ElbePegelSchoena&amp;quot;,&amp;quot;value&amp;quot;,0) }&amp;lt;/code&amp;gt; }}&lt;br /&gt;
==== Ein Reading soll einen anderen Namen bekommen ====&lt;br /&gt;
Das vorhandene Reading &amp;quot;value&amp;quot; des Devices &amp;quot;ElbePegelSchoena&amp;quot; soll künftig in &amp;quot;Pegel&amp;quot; umbenannt werden. Das geht nicht. Man kann aber ein neues Reading &amp;quot;Pegel&amp;quot; mit genau gleichem Wert erzeugen: &lt;br /&gt;
:&amp;lt;code&amp;gt;attr ElbePegelSchoena userReadings Pegel { ReadingsVal(&amp;quot;ElbePegelSchoena&amp;quot;,&amp;quot;value&amp;quot;,0) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe eines Homematic 3-State Fenstersensor als Zahl für Visualisierung mit Icons ====&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr HM_XXXXXX userReadings Statenum {if(ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;closed&amp;quot;) {return 0} elsif (ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;tilted&amp;quot;) {return 1} elsif (ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;open&amp;quot;) {return 2} else {return -1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe als Moving Average und Formatierung mit sprintf ====&lt;br /&gt;
:&amp;lt;code&amp;gt;attr HZ_EINSTRAHLUNG_RAW userReadings Einstr_Mean.av {sprintf(&amp;quot;%.1f&amp;quot;,movingAverage(&amp;quot;HZ_EINSTRAHLUNG_RAW&amp;quot;,&amp;quot;reading&amp;quot;,1200))}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Umrechnung der Temperatur (durch 10 geteilt) und Einheit [°C] angehängt ====&lt;br /&gt;
:&amp;lt;code&amp;gt;attr HZ_EINSTRAHLUNG_T userReadings SolarTemp {ReadingsVal(&amp;quot;HZ_EINSTRAHLUNG_T&amp;quot;,&amp;quot;reading&amp;quot;,0)/10  .&amp;quot; °C&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batterieüberwachung durch Erweiterung mit notify und userReading ====&lt;br /&gt;
... ist im Detail auf der Seite [[Batterieüberwachung]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
==== Integralfunktion - integral ====&lt;br /&gt;
Die Verwendung der Integralfunktion bei &#039;&#039;userReadings&#039;&#039; ist ausführlich im Forenbeitrag {{Link2Forum|Topic=26300|Message=193084|LinkText=Integralfunktion bei UserReadings}} erklärt.&lt;br /&gt;
&lt;br /&gt;
==== Trigger ====&lt;br /&gt;
Die Trigger-Regex muss ein Event matchen inklusive Wert. Hier soll &#039;&#039;countTotalSum&#039;&#039; um den Wert im Reading &#039;&#039;count&#039;&#039; erhöht werden, natürlich nur wenn ein Event für das Reading &#039;&#039;count&#039;&#039; eintrifft, damit der Wert nur einmal hinzu addiert wird. (Alle anderen Events werden ignoriert.) Hier ist auf das Wortende zu achten &amp;quot;&#039;&#039;&#039;\b&#039;&#039;&#039;&amp;quot; in der Regex, damit z.B. Events für &#039;&#039;count1&#039;&#039;, &#039;&#039;count2&#039;&#039;, ... keinen Trigger auslösen. &lt;br /&gt;
:&amp;lt;code&amp;gt;attr GasPulseCounter userReadings countTotalSum:count\b.* {my $val=ReadingsVal($name,&amp;quot;countTotalSum&amp;quot;,0)+ReadingsVal($name,&amp;quot;count&amp;quot;,0);;$val}&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Hier werden einfach die Anzahl der Events für &#039;&#039;count&#039;&#039; gezählt. Events für Readingnamen, welche ledichglich mit &#039;&#039;count&#039;&#039; beginnen werden ignoriert, wegen &amp;quot;\b&amp;quot;.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr GasPulseCounter userReadings inc:count\b.* {my $val=ReadingsVal($name,&amp;quot;inc&amp;quot;,0)+1;;$val}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2CmdRef|Lang=de|Anker=userReadings}} - userReadings&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Attribut (allgemeingültig)]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=UserReadings&amp;diff=38204</id>
		<title>UserReadings</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=UserReadings&amp;diff=38204"/>
		<updated>2023-03-17T12:48:53Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:userReadings}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über das Attribut [[userReadings]] können bei einem Device benutzerdefinierte [[reading|readings]] einschließlich der Anweisungen zum Befüllen derselben festgelegt werden. Das können zum Einen Formatänderungen (&amp;quot;sprintf&amp;quot;), oder aber auch durch die &#039;&#039;Modifier&#039;&#039;&lt;br /&gt;
* difference&lt;br /&gt;
* differential&lt;br /&gt;
* integral&lt;br /&gt;
* offset&lt;br /&gt;
* monotonic&lt;br /&gt;
gesteuerte Berechnungen sein.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=&#039;&#039;&#039;Geändertes Verhalten - bitte beachten&#039;&#039;&#039;&lt;br /&gt;
Im April 2016 hat sich die Verarbeitung des &#039;&#039;Triggers&#039;&#039; dahingehend geändert, dass die Trigger-Spezifikation jetzt als [[Regulärer Ausdruck]] interpretiert wird, damit also z.B. ein &amp;lt;code&amp;gt;avgTemp:temperature&amp;lt;/code&amp;gt; geändert werden muss in &amp;lt;code&amp;gt;avgTemp:temperature.*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Technische Details dazu wurden in {{Link2Forum|Topic=52165|LinkText=diesem Forenthread}} diskutiert.}}&lt;br /&gt;
Siehe {{Link2CmdRef|Anker=readingFnAttributes}}.&lt;br /&gt;
&lt;br /&gt;
* Bei Eingabe im Editor-Feld müssen mehrere Befehle mit einem &amp;quot;;&amp;quot; getrennt werden, bei Änderung in der Eingabezeile sind zwei &amp;quot;;&amp;quot; notwendig.&lt;br /&gt;
* Die Variable, dessen Wert man im Reading haben möchte, kann man einfach ans Ende stellen[https://perldoc.perl.org/functions/return.html]&lt;br /&gt;
* mehrere UserReadings werden durch Komma getrennt.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;myreading {my $v = ReadingsVal($name,&amp;quot;actuation&amp;quot;,&amp;quot;error&amp;quot;)+62; fhem(&amp;quot;set PID desired $v&amp;quot;); $v},&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;myreading2 {my $v = ReadingsVal($name,&amp;quot;actuation&amp;quot;,&amp;quot;error&amp;quot;)+62; fhem(&amp;quot;set PID2 desired $v&amp;quot;); $v}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Die nachfolgenden Beispiele sind ohne Trigger notiert. In der Regel sollte jedoch geprüft werden, ob nicht ein solcher Trigger gesetzt werden kann. Dies ist insbesondere in den Fällen sinnvoll, in denen in einem Gerät sehr viele Readings vorhanden sind, die ggf. zu unterschiedlichen Zeitpunkten aktualisiert werden. Das erste Beispiel wäre daher besser so zu schreiben:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;attr ElbePegelSchoena userReadings Pegel:value.* { ReadingsVal(&amp;quot;ElbePegelSchoena&amp;quot;,&amp;quot;value&amp;quot;,0) }&amp;lt;/code&amp;gt; }}&lt;br /&gt;
==== Ein Reading soll einen anderen Namen bekommen ====&lt;br /&gt;
Das vorhandene Reading &amp;quot;value&amp;quot; des Devices &amp;quot;ElbePegelSchoena&amp;quot; soll künftig in &amp;quot;Pegel&amp;quot; umbenannt werden. Das geht nicht. Man kann aber ein neues Reading &amp;quot;Pegel&amp;quot; mit genau gleichem Wert erzeugen: &lt;br /&gt;
:&amp;lt;code&amp;gt;attr ElbePegelSchoena userReadings Pegel { ReadingsVal(&amp;quot;ElbePegelSchoena&amp;quot;,&amp;quot;value&amp;quot;,0) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe eines Homematic 3-State Fenstersensor als Zahl für Visualisierung mit Icons ====&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr HM_XXXXXX userReadings Statenum {if(ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;closed&amp;quot;) {return 0} elsif (ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;tilted&amp;quot;) {return 1} elsif (ReadingsVal(&amp;quot;HM_XXXXXX&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;open&amp;quot;) {return 2} else {return -1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe als Moving Average und Formatierung mit sprintf ====&lt;br /&gt;
:&amp;lt;code&amp;gt;attr HZ_EINSTRAHLUNG_RAW userReadings Einstr_Mean.av {sprintf(&amp;quot;%.1f&amp;quot;,movingAverage(&amp;quot;HZ_EINSTRAHLUNG_RAW&amp;quot;,&amp;quot;reading&amp;quot;,1200))}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Umrechnung der Temperatur (durch 10 geteilt) und Einheit [°C] angehängt ====&lt;br /&gt;
:&amp;lt;code&amp;gt;attr HZ_EINSTRAHLUNG_T userReadings SolarTemp {ReadingsVal(&amp;quot;HZ_EINSTRAHLUNG_T&amp;quot;,&amp;quot;reading&amp;quot;,0)/10  .&amp;quot; °C&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batterieüberwachung durch Erweiterung mit notify und userReading ====&lt;br /&gt;
... ist im Detail auf der Seite [[Batterieüberwachung]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
==== Integralfunktion - integral ====&lt;br /&gt;
Die Verwendung der Integralfunktion bei &#039;&#039;userReadings&#039;&#039; ist ausführlich im Forenbeitrag {{Link2Forum|Topic=26300|Message=193084|LinkText=Integralfunktion bei UserReadings}} erklärt.&lt;br /&gt;
&lt;br /&gt;
==== Trigger ====&lt;br /&gt;
Die Trigger-Regex muss ein Event matchen inklusive Wert. Hier soll &#039;&#039;countTotalSum&#039;&#039; um den Wert im Reading &#039;&#039;count&#039;&#039; erhöht werden, natürlich nur wenn ein Event für das Reading &#039;&#039;count&#039;&#039; eintrifft, damit der Wert nur einmal hinzu addiert wird. (Alle anderen Events werden ignoriert.) Hier ist auf das Wortende zu achten &amp;quot;&#039;&#039;&#039;\b&#039;&#039;&#039;&amp;quot; in der Regex, damit z.B. Events für &#039;&#039;count1&#039;&#039;, &#039;&#039;count2&#039;&#039;, ... keinen Trigger auslösen. &lt;br /&gt;
&amp;lt;code&amp;gt;attr GasPulseCounter userReadings countTotalSum:count\b.* {my $val=ReadingsVal($name,&amp;quot;countTotalSum&amp;quot;,0)+ReadingsVal($name,&amp;quot;count&amp;quot;,0);;$val}&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Hier werden einfach die Anzahl der Events für &#039;&#039;count&#039;&#039; gezählt. Events für Readingnamen, welche ledichglich mit &#039;&#039;count&#039;&#039; beginnen werden ignoriert, wegen &amp;quot;\b&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr GasPulseCounter userReadings inc:count\b.* {my $val=ReadingsVal($name,&amp;quot;inc&amp;quot;,0)+1;;$val}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2CmdRef|Lang=de|Anker=userReadings}} - userReadings&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Attribut (allgemeingültig)]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=GardenaSmartBridge&amp;diff=35375</id>
		<title>GardenaSmartBridge</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=GardenaSmartBridge&amp;diff=35375"/>
		<updated>2021-04-04T13:51:45Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=GardenaSmartBridge&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModFTopic=75098&lt;br /&gt;
|ModTechName=73_GardenaSmartBridge.pm&lt;br /&gt;
|ModOwner={{Link2FU|13684|CoolTux}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Modul GardenaSmartBridge stellt zusammen mit dem Device [[GardenaSmartDevice]] die Kommunikation zwischen der &#039;&#039;&#039;Gardena Cloud&#039;&#039;&#039; und FHEM her.&lt;br /&gt;
Es können damit Rasenmäher, Bewässerungscomputer und Sensoren überwacht und gesteuert werden, die Steuerung erfolgt durch das Modul [[GardenaSmartDevice]]. &lt;br /&gt;
&#039;&#039;Informationen zum [[GardenaSmartSystem]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
* Perl-Modul &amp;quot;SSL Packet&amp;quot;&lt;br /&gt;
* Internetanbinung&lt;br /&gt;
* Netzwerk mit W-Lan oder LAN (RJ45)&lt;br /&gt;
* Smart Gateway von Gardena &lt;br /&gt;
* Account bei https://developer.husqvarnagroup.cloud/ (alt: [https://sg-api.dss.husqvarnagroup.net/ Gardena])&lt;br /&gt;
* Smart Produkte von Gardena [[GardenaSmartSystem]]&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
&amp;lt;code&amp;gt; define &amp;lt;NAME&amp;gt; GardenaSmartBridge &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel ====&lt;br /&gt;
&amp;lt;code&amp;gt; define myGardenaBridge GardenaSmartBridge &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Anweisung erstellt ein neues GardenaSmartBridge Device Namens myGardenaBridge.&lt;br /&gt;
Im folgendem wird automatisch ein neuer Raum &#039;&#039;GardenaSmart&#039;&#039; erstellt und nach setzen des Attributes gardenaAccountEmail und einem &amp;lt;code&amp;gt;set myGardenaBridge gardenaAccountPassword&amp;lt;/code&amp;gt; alle dem [https://sg-api.dss.husqvarnagroup.net/ Gardena] Account bekannten Geräte&lt;br /&gt;
angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
* debugJSON -&lt;br /&gt;
* disable - aktivieren &amp;amp; deaktivieren der Bridge (0= aktiviert, 1= deaktiviert) &lt;br /&gt;
* interval - Abfrageinterval in Minuten (5= default)&lt;br /&gt;
* gardenaAccountEmail - Email Adresse, die auch in der GardenaApp verwendet wurde&lt;br /&gt;
&lt;br /&gt;
=== Readings ===&lt;br /&gt;
&lt;br /&gt;
* address - bei Gardena verwendete Adresse&lt;br /&gt;
* city -  bei Gardena hinterlegte Stadt&lt;br /&gt;
* devices - Anzahl der angelernten/verwendeten Geräte incl. des Gateways&lt;br /&gt;
* latitude - Längengrad&lt;br /&gt;
* longitude - Breitengrad &lt;br /&gt;
* name - Name des Gartens &#039;&#039;(Standard &amp;quot;MY GARDEN&amp;quot;)&#039;&#039;&lt;br /&gt;
* state - Status der Bridge (connect to cloud= Verbunden mit der Cloud) &lt;br /&gt;
* token - SessionID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* keine&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=75098|LinkText=Forenthread zu diesem Modul}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Gerätemodul]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=GardenaSmartSystem&amp;diff=35374</id>
		<title>GardenaSmartSystem</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=GardenaSmartSystem&amp;diff=35374"/>
		<updated>2021-04-04T13:50:39Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: update link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNText=Beispiel - [http://www.gardena.com/de/produkte/smart/smartsystem/ &#039;&#039;&#039;Smart Produkte von Gardena&#039;&#039;&#039;]))&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
* Kommunikation-1 (zu den Geräten): 868MHz&lt;br /&gt;
* Intelligenz-1: Smart Gateway&amp;lt;hr /&amp;gt;&lt;br /&gt;
* Verdrahtung und Stromversorgung&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Das auf Cloud basierte Gardena Smart System kann zur intelligenten Bewässerung und Rasenpflege verwendet werden. &lt;br /&gt;
Derzeit verfügbare Produkte sind &lt;br /&gt;
&lt;br /&gt;
* Smart Gateway - erlaubt die Steuerung der folgenden Geräte via APP oder FHEM&lt;br /&gt;
* Rasenmäher&lt;br /&gt;
* Sensoren&lt;br /&gt;
* Bewässerungscomputer&lt;br /&gt;
* Gartenpumpen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Smart Gateway kommuniziert via 868 MHz mit den angelernten Geräten. Er kann via W-Lan oder LAN (RJ45) mit dem&lt;br /&gt;
heimischen Netzwerk verbunden werden. Um die Geräte via APP oder FHEM bedienen zu können ist eine Internetanbindung und&lt;br /&gt;
ein Account bei https://developer.husqvarnagroup.cloud/  (alt: [https://sg-api.dss.husqvarnagroup.net/ Gardena]) zwingend erforderlich.&lt;br /&gt;
&lt;br /&gt;
== Einbindung in FHEM ==&lt;br /&gt;
FHEM-seitig wird das Gardena Smart System durch die Module [[GardenaSmartBridge]], welches die Verbindung zur Cloud herstellt, und [[GardenaSmartDevice]] zum bedienen/steuern der jeweiligen Geräte.&lt;br /&gt;
&lt;br /&gt;
== Ähnliche Systeme ==&lt;br /&gt;
* [https://forum.fhem.de/index.php/topic,52143.0.html - Bosch Indego]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=75098|LinkText=Forenthread zu diesem Modul}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other_Components]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SiSi&amp;diff=33820</id>
		<title>SiSi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SiSi&amp;diff=33820"/>
		<updated>2020-08-31T20:23:25Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden und Empfangen von Nachrichten (Text und Fotos) mit dem freien Messenger Signal&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModForumArea=Codeschnipsel&lt;br /&gt;
|ModFTopic=84996&lt;br /&gt;
|ModTechName=32_SiSi.pm&lt;br /&gt;
|ModOwner=Quantum ({{Link2FU|35410|Forum}})}}&lt;br /&gt;
Das Modul [[SiSi]] ermöglicht den Versand von Nachrichten über den Instant-Messaging-Dienst [https://signal.org Signal] aus FHEM heraus.&lt;br /&gt;
&lt;br /&gt;
Um dies zu ermöglichen, sind mehrere Schritte notwendig:&lt;br /&gt;
#Installation des [https://github.com/AsamK/signal-cli Signal Messenger Command Line Interface (signal-cli)].&lt;br /&gt;
#Registrierung einer Rufnummer bei Signal&lt;br /&gt;
#Einrichtung der [https://de.wikipedia.org/wiki/D-Bus D-Bus]-Schnittstelle&lt;br /&gt;
#Inbetriebnahme des FHEM-Moduls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung geht davon aus, dass&lt;br /&gt;
*als Betriebssystem Debian oder Raspbian verwendet wird&lt;br /&gt;
*FHEM im Verzeichnis &#039;&#039;/opt/fhem&#039;&#039; installiert wurde (ansonsten müssen die Pfade in der Anleitung angepasst werden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle in dieser Anleitung vorkommenden Textstellen in spitzen Klammern (z.B. &amp;lt;ErsetzMich&amp;gt;) sind durch eigene Werte zu ersetzen, sofern es sich nicht um Auszüge aus Konfigurationsdateien handelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voraussetzungen==&lt;br /&gt;
Um sowohl das &#039;&#039;signal-cli&#039;&#039; als auch das Modul verwenden zu können, müssen bestimmmte Linux-Pakete installiert sein. Im Folgenden eine Liste der Pakete für Debian/Raspbian:&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;libunixsocket-java&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;dbus&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;libnet-dbus-perl&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;haveged&#039;&#039;&#039;&#039;&#039; (Dient dazu, genügend Entropie für den Zufallszahlengenerator zu erzeugen.)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;openjdk-9-jre-headless&#039;&#039;&#039;&#039;&#039; (Es sollte eine Version &amp;gt; 7 installiert werden. Welche genau, hängt von Betriebssystem und dem Installationszeitpunkt ab.)&lt;br /&gt;
&lt;br /&gt;
Optional kann noch das Paket &#039;&#039;&#039;&#039;&#039;shared-mime-info&#039;&#039;&#039;&#039;&#039; installiert werden wenn ein gesendeter Anhang nicht direkt im Chatverlauf angezeigt werden soll, sondern erst durch einen Klick auf das Datei-Icon.&lt;br /&gt;
&lt;br /&gt;
Installation der Pakete in einem Rutsch:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install libunixsocket-java dbus libnet-dbus-perl shared-mime-info haveged openjdk-9-jre-headless&lt;br /&gt;
&lt;br /&gt;
==Installation des signal-cli==&lt;br /&gt;
[https://github.com/AsamK/signal-cli signal-cli] ist ein Kommandozeilen-Interface für [https://github.com/signalapp/libsignal-service-java libsignal-service-java]&amp;lt;ref&amp;gt;libsignal-service-java ist eine Java/Android Bibliothek zur Kommunikation mit dem Signal Messaging Service&amp;lt;/ref&amp;gt;. Es unterstützt das Registrieren und Verifizieren einer Rufnummer sowie das Senden und Empfangen von Nachrichten.&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt zur Installation von &#039;&#039;signal-cli&#039;&#039; ist, die aktuellste Versionsnummer auf der GitHub-Seite des Projektes unter &amp;quot;[https://github.com/AsamK/signal-cli/releases Releases]&amp;quot; zu finden. Zum Zeitpunkt der Erstfassung dieser Anleitung war das die Version 0.6.0.&lt;br /&gt;
&lt;br /&gt;
Anschließend wird die Release heruntergeladen und als Benutzer &#039;&#039;&#039;&#039;&#039;fhem&#039;&#039;&#039;&#039;&#039; in den Wurzelordner von FHEM (z.B. &#039;&#039;/opt/fhem&#039;&#039;) entpackt.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
export VERSION=0.6.0&lt;br /&gt;
wget https://github.com/AsamK/signal-cli/releases/download/v&amp;quot;${VERSION}&amp;quot;/signal-cli-&amp;quot;${VERSION}&amp;quot;.tar.gz&lt;br /&gt;
sudo -u fhem tar xf signal-cli-&amp;quot;${VERSION}&amp;quot;.tar.gz -C /opt/fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur einfacheren Handhabung kann der neu erstellte Ordner umbenannt und ein symbolischer Link in &#039;&#039;/usr/local/bin/&#039;&#039; erstellt werden.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo mv /opt/fhem/signal-cli-&amp;quot;${VERSION}&amp;quot; /opt/fhem/signal-cli&lt;br /&gt;
sudo ln -sf /opt/fhem/signal-cli/bin/signal-cli /usr/local/bin/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Registrierung einer Rufnummer==&lt;br /&gt;
Um Signal nutzen zu können, ist eine Rufnummer zwingend erforderlich. Für diesen Fall empfiehlt es sich, eine Nummer zu verwenden, die nicht schon für die Kommunikation mit Signal verwendet wird. Zum Beispiel eine Festnetznummer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Registrierung einer Nummer läuft wie folgt ab:&lt;br /&gt;
#Registrierung der Nummer mittels &#039;&#039;signal-cli&#039;&#039;&lt;br /&gt;
#Erhalt einer Textnachricht mit dem Verifizierungscode an angegebene Nummer. Wenn an der Rufnummer keine Textnachrichten empfangen werden können, kann - wie in diesem Beispiel - mit dem Parameter &#039;&#039;--voice&#039;&#039; ein Sprachanruf erzwungen werden. In beiden Fällen kann es durchaus etwas länger dauern, bis man den Verifizierungscode erhält.&lt;br /&gt;
#Verifizierung der Nummer mittels &#039;&#039;signal-cli&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Alle der folgenden Befehle werden als Benutzer &#039;&#039;&#039;&#039;&#039;fhem&#039;&#039;&#039;&#039;&#039; ausgeführt, damit die Konfigurationsdateien im Home-Verzeichnis des Benutzers (z.B. &#039;&#039;~/.local/share/signal-cli&#039;&#039;) landen.}}&lt;br /&gt;
&lt;br /&gt;
Im ersten Schritt registriert man eine Nummer mittels &#039;&#039;signal-cli&#039;&#039;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;sudo -u fhem signal-cli -u &amp;lt;Telefonnummer&amp;gt; register --voice&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn alles in Ordnung ist, erhält man keine Rückmeldung. Wenn es lange dauert, hat man nicht genug Entropie. &lt;br /&gt;
Kurz darauf erhält man einen Sprachanruf auf Englisch, mit dem einem der sechsstellige Verifizierungscode yyyyyy mitgeteilt wird.&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt wird diese Nummer mit Hilfe des erhaltenen Codes verifiziert.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;sudo -u fhem signal-cli -u &amp;lt;Telefonnummer&amp;gt; verify &amp;lt;VerificationCode&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Auch hier gibt es keine Rückmeldung, solange alles funktioniert hat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
War die Registrierung erfolgreich, können nun Nachrichten via &#039;&#039;signal-cli&#039;&#039; versendet werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;signal-cli -u &amp;lt;RegistrierteNummer&amp;gt; send -m &amp;quot;Greetings from FHEM!&amp;quot; &amp;lt;Empfängernummer&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einrichten der Kommunikation über D-Bus ==&lt;br /&gt;
Damit das FHEM-Modul über die D-Bus Schnittstelle mit &#039;&#039;signal-cli&#039;&#039; kommunizieren kann, ist die Einrichtung von D-Bus sowie die Erstellung eines [https://de.wikipedia.org/wiki/Systemd systemd]-Scripts notwendig.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Alle der folgenden drei Dateien müssen als Benutzer &#039;&#039;&#039;&#039;&#039;root&#039;&#039;&#039;&#039;&#039; angelegt und editiert werden.}}&lt;br /&gt;
&lt;br /&gt;
;/etc/dbus-1/system.d/org.asamk.Signal.conf&lt;br /&gt;
Die Datei in einem Editor öffnen&lt;br /&gt;
 sudo nano /etc/dbus-1/system.d/org.asamk.Signal.conf&lt;br /&gt;
und mit folgendem Inhalt befüllen&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt; &amp;lt;!--*-nxml-*--&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE busconfig PUBLIC &amp;quot;-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN&amp;quot;&lt;br /&gt;
        &amp;quot;http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;busconfig&amp;gt;&lt;br /&gt;
        &amp;lt;policy user=&amp;quot;fhem&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;allow own=&amp;quot;org.asamk.Signal&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;allow send_destination=&amp;quot;org.asamk.Signal&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;allow receive_sender=&amp;quot;org.asamk.Signal&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/policy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;policy context=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;allow send_destination=&amp;quot;org.asamk.Signal&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;allow receive_sender=&amp;quot;org.asamk.Signal&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/policy&amp;gt;&lt;br /&gt;
&amp;lt;/busconfig&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;/usr/share/dbus-1/system-services/org.asamk.Signal.service&lt;br /&gt;
Die Datei in einem Editor öffnen&lt;br /&gt;
 sudo nano /usr/share/dbus-1/system-services/org.asamk.Signal.service&lt;br /&gt;
und mit folgendem Inhalt befüllen&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[D-BUS Service]&lt;br /&gt;
Name=org.asamk.Signal&lt;br /&gt;
Exec=/bin/false&lt;br /&gt;
SystemdService=dbus-org.asamk.Signal.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;/etc/systemd/system/signal.service&lt;br /&gt;
Die Datei in einem Editor öffnen&lt;br /&gt;
 sudo nano /etc/systemd/system/signal.service&lt;br /&gt;
und mit folgendem Inhalt befüllen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Send secure messages to Signal clients&lt;br /&gt;
Requires=dbus.socket&lt;br /&gt;
After=dbus.socket&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
After=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=dbus&lt;br /&gt;
Environment=&amp;quot;SIGNAL_CLI_OPTS=-Xms2m&amp;quot;&lt;br /&gt;
ExecStart=/opt/fhem/signal-cli/bin/signal-cli -u +49xxxxxxxxxxx --config /opt/fhem/.local/share/signal-cli daemon --system&lt;br /&gt;
User=fhem&lt;br /&gt;
BusName=org.asamk.Signal&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
Alias=dbus-org.asamk.Signal.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039;&lt;br /&gt;
* Die Rufnummer im Script muss durch die in den vorigen Schritten registrierte ersetzt werden.&lt;br /&gt;
* Außerdem muss unter Umständen der Pfad des FHEM-Wurzelverzeichnisses angepasst werden.&lt;br /&gt;
* Der Pfad zur Konfigurationsdatei ist je nach signal-cli Version anders:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;0.6.1:&lt;br /&gt;
 $HOME/.config/signal/data/&lt;br /&gt;
 oder&lt;br /&gt;
 $HOME/.config/textsecure/data/&lt;br /&gt;
&lt;br /&gt;
;&amp;gt;=0.6.1&lt;br /&gt;
 $HOME/.local/share/signal-cli/data/&lt;br /&gt;
&lt;br /&gt;
Sind alle Dateien angelegt, können die Services mit diesen Befehlen aktiviert und gestartet werden.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl daemon-reload&lt;br /&gt;
sudo systemctl reload dbus.service&lt;br /&gt;
sudo systemctl enable signal.service&lt;br /&gt;
sudo systemctl start signal.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ob alles funktioniert, kann wie folgt getestet werden:&lt;br /&gt;
*D-Bus:&lt;br /&gt;
 sudo -u fhem dbus-send --system --type=method_call --print-reply --dest=&amp;quot;org.asamk.Signal&amp;quot; /org/asamk/Signal org.asamk.Signal.sendMessage string:&amp;lt;Nachricht&amp;gt; array:string: string:&amp;lt;EmpfängerNummer&amp;gt;&lt;br /&gt;
*signal-cli über D-Bus:&lt;br /&gt;
 sudo -u fhem signal-cli --dbus-system  send -m &amp;quot;&amp;lt;Nachricht&amp;gt;&amp;quot; &amp;lt;EmpfängerNummer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einbindung des FHEM-Moduls ==&lt;br /&gt;
Solange das Modul &#039;&#039;&#039;32_SiSi.pm&#039;&#039;&#039; noch nicht via FHEM-Update verteilt wird, ist eine manuelle Installation notwendig. Das geschieht, in dem es von der [https://github.com/Quantum1337/32_SiSi.pm GitHub-Seite] des Modul-Autors heruntergeladen und in den FHEM-Ordner kopiert wird.&lt;br /&gt;
&lt;br /&gt;
Der Befehl&lt;br /&gt;
 wget https://raw.githubusercontent.com/Quantum1337/32_SiSi.pm/master/FHEM/32_SiSi.pm&lt;br /&gt;
speichert das Modul im aktuellen Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Befehlen wird das Modul ins das FHEM-Verzeichnis verschoben und anschließend die Datei-Rechte angepasst.&lt;br /&gt;
 sudo mv 32_SiSi.pm /opt/fhem/FHEM/&lt;br /&gt;
 sudo chown fhem:dialout /opt/fhem/FHEM/32_SiSi.pm&lt;br /&gt;
&lt;br /&gt;
Anschließend wird noch die lokale CommandRef aktualisiert:&lt;br /&gt;
 cd /opt/fhem&lt;br /&gt;
 sudo /usr/bin/perl contrib/commandref_join.pl&lt;br /&gt;
&lt;br /&gt;
Zum Abschluss wird das Modul noch FHEM bekannt gemacht. Dazu in der FHEM-Kommandozeile folgenden Befehl eingeben:&lt;br /&gt;
 reload 32_SiSi.pm&lt;br /&gt;
&lt;br /&gt;
==Verwendung des FHEM-Moduls==&lt;br /&gt;
Die genaue Verwendung des Moduls 32_SiSi.pm ist in der CommandRef beschrieben. Hier deshalb nur ein kleines Beispiel.&lt;br /&gt;
&lt;br /&gt;
SiSi-Device definieren:&lt;br /&gt;
 define Signal SiSi&lt;br /&gt;
&lt;br /&gt;
Dem Device mitteilen, dass es eine Verbindung zum signal-cli D-Bus Service herstellen soll:&lt;br /&gt;
 attr Signal enable yes&lt;br /&gt;
&lt;br /&gt;
Eine Standard-Empfängernummer definieren, falls im Befehlsaufruf keine angegeben ist:&lt;br /&gt;
 attr Signal defaultPeer +49170zzzzzzzz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anschließend kann aus FHEM heraus eine Nachricht gesendet werden:&lt;br /&gt;
 set Signal msg Hurra, es funktioniert!&lt;br /&gt;
&lt;br /&gt;
===Zusammenspiel mit den Modulen Msg und Roommate===&lt;br /&gt;
Um mithilfe des Moduls [[Msg]] Signal-Nachrichten versenden zu können, ist im Device &#039;&#039;globalMsg&#039;&#039; das Attribut &#039;&#039;&#039;msgCmdPush&#039;&#039;&#039; zu setzen.&lt;br /&gt;
 attr globalMsg msgCmdPush set %DEVICE% msg @%RECIPIENT% %MSG%&lt;br /&gt;
&lt;br /&gt;
Optional kann ein Standard-Empfänger gesetzt werden der die Nachricht erhält, wenn beim Aufruf von &#039;&#039;Msg&#039;&#039; kein Empfänger angegeben wurde:&lt;br /&gt;
 attr globalMsg msgContactPush &amp;lt;Signal-Device&amp;gt;:&amp;lt;Empfängernummer&amp;gt;&lt;br /&gt;
Danach kann mit &amp;lt;code&amp;gt;msg Testnachricht&amp;lt;/code&amp;gt; eine Signal-Nachricht versendet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Werden {{Link2CmdRef|Anker=ROOMMATE|Lang=de|Label=ROOMMATE-Devices}} verwendet, kann jedem eine Kontaktadresse hinterlegt werden, damit beim Aufruf von &#039;&#039;Msg&#039;&#039; einfach der Device-Name anstatt der Nummer angegeben werden kann. (Funktioniert natürlich  bei jedem anderen Device auch. Aber ein ROOMMATE-Device macht das ganze anschaulicher.)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
attr &amp;lt;ROOMMATE-Device&amp;gt; msgContactPush &amp;lt;Signal-Device&amp;gt;:&amp;lt;Empfängernummer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
z.B.:&lt;br /&gt;
attr rr_Max msgContactPush Signal:+49...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Anschließend kann mit &amp;lt;code&amp;gt;msg @rr_Max Testnachricht&amp;lt;/code&amp;gt; eine Nachricht an Max gesendet werden.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==&lt;br /&gt;
Derzeit ist es aufgrund von Einschränkungen in der D-Bus-API noch nicht möglich, mit dem SiSi-Modul neue Fingerprints von Kontakten hinzuzufügen oder aus Gruppen auszutreten. Daher muss beides noch manuell auf der Linux-Kommandozeile erfolgen.&lt;br /&gt;
&lt;br /&gt;
;Neuer Fingerprint&lt;br /&gt;
:Mit folgendem Befehl wird dieser Nummer wieder vertraut und &#039;&#039;signal-cli&#039;&#039; fügt den geänderten Fingerprint dann automatisch zu seiner Liste hinzu.&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;sudo -u fhem signal-cli -u &amp;lt;FHEM-NUMMER&amp;gt; trust -a &amp;lt;Nummer mit geänderten Fingerprint&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Aus einer Gruppe austreten&lt;br /&gt;
:Soll die &amp;quot;FHEM-Signal-Rufnummer&amp;quot; aus einer bestehende Gruppe entfernt werden, kann dieser Aufruf von &#039;&#039;signal-cli&#039;&#039; verwendet werden.&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;sudo -u fhem signal-cli -u &amp;lt;FHEM-NUMMER&amp;gt; quitGroup -g &amp;lt;GroupID&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Querverweise==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategorie:Signal]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Z-Wave&amp;diff=29808</id>
		<title>Z-Wave</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Z-Wave&amp;diff=29808"/>
		<updated>2019-03-10T12:30:55Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Doppel-Relais */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;{{Infobox Modul&lt;br /&gt;
|Name=ZWDongle&lt;br /&gt;
|ModPurpose=Einbindung Z-Wave-Gateways&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=ZWDongle&lt;br /&gt;
|ModForumArea=ZWave&lt;br /&gt;
|ModTechName=00_ZWDongle.pm &lt;br /&gt;
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=ZWave&lt;br /&gt;
|ModPurpose=Ansteuerung Z-Wave-Geräte über ZWDongle&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=ZWave&lt;br /&gt;
|ModForumArea=ZWave&lt;br /&gt;
|ModTechName=10_ZWave.pm &lt;br /&gt;
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Z-Wave]] ist ein drahtloser Kommunikations-Standard im 868 Mhz-Band (Europa), der von der Firma Sigma Designs und der Z-Wave Alliance, einen Zusammenschluss von mehreren Hundert Herstellern, für die Heimautomatisierung entwickelt wurde. Es existieren mehr als [http://products.z-wavealliance.org 1400 zertifizierte Produkte] verschiedenster Hersteller, die innerhalb eines gemeinsamen Z-Wave-Netzes einsetzbar sind. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia])&lt;br /&gt;
&lt;br /&gt;
Auf dieser Seite werden Grundlagen eines &#039;&#039;&#039;Z-Wave&#039;&#039;&#039; Systems und dessen Einrichtung in FHEM beschrieben.&lt;br /&gt;
== Z-Wave ==&lt;br /&gt;
=== Nodes - Controller und Slaves ===&lt;br /&gt;
Ein Z-Wave-Netz besteht aus mindestens 2 Geräten, den sogenannten &#039;&#039;&#039;Nodes&#039;&#039;&#039; (Knoten). Es setzt sich zusammen aus dem steuernden &#039;&#039;&#039;Controller&#039;&#039;&#039; (Zentrale) und min. 1 bis max. 231 gesteuerten &#039;&#039;&#039;Slaves&#039;&#039;&#039; (Geräten). &lt;br /&gt;
&lt;br /&gt;
=== Home-Id und Node-ID ===&lt;br /&gt;
Innerhalb eines Z-Wave-Netzes gibt es zu 2 Identifikationsnummern zur Kennzeichnung der Netzstruktur:&lt;br /&gt;
# &#039;&#039;&#039;Home-ID:&#039;&#039;&#039; Gemeinsame Identifikationsnummer aller Nodes in einem Netz zur Abgrenzung gegenüber anderen Netzen. Nur Nodes mit der gleichen Home-ID können miteinander kommunizieren.&lt;br /&gt;
# &#039;&#039;&#039;Node-ID:&#039;&#039;&#039; Identifikationsnummer zur eindeutigen Kennzeichnung von jedem Node im Netz. &lt;br /&gt;
&lt;br /&gt;
Die Home-ID ist im Controller (fest) hinterlegt und seine Node-ID ist typischerweise 1. Die Slaves haben zunächst keine Home-ID und Node-ID. Bei der &#039;&#039;&#039;Inklusion&#039;&#039;&#039; (Aufnahme) der Slaves in das Z-Wave-Netz überträgt der Controller seine Home-ID auf die Slaves und weist den Slaves eine eindeutige Node-ID im Netz zu, mit der Sie direkt angesprochen werden. &lt;br /&gt;
&lt;br /&gt;
Besondere Node-ID ist die 255. Eine Nachricht an die Node-ID 255 kann von allen Z-Wave-Nodes ausgewertet werden (Broadcast).&lt;br /&gt;
&lt;br /&gt;
=== Primär- und Sekundärcontroller ===&lt;br /&gt;
Der Controller, der durch Zuteilung seiner Home-ID auf die Slaves, das Netz aufbaut, ist der &#039;&#039;&#039;Primärcontroller&#039;&#039;&#039;. Grundsätzlich können in einem Netz mehrere Controller existieren, aber immer nur ein Primärcontroller. Weitere in das Netz eingebundene Controller werden zum &#039;&#039;&#039;Sekundärcontroller&#039;&#039;&#039;. Ohne besondere Maßnahmen kann nur der Primärcontroller die Inklusion (Einbindung) der Nodes in das Netz durchführen. Hingegen können sowohl Primär- als auch Sekundärcontroller die &#039;&#039;&#039;Exklusion&#039;&#039;&#039; (Ausschluss) eines Nodes aus dem Netz vornehmen.&lt;br /&gt;
&lt;br /&gt;
Der Controller speichert intern diverse Informationen (Home-ID, Node-IDs,..) über das ZWave-Netz. Hierdurch kann unter anderem die Haussteuerungssoftware bei einem PC-Controller relativ unkompliziert gewechselt werden, da die wesentlichen ZWave-Netzinformationen vom Controller selbst verwaltet und gespeichert werden. Andererseits muß bei einem Controllerdefekt das gesamte Netz grundsätzlich neu aufgebaut werden, wenn kein Backup der internen Controllerdaten vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledge ===&lt;br /&gt;
Im Z-Wave-Netz werden Nachrichten vom Empänger-Node an den Sender-Node rückbestätigt (Acknowledge). Bei ausbleibendem Acknowledge wiederholt der Sender-Node die Nachricht automatisch auf Protokollebene bis zu 2 mal. Hierdurch wird eine höhere Betriebssicherheit des Z-Wave-Netzes erreicht. Bei Broadcast-Nachrichten an die Node-ID 255 findet keine Rückbestätigung statt.&lt;br /&gt;
&lt;br /&gt;
=== Vermaschtes Netzwerk mit Routing ===&lt;br /&gt;
Z-Wave nutzt als Netzwerktopologie ein &#039;&#039;&#039;mesh network&#039;&#039;&#039; (vermaschtes Netzwerk), d. h. jeder Node ist mit einem oder mehreren anderen Nodes verbunden. Das hat den Vorteil, dass eine Nachricht zwischen zwei Nodes übermittelt werden kann, selbst wenn diese nicht direkt miteinander kommunizieren können, z. B. weil sie zu weit voneinander entfernt sind. In diesem Fall wird die Funk-Nachricht über einen oder mehrere „Zwischen-Nodes“ übertragen; dieser Vorgang wird &#039;&#039;&#039;Routing&#039;&#039;&#039; genannt. Nur netzgespeiste Z-Wave-Geräte sind Router. Batteriebetriebe Z-Wave-Geräte sind grundsätzlich keine Router und dienen somit auch nicht zur Reichweitenerhöhung. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia]) Einzelne Geräte, die alternativ per Batterie oder USB-Anschluss betrieben werden können, werden bei USB-Anschluss automatisch ({{Link2Forum|Topic=40393|Message=328080}}) oder durch Konfigurationsänderungen ({{Link2Forum|Topic=40393|Message=327331}}) zu Routern.&lt;br /&gt;
&lt;br /&gt;
Informationen über das optimale Routing werden bei der Inklusion der Nodes in einer Routing-Tabelle des Primärcontrollers gespeichert. Dies geschieht durch Abfrage des Nodes, welche weiteren Nodes er erreichen kann. Durch örtliche Änderung oder Defekte von Nodes können die in der Routing-Tabelle gespeicherten Informationen fehlerhaft bzw. suboptimal werden. Dies kann sich in Funkkommunikationsproblemen im Netzwerk äußern. Hier kann ein per Software manuell angeforderter Neuaufbau der Routing-Tabelle gegebenenfalls Abhilfe schaffen. Bei Geräten und Controllern mit aktuellen Firmware-Versionen (SDK 4.5x und SDK 6.xx oder größer, aber &#039;&#039;nicht&#039;&#039; SDK 5.x) und Unterstützung von Explorer Frames kann sich die Routing-Tabelle unter bestimmten Bedingungen auch automatisch aktualisieren (&amp;quot;Selbstheilung&amp;quot;)[https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames].&lt;br /&gt;
&lt;br /&gt;
=== Command Classes ===&lt;br /&gt;
Die Steuerung und Kommunikation der Nodes erfolgt über Befehle die funktionsbezogen in verschiedene &#039;&#039;&#039;Command Classes&#039;&#039;&#039; (Kommandoklassen) zusammengefasst sind.&lt;br /&gt;
&lt;br /&gt;
Alle Z-Wave-Geräte haben als gemeinsame kleinste Übereinstimmung die &#039;&#039;&#039;Class Basic&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Z-Wave-Geräte haben im Originalzustand eine bestimmte arbeitsfähige Grund-Konfiguration. Anpassbar an individuelle Bedürfnisse ist die Konfiguration über die &#039;&#039;&#039;Class Configuration&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Durch eine Assoziation wird definiert, welche Geräte miteinander direkt -ohne Umweg über den Controller- kommunizieren können. Auch bei Ausfall des Controllers können diese Geräte ihre gemeinsame Funkton ausüben. Zudem dienen Assoziationen der Geschwindigkeitssteigerung und Funklastreduzierung innerhalb des Netzes. Angelegt werden Assoziationen über die &#039;&#039;&#039;Class Association&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Dies sind nur die allerwichtigsten Command Classes. Weitere Command Classes sind den Handbüchern zu entnehmen. Zudem enthält die Wiki-Seite [[Z-Wave Command Classes]] weitergehende Informationen.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise zur Z-Wave-Geräteauswahl ===&lt;br /&gt;
Aufgrund der vielen Z-Wave-Gerätehersteller mit jeweils eigenem Z-Wave-Gerätesortiment existiert eine große Produktauswahl. Jedoch gibt es auch große Unterschiede hinsichtlich Produkteigenschaften, Pflege der Produkte, Häufigkeit der Aktualisierung der Produktpalette und so weiter. Schwierigkeiten bereitet insbesondere, dass neben den aktuellesten Chipsätzen und SDKs auch die älteren Chipsätze und SDKs weiterhin in Produkten im Handel verfügbar sind. Neuere Chipsätze und aktuelle SDKs bieten gerade bei der Netzwerkstabilität (Explorer Frames, Reichweite usw.) Vorteile zu älteren Chipsätzen und SDKs. Beispielsweise beherrschen nur Geräte mit SDK 4.5x und 6.x oder neuer die für automatische Routenkorrekturen wichtigen Explorer Frames. Das ältere SDK 5.0, das verwirrenderweise auch noch eine höhere Versionsnummer als das neuere SDK 4.5 besitzt, beherrscht unter anderem keine Explorer Frames. Details hierzu enthält das [https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames wiki.zwaveeurope.com]. Aktuellstes SDK ist Stand 10/2017 das SDK 6.7x, das in ZWave Plus - zertifizierten Produkten zum Einsatz kommt.&lt;br /&gt;
&lt;br /&gt;
Gerade Einsteiger beachten die Unterschiede bei den Chipsätze/SDKs aus Unkenntnis manchmal nicht und ärgern sich im Nachhinein über Probleme bei der Netzwerkstabilität und Reichweite. Darum nachfolgend allgemeine, aber sehr einfache Empfehlungen zur Geräteauswahl. Selbstverständlich wird hier nicht von anderen Produkten abgeraten, wenn man die Unterschiede kennt und Vorteile bei deren Produkteigenschaften sieht. Zudem kann man (leider) schlechtere Produkteigenschaften bei Geräten mit aktuelleren Chipsätzen/SDKs nie ausschließen.&lt;br /&gt;
&lt;br /&gt;
Gateway&lt;br /&gt;
# [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus-Zertifizierung]. Diese ist mittlerweile bei nahezu allen erhältlichen Gateways gegebenen.&lt;br /&gt;
&lt;br /&gt;
Endgeräte&lt;br /&gt;
# Z-Wave Plus-Zertifizierung (aktuellste Technik, höhere theoretische Reichweite, SDK 6.5x oder höher) oder&lt;br /&gt;
# zumindest Explorer Frames-Unterstützung (SDK 4.5x und 6.0x) oder&lt;br /&gt;
# zuletzt -bei Kenntnis der Besonderheiten und Auswirkungen- Produkte ohne Explorer Frames (SDK 5.0x)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kurz&#039;&#039;&#039;: Produkte mit Z-Wave Plus-Zertifizierung einsetzen.&lt;br /&gt;
&lt;br /&gt;
Bitte unbedingt beachten, dass Z-Wave Plus-Vorteile bei einem Mischbetrieb mit älteren (ohne Plus) Geräten teilweise verloren gehen. Zum negativen Effekt des Einsatzes eines älteren, aber weiterhin erhältlichen Z-Wave-Repeaters mit aktuellen Z-Wave Plus-Geräten siehe beispielsweise den Hinweis in diesem {{Link2Forum|Topic=42591|Message=350066}}.&lt;br /&gt;
&lt;br /&gt;
Bei Fragen zu bestimmten Geräten bitte -nach Durchsicht der Hinweise hier im Wiki- im Forum suchen oder anschließend nachfragen.&lt;br /&gt;
&lt;br /&gt;
== Z-Wave in FHEM ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ausführen und anschließend &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt; durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung von Z-Wave in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach möglich. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_FHEM|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht speziell Z-Wave behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend und auf den [[:Kategorie:Z-Wave Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der Konfiguration sollte -zur Verhinderung von Fehlern- nach Möglichkeit immer über das &amp;quot;[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]&amp;quot; und die &amp;quot;[[Konfiguration#Objektdetails|Objektdetails]]&amp;quot; erfolgen.&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Die Bedienungsanleitungen (Handbücher) sind zwingende Voraussetzung zur korrekten Einbindung und Konfiguration von Z-Wave-Geräten in FHEM. Sie müssen daher vorliegen. &lt;br /&gt;
Den ZWave-Geräten liegen teilweise nur gekürzte, gedruckte Fassungen der Handbücher bei (beispielsweise Devolo, AEOTEC). Man sollte bei allen Produkten auf folgenden Seiten nach eventuellen ausführlicheren Handbüchern suchen:&lt;br /&gt;
* Herstellerseite des ZWave-Gerätes&lt;br /&gt;
* http://www.zwave.de/handbuecher/ (deutsch)&lt;br /&gt;
* http://products.z-wavealliance.org (englisch)&lt;br /&gt;
Insbesondere auf http://products.z-wavealliance.org, der Datenbank der ZWave-zertifizierten Produkte, sind regelmäßig ausführliche Informationen zu den Geräten zu finden.&lt;br /&gt;
&lt;br /&gt;
== Definition des Gateways / Controllers ==&lt;br /&gt;
{{Randnotiz|RNText=&#039;&#039;&#039;Tester für ZWave@culfw gesucht!&#039;&#039;&#039;&lt;br /&gt;
Z-Wave-Controllerfunktionen werden derzeit in die Firmware [http://www.culfw.de culfw] für den [[CUL]] implementiert. Weitere Informationen im [[ZWCUL]] - Artikel.}}&lt;br /&gt;
=== Autocreate des Gateways ===&lt;br /&gt;
FHEM kann mit einem Funkgateway Z-Wave-Funk empfangen und senden. Z-Wave-Gateways (Controller) existieren von verschiedenen Herstellern. &lt;br /&gt;
&lt;br /&gt;
Folgende Gateways wurden unter anderem bereits erfolgreich mit FHEM eingesetzt:&lt;br /&gt;
* AEON Labs Z-Stick S2 (SDK 5.x; [https://aeotec.freshdesk.com/support/solutions/articles/6000091809-z-stick-s2-v3-08-firmware-update Firmwareupdate auf 3.08 aus 2016])&lt;br /&gt;
* Aeotec Z-Stick Gen5 (Z-Wave Plus; SDK 6.5; [https://aeotec.freshdesk.com/support/solutions/articles/6000108806-z-stick-gen5-backup-software Backup-Software)] ({{Link2Forum|Topic=47000}})&lt;br /&gt;
* Goodway WD6001 (SDK 5.03 {{Link2Forum|Topic=40594|Message=332235}})&lt;br /&gt;
* Vision Z-Wave USB Stick ZU 1401 EU (SDK 6.0x)&lt;br /&gt;
* Vision Z-Wave USB Stick ZU 1401-5 EU (Z-Wave Plus; SDK 6.5x)&lt;br /&gt;
* Z-Wave.Me Z-StickC ({{Link2Forum|Topic=29930|Message=226530}})&lt;br /&gt;
* Z-Wave.Me USB Stick ZME_UZB1 (SDK 6.5x;  Z-Wave Plus; [http://razberry.z-wave.me/z-way-server/ Firmwareupdate und Backup über z-way])&lt;br /&gt;
* Z-Wave.Me Razberry in Verbindung mit Raspberry Pi (1. Generation: Z-Wave, 2. Generation: Gen5-Razberry mit Z-Wave Plus[http://forum.z-wave.me/viewtopic.php?f=3419&amp;amp;t=21327#p55404]) &lt;br /&gt;
** Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das Razberry-Modul funktionsfähig ist: {{Link2Forum|Topic=78248|Message=702044}})&lt;br /&gt;
** Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]&lt;br /&gt;
&lt;br /&gt;
Folgende Gateways sind &#039;&#039;&#039;nicht&#039;&#039;&#039; mit FHEM einsetzbar:&lt;br /&gt;
* Merten Funk-USB-Datenschnittstelle CONNECT&lt;br /&gt;
&lt;br /&gt;
Sollte das eigene Gateway hier nicht aufgeführt sein, ist aufgrund der Standardisierung dennoch die Chance für eine erfolgreiche Einbindung des Gateways in FHEM vorhanden. Bitte dies hier oder im Forum entsprechend vermerken.&lt;br /&gt;
&lt;br /&gt;
Das Z-Wave-Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim nächsten FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; zumeist automatisch erkannt und das zugehörige FHEM-Device nach dem Namensschema &amp;lt;code&amp;gt;ZWDongle_&amp;lt;[https://forum.fhem.de/index.php/topic,92885.msg854533.html#msg854533 Anhang]&amp;gt;&amp;lt;/code&amp;gt; angelegt. Ein manuelles Anlegen des ZWDongle-Moduls oder Eingriffe in die Konfiguration sind unter Linux normalerweise nicht notwendig. &lt;br /&gt;
&lt;br /&gt;
Unter Windows ist ein manuelles Anlegen der Definition des ZWave-Gateways wegen fehlender Unterstützung des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; erforderlich (Beispiel für Z-Wave.Me USB Stick ZME_UZB1 unter Windows: &amp;lt;code&amp;gt;define ZWDongle_1 ZWDongle COM1@115200&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Das FHEM-Gateway-Device ist nach der Definition in FHEM im Raum &amp;quot;Everything&amp;quot; zu finden.&lt;br /&gt;
&lt;br /&gt;
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:&lt;br /&gt;
&lt;br /&gt;
Aeon Labs Z-Stick an der Fritzbox: &lt;br /&gt;
 define ZWDongle_1 ZWDongle /dev/ttyUSB1@115200&lt;br /&gt;
&lt;br /&gt;
Vision Z-Wave USB Stick ZU 1401 EU am Raspberry Pi (Raspbian):&lt;br /&gt;
 define ZWDongle_1 ZWDongle /dev/ttyACM1@115200&lt;br /&gt;
&lt;br /&gt;
Insbesondere wenn am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt werden, empfiehlt es sich zur Erhöhung der Betriebsstabilität das Z-Wave-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] oder [[LinuxDeviceNaming|uDev-Regeln]] anzusprechen.&lt;br /&gt;
&lt;br /&gt;
Bei einem statischen Controller wird die Einrichtung als SUC -sofern der Controller als solcher nicht bei Auslieferung eingerichtet ist- vor der ersten Inklusion von Geräten empfohlen.&lt;br /&gt;
&lt;br /&gt;
=== homeId und nodeList des Gateways ===&lt;br /&gt;
Zur manuellen Definition von Z-Wave Aktoren und Sensoren ist die &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; notwendig. Bei der hier bevorzugten Definition der Geräte durch autocreate ist die Kenntnis der &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; nicht zwingend. Jedoch sollte durch Abfrage der &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; direkt nach Einbindung des Zwave-Gateways dessen Funktionsfähigkeit getestet werden.&lt;br /&gt;
&lt;br /&gt;
Die &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;CtrlNodeId&amp;lt;/code&amp;gt; des Gateways wird mit folgendem Befehl ausgelesen (&amp;lt;ZWDongle&amp;gt; ist im folgenden durch den Namen des FHEM-Devices des eigenen Gateways zu ersetzen):&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; homeId&lt;br /&gt;
ergibt beispielsweise bei einem Gateway mit dem FHEM-Devicenamen ZWDongle_1:&lt;br /&gt;
 ZWDongle_1 homeId =&amp;gt; HomeId:e345c456 CtrlNodeId:01 &lt;br /&gt;
In diesem Beispiel ist die Home-Id des Gateways ZWDongle_1 e345c456 und das Gateway hat die Node-Id 1.&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Liste der Z-Wave Nodes, die bereits am Gateway registriert/inkludiert sind, wird mit dem folgendem Befehl ausgelesen:&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; nodeList&lt;br /&gt;
ergibt beispielsweise:&lt;br /&gt;
 ZWDongle_1 nodeList =&amp;gt; ZWDongle_1 UNKNOWN_2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition von Geräten / Slaves ==&lt;br /&gt;
=== Hinzufügen eines neuen Z-Wave Geräts / Inklusion ===&lt;br /&gt;
Zur Verfolgung von Inklusionsablauf und Meldungen des Controllers während der Inklusion sollte der [[Event monitor]] in einem 2. Browserfenster vor Aktivierung des Inklusionsmodus geöffnet werden.&lt;br /&gt;
&lt;br /&gt;
Das Z-Wave Gateway wird in den Standard-Modus zur Inklusion (zum Aufnehmen) neuer Geräte gesetzt:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; addNode on&lt;br /&gt;
Bei der Standard-Inklusion muss direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen.&lt;br /&gt;
&lt;br /&gt;
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt des obigen Befehls besser der Network-Wide-Modus für die Inklusion genutzt werden:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; addNode onNw&lt;br /&gt;
Bei der Network-Wide-Inklusion muss kein direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen. Es reicht, wenn das zu inkludierende Gerät über andere bereits inkludierte, netzgespeiste Geräte mit Explorer Frames-Unterstützung erreicht werden kann. Die Network-Wide-Inklusion ist zu bevorzugen, da die Z-Wave-Geräte regelmäßig an Ihren örtlichen Endpositionen inkludiert werden können. Dadurch werden bei der Inklusion direkt die korrekten Routen gespeichert. &lt;br /&gt;
&lt;br /&gt;
Nachdem das Gateway in den Inklusionmodus geschaltet wurde, muss das Gerät in den Inklusionsmodus (Aufnahmemodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. Typisch sind ein- oder dreimaliges Drücken einer Taste am Gerät oder beim Anlegen der Versorgungsspannung. Durch die Inklusion werden Home-ID und Node-ID im Gerät gespeichert. Zudem teilt das Gerät über ein spezielle Funknachricht (NIF=Node Information Frame) dem Controller seinen Gerätetyp und seine Geräteeigenschaften mit. Hierbei werden dem Controller auch die vom Gerät unterstützten Command Classes mitgeteilt. Aus diesen Informationen erzeugt FHEM automatisch durch autocreate das FHEM-Geräte-Device nach dem Namensschema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (an eigene Wünsche anpassbar mit {{Link2CmdRef|Anker=rename|Label=rename}}). Die vom Geräte unterstützen Command Classes, die die in FHEM verfügbaren Befehle bestimmen, werden automatisch im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; des FHEM-Geräte-Device gespeichert. Das Gerät ist damit grundlegend in FHEM definiert und im Raum &amp;quot;ZWave&amp;quot; zu finden. &lt;br /&gt;
&lt;br /&gt;
Nach der Inklusion schaltet FHEM den Inklusionsmodus des Z-Wave Gateway automatisch durch Absetzen des Befehls &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode off&amp;lt;/code&amp;gt; aus und zeigt eine Dialogbox mit dem Ergebnis der Inklusion:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;created ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Inklusion war erfolgreich und es wurde das bezeichnete FHEM-Device durch autocreate angelegt.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;addNode failed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Inklusion ist fehlgeschlagen&lt;br /&gt;
 &lt;br /&gt;
Eine erfolgreiche Inklusion ist zudem am Event &amp;quot;ZW_ADD_NODE_TO_NETWORK protocolDone&amp;quot; im Event monitor und natürlich der Anlage des entsprechenden FHEM-Devices durch autocreate zu erkennen.  Das Scheitern einer Inklusion führt typischerweise zur Ausgabe des Events &amp;quot;ZW_ADD_NODE_TO_NETWORK failed&amp;quot;. Häufigste Ursache sind Controllerprobleme, die sich oftmals durch kurzes Ein- und Ausstecken des Controllers, Neustart des Systems oder Ein- und Ausschalten des FHEM-Server-Computers beheben lassen.&lt;br /&gt;
&lt;br /&gt;
HINWEISE:&amp;lt;br /&amp;gt;&lt;br /&gt;
* Die Network-Wide-Inklusion kann nach derzeitiger Kenntnis auch bei Gateways und Geräten ohne Explorer Frames Unterstützung genutzt werden, da bei diesen Geräten grundsätzlich automatisch auf die Standard-Inklusion umgestellt wird.&lt;br /&gt;
* Bei der Standard-Inklusion ist unter Umständen nur ein geringer Abstand zwischen Gateway und Gerät möglich. Sollte die Inklusion daher nicht durchführbar sein, wenn Gateway und Gerät an ihren örtlichen Endpositionen sind (bevorzugte Variante), dann ist der Abstand zwischen diesen versuchsweise zu verringern. Anschließend bei örtlicher Veränderung die Routen mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWave-Devicename&amp;gt; neighborUpdate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set TYPE=ZWave:FILTER=ZWaveSubDevice=no neighborUpdate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; neu ermitteln lassen. Unter Umständen kann der Abstand nur schrittweise erhöht werden. Dann ist bei jeder Abstandsänderung eine Neuermittlung der Routen notwendig.&lt;br /&gt;
* Der NIF enthält bei manchen Geräten fälschlicherweise nicht alle unterstützten Command Classes. FHEM identifiziert während der Inklusion das Gerät und ergänzt die fehlenden Command Classes aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Weiterhin fehlende Command Classes können im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; manuell am Anfang der Liste entsprechend ergänzt werden. Informationen liefern die unter [[#Links|Links]] aufgeführten Datenbanken. Häufig fehlt die Pflicht-Class BASIC.&lt;br /&gt;
* Bei der hier beschriebenen Inklusion findet die Kommunikation zwischen Controller und Gerät anschließend dauerhaft unverschlüsselt statt. Manche Geräte bieten mit der Command Class SECURITY eine AES-verschlüsselte Kommunikation an. Da die Verschlüsselung zu einer höheren Funklast und Latenzen führt, sollte eine verschlüsselte Kommunikation nur mit Bedacht eingesetzt werden (bspw. bei Schlössern). Als Sonderfall ist das Vorgehen zur secure-Inklusion in der [[#Wie_kann_eine_verschl.C3.BCsselte_Kommunikation_unter_Nutzung_der_Command_Class_SECURITY_eingerichtet_werden.3F|FAQ]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nächster Schritt ist die [[#Assoziation|Assoziation]] des Gerätes mit dem Gateway.&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}&lt;br /&gt;
Z-Wave-Geräte können über Assoziationen direkt mit anderen Z-Wave-Geräten kommunizieren. Dies können zum einen Meldungen über den Status und Zustand der Geräte, als auch direkte Befehle sein. Zum Beispiel kann damit ein Bewegungsmelder eine entdeckte Bewegung an den Controller senden und/oder bei entdeckter Bewegung direkt eine Lampe ein- oder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Die Assoziation zwischen zwei Geräten wird durch Aufnahme des zu steuernden Gerätes in eine oder mehrere Assoziationsgruppe(n) des steuernden Gerätes angelegt. Durch die Wahl der Assoziationsgruppe wird festgelegt, bei welchen Ereignissen welche Nachricht an das assoziierte Gerät verschickt wird. Angaben zu den Ereignissen und versandten Nachrichten an die Geräte in einer bestimmten Assoziationsgruppe stehen in der Bedienungsanleitung des jeweiligen Gerätes.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM Statusmeldungen von Sensoren/Aktoren anzeigen und auch darauf reagieren kann, &#039;&#039;&#039;muss&#039;&#039;&#039; der Controller (&amp;lt;ZWDongle&amp;gt;-Device, &amp;lt;code&amp;gt;CtrlNodeId&amp;lt;/code&amp;gt; = typischerweise 1) immer in der/den passenden Assoziationsgruppe(n) des jeweiligen Gerätes &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; aufgenommen werden:&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;name&amp;gt; associationAdd &amp;lt;associationGroup&amp;gt; &amp;lt;CtrlNodeId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typischerweise ist die Assoziationsgruppe 1 der Geräte für die Statusmeldungen an den Controller vorgesehen (Ausnahme: [[#Fibaro|Fibaro-Geräte ohne ZWave Plus - Zertifizierung]]). Daher nimmt FHEM die Assoziation von Controller mit der Assoziationsgruppe 1 des Gerätes bei der Inklusion immer automatisch vor. Zudem identifiziert FHEM während der Inklusion das Gerät und setzt weitere Assoziationen mit dem Controller für von 1 abweichende Assoziationsgruppen aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Ist keine XML-Config-Datei für das Gerät vorhanden, sind Assoziationen des Controllers mit von 1 abweichenden Assoziationsgruppen oder weiteren Assoziationsgruppen mit dem zuvor genannten Befehl grundsätzlich manuell anzulegen. &lt;br /&gt;
&lt;br /&gt;
Die richtige Anlage der Assoziation(en) des Controllers mit dem Gerät immer prüfen, da dies eine Hauptfehlerquelle bei Funktionsproblemen mit FHEM ist.&lt;br /&gt;
&lt;br /&gt;
Abruf der assoziierten Geräte in einer bestimmten Assoziationsgruppe &amp;lt;associationGroup&amp;gt;:&lt;br /&gt;
 get &amp;lt;name&amp;gt; association &amp;lt;associationGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abruf der assozierten Geräte für alle Assoziationsgruppen eines Gerätes:&lt;br /&gt;
 get &amp;lt;name&amp;gt; associationAll&lt;br /&gt;
&lt;br /&gt;
Nahezu alle in Europa erhältlichen aktuellen Geräte unterstützen die Rückmeldung des Status via Association. Ausnahmen gibt es in Nordamerika, wo aufgrund von Patentansprüchen einige Hersteller auf die Statusrückmeldungen verzichten. Diese Geräte unterstützen in der Regel die Command Class ASSOCIATION nicht.&lt;br /&gt;
&lt;br /&gt;
Nächster Schritt ist die [[#Konfiguration|Konfiguration]] des Gerätes.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}&lt;br /&gt;
Die Standard-Konfiguration eines Gerätes entspricht oftmals nicht den eigenen Wünschen und Anforderungen (Einheiten usw.). Mit den Befehlen der Class CONFIGURATION lässt sich die Konfiguration anpassen. Die zur Konfiguration eines Gerätes notwendigen Angaben zu den Parameternummern, -größen und -werten sind im jeweiligen Geräte-Handbuch bzw. entsprechenden Datenbanken (bspw. [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] oder [http://products.zwavealliance.com/ products.zwavealliance.com]) enthalten. &lt;br /&gt;
&lt;br /&gt;
Die Konfiguration beispielsweise bei Parametergröße 1 lässt sich mit diesem Befehl anpassen:&lt;br /&gt;
 set &amp;lt;name&amp;gt; configByte &amp;lt;Parameternummer&amp;gt; &amp;lt;Parameterwert&amp;gt;&lt;br /&gt;
Für weitere Parametergrößen gibt es die Befehle &amp;lt;code&amp;gt;configWord&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;configLong&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die im Gerät hinterlegten Konfiguration kann pro Parameternummer mit folgendem Befehl abgerufen werden:&lt;br /&gt;
 get &amp;lt;name&amp;gt; config &amp;lt;Parameternummer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zudem bietet FHEM basierend auf den manuell gepflegten XML-Config-Dateien die Möglichkeit, die speziellen Parameternummern des Gerätes mit ihren Parametergrößen und -werte als eigenständige config-Befehle mit Hilfsinformationen einzubinden. Ein manuelles Suchen im Geräte-Handbuch und Nutzung der configByte-, configWord- und configLong-Befehle ist dadurch in vielen Fällen unnötig. Für diese Funktion muss das Gerät von FHEM einmalig durch folgenden Befehl, der bei der Inklusion automatisch ausgeführt wird, identifiziert werden:   &lt;br /&gt;
 get &amp;lt;name&amp;gt; model&lt;br /&gt;
Die Readings &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;modelID&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; werden dadurch erzeugt. In &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; sollte der Klartextname des Gerätes stehen. Zudem sind dann -soweit eine XML-Config Datei für das Gerät existiert- die speziellen set/get-Kommandos configXYZ für das Geräte im Auswahldialog der Detailansicht mit Hilfsinformationen verfügbar:&lt;br /&gt;
[[Datei:Z-Wave_confighelp.PNG|900px|thumb|center|config-Befehl mit Hilfstext]]&lt;br /&gt;
&lt;br /&gt;
Bei vorhandener XML-Config-Datei kann die komplette Konfiguration eines Gerätes abgerufen werden:&lt;br /&gt;
 get &amp;lt;name&amp;gt; configAll&lt;br /&gt;
&lt;br /&gt;
Außerdem wird durch den &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; -Befehl geprüft, ob das Gerät in der [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] und/oder [http://products.zwavealliance.com/ products.zwavealliance.com] enthalten ist. Im Erfolgsfall wird ein Link &amp;quot;Details in pepper DB&amp;quot; und/oder &amp;quot;Details in alliance DB&amp;quot; zum entsprechenden Geräteeintrag in der jeweiligen Datenbank unten in der Detailansicht des FHEM-Geräte-Devices angelegt und ein Bild des Gerätes in die Detailansicht eingebunden.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf von &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; ist auch für die Nutzung der Class MANUFACTURER_PROPRIETARY zwingende Einsatzvoraussetzung.&lt;br /&gt;
&lt;br /&gt;
=== Entfernen eines Z-Wave-Geräts / Exklusion ===&lt;br /&gt;
Durch die Exklusion wird die Home-ID und Node-ID aus dem Gerät und das Gerät selbst aus der Node-List des Controllers gelöscht. Erst nach einer Exklusion kann das Gerät in ein anderes Z-Wave-Netz aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Zuerst wird der Z-Wave Gateway in den Standard-Modus zur Exklusion (Ausschluss) von Geräten gesetzt:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode on&lt;br /&gt;
&lt;br /&gt;
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt dem obigen Befehl besser der Network-Wide-Modus für die Exklusion genutzt werden (siehe auch Erläuterungen zu Standard- versus Network-Wide-Inklusion unter [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]]):&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode onNw&lt;br /&gt;
&lt;br /&gt;
Danach muss das Gerät in den Exklusionsmodus (Ausschlussmodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. &lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Exklusionsmodus am Z-Wave Gateway wieder ausgeschaltet:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode off&lt;br /&gt;
&lt;br /&gt;
Das FHEM-Device muss nach der Exklusion manuell durch &amp;lt;code&amp;gt;delete &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Die durch die Exklusion frei gewordene NodeID wird nicht bei der nächsten Inklusion wiederverwendet, sondern es wird die höchste noch nicht verwendete NodeID genutzt.&lt;br /&gt;
&lt;br /&gt;
=== Erneutes Hinzufügen eines bereits registrierten Z-Wave Geräts ===&lt;br /&gt;
Die an einem Z-Wave-Gateway bereits registrierten/inkludierten Geräte sind im Gateway selbst abgespeichert und können durch FHEM jederzeit wieder abgerufen werden. Dies kann man in folgenden Fällen sinnvoll nutzen:&lt;br /&gt;
* Inklusion mit einem batteriegespeisten ZWave-Gateway (bspw. Aeon Labs Z-Stick) ohne FHEM-Server-Anschluss während der Inklusion&lt;br /&gt;
* Umstieg eines ZWave-Netzwerkes von Fremdsoftware auf FHEM  &lt;br /&gt;
* Vollständiger oder teilweiser Verlust der FHEM-Konfiguration&lt;br /&gt;
&lt;br /&gt;
Eine Node-Liste aller inkludierten Geräte des Gateways wird abgerufen durch:&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; nodeList&lt;br /&gt;
Es wird eine Liste aller im Gateway inkludierten Gerät inklusive Gateway selbst zurückgeliefert. Sofern ein Gerät bereits als FHEM-Device angelegt wurde, wird der FHEM-Device-Name in der nodeList angezeigt. Dies ist für das Gateway selbst immer der Fall. Alle noch nicht in FHEM angelegten Geräte, werden als &amp;quot;UNKNOWN_x&amp;quot; ausgegeben, wobei x die ID des betreffenden Gerätes ist.&lt;br /&gt;
&lt;br /&gt;
Mit dem folgenden Befehl wird beispielsweise das bereits im Gateway inkludierte Gerät mit der ID 2 (in der nodeList angezeigt als &amp;quot;UNKNOWN_2&amp;quot;) in FHEM durch autocreate definiert:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; createNode 2&lt;br /&gt;
&lt;br /&gt;
Batteriebetriebene Geräte müssen bei Absetzen des &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt;-Befehls wach sein, damit der Befehl verarbeitet werden kann. Dies erreicht man, indem man das Gerät auf &amp;quot;permanent wach&amp;quot; stellt. Falls das Gerät diese Funktion nicht anbietet, muss man es manuell aufwecken und max. 2 Sekunden später den &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt;-Befehl absetzen. Alternativ kann das batteriebetriebene Gerät durch Versand des NIF vom Gerät aus automatisch in FHEM erzeugt werden: Hierzu am Gerät die Taste zum Versand des NIF drücken und &amp;lt;code&amp;gt;autocreate&amp;lt;/code&amp;gt; legt das FHEM-Device an; der Aufruf von &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt; entfällt dann.&lt;br /&gt;
&lt;br /&gt;
== Geräte-Besonderheiten ==&lt;br /&gt;
=== batteriebetriebene Geräte ===&lt;br /&gt;
Batteriebetriebenen Geräten können hinsichtlich ihrer Empfangsbereitschaft unterschieden werden in&lt;br /&gt;
&lt;br /&gt;
* Wakeup-Geräte&lt;br /&gt;
* FLIRS-Geräte&lt;br /&gt;
&lt;br /&gt;
==== Wakeup-Geräte ====&lt;br /&gt;
Wakeup-Geräte sind momentan die häufigste Art von batteriebetriebenen Z-Wave Geräten. Sie sind erkennbar an der Unterstützung der Command Class WAKE_UP.&lt;br /&gt;
Zur Verlängerung der Batterielaufzeit legen sich batteriebetriebene Wakeup-Geräte „schlafen“ und wachen (Wakeup) nur in konfigurierbaren Intervallen auf, um Befehle zu verarbeiten. Das Aufwachen signalisieren die Geräte durch den Versand einer Nachricht &amp;quot;wakeup notification&amp;quot;. Daraufhin senden FHEM und andere Geräte ihre bis dahin gesammelten Befehle, die dann verarbeitet bzw. beantwortet werden. Anschließend gehen die batteriebetriebenen Geräte wieder in den Schlafmodus.&lt;br /&gt;
&lt;br /&gt;
FHEM teilt bei set/get-Befehlen an batteriebetriebene Geräte über einen Hinweis der Form&lt;br /&gt;
:&amp;lt;code&amp;gt;Scheduled for sending after WAKEUP&amp;lt;/code&amp;gt; &lt;br /&gt;
::oder&lt;br /&gt;
:&amp;lt;code&amp;gt;Scheduled get requests for sending after WAKEUP&amp;lt;/code&amp;gt;&lt;br /&gt;
mit, dass der Befehl im Sendstack des FHEM-Geräte-Devices abgespeichert wurde und bei der nächsten &amp;quot;wakeup notification&amp;quot; an das Gerät versendet wird. Ein Versand der Befehle im Sendstack findet grundsätzlich ausschließlich nach Erhalt der &amp;quot;wakeup notification&amp;quot;-Nachricht statt, selbst wenn das Gerät zwischendurch andere Telegramme (bspw. Bewegungsmeldung, Temperatur) an den Controller verschickt. Nur nach Versand der &amp;quot;wakeup notification&amp;quot; ist das batteriebetriebene Gerät grundsätzlich in der Lage (&amp;quot;wach genug&amp;quot;), Telegramme korrekt zu empfangen und zu verarbeiten.&lt;br /&gt;
&lt;br /&gt;
Wie viele Nachrichten im Sendstack auf einen Versand an das Gerät warten, ist im Internal &amp;lt;code&amp;gt;cmdsPending&amp;lt;/code&amp;gt; des zugehörigen FHEM-Devices ersichtlich. Welche Nachrichten (Befehle) im Sendstack warten, ist in der Ausgabe des Befehls &amp;lt;code&amp;gt;[[list]] &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt; erkennbar: Unter der Überschrift Sendstack sind alle wartenden Nachrichten als Rohnachrichten aufgeführt. Der Sendstack wird beim Beenden von FHEM nicht gespeichert. Durch Beenden von FHEM (beispielsweise durch &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt;) geht der Sendstack der Geräte daher verloren.&lt;br /&gt;
&lt;br /&gt;
Das Wakeup-Interval und der Empfänger der &amp;quot;wakeup notification&amp;quot; wird wie folgt konfiguriert:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; wakeupInterval &amp;lt;time&amp;gt; &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;time&amp;gt;&amp;lt;/nowiki&amp;gt; ist die Zeit in Sekunden zwischen den Intervallen und &amp;lt;nodeID&amp;gt; der gewünschte Empfänger der &amp;quot;wakeup notification&amp;quot;; in der Regel ist dies &#039;&#039;&#039;immer&#039;&#039;&#039; der Controller &amp;lt;CtrlNodeId&amp;gt;. Viele Geräte kommen im Auslieferungszustand mit der NodeID 255. Die &amp;quot;wakeup notification&amp;quot; wird dann als Broadcast ohne Nutzung von Routing an alle erreichbaren Geräte gesendet. Hier sollte die Konfiguration auf die NodeID des Controllers geändert werden, da dadurch die &amp;quot;wakeup notification&amp;quot; geroutet wird und größere Entfernungen zwischen Gerät und Controller möglich sind. Zudem ist dies robuster und spart zusätzlich noch Batterielaufzeit. Darum setzt FHEM bei der Inklusion von WakeUp-Geräten &#039;&#039;&#039;automatisch&#039;&#039;&#039; den Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; wakeupInterval 86400 &amp;lt;ControllerNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ab. Bei abweichenden eigenen Vorstellungen ist dies gegebenenfalls anzupassen. Bei Geräten mit V2 der Command Class WAKE_UP kann das vom Hersteller vorgesehene Standard-wakeupInterval mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; wakeupIntervalCapabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vom Gerät abgerufen werden. Die Einstellungen von wakeupInterval nach Inklusion und nach jeder Änderung immer mit der Abfrage &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; wakeupInterval&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; überprüfen.&lt;br /&gt;
&lt;br /&gt;
Ein Aufwachen und Versand der &amp;quot;wakeup notification&amp;quot; von batteriebetriebenen Geräten kann für die [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] manuell erzwungen werden. Hierzu bringt man das Gerät normalerweise in den Inklusionsmodus oder findet in der Bedienungsanleitung gegebenenfalls andere Informationen. Bitte beachten, dass dann je nach Gerät nur eine geringe Entfernung von Gateway und Gerät vorhanden sein darf (direkte Erreichbarkeit). Alternativ kann für die Dauer der Assoziation und Konfiguration das Wakeup-Interval verkürzt werden (beispielsweise auf 60 Sekunden), wodurch das Routing genutzt werden kann und größere Entfernungen zwischen Gateway und Gerät überbrückt werden können. Anschließend das Wakeup-Interval wieder auf eine batterieschonenende Dauer einzustellen.&lt;br /&gt;
&lt;br /&gt;
Einzelne batteriebetriebene Gerät lassen sich für längere Zeit auf &amp;quot;wach&amp;quot; bzw. permanent &amp;quot;wach&amp;quot; stellen. Dann aus dem Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen, damit Befehle in diesem Gerätemodus von FHEM direkt verschickt werden. Nach Ausschalten des &amp;quot;wach&amp;quot;-Modus &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; wieder im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Bei Konfigurationsänderungen an batteriebetriebenen Geräten mit &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; config...&amp;lt;/code&amp;gt; sollte die korrekte Verarbeitung der Befehle immer mit dem entsprechenden &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; config...&amp;lt;/code&amp;gt; oder -falls vorhanden- mit &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; configAll&amp;lt;/code&amp;gt; überprüft werden, um eventuelle Funk-Telegrammverluste sofort festzustellen.&lt;br /&gt;
&lt;br /&gt;
==== FLIRS-Geräte ====&lt;br /&gt;
Ein batteriebetriebene FLIRS (frequently listening routing slave) Gerät wacht in sehr kurzen Zeitabständen (250ms oder 1000ms) auf und prüft, ob ein Funksignal vorliegt. Liegt kein Funksignal vor geht das Gerät wieder in Tiefschlaf. Zum Aufwecken eines FLIRS-Gerätes ist ein dauerhaftes Funksignal -der Wakeup-Beam-, notwendig, das etwas länger als die Aufweckzeitabstände sein muss. Näher beschrieben unter anderem [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF hier]. &lt;br /&gt;
&lt;br /&gt;
FLIRS-Geräte haben nicht die Command Class WAKE_UP und arbeiten deshalb nicht mit &amp;quot;wakeup notification&amp;quot;. Aus Sicht des FHEM-Nutzers sind die bekannten FLIRS-Geräte (Sirenen von Vision und Popp) nicht anders zu bedienen/einzurichten als netzgespeiste Geräte. Wakeup-Beam und andere Besonderheiten werden unsichtbar für den Nutzer automatisch abgewickelt.&lt;br /&gt;
&lt;br /&gt;
=== Aeon Labs / Aeotec ===&lt;br /&gt;
Ausführliche Handbücher und technische Informationen auf https://aeotec.freshdesk.com/support/home&lt;br /&gt;
&lt;br /&gt;
==== Multi Sensor 5 ====&lt;br /&gt;
* aktuellste Firmware installieren&lt;br /&gt;
* Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; um &amp;lt;code&amp;gt;BASIC&amp;lt;/code&amp;gt; ergänzen (ab [[version|Modulversion]] 8824/25.6.2015 wird das automatisch bei der Inklusion durchgeführt)&lt;br /&gt;
* bei USB-Anschluss aus Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen&lt;br /&gt;
* Parameter 101 auf 225 (oder 224 bei USB-Anschluss) setzen mit &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; configGroup1Reports 225&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; configLong 101 225&amp;lt;/code&amp;gt;, um Batteriezustand (nicht bei 224), Temperatur, Feuchte und Helligkeit regelmäßig zu erhalten. Das Sende-Intervall wird duch &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; configGroup1Interval &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; festgelegt (Standard 720 Sek).&lt;br /&gt;
* [http://devel.pepper1.net/zwavedb/device/407 Paramterübersicht pepper-Datenbank]&lt;br /&gt;
siehe {{Link2Forum|Topic=34505|Message=268913}}&lt;br /&gt;
&lt;br /&gt;
==== Multisensor 6 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40393}}&lt;br /&gt;
* arbeitet bei USB-Anschluß als Router&lt;br /&gt;
* bei USB-Anschluss aus Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen&lt;br /&gt;
* die &amp;lt;code&amp;gt;configGroupxInterval&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;configxxxReportingThreshold&amp;lt;/code&amp;gt; Einstellungen wirken nur bei USB-Anschluss, im reinen Batteriebetrieb werden die Sensordaten nur bei einem &amp;lt;code&amp;gt;wakeup&amp;lt;/code&amp;gt; übertragen&lt;br /&gt;
&lt;br /&gt;
==== Aeotec LED Bulb ZW098-C55 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40504}}&lt;br /&gt;
&lt;br /&gt;
=== Danfoss ===&lt;br /&gt;
==== DAN_LC-13 Heizungsthermostat LC-13 (014G0013) ====&lt;br /&gt;
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem &amp;lt;code&amp;gt;at&amp;lt;/code&amp;gt; abgefragt werden ({{Link2Forum|Topic=32145|Message=260795}}):&lt;br /&gt;
 define Atdanfoss at +*00:30 get &amp;lt;name&amp;gt; battery&lt;br /&gt;
Auf dem Markt sind mehrere Varianten des Thermostates LC-13 erhältlich. Darum beim Kauf unbedingt auf die genaue Bezeichnung LC-13 (014G0013) achten ({{Link2Forum|Topic=38041|Message=303146}}). &lt;br /&gt;
&lt;br /&gt;
=== devolo ===&lt;br /&gt;
Ausführliche Handbücher auf http://products.z-wavealliance.org&lt;br /&gt;
&lt;br /&gt;
==== MT02648 Tür-/Fenster Kontakt 3in1 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=41337}}&lt;br /&gt;
&lt;br /&gt;
=== DüWI ===&lt;br /&gt;
Geräte von DÜWI liefern bei örtlicher Betätigung kein automatisches Funk-Signal über die Statusänderung. Das liese sich nur durch eine regelmäßige Statusabfrage durch FHEM (beispielsweise &amp;lt;code&amp;gt;define Status_Abfrage at +*00:03:00 get &amp;lt;name&amp;gt; swmStatus&amp;lt;/code&amp;gt;) beheben.&lt;br /&gt;
Einige Produkte von [http://zwave.me Z-Wave.Me] basieren auf DÜWI-Geräten. Diese Z-Wave.Me Produkte haben jedoch eine erweiterte Firmware, welche die genannte und weitere Firmware-Schwächen der Original-Produkte von DÜWI behebt.&lt;br /&gt;
&lt;br /&gt;
=== Everspring ===&lt;br /&gt;
==== AN145 Sockelmodul E27 ====&lt;br /&gt;
Statusabfrage ohne permanente Abfrage: {{Link2Forum|Topic=48864|Message=405545|Beitrag}}&lt;br /&gt;
&lt;br /&gt;
=== Fibaro ===&lt;br /&gt;
Association Group für Übermittlung von Statusinformationen an den Controller:&lt;br /&gt;
* &amp;quot;alte&amp;quot; ZWave-Geräte (kein ZWave-Plus): häufig Association Group 3&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; associationAdd 3 &amp;lt;CtrlNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Bei diesen Geräten empfiehlt es sich zur Funklastreduzierung und Problemminimierung zu prüfen, ob die von FHEM automatisch vorgenommene Assoziation des Controllers mit der Association Group 1 gelöscht werden kann (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; associationDel 1 &amp;lt;CtrlNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). Nahezu immer werden in Association Group 1 die gleichen Infos, nur mit einer anderen Command Class, wie in der Association Group 3 an den Controller übermittelt.&lt;br /&gt;
* ZWave Plus-Geräte: Association Group 1 (&amp;quot;lifeline&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== FGSS-001 / FGSD-002 Rauchmelder ====&lt;br /&gt;
* nicht untereinander vernetzbar&lt;br /&gt;
* keine Alarmauslösung/Sirenenfunktion durch ZWave-Zentralen&lt;br /&gt;
&lt;br /&gt;
==== FGS-222 Relais Unterputzeinsatz ====&lt;br /&gt;
Bei der Inklusion werden von FHEM 3 Devices angelegt:&lt;br /&gt;
* Hauptdevice (Steuerung und automatischer Status für Kanal 1 und kanalübergreifende Funktionen)&lt;br /&gt;
* Device für Endpoint 1 (Steuerung Kanal 1)&lt;br /&gt;
* Device für Endpoint 2 (Steuerung und automatischer Status von Kanal 2)&lt;br /&gt;
Die Firmware des FGS-222 übermittelt den Status für Kanal 1 automatisch immer ausschließlich an das Hauptdevice. Die Steuerung von Kanal 1 kann hingegen sowohl über das Hauptdevice als auch über das Device für Endpoint 1 erfolgen. Das Device für Endpoint 1 ist somit nicht zwingend erforderlich und kann grundsätzlich gelöscht oder in den room hidden verschoben werden.&lt;br /&gt;
&lt;br /&gt;
Details: {{Link2Forum|Topic=50176}}&lt;br /&gt;
&lt;br /&gt;
Hinweis zum Reset: {{Link2Forum|Topic=55190|Message=469393}}&lt;br /&gt;
&lt;br /&gt;
==== FGK-101 Tür/Fensterkontakt ====&lt;br /&gt;
* Besonderheiten bei Anschluss eines Temperatursensors: {{Link2Forum|Topic=38012}}&lt;br /&gt;
&lt;br /&gt;
=== GE ===&lt;br /&gt;
==== GE (Model t.b.d) ====&lt;br /&gt;
Dieser Schalter unterstützt keine Statusrückmeldungen.&lt;br /&gt;
&lt;br /&gt;
=== Merten ===&lt;br /&gt;
Laut {{Link2Forum|Topic=38133}} müssen bei einigen Merten-Geräten, die mit Fremdsoftware inkludiert wurden, gegebenenfalls die Geräte wieder exkludiert und dann erneut mit FHEM inkludiert werden, damit Assoziationen mit FHEM gesetzt werden können.&lt;br /&gt;
&lt;br /&gt;
=== Philio ===&lt;br /&gt;
==== PHI_PAN04 Relais Unterputzeinsatz 2 Schalter a 1.5kW mit Messfunktion ====&lt;br /&gt;
siehe {{Link2Forum|Topic=28046}}&lt;br /&gt;
&lt;br /&gt;
=== Popp ===&lt;br /&gt;
==== POPE004001 Z-Wave Rauchmelder mit Innensirene ====&lt;br /&gt;
siehe {{Link2Forum|Topic=39856}}&lt;br /&gt;
==== POPE005107 Z-Wave Außensirene ====&lt;br /&gt;
siehe {{Link2Forum|Topic=42736}}&amp;lt;br&amp;gt;&lt;br /&gt;
Alte Firmwareversionen haben einen Bug bei der Übermittlung von negativen Temperaturen. Eine Lösungsvariante über ein &amp;lt;code&amp;gt;userReadings&amp;lt;/code&amp;gt; findet sich auch im verlinkten Thema. &lt;br /&gt;
==== POPE009006 Z-Wave Wall Plug Switch ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40771}}&lt;br /&gt;
==== POPE009402 10Year Smoke Detector ====&lt;br /&gt;
Die erste Firmwareversion hat eine fehlerhafte modelID.  Diese Rauchmelder wird dadurch fälschlich als [[Z-Wave#POPE005107_Z-Wave_Au.C3.9Fensirene|Popp Aussensirene]] in FHEM angezeigt. Neuere Geräte werden laut Popp mit der korrekten modelID ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
=== Z-Wave.Me ===&lt;br /&gt;
==== ZME_RC2 Fernbedienung ====&lt;br /&gt;
siehe {{Link2Forum|Topic=35513}}&amp;lt;BR&amp;gt;&lt;br /&gt;
Das Forenthema enthält eine detaillierte Beschreibung der Nutzung der Class MULTI_CHANNEL_ASSOCIATION.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Geräte-Vergleich ==&lt;br /&gt;
=== Doppel-Relais ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Eigenschaft !! FIBARO Double Switch 2-FGS-223 !! Qubino Flush 2 relays  !! Philio-PAN04 1&lt;br /&gt;
|-&lt;br /&gt;
| Funktion || Doppel-Relais || Doppel-Relais || Doppel-Relais&lt;br /&gt;
|-&lt;br /&gt;
| Standby-Leistung || ca. 0.4W || ca. 0.4W || ca. 0.5W&lt;br /&gt;
|-&lt;br /&gt;
| Reaktion beim Schalten am Tastereingang || schnell, kaum merkliche Verzögerung ||  schnell, kaum merkliche Verzögerung || langsam, unangenehm langes drücken des Tasters nötig &amp;gt;1 Sekunde &lt;br /&gt;
|-&lt;br /&gt;
| Geräte in FHEM || 3 &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 || 3  &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 || 4  &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 &amp;lt;br&amp;gt; x.03 Summengerät (ähnlich Hauptgerät, überflüssig)&lt;br /&gt;
|-&lt;br /&gt;
| Zustand Hauptgerät || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais&lt;br /&gt;
|-&lt;br /&gt;
| Statuswechsel Report vom Gerät zum FHEM || ca. 1 Sekunde || ca. 3 Sekunden || ca. 3-4 Sekunden&lt;br /&gt;
|-&lt;br /&gt;
| Empfänger des Status Reports || Hauptgerät und Untergeräte || Nur Hauptgerät &amp;lt;br&amp;gt; Aktualisierung der Untergeräte nur bei aktiver Abfrage  || Nur Hauptgerät &amp;lt;br&amp;gt;Aktualisierung der Untergeräte nur bei aktiver Abfrage &lt;br /&gt;
|-&lt;br /&gt;
| Leistungsmessung || Separat für Untergeräte || Nur Summe || Nur Summe&lt;br /&gt;
|-&lt;br /&gt;
| Sicherung nötig / Strom || ja, 2x 6.5A, Summe max 10A || ja, max 2x 4A  || nein, 2x 6.5A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
* Grundlageninformation &amp;quot;Z-Wave-Haupt-Anleitung&amp;quot;: [http://www.zwave.de/z-wave-funknetz-einrichten-und-betreiben/ Wie errichte und betreibe ich ein Z-Wave basiertes Funknetz]&lt;br /&gt;
* [http://www.zwave.de/buch-z-wave-grundlagen/ Buch] &amp;quot;Z-Wave: Die Funktechnologie für das Smart Home&amp;quot; von Dr. Christian Paetz (Paetz &amp;quot;is the primary European representative for the Z-Wave Alliance&amp;quot; [http://z-wavealliance.org/global-contacts/])&lt;br /&gt;
* Z-Wave-Produktdatenbank mit Angabe zur Zertifizierung, Handbüchern und weiteren Detailinfos (Z-Wave oder [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus]): http://products.z-wavealliance.org (englisch)&lt;br /&gt;
* herstellerübergreifende Datenbank mit Bedienungsanleitungen zu Z-Wave-Geräten: http://www.zwave.de/handbuecher/ oder http://manuals.zwaveeurope.com (mehrsprachig)&lt;br /&gt;
* herstellerübergreifende Datenbank mit technischen Informationen zu Z-Wave-Geräten (Z-Wave Device Library): http://devel.pepper1.net/zwavedb/ (englisch; wird derzeit nicht mehr aktualisiert)&lt;br /&gt;
* informative Webseiten zu Z-Wave:&lt;br /&gt;
** [http://www.z-wavealliance.org/ http://www.z-wavealliance.org/] (englisch)&lt;br /&gt;
** [http://www.zwaveeurope.com/ http://www.zwaveeurope.com/] (englisch)&lt;br /&gt;
** [http://www.zwave.de/ http://www.zwave.de/] (deutsch)&lt;br /&gt;
** [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF Introductory Guide to Z-Wave-Technology von Honeywell] (englisch; nicht auf aktuellem Stand)&lt;br /&gt;
&lt;br /&gt;
=== Informationsquellen zur Einbindung von Command Classes ===&lt;br /&gt;
Offizielle und ausführliche Informationen von Sigma Designs (veröffentlicht am 31.08.2016):&lt;br /&gt;
* [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen (seit Veröffentlichung der Z-Wave Spezifikationen am 31.08.2016 geringe Relevanz)&lt;br /&gt;
* [https://github.com/yepher/RaZBerry Infos zu Command Classes (ausführlich; insbesondere im Verzeichnis &amp;quot;docs&amp;quot;), RaZBerry und Z-Wave allgemein], englisch&lt;br /&gt;
* [http://220.135.186.178/zwave/example/ Übersicht von Command Classes und deren Rückgabewerten mit Unterscheidung der Class-Versionen], englisch&lt;br /&gt;
* Code von http://www.openzwave.org (https://github.com/OpenZWave/open-zwave) und http://www.openhab.org (Z-Wave binding: https://github.com/cdjackson/openhab)&lt;br /&gt;
* eine Java-API-Beschreibung mit Hinweisen zu Unterschieden von Class-Versionen: http://dz.prosyst.com/pdoc/mBS_SH_SDK_8.1/modules/zwave/api/driver/index.html&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== Welche Infos sollten Anfragen im ZWave-Forum enthalten? ===&lt;br /&gt;
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ergibt Ausgabe &amp;quot;nothing to do...&amp;quot;&lt;br /&gt;
* detaillierte Beschreibung des Problems&lt;br /&gt;
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)&lt;br /&gt;
* list des jeweiligen FHEM-Devices (Ausgabe von &amp;lt;code&amp;gt;list &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
::Bitte vor Aufruf des list-Befehls -wenn vorhanden/möglich- folgende Befehle ausführen und Ergebnis abwarten:&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; associationAll&amp;lt;/code&amp;gt; &lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; configAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; versionClassAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcaAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; wakeupInterval&amp;lt;/code&amp;gt; (nur bei batteriebetriebenen Geräten)&lt;br /&gt;
* passender Ausschnitt aus dem Logfile (siehe Link im FHEM-Menü links) generiert mit den gesetzten Attributen&lt;br /&gt;
::*&amp;lt;code&amp;gt;attr &amp;lt;ZWDongle&amp;gt; verbose 5&amp;lt;/code&amp;gt; und&lt;br /&gt;
::*&amp;lt;code&amp;gt;attr global mseclog 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Welche Schritte sind für die Einbindung von ZWave-Geräten in FHEM mindestens durchzuführen? ===&lt;br /&gt;
Voraussetzung: ZWave-Gateway ist erfolgreich eingebunden!&lt;br /&gt;
# [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes&lt;br /&gt;
# [[#Assoziation|Assoziation]] der Assoziationsgruppe(n) des Gerätes mit dem Gateway&lt;br /&gt;
# [[#Konfiguration|Konfiguration]] des Gerätes&lt;br /&gt;
&lt;br /&gt;
=== Warum bleibt der Status (STATE) des neu inkludierten Gerätes dauerhaft auf &amp;quot;associationAdd &amp;lt;associationGroup&amp;gt; &amp;lt;CtrlNodeId&amp;gt;&amp;quot; stehen? ===&lt;br /&gt;
FHEM setzt das Reading &amp;quot;state&amp;quot;, das den STATE bestimmt, nicht bei allen ZWave-Devices mit vordefinierten Standardwerten. Daher bleibt der bei der Inklusion automatisch abgesetzte &amp;quot;associationAdd&amp;quot;-Befehl unter Umständen im STATE stehen, bis der Anwender den STATE über die Vergabe des Attributes &amp;lt;code&amp;gt;{{Link2CmdRef|Anker=stateFormat|Label=stateFormat}}&amp;lt;/code&amp;gt; manuell an seine Bedürfnisse angepasst hat.&lt;br /&gt;
(weitergehende Info zum state/STATE/stateFormat: [[DevelopmentState]])&lt;br /&gt;
&lt;br /&gt;
=== Wie können bei mehrkanaligen Aktoren die zusätzlichen Kanäle (&amp;gt;1) angesprochen werden? ===&lt;br /&gt;
* Bei der [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes wird das Hauptdevice mit dem Namen &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; und die Devices für alle Kanäle (Endpoints) nach dem Namensschema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;.&amp;lt;EndpointNr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; automatisch angelegt. Jedes dieser FHEM-Devices spricht regelmäßig einen bestimmten Kanal des Gerätes an; einige Geräte sprechen mit dem Hauptdevice jedoch das gesamte Gerät mit allen Kanälen an (Bedienungsanleitung beachten).&lt;br /&gt;
* Manuell werden Devices für zusätzliche Kanäle mit Hilfe der Befehle &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcEndpoints&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcCapability &amp;lt;chid&amp;gt;&amp;lt;/code&amp;gt; aus der Class MULTI_CHANNEL ermittelt bzw. einzeln über autocreate angelegt (Details und Beispiel siehe {{Link2CmdRef|Anker=ZWaveget}}). Mit dem Befehl &amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; mcCreateAll&amp;lt;/code&amp;gt; werden automatisch alle Kanäle des Gerätes durch autocreate als eigene Devices in FHEM angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man die SDK-Version eines Gerätes herausfinden? ===&lt;br /&gt;
Mit FHEM alleine kann eine [[#Grobermittlung|Grobermittlung]] der SDK-Version vorgenommen werden, die aber für einige Zwecke bereits ausreichend ist. Soll eine [[#Detailermittlung|Detailermittlung]] der genauen SDK-Version erfolgen, dann müssen die mit FHEM ermittelten Werte anhand externer Quellen übersetzt werden.&lt;br /&gt;
==== Grobermittlung ====&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; nodeInfo &amp;lt;dezimale nodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; liefert das Reading &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nodeInfo_&amp;lt;dezimale nodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
Die Angabe im Reading hinter &amp;lt;code&amp;gt;ProtocolVers:&amp;lt;/code&amp;gt; lässt grobe Rückschlüsse zu. Mögliche (bekannte) Werte:&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; -&amp;gt; bspw. keine Explorer Frames, keine SUC-Unterstützung (veraltet, keine bekannten Geräte mehr im Handel)&lt;br /&gt;
* &amp;lt;code&amp;gt;SDK5.0x+4.2x&amp;lt;/code&amp;gt; -&amp;gt; bspw. keine Explorer Frames, teilweise SUC-Unterstützung&lt;br /&gt;
* &amp;lt;code&amp;gt;SDK4.5x+6.0x&amp;lt;/code&amp;gt; -&amp;gt; bspw. Explorer Frames- und SUC-Unterstützung (Reading-Wert wird auch bei SDK 6.5x = Z-Wave Plus angezeigt)&lt;br /&gt;
==== Detailermittlung ====&lt;br /&gt;
Durch den Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; version&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; kann man die ZWave-Protokoll-Version von Geräten und Controller abfragen. Mit Unterstützung von Übersetzungstabellen&lt;br /&gt;
* http://wiki.micasaverde.com/index.php/ZWave_Protocol_Version&lt;br /&gt;
* Suche nach sdkids.xml in einer Suchmaschine&lt;br /&gt;
kann aus der Protokoll-Version das genutzte SDK festgestellt werden.&lt;br /&gt;
&lt;br /&gt;
Beispielsweis entspricht das Reading eines Gerätes &amp;quot;Lib 6 &#039;&#039;&#039;Prot 2.64&#039;&#039;&#039; App 1.6&amp;quot; dem SDK 5.02 Patch 2 oder eines Controller &amp;quot;Z-Wave &#039;&#039;&#039;3.41&#039;&#039;&#039; STATIC_CONTROLLER&amp;quot; dem SDK 6.02.00.&lt;br /&gt;
 &lt;br /&gt;
HINWEIS: Bei der Vergabe der Protokoll-Version und zugehörigem SDK gibt es keine erkennbare Logik: Eine höhere Protokoll-Version steht nicht notwendig für eine höheres SDK.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann eine verschlüsselte Kommunikation unter Nutzung der Command Class SECURITY eingerichtet werden? ===&lt;br /&gt;
{{Randnotiz|RNText=FHEM unterstützt derzeit ausschließlich SECURITY 1 und nicht das mit dem SDK 6.7 neu eingeführte SECURITY 2 (S2). Soweit bekannt, sind S2-Geräte rückwärtskompatibel zu SECURITY 1.}}&lt;br /&gt;
Die verschlüsselte Kommunikation zwischen Controller und Endgerät setzt eine secure-Inklusion voraus. Bereits mit der Inklusion wird entschieden, ob die Kommunikation von Controller und Endgerät dauerhaft verschlüsselt oder unverschlüsselt erfolgt. Ist ein Gerät bereits normal inkludiert und entscheidet man sich nachträglich für eine verschlüsselte Kommunikation, so ist das nur möglich, indem das Gerät exkludiert und dann wieder secure inkludiert wird.&lt;br /&gt;
&lt;br /&gt;
Ob die Verschlüsselung bei einem Gerät mit Unterstützung der Command Class SECURITY genutzt werden soll, sollte genau überlegt werden. Die Verschlüsselung führt zu einem deutlich größeren Funkverkehr zur Ausführung eines Befehls und teilweise auch zu spürbaren Latenzen.&lt;br /&gt;
&lt;br /&gt;
Vorarbeiten:&lt;br /&gt;
* Das Perl-Modul Crypt-Rijndael muss installiert sein.&lt;br /&gt;
* Das Attribut &amp;lt;code&amp;gt;networkKey&amp;lt;/code&amp;gt; muss mit einem 32-Zeichen langen Hexzahl beim ZWDongle angelegt werden. Dieser Schlüssel sollte nicht veröffentlicht werden und auch zusätzlich separat (bspw. auf Papier) festgehalten werden. Bei Verlust des Attributes und Schlüssels ist eine Kommunikation nur nach erneuter Inklusion möglich.&lt;br /&gt;
&lt;br /&gt;
Ablauf der secure-Inklusion:&lt;br /&gt;
* Controller in den Modus zur secure-Inklusion schalten:&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode onSec&amp;lt;/code&amp;gt; für die Standard-secure-Inklusion&lt;br /&gt;
: oder alternativ&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode onNwSec&amp;lt;/code&amp;gt; für die Nework-Wide-secure-Inklusion&lt;br /&gt;
* Gerät gemäß Handbuch in den Modus zur secure-Inklusion bringen (teilweise ist jeweils für secure- und normale Inklusion ein anderes Vorgehen notwendig!)&lt;br /&gt;
* Das Gerät sollte jetzt automatisch erkannt und das FHEM-Device durch &amp;lt;code&amp;gt;autocreate&amp;lt;/code&amp;gt; angelegt werden. Die secure-inkludierten Geräte haben ein zusätzliches Attribut &amp;lt;code&amp;gt;secure_classes&amp;lt;/code&amp;gt; in dem die Command Classes deren Kommunikation verschlüsselt abläuft aufgelistet sind. Nicht in diesem Attribut, aber in &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; aufgeführte Command Classes wickeln die Kommunikation weiterhin unverschlüsslt ab.&lt;br /&gt;
* Inklusionsmodus des Controllers ausschalten:&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addnode off&amp;lt;/code&amp;gt;&lt;br /&gt;
* Das Vorgehen in FHEM unterscheidet sich von nun an nicht von normal (unverschlüsselt) inkludierten Geräten. Die Verschlüsselung läuft für den Anwender transparent ab. Darum anschließend [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] vornehmen.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man ohne Exklusion Nodes des Controllers löschen? ===&lt;br /&gt;
HINWEIS: Geräte sollten grundsätzlich immer über eine Exklusion aus der Nodelist des Controllers gelöscht werden. Das nachfolgend geschilderte Vorgehen ist nur in Sonderfällen (bspw. Gerätedefekt, gebraucht gekauftes Gateway) anzuwenden.&lt;br /&gt;
&lt;br /&gt;
Nicht mehr zu erreichende/reagierende Nodes (Geräte) können manuell mit dem Befehl &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; gelöscht werden. Dazu muss sich der betroffene Node auf der FailedNodeList des Controllers befinden. Auf die FailedNodeList kommen netzbetriebene Geräte automatisch, wenn sie vom Controller nicht mehr per Funk erreicht werden. Batteriebetriebene Geräte müssen manuell auf die FailedNodelist gesetzt werden, da der Controller nicht feststellen kann, ob sie nur langfristig &amp;quot;schlafen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; löscht nur Nodes auf der FailedNodeList, die erst vor Kurzem nicht erreicht werden konnten. Darum muss sowohl das manuelle Verschieben von batteriebetriebenen als auch das Nicht-Erreichen der netzbetriebenen Geräte erst Kurz vor Aufruf des &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt;-Befehls erfolgt sein. &lt;br /&gt;
&lt;br /&gt;
Vorgehensweise für den Node &amp;lt;NodeId&amp;gt;:&lt;br /&gt;
# An den betroffenen Node eine Telegramm mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; sendNIF &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; verschicken, um ihn auf FailedNodeList zu verschieben bzw. Zeitstempel zu aktualisieren.&lt;br /&gt;
# Abfragen, ob der Node auf der FailedNodeList steht: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; isFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Wenn der Rückgabewert der Abfrage &amp;quot;yes&amp;quot; ist, steht der Node korrekt auf der FailedNodeList und kann mit &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; gelöscht werden.&lt;br /&gt;
# Befehl zum Löschen des Nodes absetzen: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; removeFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Der Befehl testet vor dem Löschen noch einmal, dass der Node nicht erreicht werden kann und entfernt erst dann den Node.&lt;br /&gt;
# Prüfen, der Ergebnisse des &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt;-Befehls im Log oder [[Event monitor]]. Die verschiedenen Ergebnisse werden durch die in der {{Link2CmdRef}} dokumentierten Events signalisiert. Tritt das Ergebnis &amp;quot;failedNodeRemoveProcessBusy&amp;quot; mehrfach hintereinander auf, muss das ZWDongle kurz stromlos gemacht werden.&lt;br /&gt;
# Prüfen, ob der Node nicht mehr auf der Nodelist des Controllers ist: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; nodeList&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siehe auch {{Link2Forum|Topic=32823|Message=292626}}&lt;br /&gt;
&lt;br /&gt;
=== Wie ist der einfachste Weg ein (defektes) Gerät durch ein gleiches Ersatzgerät auszutauschen? ===&lt;br /&gt;
Tauscht man ein defektes Gerät durch ein gleiches Ersatzgerät und inkludiert das Ersatzgerät per &amp;lt;code&amp;gt;addNode&amp;lt;/code&amp;gt;, so erhält das Ersatzgerät eine neue NodeId. Soll das Ersatzgerät die gleiche NodeId wie das alte Gerät erhalten, so muss statt &amp;lt;code&amp;gt;addNode&amp;lt;/code&amp;gt; der Befehl &amp;lt;code&amp;gt;replaceFailedNode&amp;lt;/code&amp;gt; zur Inklusion des Ersatzgerätes (=gleiches Modell) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Vorgehensweise für den Node &amp;lt;NodeId&amp;gt;:&lt;br /&gt;
# sofern das alte Gerät noch ansprechbar ist, die Konfiguration und Assoziationen abfragen, damit man die Werte im Ersatzgerät einfach wieder setzen kann:&lt;br /&gt;
## &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;device&amp;gt; configAll&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;device&amp;gt; associationAll&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# defektes Gerät aus- und neues einbauen&lt;br /&gt;
# Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; sendNIF &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; absetzen, damit das Dongle die NodeId auf die FailedNodeList setzt.&lt;br /&gt;
# Abfragen, ob der Node auf der FailedNodeList steht: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; isFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Wenn der Rückgabewert der Abfrage &amp;quot;yes&amp;quot; ist, steht der Node korrekt auf der FailedNodeList und das Ersatzgerät kann mit &amp;lt;code&amp;gt;replaceFailedNode&amp;lt;/code&amp;gt; inkludiert werden.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;zwdongle&amp;gt; replaceFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; für die NodeId des defekten Gerätes aufrufen und das Ersatzgerät in den Inklusionsmodus bringen&lt;br /&gt;
# Korrekte Inklusion prüfen und beim alten Aktor ausgelesene Werte beim neuen Aktor wieder setzen.&lt;br /&gt;
&lt;br /&gt;
=== Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? ===&lt;br /&gt;
Ja, das ist richtig.&lt;br /&gt;
&lt;br /&gt;
Bei der Inklusion über addNode vergibt der Controller die höchste bisher noch nie verwendete NodeID. Durch Exklusion oder removeFailedNode frei gewordene NodeIDs werden hierbei nicht erneut vergeben. Nur bei einem Controller-Reset, der mit einem unwiederbringlichen Verlust sämtlicher Informationen des ZWave-Netzes und Neuvergabe der HomeID verbunden ist, beginnt die Zählung wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
=== Welche Funktion haben die XML-Config-Dateien in FHEM? ===&lt;br /&gt;
In den XML-Config-Dateien sind Informationen zu einzelnen ZWave-Geräten enthalten, die der Erleichterung der Gerätenutzung und -einbindung in FHEM dienen. Dies sind unter anderem Erläuterungen zu den Parameternummer/-werten, Assoziationsgruppen und Besonderheiten eines Gerätes. Ob eine zum Zwave-Gerät passende XML-Config Datei existiert, wird im Rahmen der Inklusion oder durch manuellen Aufruf des Befehls &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; ermittelt. Wird eine passende XML-Config-Datei gefunden, wird sie automatisch in FHEM eingebunden. Das Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; enthält dann den zugehörigen XML-Config-Dateinamen. Stehen keine XML-Config-Informationen bereit, enthält das Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; den Wert &amp;quot;unknown&amp;quot;. Die Funktionsfähigkeit von FHEM mit ZWave-Geräten ist auch bei fehlender XML-Config-Datei gegeben. Es gibt dadurch keine funktionalen Einschränkungen in FHEM; es entfallen &amp;quot;nur&amp;quot; Erleichterungen und es sind unter Umständen mehr manuelle Schritte bei der Gerätenutzung/-einbindung notwendig.&lt;br /&gt;
&lt;br /&gt;
Erleichterungen bei vorhandener XML-Config für ein ZWave-Gerät:&lt;br /&gt;
* Bei der Inklusion:&lt;br /&gt;
** Assoziationen mit dem Controller bei von Gruppe 1 abweichenender Assoziationsgruppe werden automatisch gesetzt&lt;br /&gt;
** vom NIF nicht gemeldete, aber vom Gerät unterstützte Classes, werden im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; ergänzt&lt;br /&gt;
* Bei der Konfiguration:&lt;br /&gt;
** die Parameternummern stehen als configXY-Befehle zur Verfügung und werden mit Hilfetexten -auch zu den Parameterwerten- in der Detailansicht des FHEM-Device erläutert.&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bitte auch bei vorhandener XML-Config-Datei nach der Inklusion und bei der Konfiguration die Assoziationen und Parameter prüfen. Von den eigenen Vorstellungen abweichende Vorgaben oder gar Fehler in der Config-Datei können nie ausgeschlossen werden. Fehler bitte im Forum ({{Link2Forum|Area=ZWave}}) melden.&lt;br /&gt;
&lt;br /&gt;
=== Wie können fehlende XML-Config-Informationen für mein ZWave-Gerät in FHEM eingebunden werden? ===&lt;br /&gt;
Die XML-Config-Informationen von FHEM sind in folgenden Dateien im Ordner fhem/FHEM/lib gespeichert:&lt;br /&gt;
* openzwave_manufacturer_specific.xml&lt;br /&gt;
* openzwave_deviceconfig.xml.gz&lt;br /&gt;
* fhem_zwave_deviceconfig.xml.gz&lt;br /&gt;
Die in den Dateien enthaltenen Informationen beruhen in großen Teilen auf Daten von openzwave und übernehmen daher das openzwave-Datenformat, das unter https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices näher beschrieben wird. &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;openzwave_manufacturer_specific.xml&amp;quot; enthält die eindeutige Kennung des ZWave-Gerätes, die in FHEM nach Aufruf des Befehls &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; im Reading &amp;lt;code&amp;gt;modelId&amp;lt;/code&amp;gt; des FHEM-ZWave-Devices steht. Weiterhin wird der Klartextname dieses Gerätes, der im Reading &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; angezeigt werden soll, festgelegt. Zudem wird der Dateiname der eigentlichen XML-Config-Datei für das ZWave-Gerät angegeben, der später informativ im Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; steht.&lt;br /&gt;
&lt;br /&gt;
Die Dateien &amp;quot;openzwave_deviceconfig.xml.gz&amp;quot; und &amp;quot;fhem_zwave_deviceconfig.xml.gz&amp;quot; enthalten in komprimierter Form die eigentlichen XML-Config-Dateien für die ZWave-Geräte. FHEM durchsucht beide Dateien nach der passenden XML-Config-Datei. Ist in beiden Dateien eine XML-Config für ein Gerät vorhanden, so werden die XML-Daten aus der &amp;quot;fhem_zwave_deviceconfig.xml.gz&amp;quot; bevorzugt.&lt;br /&gt;
&lt;br /&gt;
Falls ein ZWave-Gerät von FHEM nicht erkannt wird, bitte auf folgenden Seiten nachschauen, ob es schon XML-Config-Dateien gibt, die nur nicht in FHEM eingebunden sind:&lt;br /&gt;
# https://github.com/OpenZWave/open-zwave/tree/master/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner&lt;br /&gt;
# https://github.com/jeedom/plugin-openzwave/tree/master/ressources/openzwave/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner &lt;br /&gt;
# http://www.cd-jackson.com/index.php/zwave/zwave-device-database&lt;br /&gt;
Sofern auf den genannten Seiten Daten vorhanden sind, postet eine Aktualisierungsbitte mit genauem Link zur entsprechenden Seite im Forum ({{Link2Forum|Area=ZWave}}).&lt;br /&gt;
&lt;br /&gt;
Gibt es auf keiner der Seiten Infos zu dem Gerät, dann entsprechend https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices die XML-Config-Datei für das Gerät erstellen und unkomprimiert zusammen mit der zu ergänzenden Info für die Datei &amp;quot;openzwave_manufacturer_specific.xml&amp;quot; im Forum ({{Link2Forum|Area=ZWave}}) zur Verfügung stellen.&lt;br /&gt;
&lt;br /&gt;
=== Wie führt man eine Komplett-Sicherung der ZWave-Installation durch? ===&lt;br /&gt;
Zu einer Komplett-Sicherung der ZWave-Konfiguration gehören:&lt;br /&gt;
&lt;br /&gt;
1. [[Backup]] der FHEM-Installation &lt;br /&gt;
::&#039;&#039;&#039;und&#039;&#039;&#039;&lt;br /&gt;
2. Backup des NVRAM des Controllers&lt;br /&gt;
&lt;br /&gt;
Es genügt nicht nur die FHEM-Installation/Konfiguration zu sichern, da der Controller im NVRAM Daten über HomeID, NodeIDs usw. speichert, die in der FHEM-Installation nicht enthalten sind und auch nicht durch FHEM rekonstruierbar sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
zu 2.) Backup des NVRAM des Controllers&lt;br /&gt;
&lt;br /&gt;
Einige Controllerhersteller bieten eine eigenständige Software zum Backup/Restore an (siehe Hinweise zu den Controllern unter [[#Autocreate_des_Gateways]]).&lt;br /&gt;
&lt;br /&gt;
FHEM kann mit den ZWDongle-Befehlen &amp;lt;code&amp;gt;backupCreate&amp;lt;/code&amp;gt; das NVRAM der Controller sichern und mit &amp;lt;code&amp;gt;backupRestore&amp;lt;/code&amp;gt; zurückschreiben. Da das Speicherlayout des NVRAM unter anderem von Controller-Hersteller, SDK und Firmwareversion abhängig sein kann, sollte man die Sicherung und Wiederherstellung des eigenen Controllers (auf eigenes Risiko) testen und sinnvollerweise einen gleichen Ersatzcontroller wie den Controller des Produktivsystem besitzen. Erfolgreiche Sicherung/Wiederherstellung wurde im Forum von den ZWavePlus-Controllern UZB1 (256k), Razberry (256k), Vision ZU 1401-5 EU (128k)und AEOTEC Z-Stick Gen5 (256k) berichtet.&lt;br /&gt;
(Weitergehende Infos - neben der {{Link2CmdRef}} - im Forum: {{Link2Forum|Topic=52364}}, {{Link2Forum|Topic=52914}}, {{Link2Forum|Topic=53023}})&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich zur Fortentwicklung der ZWave-Module beitragen? ===&lt;br /&gt;
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten ZWave-Geräten im Forum mitteilen&lt;br /&gt;
* Codeschnipsel und Ideen im Forum posten&lt;br /&gt;
* Fehler und Probleme im Forum melden&lt;br /&gt;
* [[How_to_write_a_patch|Patches]] für 00_ZWDongle.pm und 10_ZWave.pm erstellen&lt;br /&gt;
* Wiki: Ergänzungen und Korrekturen vornehmen; neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen&lt;br /&gt;
&lt;br /&gt;
=== Wie wird ein fehlendes Kernelmodul (Fritzbox) eingebunden? ===&lt;br /&gt;
Auf der Fritzbox (und evtl. auch anderen Systemen) muss sichergestellt werden, dass das Kernelmodul für das Gateway geladen wird. Ansonsten scheitert die Einbindung des Gateways in FHEM.&lt;br /&gt;
&lt;br /&gt;
Für den Aeon Labs Z-Stick muss beispielsweise auf der Fritzbox das Kernelmodul &amp;lt;code&amp;gt;cp2101.ko&amp;lt;/code&amp;gt; geladen werden.&lt;br /&gt;
Diese Datei ist bei einer [[FHEM und FritzBox 7390]] Installation über das Image von [http://www.fhem.de fhem.de] bereits enthalten.&lt;br /&gt;
Um den Aeon Labs Z-Stick zu verwenden, muss dieses Kernelmodul vor oder beim Starten des FHEM-Servers geladen sein. Dies erreicht man durch einen Eintrag in der Datei &amp;lt;code&amp;gt;startfhem&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Zeile kann direkt unterhalb der modprobe Anweisungen eingefügt werden.&lt;br /&gt;
 insmod $home/lib/cp2101.ko&lt;br /&gt;
&lt;br /&gt;
Nach einem FHEM-Neustart sollte das Gateway (der USB Stick) nun erkannt werden.&lt;br /&gt;
&lt;br /&gt;
=== Wie ist der Aufbau der Z-Wave Messages bzw. wie finde ich bei einem Sendefehler die NodeId des Empfängers heraus? ===&lt;br /&gt;
&lt;br /&gt;
Es könnte natürlich hin und wieder vorkommen, dass man im FHEM-Log folgende Fehler vorfindet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWDongle_ProcessSendStack: no ACK, resending message 010a00130603320110259277&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall gab es aus irgendeinem Grund einmalig das Problem, dass der Empfang einer Nachricht vom Empfänger nicht bestätigt wurde. &lt;br /&gt;
Will man dem auf die Spur kommen, so wäre es natürlich von Vorteil, die NodeId des Empfängers herauszufinden. Also muss man sich die Message näher anschauen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;010a00130603320110259277&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 01: data to controller&lt;br /&gt;
* 0a: length of msg&lt;br /&gt;
* 00: ?&lt;br /&gt;
* 13: ZW_SEND_DATA&lt;br /&gt;
* 06: NodeId&lt;br /&gt;
 &lt;br /&gt;
* 03: length of msg&lt;br /&gt;
* 32: Command Class 32 (METER, siehe %zwave_class in 10_ZWave.pm)&lt;br /&gt;
* 01: METER get scale command&lt;br /&gt;
* 10: scale parameter&lt;br /&gt;
 &lt;br /&gt;
* 25: send flags, explorer frames on&lt;br /&gt;
* 92: callbackId (um ACK zu identifizieren)&lt;br /&gt;
* 77: checkSum&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat der Z-Wave-Controller 01 eine Nachricht an die NodeId 06 geschickt, welche vom Node nicht bestätigt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Z-Wave Components|!]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Z-Wave&amp;diff=29807</id>
		<title>Z-Wave</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Z-Wave&amp;diff=29807"/>
		<updated>2019-03-10T12:30:16Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Doppel-Relais */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;{{Infobox Modul&lt;br /&gt;
|Name=ZWDongle&lt;br /&gt;
|ModPurpose=Einbindung Z-Wave-Gateways&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=ZWDongle&lt;br /&gt;
|ModForumArea=ZWave&lt;br /&gt;
|ModTechName=00_ZWDongle.pm &lt;br /&gt;
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=ZWave&lt;br /&gt;
|ModPurpose=Ansteuerung Z-Wave-Geräte über ZWDongle&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=ZWave&lt;br /&gt;
|ModForumArea=ZWave&lt;br /&gt;
|ModTechName=10_ZWave.pm &lt;br /&gt;
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Z-Wave]] ist ein drahtloser Kommunikations-Standard im 868 Mhz-Band (Europa), der von der Firma Sigma Designs und der Z-Wave Alliance, einen Zusammenschluss von mehreren Hundert Herstellern, für die Heimautomatisierung entwickelt wurde. Es existieren mehr als [http://products.z-wavealliance.org 1400 zertifizierte Produkte] verschiedenster Hersteller, die innerhalb eines gemeinsamen Z-Wave-Netzes einsetzbar sind. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia])&lt;br /&gt;
&lt;br /&gt;
Auf dieser Seite werden Grundlagen eines &#039;&#039;&#039;Z-Wave&#039;&#039;&#039; Systems und dessen Einrichtung in FHEM beschrieben.&lt;br /&gt;
== Z-Wave ==&lt;br /&gt;
=== Nodes - Controller und Slaves ===&lt;br /&gt;
Ein Z-Wave-Netz besteht aus mindestens 2 Geräten, den sogenannten &#039;&#039;&#039;Nodes&#039;&#039;&#039; (Knoten). Es setzt sich zusammen aus dem steuernden &#039;&#039;&#039;Controller&#039;&#039;&#039; (Zentrale) und min. 1 bis max. 231 gesteuerten &#039;&#039;&#039;Slaves&#039;&#039;&#039; (Geräten). &lt;br /&gt;
&lt;br /&gt;
=== Home-Id und Node-ID ===&lt;br /&gt;
Innerhalb eines Z-Wave-Netzes gibt es zu 2 Identifikationsnummern zur Kennzeichnung der Netzstruktur:&lt;br /&gt;
# &#039;&#039;&#039;Home-ID:&#039;&#039;&#039; Gemeinsame Identifikationsnummer aller Nodes in einem Netz zur Abgrenzung gegenüber anderen Netzen. Nur Nodes mit der gleichen Home-ID können miteinander kommunizieren.&lt;br /&gt;
# &#039;&#039;&#039;Node-ID:&#039;&#039;&#039; Identifikationsnummer zur eindeutigen Kennzeichnung von jedem Node im Netz. &lt;br /&gt;
&lt;br /&gt;
Die Home-ID ist im Controller (fest) hinterlegt und seine Node-ID ist typischerweise 1. Die Slaves haben zunächst keine Home-ID und Node-ID. Bei der &#039;&#039;&#039;Inklusion&#039;&#039;&#039; (Aufnahme) der Slaves in das Z-Wave-Netz überträgt der Controller seine Home-ID auf die Slaves und weist den Slaves eine eindeutige Node-ID im Netz zu, mit der Sie direkt angesprochen werden. &lt;br /&gt;
&lt;br /&gt;
Besondere Node-ID ist die 255. Eine Nachricht an die Node-ID 255 kann von allen Z-Wave-Nodes ausgewertet werden (Broadcast).&lt;br /&gt;
&lt;br /&gt;
=== Primär- und Sekundärcontroller ===&lt;br /&gt;
Der Controller, der durch Zuteilung seiner Home-ID auf die Slaves, das Netz aufbaut, ist der &#039;&#039;&#039;Primärcontroller&#039;&#039;&#039;. Grundsätzlich können in einem Netz mehrere Controller existieren, aber immer nur ein Primärcontroller. Weitere in das Netz eingebundene Controller werden zum &#039;&#039;&#039;Sekundärcontroller&#039;&#039;&#039;. Ohne besondere Maßnahmen kann nur der Primärcontroller die Inklusion (Einbindung) der Nodes in das Netz durchführen. Hingegen können sowohl Primär- als auch Sekundärcontroller die &#039;&#039;&#039;Exklusion&#039;&#039;&#039; (Ausschluss) eines Nodes aus dem Netz vornehmen.&lt;br /&gt;
&lt;br /&gt;
Der Controller speichert intern diverse Informationen (Home-ID, Node-IDs,..) über das ZWave-Netz. Hierdurch kann unter anderem die Haussteuerungssoftware bei einem PC-Controller relativ unkompliziert gewechselt werden, da die wesentlichen ZWave-Netzinformationen vom Controller selbst verwaltet und gespeichert werden. Andererseits muß bei einem Controllerdefekt das gesamte Netz grundsätzlich neu aufgebaut werden, wenn kein Backup der internen Controllerdaten vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledge ===&lt;br /&gt;
Im Z-Wave-Netz werden Nachrichten vom Empänger-Node an den Sender-Node rückbestätigt (Acknowledge). Bei ausbleibendem Acknowledge wiederholt der Sender-Node die Nachricht automatisch auf Protokollebene bis zu 2 mal. Hierdurch wird eine höhere Betriebssicherheit des Z-Wave-Netzes erreicht. Bei Broadcast-Nachrichten an die Node-ID 255 findet keine Rückbestätigung statt.&lt;br /&gt;
&lt;br /&gt;
=== Vermaschtes Netzwerk mit Routing ===&lt;br /&gt;
Z-Wave nutzt als Netzwerktopologie ein &#039;&#039;&#039;mesh network&#039;&#039;&#039; (vermaschtes Netzwerk), d. h. jeder Node ist mit einem oder mehreren anderen Nodes verbunden. Das hat den Vorteil, dass eine Nachricht zwischen zwei Nodes übermittelt werden kann, selbst wenn diese nicht direkt miteinander kommunizieren können, z. B. weil sie zu weit voneinander entfernt sind. In diesem Fall wird die Funk-Nachricht über einen oder mehrere „Zwischen-Nodes“ übertragen; dieser Vorgang wird &#039;&#039;&#039;Routing&#039;&#039;&#039; genannt. Nur netzgespeiste Z-Wave-Geräte sind Router. Batteriebetriebe Z-Wave-Geräte sind grundsätzlich keine Router und dienen somit auch nicht zur Reichweitenerhöhung. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia]) Einzelne Geräte, die alternativ per Batterie oder USB-Anschluss betrieben werden können, werden bei USB-Anschluss automatisch ({{Link2Forum|Topic=40393|Message=328080}}) oder durch Konfigurationsänderungen ({{Link2Forum|Topic=40393|Message=327331}}) zu Routern.&lt;br /&gt;
&lt;br /&gt;
Informationen über das optimale Routing werden bei der Inklusion der Nodes in einer Routing-Tabelle des Primärcontrollers gespeichert. Dies geschieht durch Abfrage des Nodes, welche weiteren Nodes er erreichen kann. Durch örtliche Änderung oder Defekte von Nodes können die in der Routing-Tabelle gespeicherten Informationen fehlerhaft bzw. suboptimal werden. Dies kann sich in Funkkommunikationsproblemen im Netzwerk äußern. Hier kann ein per Software manuell angeforderter Neuaufbau der Routing-Tabelle gegebenenfalls Abhilfe schaffen. Bei Geräten und Controllern mit aktuellen Firmware-Versionen (SDK 4.5x und SDK 6.xx oder größer, aber &#039;&#039;nicht&#039;&#039; SDK 5.x) und Unterstützung von Explorer Frames kann sich die Routing-Tabelle unter bestimmten Bedingungen auch automatisch aktualisieren (&amp;quot;Selbstheilung&amp;quot;)[https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames].&lt;br /&gt;
&lt;br /&gt;
=== Command Classes ===&lt;br /&gt;
Die Steuerung und Kommunikation der Nodes erfolgt über Befehle die funktionsbezogen in verschiedene &#039;&#039;&#039;Command Classes&#039;&#039;&#039; (Kommandoklassen) zusammengefasst sind.&lt;br /&gt;
&lt;br /&gt;
Alle Z-Wave-Geräte haben als gemeinsame kleinste Übereinstimmung die &#039;&#039;&#039;Class Basic&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Z-Wave-Geräte haben im Originalzustand eine bestimmte arbeitsfähige Grund-Konfiguration. Anpassbar an individuelle Bedürfnisse ist die Konfiguration über die &#039;&#039;&#039;Class Configuration&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Durch eine Assoziation wird definiert, welche Geräte miteinander direkt -ohne Umweg über den Controller- kommunizieren können. Auch bei Ausfall des Controllers können diese Geräte ihre gemeinsame Funkton ausüben. Zudem dienen Assoziationen der Geschwindigkeitssteigerung und Funklastreduzierung innerhalb des Netzes. Angelegt werden Assoziationen über die &#039;&#039;&#039;Class Association&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Dies sind nur die allerwichtigsten Command Classes. Weitere Command Classes sind den Handbüchern zu entnehmen. Zudem enthält die Wiki-Seite [[Z-Wave Command Classes]] weitergehende Informationen.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise zur Z-Wave-Geräteauswahl ===&lt;br /&gt;
Aufgrund der vielen Z-Wave-Gerätehersteller mit jeweils eigenem Z-Wave-Gerätesortiment existiert eine große Produktauswahl. Jedoch gibt es auch große Unterschiede hinsichtlich Produkteigenschaften, Pflege der Produkte, Häufigkeit der Aktualisierung der Produktpalette und so weiter. Schwierigkeiten bereitet insbesondere, dass neben den aktuellesten Chipsätzen und SDKs auch die älteren Chipsätze und SDKs weiterhin in Produkten im Handel verfügbar sind. Neuere Chipsätze und aktuelle SDKs bieten gerade bei der Netzwerkstabilität (Explorer Frames, Reichweite usw.) Vorteile zu älteren Chipsätzen und SDKs. Beispielsweise beherrschen nur Geräte mit SDK 4.5x und 6.x oder neuer die für automatische Routenkorrekturen wichtigen Explorer Frames. Das ältere SDK 5.0, das verwirrenderweise auch noch eine höhere Versionsnummer als das neuere SDK 4.5 besitzt, beherrscht unter anderem keine Explorer Frames. Details hierzu enthält das [https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames wiki.zwaveeurope.com]. Aktuellstes SDK ist Stand 10/2017 das SDK 6.7x, das in ZWave Plus - zertifizierten Produkten zum Einsatz kommt.&lt;br /&gt;
&lt;br /&gt;
Gerade Einsteiger beachten die Unterschiede bei den Chipsätze/SDKs aus Unkenntnis manchmal nicht und ärgern sich im Nachhinein über Probleme bei der Netzwerkstabilität und Reichweite. Darum nachfolgend allgemeine, aber sehr einfache Empfehlungen zur Geräteauswahl. Selbstverständlich wird hier nicht von anderen Produkten abgeraten, wenn man die Unterschiede kennt und Vorteile bei deren Produkteigenschaften sieht. Zudem kann man (leider) schlechtere Produkteigenschaften bei Geräten mit aktuelleren Chipsätzen/SDKs nie ausschließen.&lt;br /&gt;
&lt;br /&gt;
Gateway&lt;br /&gt;
# [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus-Zertifizierung]. Diese ist mittlerweile bei nahezu allen erhältlichen Gateways gegebenen.&lt;br /&gt;
&lt;br /&gt;
Endgeräte&lt;br /&gt;
# Z-Wave Plus-Zertifizierung (aktuellste Technik, höhere theoretische Reichweite, SDK 6.5x oder höher) oder&lt;br /&gt;
# zumindest Explorer Frames-Unterstützung (SDK 4.5x und 6.0x) oder&lt;br /&gt;
# zuletzt -bei Kenntnis der Besonderheiten und Auswirkungen- Produkte ohne Explorer Frames (SDK 5.0x)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kurz&#039;&#039;&#039;: Produkte mit Z-Wave Plus-Zertifizierung einsetzen.&lt;br /&gt;
&lt;br /&gt;
Bitte unbedingt beachten, dass Z-Wave Plus-Vorteile bei einem Mischbetrieb mit älteren (ohne Plus) Geräten teilweise verloren gehen. Zum negativen Effekt des Einsatzes eines älteren, aber weiterhin erhältlichen Z-Wave-Repeaters mit aktuellen Z-Wave Plus-Geräten siehe beispielsweise den Hinweis in diesem {{Link2Forum|Topic=42591|Message=350066}}.&lt;br /&gt;
&lt;br /&gt;
Bei Fragen zu bestimmten Geräten bitte -nach Durchsicht der Hinweise hier im Wiki- im Forum suchen oder anschließend nachfragen.&lt;br /&gt;
&lt;br /&gt;
== Z-Wave in FHEM ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ausführen und anschließend &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt; durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung von Z-Wave in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach möglich. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_FHEM|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht speziell Z-Wave behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend und auf den [[:Kategorie:Z-Wave Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der Konfiguration sollte -zur Verhinderung von Fehlern- nach Möglichkeit immer über das &amp;quot;[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]&amp;quot; und die &amp;quot;[[Konfiguration#Objektdetails|Objektdetails]]&amp;quot; erfolgen.&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Die Bedienungsanleitungen (Handbücher) sind zwingende Voraussetzung zur korrekten Einbindung und Konfiguration von Z-Wave-Geräten in FHEM. Sie müssen daher vorliegen. &lt;br /&gt;
Den ZWave-Geräten liegen teilweise nur gekürzte, gedruckte Fassungen der Handbücher bei (beispielsweise Devolo, AEOTEC). Man sollte bei allen Produkten auf folgenden Seiten nach eventuellen ausführlicheren Handbüchern suchen:&lt;br /&gt;
* Herstellerseite des ZWave-Gerätes&lt;br /&gt;
* http://www.zwave.de/handbuecher/ (deutsch)&lt;br /&gt;
* http://products.z-wavealliance.org (englisch)&lt;br /&gt;
Insbesondere auf http://products.z-wavealliance.org, der Datenbank der ZWave-zertifizierten Produkte, sind regelmäßig ausführliche Informationen zu den Geräten zu finden.&lt;br /&gt;
&lt;br /&gt;
== Definition des Gateways / Controllers ==&lt;br /&gt;
{{Randnotiz|RNText=&#039;&#039;&#039;Tester für ZWave@culfw gesucht!&#039;&#039;&#039;&lt;br /&gt;
Z-Wave-Controllerfunktionen werden derzeit in die Firmware [http://www.culfw.de culfw] für den [[CUL]] implementiert. Weitere Informationen im [[ZWCUL]] - Artikel.}}&lt;br /&gt;
=== Autocreate des Gateways ===&lt;br /&gt;
FHEM kann mit einem Funkgateway Z-Wave-Funk empfangen und senden. Z-Wave-Gateways (Controller) existieren von verschiedenen Herstellern. &lt;br /&gt;
&lt;br /&gt;
Folgende Gateways wurden unter anderem bereits erfolgreich mit FHEM eingesetzt:&lt;br /&gt;
* AEON Labs Z-Stick S2 (SDK 5.x; [https://aeotec.freshdesk.com/support/solutions/articles/6000091809-z-stick-s2-v3-08-firmware-update Firmwareupdate auf 3.08 aus 2016])&lt;br /&gt;
* Aeotec Z-Stick Gen5 (Z-Wave Plus; SDK 6.5; [https://aeotec.freshdesk.com/support/solutions/articles/6000108806-z-stick-gen5-backup-software Backup-Software)] ({{Link2Forum|Topic=47000}})&lt;br /&gt;
* Goodway WD6001 (SDK 5.03 {{Link2Forum|Topic=40594|Message=332235}})&lt;br /&gt;
* Vision Z-Wave USB Stick ZU 1401 EU (SDK 6.0x)&lt;br /&gt;
* Vision Z-Wave USB Stick ZU 1401-5 EU (Z-Wave Plus; SDK 6.5x)&lt;br /&gt;
* Z-Wave.Me Z-StickC ({{Link2Forum|Topic=29930|Message=226530}})&lt;br /&gt;
* Z-Wave.Me USB Stick ZME_UZB1 (SDK 6.5x;  Z-Wave Plus; [http://razberry.z-wave.me/z-way-server/ Firmwareupdate und Backup über z-way])&lt;br /&gt;
* Z-Wave.Me Razberry in Verbindung mit Raspberry Pi (1. Generation: Z-Wave, 2. Generation: Gen5-Razberry mit Z-Wave Plus[http://forum.z-wave.me/viewtopic.php?f=3419&amp;amp;t=21327#p55404]) &lt;br /&gt;
** Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das Razberry-Modul funktionsfähig ist: {{Link2Forum|Topic=78248|Message=702044}})&lt;br /&gt;
** Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]&lt;br /&gt;
&lt;br /&gt;
Folgende Gateways sind &#039;&#039;&#039;nicht&#039;&#039;&#039; mit FHEM einsetzbar:&lt;br /&gt;
* Merten Funk-USB-Datenschnittstelle CONNECT&lt;br /&gt;
&lt;br /&gt;
Sollte das eigene Gateway hier nicht aufgeführt sein, ist aufgrund der Standardisierung dennoch die Chance für eine erfolgreiche Einbindung des Gateways in FHEM vorhanden. Bitte dies hier oder im Forum entsprechend vermerken.&lt;br /&gt;
&lt;br /&gt;
Das Z-Wave-Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim nächsten FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; zumeist automatisch erkannt und das zugehörige FHEM-Device nach dem Namensschema &amp;lt;code&amp;gt;ZWDongle_&amp;lt;[https://forum.fhem.de/index.php/topic,92885.msg854533.html#msg854533 Anhang]&amp;gt;&amp;lt;/code&amp;gt; angelegt. Ein manuelles Anlegen des ZWDongle-Moduls oder Eingriffe in die Konfiguration sind unter Linux normalerweise nicht notwendig. &lt;br /&gt;
&lt;br /&gt;
Unter Windows ist ein manuelles Anlegen der Definition des ZWave-Gateways wegen fehlender Unterstützung des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; erforderlich (Beispiel für Z-Wave.Me USB Stick ZME_UZB1 unter Windows: &amp;lt;code&amp;gt;define ZWDongle_1 ZWDongle COM1@115200&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Das FHEM-Gateway-Device ist nach der Definition in FHEM im Raum &amp;quot;Everything&amp;quot; zu finden.&lt;br /&gt;
&lt;br /&gt;
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:&lt;br /&gt;
&lt;br /&gt;
Aeon Labs Z-Stick an der Fritzbox: &lt;br /&gt;
 define ZWDongle_1 ZWDongle /dev/ttyUSB1@115200&lt;br /&gt;
&lt;br /&gt;
Vision Z-Wave USB Stick ZU 1401 EU am Raspberry Pi (Raspbian):&lt;br /&gt;
 define ZWDongle_1 ZWDongle /dev/ttyACM1@115200&lt;br /&gt;
&lt;br /&gt;
Insbesondere wenn am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt werden, empfiehlt es sich zur Erhöhung der Betriebsstabilität das Z-Wave-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] oder [[LinuxDeviceNaming|uDev-Regeln]] anzusprechen.&lt;br /&gt;
&lt;br /&gt;
Bei einem statischen Controller wird die Einrichtung als SUC -sofern der Controller als solcher nicht bei Auslieferung eingerichtet ist- vor der ersten Inklusion von Geräten empfohlen.&lt;br /&gt;
&lt;br /&gt;
=== homeId und nodeList des Gateways ===&lt;br /&gt;
Zur manuellen Definition von Z-Wave Aktoren und Sensoren ist die &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; notwendig. Bei der hier bevorzugten Definition der Geräte durch autocreate ist die Kenntnis der &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; nicht zwingend. Jedoch sollte durch Abfrage der &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; direkt nach Einbindung des Zwave-Gateways dessen Funktionsfähigkeit getestet werden.&lt;br /&gt;
&lt;br /&gt;
Die &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;CtrlNodeId&amp;lt;/code&amp;gt; des Gateways wird mit folgendem Befehl ausgelesen (&amp;lt;ZWDongle&amp;gt; ist im folgenden durch den Namen des FHEM-Devices des eigenen Gateways zu ersetzen):&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; homeId&lt;br /&gt;
ergibt beispielsweise bei einem Gateway mit dem FHEM-Devicenamen ZWDongle_1:&lt;br /&gt;
 ZWDongle_1 homeId =&amp;gt; HomeId:e345c456 CtrlNodeId:01 &lt;br /&gt;
In diesem Beispiel ist die Home-Id des Gateways ZWDongle_1 e345c456 und das Gateway hat die Node-Id 1.&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Liste der Z-Wave Nodes, die bereits am Gateway registriert/inkludiert sind, wird mit dem folgendem Befehl ausgelesen:&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; nodeList&lt;br /&gt;
ergibt beispielsweise:&lt;br /&gt;
 ZWDongle_1 nodeList =&amp;gt; ZWDongle_1 UNKNOWN_2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition von Geräten / Slaves ==&lt;br /&gt;
=== Hinzufügen eines neuen Z-Wave Geräts / Inklusion ===&lt;br /&gt;
Zur Verfolgung von Inklusionsablauf und Meldungen des Controllers während der Inklusion sollte der [[Event monitor]] in einem 2. Browserfenster vor Aktivierung des Inklusionsmodus geöffnet werden.&lt;br /&gt;
&lt;br /&gt;
Das Z-Wave Gateway wird in den Standard-Modus zur Inklusion (zum Aufnehmen) neuer Geräte gesetzt:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; addNode on&lt;br /&gt;
Bei der Standard-Inklusion muss direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen.&lt;br /&gt;
&lt;br /&gt;
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt des obigen Befehls besser der Network-Wide-Modus für die Inklusion genutzt werden:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; addNode onNw&lt;br /&gt;
Bei der Network-Wide-Inklusion muss kein direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen. Es reicht, wenn das zu inkludierende Gerät über andere bereits inkludierte, netzgespeiste Geräte mit Explorer Frames-Unterstützung erreicht werden kann. Die Network-Wide-Inklusion ist zu bevorzugen, da die Z-Wave-Geräte regelmäßig an Ihren örtlichen Endpositionen inkludiert werden können. Dadurch werden bei der Inklusion direkt die korrekten Routen gespeichert. &lt;br /&gt;
&lt;br /&gt;
Nachdem das Gateway in den Inklusionmodus geschaltet wurde, muss das Gerät in den Inklusionsmodus (Aufnahmemodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. Typisch sind ein- oder dreimaliges Drücken einer Taste am Gerät oder beim Anlegen der Versorgungsspannung. Durch die Inklusion werden Home-ID und Node-ID im Gerät gespeichert. Zudem teilt das Gerät über ein spezielle Funknachricht (NIF=Node Information Frame) dem Controller seinen Gerätetyp und seine Geräteeigenschaften mit. Hierbei werden dem Controller auch die vom Gerät unterstützten Command Classes mitgeteilt. Aus diesen Informationen erzeugt FHEM automatisch durch autocreate das FHEM-Geräte-Device nach dem Namensschema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (an eigene Wünsche anpassbar mit {{Link2CmdRef|Anker=rename|Label=rename}}). Die vom Geräte unterstützen Command Classes, die die in FHEM verfügbaren Befehle bestimmen, werden automatisch im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; des FHEM-Geräte-Device gespeichert. Das Gerät ist damit grundlegend in FHEM definiert und im Raum &amp;quot;ZWave&amp;quot; zu finden. &lt;br /&gt;
&lt;br /&gt;
Nach der Inklusion schaltet FHEM den Inklusionsmodus des Z-Wave Gateway automatisch durch Absetzen des Befehls &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode off&amp;lt;/code&amp;gt; aus und zeigt eine Dialogbox mit dem Ergebnis der Inklusion:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;created ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Inklusion war erfolgreich und es wurde das bezeichnete FHEM-Device durch autocreate angelegt.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;addNode failed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Inklusion ist fehlgeschlagen&lt;br /&gt;
 &lt;br /&gt;
Eine erfolgreiche Inklusion ist zudem am Event &amp;quot;ZW_ADD_NODE_TO_NETWORK protocolDone&amp;quot; im Event monitor und natürlich der Anlage des entsprechenden FHEM-Devices durch autocreate zu erkennen.  Das Scheitern einer Inklusion führt typischerweise zur Ausgabe des Events &amp;quot;ZW_ADD_NODE_TO_NETWORK failed&amp;quot;. Häufigste Ursache sind Controllerprobleme, die sich oftmals durch kurzes Ein- und Ausstecken des Controllers, Neustart des Systems oder Ein- und Ausschalten des FHEM-Server-Computers beheben lassen.&lt;br /&gt;
&lt;br /&gt;
HINWEISE:&amp;lt;br /&amp;gt;&lt;br /&gt;
* Die Network-Wide-Inklusion kann nach derzeitiger Kenntnis auch bei Gateways und Geräten ohne Explorer Frames Unterstützung genutzt werden, da bei diesen Geräten grundsätzlich automatisch auf die Standard-Inklusion umgestellt wird.&lt;br /&gt;
* Bei der Standard-Inklusion ist unter Umständen nur ein geringer Abstand zwischen Gateway und Gerät möglich. Sollte die Inklusion daher nicht durchführbar sein, wenn Gateway und Gerät an ihren örtlichen Endpositionen sind (bevorzugte Variante), dann ist der Abstand zwischen diesen versuchsweise zu verringern. Anschließend bei örtlicher Veränderung die Routen mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWave-Devicename&amp;gt; neighborUpdate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set TYPE=ZWave:FILTER=ZWaveSubDevice=no neighborUpdate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; neu ermitteln lassen. Unter Umständen kann der Abstand nur schrittweise erhöht werden. Dann ist bei jeder Abstandsänderung eine Neuermittlung der Routen notwendig.&lt;br /&gt;
* Der NIF enthält bei manchen Geräten fälschlicherweise nicht alle unterstützten Command Classes. FHEM identifiziert während der Inklusion das Gerät und ergänzt die fehlenden Command Classes aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Weiterhin fehlende Command Classes können im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; manuell am Anfang der Liste entsprechend ergänzt werden. Informationen liefern die unter [[#Links|Links]] aufgeführten Datenbanken. Häufig fehlt die Pflicht-Class BASIC.&lt;br /&gt;
* Bei der hier beschriebenen Inklusion findet die Kommunikation zwischen Controller und Gerät anschließend dauerhaft unverschlüsselt statt. Manche Geräte bieten mit der Command Class SECURITY eine AES-verschlüsselte Kommunikation an. Da die Verschlüsselung zu einer höheren Funklast und Latenzen führt, sollte eine verschlüsselte Kommunikation nur mit Bedacht eingesetzt werden (bspw. bei Schlössern). Als Sonderfall ist das Vorgehen zur secure-Inklusion in der [[#Wie_kann_eine_verschl.C3.BCsselte_Kommunikation_unter_Nutzung_der_Command_Class_SECURITY_eingerichtet_werden.3F|FAQ]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nächster Schritt ist die [[#Assoziation|Assoziation]] des Gerätes mit dem Gateway.&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}&lt;br /&gt;
Z-Wave-Geräte können über Assoziationen direkt mit anderen Z-Wave-Geräten kommunizieren. Dies können zum einen Meldungen über den Status und Zustand der Geräte, als auch direkte Befehle sein. Zum Beispiel kann damit ein Bewegungsmelder eine entdeckte Bewegung an den Controller senden und/oder bei entdeckter Bewegung direkt eine Lampe ein- oder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Die Assoziation zwischen zwei Geräten wird durch Aufnahme des zu steuernden Gerätes in eine oder mehrere Assoziationsgruppe(n) des steuernden Gerätes angelegt. Durch die Wahl der Assoziationsgruppe wird festgelegt, bei welchen Ereignissen welche Nachricht an das assoziierte Gerät verschickt wird. Angaben zu den Ereignissen und versandten Nachrichten an die Geräte in einer bestimmten Assoziationsgruppe stehen in der Bedienungsanleitung des jeweiligen Gerätes.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM Statusmeldungen von Sensoren/Aktoren anzeigen und auch darauf reagieren kann, &#039;&#039;&#039;muss&#039;&#039;&#039; der Controller (&amp;lt;ZWDongle&amp;gt;-Device, &amp;lt;code&amp;gt;CtrlNodeId&amp;lt;/code&amp;gt; = typischerweise 1) immer in der/den passenden Assoziationsgruppe(n) des jeweiligen Gerätes &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; aufgenommen werden:&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;name&amp;gt; associationAdd &amp;lt;associationGroup&amp;gt; &amp;lt;CtrlNodeId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typischerweise ist die Assoziationsgruppe 1 der Geräte für die Statusmeldungen an den Controller vorgesehen (Ausnahme: [[#Fibaro|Fibaro-Geräte ohne ZWave Plus - Zertifizierung]]). Daher nimmt FHEM die Assoziation von Controller mit der Assoziationsgruppe 1 des Gerätes bei der Inklusion immer automatisch vor. Zudem identifiziert FHEM während der Inklusion das Gerät und setzt weitere Assoziationen mit dem Controller für von 1 abweichende Assoziationsgruppen aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Ist keine XML-Config-Datei für das Gerät vorhanden, sind Assoziationen des Controllers mit von 1 abweichenden Assoziationsgruppen oder weiteren Assoziationsgruppen mit dem zuvor genannten Befehl grundsätzlich manuell anzulegen. &lt;br /&gt;
&lt;br /&gt;
Die richtige Anlage der Assoziation(en) des Controllers mit dem Gerät immer prüfen, da dies eine Hauptfehlerquelle bei Funktionsproblemen mit FHEM ist.&lt;br /&gt;
&lt;br /&gt;
Abruf der assoziierten Geräte in einer bestimmten Assoziationsgruppe &amp;lt;associationGroup&amp;gt;:&lt;br /&gt;
 get &amp;lt;name&amp;gt; association &amp;lt;associationGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abruf der assozierten Geräte für alle Assoziationsgruppen eines Gerätes:&lt;br /&gt;
 get &amp;lt;name&amp;gt; associationAll&lt;br /&gt;
&lt;br /&gt;
Nahezu alle in Europa erhältlichen aktuellen Geräte unterstützen die Rückmeldung des Status via Association. Ausnahmen gibt es in Nordamerika, wo aufgrund von Patentansprüchen einige Hersteller auf die Statusrückmeldungen verzichten. Diese Geräte unterstützen in der Regel die Command Class ASSOCIATION nicht.&lt;br /&gt;
&lt;br /&gt;
Nächster Schritt ist die [[#Konfiguration|Konfiguration]] des Gerätes.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}&lt;br /&gt;
Die Standard-Konfiguration eines Gerätes entspricht oftmals nicht den eigenen Wünschen und Anforderungen (Einheiten usw.). Mit den Befehlen der Class CONFIGURATION lässt sich die Konfiguration anpassen. Die zur Konfiguration eines Gerätes notwendigen Angaben zu den Parameternummern, -größen und -werten sind im jeweiligen Geräte-Handbuch bzw. entsprechenden Datenbanken (bspw. [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] oder [http://products.zwavealliance.com/ products.zwavealliance.com]) enthalten. &lt;br /&gt;
&lt;br /&gt;
Die Konfiguration beispielsweise bei Parametergröße 1 lässt sich mit diesem Befehl anpassen:&lt;br /&gt;
 set &amp;lt;name&amp;gt; configByte &amp;lt;Parameternummer&amp;gt; &amp;lt;Parameterwert&amp;gt;&lt;br /&gt;
Für weitere Parametergrößen gibt es die Befehle &amp;lt;code&amp;gt;configWord&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;configLong&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die im Gerät hinterlegten Konfiguration kann pro Parameternummer mit folgendem Befehl abgerufen werden:&lt;br /&gt;
 get &amp;lt;name&amp;gt; config &amp;lt;Parameternummer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zudem bietet FHEM basierend auf den manuell gepflegten XML-Config-Dateien die Möglichkeit, die speziellen Parameternummern des Gerätes mit ihren Parametergrößen und -werte als eigenständige config-Befehle mit Hilfsinformationen einzubinden. Ein manuelles Suchen im Geräte-Handbuch und Nutzung der configByte-, configWord- und configLong-Befehle ist dadurch in vielen Fällen unnötig. Für diese Funktion muss das Gerät von FHEM einmalig durch folgenden Befehl, der bei der Inklusion automatisch ausgeführt wird, identifiziert werden:   &lt;br /&gt;
 get &amp;lt;name&amp;gt; model&lt;br /&gt;
Die Readings &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;modelID&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; werden dadurch erzeugt. In &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; sollte der Klartextname des Gerätes stehen. Zudem sind dann -soweit eine XML-Config Datei für das Gerät existiert- die speziellen set/get-Kommandos configXYZ für das Geräte im Auswahldialog der Detailansicht mit Hilfsinformationen verfügbar:&lt;br /&gt;
[[Datei:Z-Wave_confighelp.PNG|900px|thumb|center|config-Befehl mit Hilfstext]]&lt;br /&gt;
&lt;br /&gt;
Bei vorhandener XML-Config-Datei kann die komplette Konfiguration eines Gerätes abgerufen werden:&lt;br /&gt;
 get &amp;lt;name&amp;gt; configAll&lt;br /&gt;
&lt;br /&gt;
Außerdem wird durch den &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; -Befehl geprüft, ob das Gerät in der [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] und/oder [http://products.zwavealliance.com/ products.zwavealliance.com] enthalten ist. Im Erfolgsfall wird ein Link &amp;quot;Details in pepper DB&amp;quot; und/oder &amp;quot;Details in alliance DB&amp;quot; zum entsprechenden Geräteeintrag in der jeweiligen Datenbank unten in der Detailansicht des FHEM-Geräte-Devices angelegt und ein Bild des Gerätes in die Detailansicht eingebunden.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf von &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; ist auch für die Nutzung der Class MANUFACTURER_PROPRIETARY zwingende Einsatzvoraussetzung.&lt;br /&gt;
&lt;br /&gt;
=== Entfernen eines Z-Wave-Geräts / Exklusion ===&lt;br /&gt;
Durch die Exklusion wird die Home-ID und Node-ID aus dem Gerät und das Gerät selbst aus der Node-List des Controllers gelöscht. Erst nach einer Exklusion kann das Gerät in ein anderes Z-Wave-Netz aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Zuerst wird der Z-Wave Gateway in den Standard-Modus zur Exklusion (Ausschluss) von Geräten gesetzt:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode on&lt;br /&gt;
&lt;br /&gt;
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt dem obigen Befehl besser der Network-Wide-Modus für die Exklusion genutzt werden (siehe auch Erläuterungen zu Standard- versus Network-Wide-Inklusion unter [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]]):&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode onNw&lt;br /&gt;
&lt;br /&gt;
Danach muss das Gerät in den Exklusionsmodus (Ausschlussmodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. &lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Exklusionsmodus am Z-Wave Gateway wieder ausgeschaltet:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode off&lt;br /&gt;
&lt;br /&gt;
Das FHEM-Device muss nach der Exklusion manuell durch &amp;lt;code&amp;gt;delete &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Die durch die Exklusion frei gewordene NodeID wird nicht bei der nächsten Inklusion wiederverwendet, sondern es wird die höchste noch nicht verwendete NodeID genutzt.&lt;br /&gt;
&lt;br /&gt;
=== Erneutes Hinzufügen eines bereits registrierten Z-Wave Geräts ===&lt;br /&gt;
Die an einem Z-Wave-Gateway bereits registrierten/inkludierten Geräte sind im Gateway selbst abgespeichert und können durch FHEM jederzeit wieder abgerufen werden. Dies kann man in folgenden Fällen sinnvoll nutzen:&lt;br /&gt;
* Inklusion mit einem batteriegespeisten ZWave-Gateway (bspw. Aeon Labs Z-Stick) ohne FHEM-Server-Anschluss während der Inklusion&lt;br /&gt;
* Umstieg eines ZWave-Netzwerkes von Fremdsoftware auf FHEM  &lt;br /&gt;
* Vollständiger oder teilweiser Verlust der FHEM-Konfiguration&lt;br /&gt;
&lt;br /&gt;
Eine Node-Liste aller inkludierten Geräte des Gateways wird abgerufen durch:&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; nodeList&lt;br /&gt;
Es wird eine Liste aller im Gateway inkludierten Gerät inklusive Gateway selbst zurückgeliefert. Sofern ein Gerät bereits als FHEM-Device angelegt wurde, wird der FHEM-Device-Name in der nodeList angezeigt. Dies ist für das Gateway selbst immer der Fall. Alle noch nicht in FHEM angelegten Geräte, werden als &amp;quot;UNKNOWN_x&amp;quot; ausgegeben, wobei x die ID des betreffenden Gerätes ist.&lt;br /&gt;
&lt;br /&gt;
Mit dem folgenden Befehl wird beispielsweise das bereits im Gateway inkludierte Gerät mit der ID 2 (in der nodeList angezeigt als &amp;quot;UNKNOWN_2&amp;quot;) in FHEM durch autocreate definiert:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; createNode 2&lt;br /&gt;
&lt;br /&gt;
Batteriebetriebene Geräte müssen bei Absetzen des &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt;-Befehls wach sein, damit der Befehl verarbeitet werden kann. Dies erreicht man, indem man das Gerät auf &amp;quot;permanent wach&amp;quot; stellt. Falls das Gerät diese Funktion nicht anbietet, muss man es manuell aufwecken und max. 2 Sekunden später den &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt;-Befehl absetzen. Alternativ kann das batteriebetriebene Gerät durch Versand des NIF vom Gerät aus automatisch in FHEM erzeugt werden: Hierzu am Gerät die Taste zum Versand des NIF drücken und &amp;lt;code&amp;gt;autocreate&amp;lt;/code&amp;gt; legt das FHEM-Device an; der Aufruf von &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt; entfällt dann.&lt;br /&gt;
&lt;br /&gt;
== Geräte-Besonderheiten ==&lt;br /&gt;
=== batteriebetriebene Geräte ===&lt;br /&gt;
Batteriebetriebenen Geräten können hinsichtlich ihrer Empfangsbereitschaft unterschieden werden in&lt;br /&gt;
&lt;br /&gt;
* Wakeup-Geräte&lt;br /&gt;
* FLIRS-Geräte&lt;br /&gt;
&lt;br /&gt;
==== Wakeup-Geräte ====&lt;br /&gt;
Wakeup-Geräte sind momentan die häufigste Art von batteriebetriebenen Z-Wave Geräten. Sie sind erkennbar an der Unterstützung der Command Class WAKE_UP.&lt;br /&gt;
Zur Verlängerung der Batterielaufzeit legen sich batteriebetriebene Wakeup-Geräte „schlafen“ und wachen (Wakeup) nur in konfigurierbaren Intervallen auf, um Befehle zu verarbeiten. Das Aufwachen signalisieren die Geräte durch den Versand einer Nachricht &amp;quot;wakeup notification&amp;quot;. Daraufhin senden FHEM und andere Geräte ihre bis dahin gesammelten Befehle, die dann verarbeitet bzw. beantwortet werden. Anschließend gehen die batteriebetriebenen Geräte wieder in den Schlafmodus.&lt;br /&gt;
&lt;br /&gt;
FHEM teilt bei set/get-Befehlen an batteriebetriebene Geräte über einen Hinweis der Form&lt;br /&gt;
:&amp;lt;code&amp;gt;Scheduled for sending after WAKEUP&amp;lt;/code&amp;gt; &lt;br /&gt;
::oder&lt;br /&gt;
:&amp;lt;code&amp;gt;Scheduled get requests for sending after WAKEUP&amp;lt;/code&amp;gt;&lt;br /&gt;
mit, dass der Befehl im Sendstack des FHEM-Geräte-Devices abgespeichert wurde und bei der nächsten &amp;quot;wakeup notification&amp;quot; an das Gerät versendet wird. Ein Versand der Befehle im Sendstack findet grundsätzlich ausschließlich nach Erhalt der &amp;quot;wakeup notification&amp;quot;-Nachricht statt, selbst wenn das Gerät zwischendurch andere Telegramme (bspw. Bewegungsmeldung, Temperatur) an den Controller verschickt. Nur nach Versand der &amp;quot;wakeup notification&amp;quot; ist das batteriebetriebene Gerät grundsätzlich in der Lage (&amp;quot;wach genug&amp;quot;), Telegramme korrekt zu empfangen und zu verarbeiten.&lt;br /&gt;
&lt;br /&gt;
Wie viele Nachrichten im Sendstack auf einen Versand an das Gerät warten, ist im Internal &amp;lt;code&amp;gt;cmdsPending&amp;lt;/code&amp;gt; des zugehörigen FHEM-Devices ersichtlich. Welche Nachrichten (Befehle) im Sendstack warten, ist in der Ausgabe des Befehls &amp;lt;code&amp;gt;[[list]] &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt; erkennbar: Unter der Überschrift Sendstack sind alle wartenden Nachrichten als Rohnachrichten aufgeführt. Der Sendstack wird beim Beenden von FHEM nicht gespeichert. Durch Beenden von FHEM (beispielsweise durch &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt;) geht der Sendstack der Geräte daher verloren.&lt;br /&gt;
&lt;br /&gt;
Das Wakeup-Interval und der Empfänger der &amp;quot;wakeup notification&amp;quot; wird wie folgt konfiguriert:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; wakeupInterval &amp;lt;time&amp;gt; &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;time&amp;gt;&amp;lt;/nowiki&amp;gt; ist die Zeit in Sekunden zwischen den Intervallen und &amp;lt;nodeID&amp;gt; der gewünschte Empfänger der &amp;quot;wakeup notification&amp;quot;; in der Regel ist dies &#039;&#039;&#039;immer&#039;&#039;&#039; der Controller &amp;lt;CtrlNodeId&amp;gt;. Viele Geräte kommen im Auslieferungszustand mit der NodeID 255. Die &amp;quot;wakeup notification&amp;quot; wird dann als Broadcast ohne Nutzung von Routing an alle erreichbaren Geräte gesendet. Hier sollte die Konfiguration auf die NodeID des Controllers geändert werden, da dadurch die &amp;quot;wakeup notification&amp;quot; geroutet wird und größere Entfernungen zwischen Gerät und Controller möglich sind. Zudem ist dies robuster und spart zusätzlich noch Batterielaufzeit. Darum setzt FHEM bei der Inklusion von WakeUp-Geräten &#039;&#039;&#039;automatisch&#039;&#039;&#039; den Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; wakeupInterval 86400 &amp;lt;ControllerNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ab. Bei abweichenden eigenen Vorstellungen ist dies gegebenenfalls anzupassen. Bei Geräten mit V2 der Command Class WAKE_UP kann das vom Hersteller vorgesehene Standard-wakeupInterval mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; wakeupIntervalCapabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vom Gerät abgerufen werden. Die Einstellungen von wakeupInterval nach Inklusion und nach jeder Änderung immer mit der Abfrage &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; wakeupInterval&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; überprüfen.&lt;br /&gt;
&lt;br /&gt;
Ein Aufwachen und Versand der &amp;quot;wakeup notification&amp;quot; von batteriebetriebenen Geräten kann für die [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] manuell erzwungen werden. Hierzu bringt man das Gerät normalerweise in den Inklusionsmodus oder findet in der Bedienungsanleitung gegebenenfalls andere Informationen. Bitte beachten, dass dann je nach Gerät nur eine geringe Entfernung von Gateway und Gerät vorhanden sein darf (direkte Erreichbarkeit). Alternativ kann für die Dauer der Assoziation und Konfiguration das Wakeup-Interval verkürzt werden (beispielsweise auf 60 Sekunden), wodurch das Routing genutzt werden kann und größere Entfernungen zwischen Gateway und Gerät überbrückt werden können. Anschließend das Wakeup-Interval wieder auf eine batterieschonenende Dauer einzustellen.&lt;br /&gt;
&lt;br /&gt;
Einzelne batteriebetriebene Gerät lassen sich für längere Zeit auf &amp;quot;wach&amp;quot; bzw. permanent &amp;quot;wach&amp;quot; stellen. Dann aus dem Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen, damit Befehle in diesem Gerätemodus von FHEM direkt verschickt werden. Nach Ausschalten des &amp;quot;wach&amp;quot;-Modus &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; wieder im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Bei Konfigurationsänderungen an batteriebetriebenen Geräten mit &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; config...&amp;lt;/code&amp;gt; sollte die korrekte Verarbeitung der Befehle immer mit dem entsprechenden &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; config...&amp;lt;/code&amp;gt; oder -falls vorhanden- mit &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; configAll&amp;lt;/code&amp;gt; überprüft werden, um eventuelle Funk-Telegrammverluste sofort festzustellen.&lt;br /&gt;
&lt;br /&gt;
==== FLIRS-Geräte ====&lt;br /&gt;
Ein batteriebetriebene FLIRS (frequently listening routing slave) Gerät wacht in sehr kurzen Zeitabständen (250ms oder 1000ms) auf und prüft, ob ein Funksignal vorliegt. Liegt kein Funksignal vor geht das Gerät wieder in Tiefschlaf. Zum Aufwecken eines FLIRS-Gerätes ist ein dauerhaftes Funksignal -der Wakeup-Beam-, notwendig, das etwas länger als die Aufweckzeitabstände sein muss. Näher beschrieben unter anderem [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF hier]. &lt;br /&gt;
&lt;br /&gt;
FLIRS-Geräte haben nicht die Command Class WAKE_UP und arbeiten deshalb nicht mit &amp;quot;wakeup notification&amp;quot;. Aus Sicht des FHEM-Nutzers sind die bekannten FLIRS-Geräte (Sirenen von Vision und Popp) nicht anders zu bedienen/einzurichten als netzgespeiste Geräte. Wakeup-Beam und andere Besonderheiten werden unsichtbar für den Nutzer automatisch abgewickelt.&lt;br /&gt;
&lt;br /&gt;
=== Aeon Labs / Aeotec ===&lt;br /&gt;
Ausführliche Handbücher und technische Informationen auf https://aeotec.freshdesk.com/support/home&lt;br /&gt;
&lt;br /&gt;
==== Multi Sensor 5 ====&lt;br /&gt;
* aktuellste Firmware installieren&lt;br /&gt;
* Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; um &amp;lt;code&amp;gt;BASIC&amp;lt;/code&amp;gt; ergänzen (ab [[version|Modulversion]] 8824/25.6.2015 wird das automatisch bei der Inklusion durchgeführt)&lt;br /&gt;
* bei USB-Anschluss aus Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen&lt;br /&gt;
* Parameter 101 auf 225 (oder 224 bei USB-Anschluss) setzen mit &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; configGroup1Reports 225&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; configLong 101 225&amp;lt;/code&amp;gt;, um Batteriezustand (nicht bei 224), Temperatur, Feuchte und Helligkeit regelmäßig zu erhalten. Das Sende-Intervall wird duch &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; configGroup1Interval &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; festgelegt (Standard 720 Sek).&lt;br /&gt;
* [http://devel.pepper1.net/zwavedb/device/407 Paramterübersicht pepper-Datenbank]&lt;br /&gt;
siehe {{Link2Forum|Topic=34505|Message=268913}}&lt;br /&gt;
&lt;br /&gt;
==== Multisensor 6 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40393}}&lt;br /&gt;
* arbeitet bei USB-Anschluß als Router&lt;br /&gt;
* bei USB-Anschluss aus Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen&lt;br /&gt;
* die &amp;lt;code&amp;gt;configGroupxInterval&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;configxxxReportingThreshold&amp;lt;/code&amp;gt; Einstellungen wirken nur bei USB-Anschluss, im reinen Batteriebetrieb werden die Sensordaten nur bei einem &amp;lt;code&amp;gt;wakeup&amp;lt;/code&amp;gt; übertragen&lt;br /&gt;
&lt;br /&gt;
==== Aeotec LED Bulb ZW098-C55 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40504}}&lt;br /&gt;
&lt;br /&gt;
=== Danfoss ===&lt;br /&gt;
==== DAN_LC-13 Heizungsthermostat LC-13 (014G0013) ====&lt;br /&gt;
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem &amp;lt;code&amp;gt;at&amp;lt;/code&amp;gt; abgefragt werden ({{Link2Forum|Topic=32145|Message=260795}}):&lt;br /&gt;
 define Atdanfoss at +*00:30 get &amp;lt;name&amp;gt; battery&lt;br /&gt;
Auf dem Markt sind mehrere Varianten des Thermostates LC-13 erhältlich. Darum beim Kauf unbedingt auf die genaue Bezeichnung LC-13 (014G0013) achten ({{Link2Forum|Topic=38041|Message=303146}}). &lt;br /&gt;
&lt;br /&gt;
=== devolo ===&lt;br /&gt;
Ausführliche Handbücher auf http://products.z-wavealliance.org&lt;br /&gt;
&lt;br /&gt;
==== MT02648 Tür-/Fenster Kontakt 3in1 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=41337}}&lt;br /&gt;
&lt;br /&gt;
=== DüWI ===&lt;br /&gt;
Geräte von DÜWI liefern bei örtlicher Betätigung kein automatisches Funk-Signal über die Statusänderung. Das liese sich nur durch eine regelmäßige Statusabfrage durch FHEM (beispielsweise &amp;lt;code&amp;gt;define Status_Abfrage at +*00:03:00 get &amp;lt;name&amp;gt; swmStatus&amp;lt;/code&amp;gt;) beheben.&lt;br /&gt;
Einige Produkte von [http://zwave.me Z-Wave.Me] basieren auf DÜWI-Geräten. Diese Z-Wave.Me Produkte haben jedoch eine erweiterte Firmware, welche die genannte und weitere Firmware-Schwächen der Original-Produkte von DÜWI behebt.&lt;br /&gt;
&lt;br /&gt;
=== Everspring ===&lt;br /&gt;
==== AN145 Sockelmodul E27 ====&lt;br /&gt;
Statusabfrage ohne permanente Abfrage: {{Link2Forum|Topic=48864|Message=405545|Beitrag}}&lt;br /&gt;
&lt;br /&gt;
=== Fibaro ===&lt;br /&gt;
Association Group für Übermittlung von Statusinformationen an den Controller:&lt;br /&gt;
* &amp;quot;alte&amp;quot; ZWave-Geräte (kein ZWave-Plus): häufig Association Group 3&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; associationAdd 3 &amp;lt;CtrlNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Bei diesen Geräten empfiehlt es sich zur Funklastreduzierung und Problemminimierung zu prüfen, ob die von FHEM automatisch vorgenommene Assoziation des Controllers mit der Association Group 1 gelöscht werden kann (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; associationDel 1 &amp;lt;CtrlNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). Nahezu immer werden in Association Group 1 die gleichen Infos, nur mit einer anderen Command Class, wie in der Association Group 3 an den Controller übermittelt.&lt;br /&gt;
* ZWave Plus-Geräte: Association Group 1 (&amp;quot;lifeline&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== FGSS-001 / FGSD-002 Rauchmelder ====&lt;br /&gt;
* nicht untereinander vernetzbar&lt;br /&gt;
* keine Alarmauslösung/Sirenenfunktion durch ZWave-Zentralen&lt;br /&gt;
&lt;br /&gt;
==== FGS-222 Relais Unterputzeinsatz ====&lt;br /&gt;
Bei der Inklusion werden von FHEM 3 Devices angelegt:&lt;br /&gt;
* Hauptdevice (Steuerung und automatischer Status für Kanal 1 und kanalübergreifende Funktionen)&lt;br /&gt;
* Device für Endpoint 1 (Steuerung Kanal 1)&lt;br /&gt;
* Device für Endpoint 2 (Steuerung und automatischer Status von Kanal 2)&lt;br /&gt;
Die Firmware des FGS-222 übermittelt den Status für Kanal 1 automatisch immer ausschließlich an das Hauptdevice. Die Steuerung von Kanal 1 kann hingegen sowohl über das Hauptdevice als auch über das Device für Endpoint 1 erfolgen. Das Device für Endpoint 1 ist somit nicht zwingend erforderlich und kann grundsätzlich gelöscht oder in den room hidden verschoben werden.&lt;br /&gt;
&lt;br /&gt;
Details: {{Link2Forum|Topic=50176}}&lt;br /&gt;
&lt;br /&gt;
Hinweis zum Reset: {{Link2Forum|Topic=55190|Message=469393}}&lt;br /&gt;
&lt;br /&gt;
==== FGK-101 Tür/Fensterkontakt ====&lt;br /&gt;
* Besonderheiten bei Anschluss eines Temperatursensors: {{Link2Forum|Topic=38012}}&lt;br /&gt;
&lt;br /&gt;
=== GE ===&lt;br /&gt;
==== GE (Model t.b.d) ====&lt;br /&gt;
Dieser Schalter unterstützt keine Statusrückmeldungen.&lt;br /&gt;
&lt;br /&gt;
=== Merten ===&lt;br /&gt;
Laut {{Link2Forum|Topic=38133}} müssen bei einigen Merten-Geräten, die mit Fremdsoftware inkludiert wurden, gegebenenfalls die Geräte wieder exkludiert und dann erneut mit FHEM inkludiert werden, damit Assoziationen mit FHEM gesetzt werden können.&lt;br /&gt;
&lt;br /&gt;
=== Philio ===&lt;br /&gt;
==== PHI_PAN04 Relais Unterputzeinsatz 2 Schalter a 1.5kW mit Messfunktion ====&lt;br /&gt;
siehe {{Link2Forum|Topic=28046}}&lt;br /&gt;
&lt;br /&gt;
=== Popp ===&lt;br /&gt;
==== POPE004001 Z-Wave Rauchmelder mit Innensirene ====&lt;br /&gt;
siehe {{Link2Forum|Topic=39856}}&lt;br /&gt;
==== POPE005107 Z-Wave Außensirene ====&lt;br /&gt;
siehe {{Link2Forum|Topic=42736}}&amp;lt;br&amp;gt;&lt;br /&gt;
Alte Firmwareversionen haben einen Bug bei der Übermittlung von negativen Temperaturen. Eine Lösungsvariante über ein &amp;lt;code&amp;gt;userReadings&amp;lt;/code&amp;gt; findet sich auch im verlinkten Thema. &lt;br /&gt;
==== POPE009006 Z-Wave Wall Plug Switch ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40771}}&lt;br /&gt;
==== POPE009402 10Year Smoke Detector ====&lt;br /&gt;
Die erste Firmwareversion hat eine fehlerhafte modelID.  Diese Rauchmelder wird dadurch fälschlich als [[Z-Wave#POPE005107_Z-Wave_Au.C3.9Fensirene|Popp Aussensirene]] in FHEM angezeigt. Neuere Geräte werden laut Popp mit der korrekten modelID ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
=== Z-Wave.Me ===&lt;br /&gt;
==== ZME_RC2 Fernbedienung ====&lt;br /&gt;
siehe {{Link2Forum|Topic=35513}}&amp;lt;BR&amp;gt;&lt;br /&gt;
Das Forenthema enthält eine detaillierte Beschreibung der Nutzung der Class MULTI_CHANNEL_ASSOCIATION.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Geräte-Vergleich ==&lt;br /&gt;
=== Doppel-Relais ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Eigenschaft !! FIBARO Double Switch 2-FGS-223 !! Qubino Flush 2 relays  !! Philio-PAN04 1&lt;br /&gt;
|-&lt;br /&gt;
| Funktion || Doppel-Relais || Doppel-Relais || Doppel-Relais&lt;br /&gt;
|-&lt;br /&gt;
| Standby-Leistung || ca. 0.4W || ca. 0.4W || ca. 0.5W&lt;br /&gt;
|-&lt;br /&gt;
| Reaktion beim Schalten am Tastereingang || schnell, kaum merkliche Verzögerung ||  schnell, kaum merkliche Verzögerung || langsam, unangenehm langes drücken des Tasters nötig &amp;gt;1 Sekunde &lt;br /&gt;
|-&lt;br /&gt;
| Geräte in FHEM || 3 &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 || 3  &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 || 4  &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 &amp;lt;br&amp;gt; x.03 Summengerät (ähnlich Hauptgerät, überflüssig)&lt;br /&gt;
|-&lt;br /&gt;
| Zustand Hauptgerät || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais&lt;br /&gt;
|-&lt;br /&gt;
| Statuswechsel Report vom Gerät zum FHEM || ca. 1 Sekunde || ca. 3 Sekunden || ca. 3-4 Sekunden&lt;br /&gt;
|-&lt;br /&gt;
| Empfänger des Status Reports || Hauptgerät und Untergeräte || Nur Hauptgerät &amp;lt;br&amp;gt; Aktualisierung der Untergeräte nur bei aktiver Abfrage  || Nur Hauptgerät &amp;lt;br&amp;gt;Aktualisierung der Untergeräte nur bei aktiver Abfrage &lt;br /&gt;
|-&lt;br /&gt;
| Leistungsmessung || Separat für Untergeräte || Nur Summe || Nur Summe&lt;br /&gt;
|-&lt;br /&gt;
| Leitungssicherung nötig || ja, 2x 6.5A, Summe max 10A || ja, max 2x 4A  || nein, 2x 6.5A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
* Grundlageninformation &amp;quot;Z-Wave-Haupt-Anleitung&amp;quot;: [http://www.zwave.de/z-wave-funknetz-einrichten-und-betreiben/ Wie errichte und betreibe ich ein Z-Wave basiertes Funknetz]&lt;br /&gt;
* [http://www.zwave.de/buch-z-wave-grundlagen/ Buch] &amp;quot;Z-Wave: Die Funktechnologie für das Smart Home&amp;quot; von Dr. Christian Paetz (Paetz &amp;quot;is the primary European representative for the Z-Wave Alliance&amp;quot; [http://z-wavealliance.org/global-contacts/])&lt;br /&gt;
* Z-Wave-Produktdatenbank mit Angabe zur Zertifizierung, Handbüchern und weiteren Detailinfos (Z-Wave oder [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus]): http://products.z-wavealliance.org (englisch)&lt;br /&gt;
* herstellerübergreifende Datenbank mit Bedienungsanleitungen zu Z-Wave-Geräten: http://www.zwave.de/handbuecher/ oder http://manuals.zwaveeurope.com (mehrsprachig)&lt;br /&gt;
* herstellerübergreifende Datenbank mit technischen Informationen zu Z-Wave-Geräten (Z-Wave Device Library): http://devel.pepper1.net/zwavedb/ (englisch; wird derzeit nicht mehr aktualisiert)&lt;br /&gt;
* informative Webseiten zu Z-Wave:&lt;br /&gt;
** [http://www.z-wavealliance.org/ http://www.z-wavealliance.org/] (englisch)&lt;br /&gt;
** [http://www.zwaveeurope.com/ http://www.zwaveeurope.com/] (englisch)&lt;br /&gt;
** [http://www.zwave.de/ http://www.zwave.de/] (deutsch)&lt;br /&gt;
** [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF Introductory Guide to Z-Wave-Technology von Honeywell] (englisch; nicht auf aktuellem Stand)&lt;br /&gt;
&lt;br /&gt;
=== Informationsquellen zur Einbindung von Command Classes ===&lt;br /&gt;
Offizielle und ausführliche Informationen von Sigma Designs (veröffentlicht am 31.08.2016):&lt;br /&gt;
* [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen (seit Veröffentlichung der Z-Wave Spezifikationen am 31.08.2016 geringe Relevanz)&lt;br /&gt;
* [https://github.com/yepher/RaZBerry Infos zu Command Classes (ausführlich; insbesondere im Verzeichnis &amp;quot;docs&amp;quot;), RaZBerry und Z-Wave allgemein], englisch&lt;br /&gt;
* [http://220.135.186.178/zwave/example/ Übersicht von Command Classes und deren Rückgabewerten mit Unterscheidung der Class-Versionen], englisch&lt;br /&gt;
* Code von http://www.openzwave.org (https://github.com/OpenZWave/open-zwave) und http://www.openhab.org (Z-Wave binding: https://github.com/cdjackson/openhab)&lt;br /&gt;
* eine Java-API-Beschreibung mit Hinweisen zu Unterschieden von Class-Versionen: http://dz.prosyst.com/pdoc/mBS_SH_SDK_8.1/modules/zwave/api/driver/index.html&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== Welche Infos sollten Anfragen im ZWave-Forum enthalten? ===&lt;br /&gt;
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ergibt Ausgabe &amp;quot;nothing to do...&amp;quot;&lt;br /&gt;
* detaillierte Beschreibung des Problems&lt;br /&gt;
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)&lt;br /&gt;
* list des jeweiligen FHEM-Devices (Ausgabe von &amp;lt;code&amp;gt;list &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
::Bitte vor Aufruf des list-Befehls -wenn vorhanden/möglich- folgende Befehle ausführen und Ergebnis abwarten:&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; associationAll&amp;lt;/code&amp;gt; &lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; configAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; versionClassAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcaAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; wakeupInterval&amp;lt;/code&amp;gt; (nur bei batteriebetriebenen Geräten)&lt;br /&gt;
* passender Ausschnitt aus dem Logfile (siehe Link im FHEM-Menü links) generiert mit den gesetzten Attributen&lt;br /&gt;
::*&amp;lt;code&amp;gt;attr &amp;lt;ZWDongle&amp;gt; verbose 5&amp;lt;/code&amp;gt; und&lt;br /&gt;
::*&amp;lt;code&amp;gt;attr global mseclog 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Welche Schritte sind für die Einbindung von ZWave-Geräten in FHEM mindestens durchzuführen? ===&lt;br /&gt;
Voraussetzung: ZWave-Gateway ist erfolgreich eingebunden!&lt;br /&gt;
# [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes&lt;br /&gt;
# [[#Assoziation|Assoziation]] der Assoziationsgruppe(n) des Gerätes mit dem Gateway&lt;br /&gt;
# [[#Konfiguration|Konfiguration]] des Gerätes&lt;br /&gt;
&lt;br /&gt;
=== Warum bleibt der Status (STATE) des neu inkludierten Gerätes dauerhaft auf &amp;quot;associationAdd &amp;lt;associationGroup&amp;gt; &amp;lt;CtrlNodeId&amp;gt;&amp;quot; stehen? ===&lt;br /&gt;
FHEM setzt das Reading &amp;quot;state&amp;quot;, das den STATE bestimmt, nicht bei allen ZWave-Devices mit vordefinierten Standardwerten. Daher bleibt der bei der Inklusion automatisch abgesetzte &amp;quot;associationAdd&amp;quot;-Befehl unter Umständen im STATE stehen, bis der Anwender den STATE über die Vergabe des Attributes &amp;lt;code&amp;gt;{{Link2CmdRef|Anker=stateFormat|Label=stateFormat}}&amp;lt;/code&amp;gt; manuell an seine Bedürfnisse angepasst hat.&lt;br /&gt;
(weitergehende Info zum state/STATE/stateFormat: [[DevelopmentState]])&lt;br /&gt;
&lt;br /&gt;
=== Wie können bei mehrkanaligen Aktoren die zusätzlichen Kanäle (&amp;gt;1) angesprochen werden? ===&lt;br /&gt;
* Bei der [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes wird das Hauptdevice mit dem Namen &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; und die Devices für alle Kanäle (Endpoints) nach dem Namensschema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;.&amp;lt;EndpointNr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; automatisch angelegt. Jedes dieser FHEM-Devices spricht regelmäßig einen bestimmten Kanal des Gerätes an; einige Geräte sprechen mit dem Hauptdevice jedoch das gesamte Gerät mit allen Kanälen an (Bedienungsanleitung beachten).&lt;br /&gt;
* Manuell werden Devices für zusätzliche Kanäle mit Hilfe der Befehle &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcEndpoints&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcCapability &amp;lt;chid&amp;gt;&amp;lt;/code&amp;gt; aus der Class MULTI_CHANNEL ermittelt bzw. einzeln über autocreate angelegt (Details und Beispiel siehe {{Link2CmdRef|Anker=ZWaveget}}). Mit dem Befehl &amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; mcCreateAll&amp;lt;/code&amp;gt; werden automatisch alle Kanäle des Gerätes durch autocreate als eigene Devices in FHEM angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man die SDK-Version eines Gerätes herausfinden? ===&lt;br /&gt;
Mit FHEM alleine kann eine [[#Grobermittlung|Grobermittlung]] der SDK-Version vorgenommen werden, die aber für einige Zwecke bereits ausreichend ist. Soll eine [[#Detailermittlung|Detailermittlung]] der genauen SDK-Version erfolgen, dann müssen die mit FHEM ermittelten Werte anhand externer Quellen übersetzt werden.&lt;br /&gt;
==== Grobermittlung ====&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; nodeInfo &amp;lt;dezimale nodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; liefert das Reading &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nodeInfo_&amp;lt;dezimale nodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
Die Angabe im Reading hinter &amp;lt;code&amp;gt;ProtocolVers:&amp;lt;/code&amp;gt; lässt grobe Rückschlüsse zu. Mögliche (bekannte) Werte:&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; -&amp;gt; bspw. keine Explorer Frames, keine SUC-Unterstützung (veraltet, keine bekannten Geräte mehr im Handel)&lt;br /&gt;
* &amp;lt;code&amp;gt;SDK5.0x+4.2x&amp;lt;/code&amp;gt; -&amp;gt; bspw. keine Explorer Frames, teilweise SUC-Unterstützung&lt;br /&gt;
* &amp;lt;code&amp;gt;SDK4.5x+6.0x&amp;lt;/code&amp;gt; -&amp;gt; bspw. Explorer Frames- und SUC-Unterstützung (Reading-Wert wird auch bei SDK 6.5x = Z-Wave Plus angezeigt)&lt;br /&gt;
==== Detailermittlung ====&lt;br /&gt;
Durch den Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; version&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; kann man die ZWave-Protokoll-Version von Geräten und Controller abfragen. Mit Unterstützung von Übersetzungstabellen&lt;br /&gt;
* http://wiki.micasaverde.com/index.php/ZWave_Protocol_Version&lt;br /&gt;
* Suche nach sdkids.xml in einer Suchmaschine&lt;br /&gt;
kann aus der Protokoll-Version das genutzte SDK festgestellt werden.&lt;br /&gt;
&lt;br /&gt;
Beispielsweis entspricht das Reading eines Gerätes &amp;quot;Lib 6 &#039;&#039;&#039;Prot 2.64&#039;&#039;&#039; App 1.6&amp;quot; dem SDK 5.02 Patch 2 oder eines Controller &amp;quot;Z-Wave &#039;&#039;&#039;3.41&#039;&#039;&#039; STATIC_CONTROLLER&amp;quot; dem SDK 6.02.00.&lt;br /&gt;
 &lt;br /&gt;
HINWEIS: Bei der Vergabe der Protokoll-Version und zugehörigem SDK gibt es keine erkennbare Logik: Eine höhere Protokoll-Version steht nicht notwendig für eine höheres SDK.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann eine verschlüsselte Kommunikation unter Nutzung der Command Class SECURITY eingerichtet werden? ===&lt;br /&gt;
{{Randnotiz|RNText=FHEM unterstützt derzeit ausschließlich SECURITY 1 und nicht das mit dem SDK 6.7 neu eingeführte SECURITY 2 (S2). Soweit bekannt, sind S2-Geräte rückwärtskompatibel zu SECURITY 1.}}&lt;br /&gt;
Die verschlüsselte Kommunikation zwischen Controller und Endgerät setzt eine secure-Inklusion voraus. Bereits mit der Inklusion wird entschieden, ob die Kommunikation von Controller und Endgerät dauerhaft verschlüsselt oder unverschlüsselt erfolgt. Ist ein Gerät bereits normal inkludiert und entscheidet man sich nachträglich für eine verschlüsselte Kommunikation, so ist das nur möglich, indem das Gerät exkludiert und dann wieder secure inkludiert wird.&lt;br /&gt;
&lt;br /&gt;
Ob die Verschlüsselung bei einem Gerät mit Unterstützung der Command Class SECURITY genutzt werden soll, sollte genau überlegt werden. Die Verschlüsselung führt zu einem deutlich größeren Funkverkehr zur Ausführung eines Befehls und teilweise auch zu spürbaren Latenzen.&lt;br /&gt;
&lt;br /&gt;
Vorarbeiten:&lt;br /&gt;
* Das Perl-Modul Crypt-Rijndael muss installiert sein.&lt;br /&gt;
* Das Attribut &amp;lt;code&amp;gt;networkKey&amp;lt;/code&amp;gt; muss mit einem 32-Zeichen langen Hexzahl beim ZWDongle angelegt werden. Dieser Schlüssel sollte nicht veröffentlicht werden und auch zusätzlich separat (bspw. auf Papier) festgehalten werden. Bei Verlust des Attributes und Schlüssels ist eine Kommunikation nur nach erneuter Inklusion möglich.&lt;br /&gt;
&lt;br /&gt;
Ablauf der secure-Inklusion:&lt;br /&gt;
* Controller in den Modus zur secure-Inklusion schalten:&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode onSec&amp;lt;/code&amp;gt; für die Standard-secure-Inklusion&lt;br /&gt;
: oder alternativ&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode onNwSec&amp;lt;/code&amp;gt; für die Nework-Wide-secure-Inklusion&lt;br /&gt;
* Gerät gemäß Handbuch in den Modus zur secure-Inklusion bringen (teilweise ist jeweils für secure- und normale Inklusion ein anderes Vorgehen notwendig!)&lt;br /&gt;
* Das Gerät sollte jetzt automatisch erkannt und das FHEM-Device durch &amp;lt;code&amp;gt;autocreate&amp;lt;/code&amp;gt; angelegt werden. Die secure-inkludierten Geräte haben ein zusätzliches Attribut &amp;lt;code&amp;gt;secure_classes&amp;lt;/code&amp;gt; in dem die Command Classes deren Kommunikation verschlüsselt abläuft aufgelistet sind. Nicht in diesem Attribut, aber in &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; aufgeführte Command Classes wickeln die Kommunikation weiterhin unverschlüsslt ab.&lt;br /&gt;
* Inklusionsmodus des Controllers ausschalten:&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addnode off&amp;lt;/code&amp;gt;&lt;br /&gt;
* Das Vorgehen in FHEM unterscheidet sich von nun an nicht von normal (unverschlüsselt) inkludierten Geräten. Die Verschlüsselung läuft für den Anwender transparent ab. Darum anschließend [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] vornehmen.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man ohne Exklusion Nodes des Controllers löschen? ===&lt;br /&gt;
HINWEIS: Geräte sollten grundsätzlich immer über eine Exklusion aus der Nodelist des Controllers gelöscht werden. Das nachfolgend geschilderte Vorgehen ist nur in Sonderfällen (bspw. Gerätedefekt, gebraucht gekauftes Gateway) anzuwenden.&lt;br /&gt;
&lt;br /&gt;
Nicht mehr zu erreichende/reagierende Nodes (Geräte) können manuell mit dem Befehl &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; gelöscht werden. Dazu muss sich der betroffene Node auf der FailedNodeList des Controllers befinden. Auf die FailedNodeList kommen netzbetriebene Geräte automatisch, wenn sie vom Controller nicht mehr per Funk erreicht werden. Batteriebetriebene Geräte müssen manuell auf die FailedNodelist gesetzt werden, da der Controller nicht feststellen kann, ob sie nur langfristig &amp;quot;schlafen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; löscht nur Nodes auf der FailedNodeList, die erst vor Kurzem nicht erreicht werden konnten. Darum muss sowohl das manuelle Verschieben von batteriebetriebenen als auch das Nicht-Erreichen der netzbetriebenen Geräte erst Kurz vor Aufruf des &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt;-Befehls erfolgt sein. &lt;br /&gt;
&lt;br /&gt;
Vorgehensweise für den Node &amp;lt;NodeId&amp;gt;:&lt;br /&gt;
# An den betroffenen Node eine Telegramm mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; sendNIF &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; verschicken, um ihn auf FailedNodeList zu verschieben bzw. Zeitstempel zu aktualisieren.&lt;br /&gt;
# Abfragen, ob der Node auf der FailedNodeList steht: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; isFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Wenn der Rückgabewert der Abfrage &amp;quot;yes&amp;quot; ist, steht der Node korrekt auf der FailedNodeList und kann mit &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; gelöscht werden.&lt;br /&gt;
# Befehl zum Löschen des Nodes absetzen: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; removeFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Der Befehl testet vor dem Löschen noch einmal, dass der Node nicht erreicht werden kann und entfernt erst dann den Node.&lt;br /&gt;
# Prüfen, der Ergebnisse des &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt;-Befehls im Log oder [[Event monitor]]. Die verschiedenen Ergebnisse werden durch die in der {{Link2CmdRef}} dokumentierten Events signalisiert. Tritt das Ergebnis &amp;quot;failedNodeRemoveProcessBusy&amp;quot; mehrfach hintereinander auf, muss das ZWDongle kurz stromlos gemacht werden.&lt;br /&gt;
# Prüfen, ob der Node nicht mehr auf der Nodelist des Controllers ist: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; nodeList&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siehe auch {{Link2Forum|Topic=32823|Message=292626}}&lt;br /&gt;
&lt;br /&gt;
=== Wie ist der einfachste Weg ein (defektes) Gerät durch ein gleiches Ersatzgerät auszutauschen? ===&lt;br /&gt;
Tauscht man ein defektes Gerät durch ein gleiches Ersatzgerät und inkludiert das Ersatzgerät per &amp;lt;code&amp;gt;addNode&amp;lt;/code&amp;gt;, so erhält das Ersatzgerät eine neue NodeId. Soll das Ersatzgerät die gleiche NodeId wie das alte Gerät erhalten, so muss statt &amp;lt;code&amp;gt;addNode&amp;lt;/code&amp;gt; der Befehl &amp;lt;code&amp;gt;replaceFailedNode&amp;lt;/code&amp;gt; zur Inklusion des Ersatzgerätes (=gleiches Modell) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Vorgehensweise für den Node &amp;lt;NodeId&amp;gt;:&lt;br /&gt;
# sofern das alte Gerät noch ansprechbar ist, die Konfiguration und Assoziationen abfragen, damit man die Werte im Ersatzgerät einfach wieder setzen kann:&lt;br /&gt;
## &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;device&amp;gt; configAll&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;device&amp;gt; associationAll&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# defektes Gerät aus- und neues einbauen&lt;br /&gt;
# Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; sendNIF &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; absetzen, damit das Dongle die NodeId auf die FailedNodeList setzt.&lt;br /&gt;
# Abfragen, ob der Node auf der FailedNodeList steht: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; isFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Wenn der Rückgabewert der Abfrage &amp;quot;yes&amp;quot; ist, steht der Node korrekt auf der FailedNodeList und das Ersatzgerät kann mit &amp;lt;code&amp;gt;replaceFailedNode&amp;lt;/code&amp;gt; inkludiert werden.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;zwdongle&amp;gt; replaceFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; für die NodeId des defekten Gerätes aufrufen und das Ersatzgerät in den Inklusionsmodus bringen&lt;br /&gt;
# Korrekte Inklusion prüfen und beim alten Aktor ausgelesene Werte beim neuen Aktor wieder setzen.&lt;br /&gt;
&lt;br /&gt;
=== Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? ===&lt;br /&gt;
Ja, das ist richtig.&lt;br /&gt;
&lt;br /&gt;
Bei der Inklusion über addNode vergibt der Controller die höchste bisher noch nie verwendete NodeID. Durch Exklusion oder removeFailedNode frei gewordene NodeIDs werden hierbei nicht erneut vergeben. Nur bei einem Controller-Reset, der mit einem unwiederbringlichen Verlust sämtlicher Informationen des ZWave-Netzes und Neuvergabe der HomeID verbunden ist, beginnt die Zählung wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
=== Welche Funktion haben die XML-Config-Dateien in FHEM? ===&lt;br /&gt;
In den XML-Config-Dateien sind Informationen zu einzelnen ZWave-Geräten enthalten, die der Erleichterung der Gerätenutzung und -einbindung in FHEM dienen. Dies sind unter anderem Erläuterungen zu den Parameternummer/-werten, Assoziationsgruppen und Besonderheiten eines Gerätes. Ob eine zum Zwave-Gerät passende XML-Config Datei existiert, wird im Rahmen der Inklusion oder durch manuellen Aufruf des Befehls &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; ermittelt. Wird eine passende XML-Config-Datei gefunden, wird sie automatisch in FHEM eingebunden. Das Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; enthält dann den zugehörigen XML-Config-Dateinamen. Stehen keine XML-Config-Informationen bereit, enthält das Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; den Wert &amp;quot;unknown&amp;quot;. Die Funktionsfähigkeit von FHEM mit ZWave-Geräten ist auch bei fehlender XML-Config-Datei gegeben. Es gibt dadurch keine funktionalen Einschränkungen in FHEM; es entfallen &amp;quot;nur&amp;quot; Erleichterungen und es sind unter Umständen mehr manuelle Schritte bei der Gerätenutzung/-einbindung notwendig.&lt;br /&gt;
&lt;br /&gt;
Erleichterungen bei vorhandener XML-Config für ein ZWave-Gerät:&lt;br /&gt;
* Bei der Inklusion:&lt;br /&gt;
** Assoziationen mit dem Controller bei von Gruppe 1 abweichenender Assoziationsgruppe werden automatisch gesetzt&lt;br /&gt;
** vom NIF nicht gemeldete, aber vom Gerät unterstützte Classes, werden im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; ergänzt&lt;br /&gt;
* Bei der Konfiguration:&lt;br /&gt;
** die Parameternummern stehen als configXY-Befehle zur Verfügung und werden mit Hilfetexten -auch zu den Parameterwerten- in der Detailansicht des FHEM-Device erläutert.&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bitte auch bei vorhandener XML-Config-Datei nach der Inklusion und bei der Konfiguration die Assoziationen und Parameter prüfen. Von den eigenen Vorstellungen abweichende Vorgaben oder gar Fehler in der Config-Datei können nie ausgeschlossen werden. Fehler bitte im Forum ({{Link2Forum|Area=ZWave}}) melden.&lt;br /&gt;
&lt;br /&gt;
=== Wie können fehlende XML-Config-Informationen für mein ZWave-Gerät in FHEM eingebunden werden? ===&lt;br /&gt;
Die XML-Config-Informationen von FHEM sind in folgenden Dateien im Ordner fhem/FHEM/lib gespeichert:&lt;br /&gt;
* openzwave_manufacturer_specific.xml&lt;br /&gt;
* openzwave_deviceconfig.xml.gz&lt;br /&gt;
* fhem_zwave_deviceconfig.xml.gz&lt;br /&gt;
Die in den Dateien enthaltenen Informationen beruhen in großen Teilen auf Daten von openzwave und übernehmen daher das openzwave-Datenformat, das unter https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices näher beschrieben wird. &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;openzwave_manufacturer_specific.xml&amp;quot; enthält die eindeutige Kennung des ZWave-Gerätes, die in FHEM nach Aufruf des Befehls &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; im Reading &amp;lt;code&amp;gt;modelId&amp;lt;/code&amp;gt; des FHEM-ZWave-Devices steht. Weiterhin wird der Klartextname dieses Gerätes, der im Reading &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; angezeigt werden soll, festgelegt. Zudem wird der Dateiname der eigentlichen XML-Config-Datei für das ZWave-Gerät angegeben, der später informativ im Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; steht.&lt;br /&gt;
&lt;br /&gt;
Die Dateien &amp;quot;openzwave_deviceconfig.xml.gz&amp;quot; und &amp;quot;fhem_zwave_deviceconfig.xml.gz&amp;quot; enthalten in komprimierter Form die eigentlichen XML-Config-Dateien für die ZWave-Geräte. FHEM durchsucht beide Dateien nach der passenden XML-Config-Datei. Ist in beiden Dateien eine XML-Config für ein Gerät vorhanden, so werden die XML-Daten aus der &amp;quot;fhem_zwave_deviceconfig.xml.gz&amp;quot; bevorzugt.&lt;br /&gt;
&lt;br /&gt;
Falls ein ZWave-Gerät von FHEM nicht erkannt wird, bitte auf folgenden Seiten nachschauen, ob es schon XML-Config-Dateien gibt, die nur nicht in FHEM eingebunden sind:&lt;br /&gt;
# https://github.com/OpenZWave/open-zwave/tree/master/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner&lt;br /&gt;
# https://github.com/jeedom/plugin-openzwave/tree/master/ressources/openzwave/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner &lt;br /&gt;
# http://www.cd-jackson.com/index.php/zwave/zwave-device-database&lt;br /&gt;
Sofern auf den genannten Seiten Daten vorhanden sind, postet eine Aktualisierungsbitte mit genauem Link zur entsprechenden Seite im Forum ({{Link2Forum|Area=ZWave}}).&lt;br /&gt;
&lt;br /&gt;
Gibt es auf keiner der Seiten Infos zu dem Gerät, dann entsprechend https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices die XML-Config-Datei für das Gerät erstellen und unkomprimiert zusammen mit der zu ergänzenden Info für die Datei &amp;quot;openzwave_manufacturer_specific.xml&amp;quot; im Forum ({{Link2Forum|Area=ZWave}}) zur Verfügung stellen.&lt;br /&gt;
&lt;br /&gt;
=== Wie führt man eine Komplett-Sicherung der ZWave-Installation durch? ===&lt;br /&gt;
Zu einer Komplett-Sicherung der ZWave-Konfiguration gehören:&lt;br /&gt;
&lt;br /&gt;
1. [[Backup]] der FHEM-Installation &lt;br /&gt;
::&#039;&#039;&#039;und&#039;&#039;&#039;&lt;br /&gt;
2. Backup des NVRAM des Controllers&lt;br /&gt;
&lt;br /&gt;
Es genügt nicht nur die FHEM-Installation/Konfiguration zu sichern, da der Controller im NVRAM Daten über HomeID, NodeIDs usw. speichert, die in der FHEM-Installation nicht enthalten sind und auch nicht durch FHEM rekonstruierbar sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
zu 2.) Backup des NVRAM des Controllers&lt;br /&gt;
&lt;br /&gt;
Einige Controllerhersteller bieten eine eigenständige Software zum Backup/Restore an (siehe Hinweise zu den Controllern unter [[#Autocreate_des_Gateways]]).&lt;br /&gt;
&lt;br /&gt;
FHEM kann mit den ZWDongle-Befehlen &amp;lt;code&amp;gt;backupCreate&amp;lt;/code&amp;gt; das NVRAM der Controller sichern und mit &amp;lt;code&amp;gt;backupRestore&amp;lt;/code&amp;gt; zurückschreiben. Da das Speicherlayout des NVRAM unter anderem von Controller-Hersteller, SDK und Firmwareversion abhängig sein kann, sollte man die Sicherung und Wiederherstellung des eigenen Controllers (auf eigenes Risiko) testen und sinnvollerweise einen gleichen Ersatzcontroller wie den Controller des Produktivsystem besitzen. Erfolgreiche Sicherung/Wiederherstellung wurde im Forum von den ZWavePlus-Controllern UZB1 (256k), Razberry (256k), Vision ZU 1401-5 EU (128k)und AEOTEC Z-Stick Gen5 (256k) berichtet.&lt;br /&gt;
(Weitergehende Infos - neben der {{Link2CmdRef}} - im Forum: {{Link2Forum|Topic=52364}}, {{Link2Forum|Topic=52914}}, {{Link2Forum|Topic=53023}})&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich zur Fortentwicklung der ZWave-Module beitragen? ===&lt;br /&gt;
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten ZWave-Geräten im Forum mitteilen&lt;br /&gt;
* Codeschnipsel und Ideen im Forum posten&lt;br /&gt;
* Fehler und Probleme im Forum melden&lt;br /&gt;
* [[How_to_write_a_patch|Patches]] für 00_ZWDongle.pm und 10_ZWave.pm erstellen&lt;br /&gt;
* Wiki: Ergänzungen und Korrekturen vornehmen; neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen&lt;br /&gt;
&lt;br /&gt;
=== Wie wird ein fehlendes Kernelmodul (Fritzbox) eingebunden? ===&lt;br /&gt;
Auf der Fritzbox (und evtl. auch anderen Systemen) muss sichergestellt werden, dass das Kernelmodul für das Gateway geladen wird. Ansonsten scheitert die Einbindung des Gateways in FHEM.&lt;br /&gt;
&lt;br /&gt;
Für den Aeon Labs Z-Stick muss beispielsweise auf der Fritzbox das Kernelmodul &amp;lt;code&amp;gt;cp2101.ko&amp;lt;/code&amp;gt; geladen werden.&lt;br /&gt;
Diese Datei ist bei einer [[FHEM und FritzBox 7390]] Installation über das Image von [http://www.fhem.de fhem.de] bereits enthalten.&lt;br /&gt;
Um den Aeon Labs Z-Stick zu verwenden, muss dieses Kernelmodul vor oder beim Starten des FHEM-Servers geladen sein. Dies erreicht man durch einen Eintrag in der Datei &amp;lt;code&amp;gt;startfhem&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Zeile kann direkt unterhalb der modprobe Anweisungen eingefügt werden.&lt;br /&gt;
 insmod $home/lib/cp2101.ko&lt;br /&gt;
&lt;br /&gt;
Nach einem FHEM-Neustart sollte das Gateway (der USB Stick) nun erkannt werden.&lt;br /&gt;
&lt;br /&gt;
=== Wie ist der Aufbau der Z-Wave Messages bzw. wie finde ich bei einem Sendefehler die NodeId des Empfängers heraus? ===&lt;br /&gt;
&lt;br /&gt;
Es könnte natürlich hin und wieder vorkommen, dass man im FHEM-Log folgende Fehler vorfindet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWDongle_ProcessSendStack: no ACK, resending message 010a00130603320110259277&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall gab es aus irgendeinem Grund einmalig das Problem, dass der Empfang einer Nachricht vom Empfänger nicht bestätigt wurde. &lt;br /&gt;
Will man dem auf die Spur kommen, so wäre es natürlich von Vorteil, die NodeId des Empfängers herauszufinden. Also muss man sich die Message näher anschauen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;010a00130603320110259277&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 01: data to controller&lt;br /&gt;
* 0a: length of msg&lt;br /&gt;
* 00: ?&lt;br /&gt;
* 13: ZW_SEND_DATA&lt;br /&gt;
* 06: NodeId&lt;br /&gt;
 &lt;br /&gt;
* 03: length of msg&lt;br /&gt;
* 32: Command Class 32 (METER, siehe %zwave_class in 10_ZWave.pm)&lt;br /&gt;
* 01: METER get scale command&lt;br /&gt;
* 10: scale parameter&lt;br /&gt;
 &lt;br /&gt;
* 25: send flags, explorer frames on&lt;br /&gt;
* 92: callbackId (um ACK zu identifizieren)&lt;br /&gt;
* 77: checkSum&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat der Z-Wave-Controller 01 eine Nachricht an die NodeId 06 geschickt, welche vom Node nicht bestätigt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Z-Wave Components|!]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Z-Wave&amp;diff=29806</id>
		<title>Z-Wave</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Z-Wave&amp;diff=29806"/>
		<updated>2019-03-10T12:28:31Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Doppel-Relais */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;{{Infobox Modul&lt;br /&gt;
|Name=ZWDongle&lt;br /&gt;
|ModPurpose=Einbindung Z-Wave-Gateways&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=ZWDongle&lt;br /&gt;
|ModForumArea=ZWave&lt;br /&gt;
|ModTechName=00_ZWDongle.pm &lt;br /&gt;
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=ZWave&lt;br /&gt;
|ModPurpose=Ansteuerung Z-Wave-Geräte über ZWDongle&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=ZWave&lt;br /&gt;
|ModForumArea=ZWave&lt;br /&gt;
|ModTechName=10_ZWave.pm &lt;br /&gt;
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Z-Wave]] ist ein drahtloser Kommunikations-Standard im 868 Mhz-Band (Europa), der von der Firma Sigma Designs und der Z-Wave Alliance, einen Zusammenschluss von mehreren Hundert Herstellern, für die Heimautomatisierung entwickelt wurde. Es existieren mehr als [http://products.z-wavealliance.org 1400 zertifizierte Produkte] verschiedenster Hersteller, die innerhalb eines gemeinsamen Z-Wave-Netzes einsetzbar sind. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia])&lt;br /&gt;
&lt;br /&gt;
Auf dieser Seite werden Grundlagen eines &#039;&#039;&#039;Z-Wave&#039;&#039;&#039; Systems und dessen Einrichtung in FHEM beschrieben.&lt;br /&gt;
== Z-Wave ==&lt;br /&gt;
=== Nodes - Controller und Slaves ===&lt;br /&gt;
Ein Z-Wave-Netz besteht aus mindestens 2 Geräten, den sogenannten &#039;&#039;&#039;Nodes&#039;&#039;&#039; (Knoten). Es setzt sich zusammen aus dem steuernden &#039;&#039;&#039;Controller&#039;&#039;&#039; (Zentrale) und min. 1 bis max. 231 gesteuerten &#039;&#039;&#039;Slaves&#039;&#039;&#039; (Geräten). &lt;br /&gt;
&lt;br /&gt;
=== Home-Id und Node-ID ===&lt;br /&gt;
Innerhalb eines Z-Wave-Netzes gibt es zu 2 Identifikationsnummern zur Kennzeichnung der Netzstruktur:&lt;br /&gt;
# &#039;&#039;&#039;Home-ID:&#039;&#039;&#039; Gemeinsame Identifikationsnummer aller Nodes in einem Netz zur Abgrenzung gegenüber anderen Netzen. Nur Nodes mit der gleichen Home-ID können miteinander kommunizieren.&lt;br /&gt;
# &#039;&#039;&#039;Node-ID:&#039;&#039;&#039; Identifikationsnummer zur eindeutigen Kennzeichnung von jedem Node im Netz. &lt;br /&gt;
&lt;br /&gt;
Die Home-ID ist im Controller (fest) hinterlegt und seine Node-ID ist typischerweise 1. Die Slaves haben zunächst keine Home-ID und Node-ID. Bei der &#039;&#039;&#039;Inklusion&#039;&#039;&#039; (Aufnahme) der Slaves in das Z-Wave-Netz überträgt der Controller seine Home-ID auf die Slaves und weist den Slaves eine eindeutige Node-ID im Netz zu, mit der Sie direkt angesprochen werden. &lt;br /&gt;
&lt;br /&gt;
Besondere Node-ID ist die 255. Eine Nachricht an die Node-ID 255 kann von allen Z-Wave-Nodes ausgewertet werden (Broadcast).&lt;br /&gt;
&lt;br /&gt;
=== Primär- und Sekundärcontroller ===&lt;br /&gt;
Der Controller, der durch Zuteilung seiner Home-ID auf die Slaves, das Netz aufbaut, ist der &#039;&#039;&#039;Primärcontroller&#039;&#039;&#039;. Grundsätzlich können in einem Netz mehrere Controller existieren, aber immer nur ein Primärcontroller. Weitere in das Netz eingebundene Controller werden zum &#039;&#039;&#039;Sekundärcontroller&#039;&#039;&#039;. Ohne besondere Maßnahmen kann nur der Primärcontroller die Inklusion (Einbindung) der Nodes in das Netz durchführen. Hingegen können sowohl Primär- als auch Sekundärcontroller die &#039;&#039;&#039;Exklusion&#039;&#039;&#039; (Ausschluss) eines Nodes aus dem Netz vornehmen.&lt;br /&gt;
&lt;br /&gt;
Der Controller speichert intern diverse Informationen (Home-ID, Node-IDs,..) über das ZWave-Netz. Hierdurch kann unter anderem die Haussteuerungssoftware bei einem PC-Controller relativ unkompliziert gewechselt werden, da die wesentlichen ZWave-Netzinformationen vom Controller selbst verwaltet und gespeichert werden. Andererseits muß bei einem Controllerdefekt das gesamte Netz grundsätzlich neu aufgebaut werden, wenn kein Backup der internen Controllerdaten vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledge ===&lt;br /&gt;
Im Z-Wave-Netz werden Nachrichten vom Empänger-Node an den Sender-Node rückbestätigt (Acknowledge). Bei ausbleibendem Acknowledge wiederholt der Sender-Node die Nachricht automatisch auf Protokollebene bis zu 2 mal. Hierdurch wird eine höhere Betriebssicherheit des Z-Wave-Netzes erreicht. Bei Broadcast-Nachrichten an die Node-ID 255 findet keine Rückbestätigung statt.&lt;br /&gt;
&lt;br /&gt;
=== Vermaschtes Netzwerk mit Routing ===&lt;br /&gt;
Z-Wave nutzt als Netzwerktopologie ein &#039;&#039;&#039;mesh network&#039;&#039;&#039; (vermaschtes Netzwerk), d. h. jeder Node ist mit einem oder mehreren anderen Nodes verbunden. Das hat den Vorteil, dass eine Nachricht zwischen zwei Nodes übermittelt werden kann, selbst wenn diese nicht direkt miteinander kommunizieren können, z. B. weil sie zu weit voneinander entfernt sind. In diesem Fall wird die Funk-Nachricht über einen oder mehrere „Zwischen-Nodes“ übertragen; dieser Vorgang wird &#039;&#039;&#039;Routing&#039;&#039;&#039; genannt. Nur netzgespeiste Z-Wave-Geräte sind Router. Batteriebetriebe Z-Wave-Geräte sind grundsätzlich keine Router und dienen somit auch nicht zur Reichweitenerhöhung. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia]) Einzelne Geräte, die alternativ per Batterie oder USB-Anschluss betrieben werden können, werden bei USB-Anschluss automatisch ({{Link2Forum|Topic=40393|Message=328080}}) oder durch Konfigurationsänderungen ({{Link2Forum|Topic=40393|Message=327331}}) zu Routern.&lt;br /&gt;
&lt;br /&gt;
Informationen über das optimale Routing werden bei der Inklusion der Nodes in einer Routing-Tabelle des Primärcontrollers gespeichert. Dies geschieht durch Abfrage des Nodes, welche weiteren Nodes er erreichen kann. Durch örtliche Änderung oder Defekte von Nodes können die in der Routing-Tabelle gespeicherten Informationen fehlerhaft bzw. suboptimal werden. Dies kann sich in Funkkommunikationsproblemen im Netzwerk äußern. Hier kann ein per Software manuell angeforderter Neuaufbau der Routing-Tabelle gegebenenfalls Abhilfe schaffen. Bei Geräten und Controllern mit aktuellen Firmware-Versionen (SDK 4.5x und SDK 6.xx oder größer, aber &#039;&#039;nicht&#039;&#039; SDK 5.x) und Unterstützung von Explorer Frames kann sich die Routing-Tabelle unter bestimmten Bedingungen auch automatisch aktualisieren (&amp;quot;Selbstheilung&amp;quot;)[https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames].&lt;br /&gt;
&lt;br /&gt;
=== Command Classes ===&lt;br /&gt;
Die Steuerung und Kommunikation der Nodes erfolgt über Befehle die funktionsbezogen in verschiedene &#039;&#039;&#039;Command Classes&#039;&#039;&#039; (Kommandoklassen) zusammengefasst sind.&lt;br /&gt;
&lt;br /&gt;
Alle Z-Wave-Geräte haben als gemeinsame kleinste Übereinstimmung die &#039;&#039;&#039;Class Basic&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Z-Wave-Geräte haben im Originalzustand eine bestimmte arbeitsfähige Grund-Konfiguration. Anpassbar an individuelle Bedürfnisse ist die Konfiguration über die &#039;&#039;&#039;Class Configuration&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Durch eine Assoziation wird definiert, welche Geräte miteinander direkt -ohne Umweg über den Controller- kommunizieren können. Auch bei Ausfall des Controllers können diese Geräte ihre gemeinsame Funkton ausüben. Zudem dienen Assoziationen der Geschwindigkeitssteigerung und Funklastreduzierung innerhalb des Netzes. Angelegt werden Assoziationen über die &#039;&#039;&#039;Class Association&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Dies sind nur die allerwichtigsten Command Classes. Weitere Command Classes sind den Handbüchern zu entnehmen. Zudem enthält die Wiki-Seite [[Z-Wave Command Classes]] weitergehende Informationen.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise zur Z-Wave-Geräteauswahl ===&lt;br /&gt;
Aufgrund der vielen Z-Wave-Gerätehersteller mit jeweils eigenem Z-Wave-Gerätesortiment existiert eine große Produktauswahl. Jedoch gibt es auch große Unterschiede hinsichtlich Produkteigenschaften, Pflege der Produkte, Häufigkeit der Aktualisierung der Produktpalette und so weiter. Schwierigkeiten bereitet insbesondere, dass neben den aktuellesten Chipsätzen und SDKs auch die älteren Chipsätze und SDKs weiterhin in Produkten im Handel verfügbar sind. Neuere Chipsätze und aktuelle SDKs bieten gerade bei der Netzwerkstabilität (Explorer Frames, Reichweite usw.) Vorteile zu älteren Chipsätzen und SDKs. Beispielsweise beherrschen nur Geräte mit SDK 4.5x und 6.x oder neuer die für automatische Routenkorrekturen wichtigen Explorer Frames. Das ältere SDK 5.0, das verwirrenderweise auch noch eine höhere Versionsnummer als das neuere SDK 4.5 besitzt, beherrscht unter anderem keine Explorer Frames. Details hierzu enthält das [https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames wiki.zwaveeurope.com]. Aktuellstes SDK ist Stand 10/2017 das SDK 6.7x, das in ZWave Plus - zertifizierten Produkten zum Einsatz kommt.&lt;br /&gt;
&lt;br /&gt;
Gerade Einsteiger beachten die Unterschiede bei den Chipsätze/SDKs aus Unkenntnis manchmal nicht und ärgern sich im Nachhinein über Probleme bei der Netzwerkstabilität und Reichweite. Darum nachfolgend allgemeine, aber sehr einfache Empfehlungen zur Geräteauswahl. Selbstverständlich wird hier nicht von anderen Produkten abgeraten, wenn man die Unterschiede kennt und Vorteile bei deren Produkteigenschaften sieht. Zudem kann man (leider) schlechtere Produkteigenschaften bei Geräten mit aktuelleren Chipsätzen/SDKs nie ausschließen.&lt;br /&gt;
&lt;br /&gt;
Gateway&lt;br /&gt;
# [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus-Zertifizierung]. Diese ist mittlerweile bei nahezu allen erhältlichen Gateways gegebenen.&lt;br /&gt;
&lt;br /&gt;
Endgeräte&lt;br /&gt;
# Z-Wave Plus-Zertifizierung (aktuellste Technik, höhere theoretische Reichweite, SDK 6.5x oder höher) oder&lt;br /&gt;
# zumindest Explorer Frames-Unterstützung (SDK 4.5x und 6.0x) oder&lt;br /&gt;
# zuletzt -bei Kenntnis der Besonderheiten und Auswirkungen- Produkte ohne Explorer Frames (SDK 5.0x)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kurz&#039;&#039;&#039;: Produkte mit Z-Wave Plus-Zertifizierung einsetzen.&lt;br /&gt;
&lt;br /&gt;
Bitte unbedingt beachten, dass Z-Wave Plus-Vorteile bei einem Mischbetrieb mit älteren (ohne Plus) Geräten teilweise verloren gehen. Zum negativen Effekt des Einsatzes eines älteren, aber weiterhin erhältlichen Z-Wave-Repeaters mit aktuellen Z-Wave Plus-Geräten siehe beispielsweise den Hinweis in diesem {{Link2Forum|Topic=42591|Message=350066}}.&lt;br /&gt;
&lt;br /&gt;
Bei Fragen zu bestimmten Geräten bitte -nach Durchsicht der Hinweise hier im Wiki- im Forum suchen oder anschließend nachfragen.&lt;br /&gt;
&lt;br /&gt;
== Z-Wave in FHEM ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ausführen und anschließend &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt; durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung von Z-Wave in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach möglich. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_FHEM|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht speziell Z-Wave behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend und auf den [[:Kategorie:Z-Wave Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der Konfiguration sollte -zur Verhinderung von Fehlern- nach Möglichkeit immer über das &amp;quot;[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]&amp;quot; und die &amp;quot;[[Konfiguration#Objektdetails|Objektdetails]]&amp;quot; erfolgen.&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Die Bedienungsanleitungen (Handbücher) sind zwingende Voraussetzung zur korrekten Einbindung und Konfiguration von Z-Wave-Geräten in FHEM. Sie müssen daher vorliegen. &lt;br /&gt;
Den ZWave-Geräten liegen teilweise nur gekürzte, gedruckte Fassungen der Handbücher bei (beispielsweise Devolo, AEOTEC). Man sollte bei allen Produkten auf folgenden Seiten nach eventuellen ausführlicheren Handbüchern suchen:&lt;br /&gt;
* Herstellerseite des ZWave-Gerätes&lt;br /&gt;
* http://www.zwave.de/handbuecher/ (deutsch)&lt;br /&gt;
* http://products.z-wavealliance.org (englisch)&lt;br /&gt;
Insbesondere auf http://products.z-wavealliance.org, der Datenbank der ZWave-zertifizierten Produkte, sind regelmäßig ausführliche Informationen zu den Geräten zu finden.&lt;br /&gt;
&lt;br /&gt;
== Definition des Gateways / Controllers ==&lt;br /&gt;
{{Randnotiz|RNText=&#039;&#039;&#039;Tester für ZWave@culfw gesucht!&#039;&#039;&#039;&lt;br /&gt;
Z-Wave-Controllerfunktionen werden derzeit in die Firmware [http://www.culfw.de culfw] für den [[CUL]] implementiert. Weitere Informationen im [[ZWCUL]] - Artikel.}}&lt;br /&gt;
=== Autocreate des Gateways ===&lt;br /&gt;
FHEM kann mit einem Funkgateway Z-Wave-Funk empfangen und senden. Z-Wave-Gateways (Controller) existieren von verschiedenen Herstellern. &lt;br /&gt;
&lt;br /&gt;
Folgende Gateways wurden unter anderem bereits erfolgreich mit FHEM eingesetzt:&lt;br /&gt;
* AEON Labs Z-Stick S2 (SDK 5.x; [https://aeotec.freshdesk.com/support/solutions/articles/6000091809-z-stick-s2-v3-08-firmware-update Firmwareupdate auf 3.08 aus 2016])&lt;br /&gt;
* Aeotec Z-Stick Gen5 (Z-Wave Plus; SDK 6.5; [https://aeotec.freshdesk.com/support/solutions/articles/6000108806-z-stick-gen5-backup-software Backup-Software)] ({{Link2Forum|Topic=47000}})&lt;br /&gt;
* Goodway WD6001 (SDK 5.03 {{Link2Forum|Topic=40594|Message=332235}})&lt;br /&gt;
* Vision Z-Wave USB Stick ZU 1401 EU (SDK 6.0x)&lt;br /&gt;
* Vision Z-Wave USB Stick ZU 1401-5 EU (Z-Wave Plus; SDK 6.5x)&lt;br /&gt;
* Z-Wave.Me Z-StickC ({{Link2Forum|Topic=29930|Message=226530}})&lt;br /&gt;
* Z-Wave.Me USB Stick ZME_UZB1 (SDK 6.5x;  Z-Wave Plus; [http://razberry.z-wave.me/z-way-server/ Firmwareupdate und Backup über z-way])&lt;br /&gt;
* Z-Wave.Me Razberry in Verbindung mit Raspberry Pi (1. Generation: Z-Wave, 2. Generation: Gen5-Razberry mit Z-Wave Plus[http://forum.z-wave.me/viewtopic.php?f=3419&amp;amp;t=21327#p55404]) &lt;br /&gt;
** Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das Razberry-Modul funktionsfähig ist: {{Link2Forum|Topic=78248|Message=702044}})&lt;br /&gt;
** Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]&lt;br /&gt;
&lt;br /&gt;
Folgende Gateways sind &#039;&#039;&#039;nicht&#039;&#039;&#039; mit FHEM einsetzbar:&lt;br /&gt;
* Merten Funk-USB-Datenschnittstelle CONNECT&lt;br /&gt;
&lt;br /&gt;
Sollte das eigene Gateway hier nicht aufgeführt sein, ist aufgrund der Standardisierung dennoch die Chance für eine erfolgreiche Einbindung des Gateways in FHEM vorhanden. Bitte dies hier oder im Forum entsprechend vermerken.&lt;br /&gt;
&lt;br /&gt;
Das Z-Wave-Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim nächsten FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; zumeist automatisch erkannt und das zugehörige FHEM-Device nach dem Namensschema &amp;lt;code&amp;gt;ZWDongle_&amp;lt;[https://forum.fhem.de/index.php/topic,92885.msg854533.html#msg854533 Anhang]&amp;gt;&amp;lt;/code&amp;gt; angelegt. Ein manuelles Anlegen des ZWDongle-Moduls oder Eingriffe in die Konfiguration sind unter Linux normalerweise nicht notwendig. &lt;br /&gt;
&lt;br /&gt;
Unter Windows ist ein manuelles Anlegen der Definition des ZWave-Gateways wegen fehlender Unterstützung des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; erforderlich (Beispiel für Z-Wave.Me USB Stick ZME_UZB1 unter Windows: &amp;lt;code&amp;gt;define ZWDongle_1 ZWDongle COM1@115200&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Das FHEM-Gateway-Device ist nach der Definition in FHEM im Raum &amp;quot;Everything&amp;quot; zu finden.&lt;br /&gt;
&lt;br /&gt;
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:&lt;br /&gt;
&lt;br /&gt;
Aeon Labs Z-Stick an der Fritzbox: &lt;br /&gt;
 define ZWDongle_1 ZWDongle /dev/ttyUSB1@115200&lt;br /&gt;
&lt;br /&gt;
Vision Z-Wave USB Stick ZU 1401 EU am Raspberry Pi (Raspbian):&lt;br /&gt;
 define ZWDongle_1 ZWDongle /dev/ttyACM1@115200&lt;br /&gt;
&lt;br /&gt;
Insbesondere wenn am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt werden, empfiehlt es sich zur Erhöhung der Betriebsstabilität das Z-Wave-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] oder [[LinuxDeviceNaming|uDev-Regeln]] anzusprechen.&lt;br /&gt;
&lt;br /&gt;
Bei einem statischen Controller wird die Einrichtung als SUC -sofern der Controller als solcher nicht bei Auslieferung eingerichtet ist- vor der ersten Inklusion von Geräten empfohlen.&lt;br /&gt;
&lt;br /&gt;
=== homeId und nodeList des Gateways ===&lt;br /&gt;
Zur manuellen Definition von Z-Wave Aktoren und Sensoren ist die &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; notwendig. Bei der hier bevorzugten Definition der Geräte durch autocreate ist die Kenntnis der &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; nicht zwingend. Jedoch sollte durch Abfrage der &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; direkt nach Einbindung des Zwave-Gateways dessen Funktionsfähigkeit getestet werden.&lt;br /&gt;
&lt;br /&gt;
Die &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;CtrlNodeId&amp;lt;/code&amp;gt; des Gateways wird mit folgendem Befehl ausgelesen (&amp;lt;ZWDongle&amp;gt; ist im folgenden durch den Namen des FHEM-Devices des eigenen Gateways zu ersetzen):&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; homeId&lt;br /&gt;
ergibt beispielsweise bei einem Gateway mit dem FHEM-Devicenamen ZWDongle_1:&lt;br /&gt;
 ZWDongle_1 homeId =&amp;gt; HomeId:e345c456 CtrlNodeId:01 &lt;br /&gt;
In diesem Beispiel ist die Home-Id des Gateways ZWDongle_1 e345c456 und das Gateway hat die Node-Id 1.&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Liste der Z-Wave Nodes, die bereits am Gateway registriert/inkludiert sind, wird mit dem folgendem Befehl ausgelesen:&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; nodeList&lt;br /&gt;
ergibt beispielsweise:&lt;br /&gt;
 ZWDongle_1 nodeList =&amp;gt; ZWDongle_1 UNKNOWN_2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition von Geräten / Slaves ==&lt;br /&gt;
=== Hinzufügen eines neuen Z-Wave Geräts / Inklusion ===&lt;br /&gt;
Zur Verfolgung von Inklusionsablauf und Meldungen des Controllers während der Inklusion sollte der [[Event monitor]] in einem 2. Browserfenster vor Aktivierung des Inklusionsmodus geöffnet werden.&lt;br /&gt;
&lt;br /&gt;
Das Z-Wave Gateway wird in den Standard-Modus zur Inklusion (zum Aufnehmen) neuer Geräte gesetzt:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; addNode on&lt;br /&gt;
Bei der Standard-Inklusion muss direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen.&lt;br /&gt;
&lt;br /&gt;
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt des obigen Befehls besser der Network-Wide-Modus für die Inklusion genutzt werden:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; addNode onNw&lt;br /&gt;
Bei der Network-Wide-Inklusion muss kein direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen. Es reicht, wenn das zu inkludierende Gerät über andere bereits inkludierte, netzgespeiste Geräte mit Explorer Frames-Unterstützung erreicht werden kann. Die Network-Wide-Inklusion ist zu bevorzugen, da die Z-Wave-Geräte regelmäßig an Ihren örtlichen Endpositionen inkludiert werden können. Dadurch werden bei der Inklusion direkt die korrekten Routen gespeichert. &lt;br /&gt;
&lt;br /&gt;
Nachdem das Gateway in den Inklusionmodus geschaltet wurde, muss das Gerät in den Inklusionsmodus (Aufnahmemodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. Typisch sind ein- oder dreimaliges Drücken einer Taste am Gerät oder beim Anlegen der Versorgungsspannung. Durch die Inklusion werden Home-ID und Node-ID im Gerät gespeichert. Zudem teilt das Gerät über ein spezielle Funknachricht (NIF=Node Information Frame) dem Controller seinen Gerätetyp und seine Geräteeigenschaften mit. Hierbei werden dem Controller auch die vom Gerät unterstützten Command Classes mitgeteilt. Aus diesen Informationen erzeugt FHEM automatisch durch autocreate das FHEM-Geräte-Device nach dem Namensschema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (an eigene Wünsche anpassbar mit {{Link2CmdRef|Anker=rename|Label=rename}}). Die vom Geräte unterstützen Command Classes, die die in FHEM verfügbaren Befehle bestimmen, werden automatisch im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; des FHEM-Geräte-Device gespeichert. Das Gerät ist damit grundlegend in FHEM definiert und im Raum &amp;quot;ZWave&amp;quot; zu finden. &lt;br /&gt;
&lt;br /&gt;
Nach der Inklusion schaltet FHEM den Inklusionsmodus des Z-Wave Gateway automatisch durch Absetzen des Befehls &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode off&amp;lt;/code&amp;gt; aus und zeigt eine Dialogbox mit dem Ergebnis der Inklusion:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;created ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Inklusion war erfolgreich und es wurde das bezeichnete FHEM-Device durch autocreate angelegt.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;addNode failed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Inklusion ist fehlgeschlagen&lt;br /&gt;
 &lt;br /&gt;
Eine erfolgreiche Inklusion ist zudem am Event &amp;quot;ZW_ADD_NODE_TO_NETWORK protocolDone&amp;quot; im Event monitor und natürlich der Anlage des entsprechenden FHEM-Devices durch autocreate zu erkennen.  Das Scheitern einer Inklusion führt typischerweise zur Ausgabe des Events &amp;quot;ZW_ADD_NODE_TO_NETWORK failed&amp;quot;. Häufigste Ursache sind Controllerprobleme, die sich oftmals durch kurzes Ein- und Ausstecken des Controllers, Neustart des Systems oder Ein- und Ausschalten des FHEM-Server-Computers beheben lassen.&lt;br /&gt;
&lt;br /&gt;
HINWEISE:&amp;lt;br /&amp;gt;&lt;br /&gt;
* Die Network-Wide-Inklusion kann nach derzeitiger Kenntnis auch bei Gateways und Geräten ohne Explorer Frames Unterstützung genutzt werden, da bei diesen Geräten grundsätzlich automatisch auf die Standard-Inklusion umgestellt wird.&lt;br /&gt;
* Bei der Standard-Inklusion ist unter Umständen nur ein geringer Abstand zwischen Gateway und Gerät möglich. Sollte die Inklusion daher nicht durchführbar sein, wenn Gateway und Gerät an ihren örtlichen Endpositionen sind (bevorzugte Variante), dann ist der Abstand zwischen diesen versuchsweise zu verringern. Anschließend bei örtlicher Veränderung die Routen mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWave-Devicename&amp;gt; neighborUpdate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set TYPE=ZWave:FILTER=ZWaveSubDevice=no neighborUpdate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; neu ermitteln lassen. Unter Umständen kann der Abstand nur schrittweise erhöht werden. Dann ist bei jeder Abstandsänderung eine Neuermittlung der Routen notwendig.&lt;br /&gt;
* Der NIF enthält bei manchen Geräten fälschlicherweise nicht alle unterstützten Command Classes. FHEM identifiziert während der Inklusion das Gerät und ergänzt die fehlenden Command Classes aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Weiterhin fehlende Command Classes können im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; manuell am Anfang der Liste entsprechend ergänzt werden. Informationen liefern die unter [[#Links|Links]] aufgeführten Datenbanken. Häufig fehlt die Pflicht-Class BASIC.&lt;br /&gt;
* Bei der hier beschriebenen Inklusion findet die Kommunikation zwischen Controller und Gerät anschließend dauerhaft unverschlüsselt statt. Manche Geräte bieten mit der Command Class SECURITY eine AES-verschlüsselte Kommunikation an. Da die Verschlüsselung zu einer höheren Funklast und Latenzen führt, sollte eine verschlüsselte Kommunikation nur mit Bedacht eingesetzt werden (bspw. bei Schlössern). Als Sonderfall ist das Vorgehen zur secure-Inklusion in der [[#Wie_kann_eine_verschl.C3.BCsselte_Kommunikation_unter_Nutzung_der_Command_Class_SECURITY_eingerichtet_werden.3F|FAQ]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nächster Schritt ist die [[#Assoziation|Assoziation]] des Gerätes mit dem Gateway.&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}&lt;br /&gt;
Z-Wave-Geräte können über Assoziationen direkt mit anderen Z-Wave-Geräten kommunizieren. Dies können zum einen Meldungen über den Status und Zustand der Geräte, als auch direkte Befehle sein. Zum Beispiel kann damit ein Bewegungsmelder eine entdeckte Bewegung an den Controller senden und/oder bei entdeckter Bewegung direkt eine Lampe ein- oder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Die Assoziation zwischen zwei Geräten wird durch Aufnahme des zu steuernden Gerätes in eine oder mehrere Assoziationsgruppe(n) des steuernden Gerätes angelegt. Durch die Wahl der Assoziationsgruppe wird festgelegt, bei welchen Ereignissen welche Nachricht an das assoziierte Gerät verschickt wird. Angaben zu den Ereignissen und versandten Nachrichten an die Geräte in einer bestimmten Assoziationsgruppe stehen in der Bedienungsanleitung des jeweiligen Gerätes.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM Statusmeldungen von Sensoren/Aktoren anzeigen und auch darauf reagieren kann, &#039;&#039;&#039;muss&#039;&#039;&#039; der Controller (&amp;lt;ZWDongle&amp;gt;-Device, &amp;lt;code&amp;gt;CtrlNodeId&amp;lt;/code&amp;gt; = typischerweise 1) immer in der/den passenden Assoziationsgruppe(n) des jeweiligen Gerätes &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; aufgenommen werden:&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;name&amp;gt; associationAdd &amp;lt;associationGroup&amp;gt; &amp;lt;CtrlNodeId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typischerweise ist die Assoziationsgruppe 1 der Geräte für die Statusmeldungen an den Controller vorgesehen (Ausnahme: [[#Fibaro|Fibaro-Geräte ohne ZWave Plus - Zertifizierung]]). Daher nimmt FHEM die Assoziation von Controller mit der Assoziationsgruppe 1 des Gerätes bei der Inklusion immer automatisch vor. Zudem identifiziert FHEM während der Inklusion das Gerät und setzt weitere Assoziationen mit dem Controller für von 1 abweichende Assoziationsgruppen aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Ist keine XML-Config-Datei für das Gerät vorhanden, sind Assoziationen des Controllers mit von 1 abweichenden Assoziationsgruppen oder weiteren Assoziationsgruppen mit dem zuvor genannten Befehl grundsätzlich manuell anzulegen. &lt;br /&gt;
&lt;br /&gt;
Die richtige Anlage der Assoziation(en) des Controllers mit dem Gerät immer prüfen, da dies eine Hauptfehlerquelle bei Funktionsproblemen mit FHEM ist.&lt;br /&gt;
&lt;br /&gt;
Abruf der assoziierten Geräte in einer bestimmten Assoziationsgruppe &amp;lt;associationGroup&amp;gt;:&lt;br /&gt;
 get &amp;lt;name&amp;gt; association &amp;lt;associationGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abruf der assozierten Geräte für alle Assoziationsgruppen eines Gerätes:&lt;br /&gt;
 get &amp;lt;name&amp;gt; associationAll&lt;br /&gt;
&lt;br /&gt;
Nahezu alle in Europa erhältlichen aktuellen Geräte unterstützen die Rückmeldung des Status via Association. Ausnahmen gibt es in Nordamerika, wo aufgrund von Patentansprüchen einige Hersteller auf die Statusrückmeldungen verzichten. Diese Geräte unterstützen in der Regel die Command Class ASSOCIATION nicht.&lt;br /&gt;
&lt;br /&gt;
Nächster Schritt ist die [[#Konfiguration|Konfiguration]] des Gerätes.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}&lt;br /&gt;
Die Standard-Konfiguration eines Gerätes entspricht oftmals nicht den eigenen Wünschen und Anforderungen (Einheiten usw.). Mit den Befehlen der Class CONFIGURATION lässt sich die Konfiguration anpassen. Die zur Konfiguration eines Gerätes notwendigen Angaben zu den Parameternummern, -größen und -werten sind im jeweiligen Geräte-Handbuch bzw. entsprechenden Datenbanken (bspw. [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] oder [http://products.zwavealliance.com/ products.zwavealliance.com]) enthalten. &lt;br /&gt;
&lt;br /&gt;
Die Konfiguration beispielsweise bei Parametergröße 1 lässt sich mit diesem Befehl anpassen:&lt;br /&gt;
 set &amp;lt;name&amp;gt; configByte &amp;lt;Parameternummer&amp;gt; &amp;lt;Parameterwert&amp;gt;&lt;br /&gt;
Für weitere Parametergrößen gibt es die Befehle &amp;lt;code&amp;gt;configWord&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;configLong&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die im Gerät hinterlegten Konfiguration kann pro Parameternummer mit folgendem Befehl abgerufen werden:&lt;br /&gt;
 get &amp;lt;name&amp;gt; config &amp;lt;Parameternummer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zudem bietet FHEM basierend auf den manuell gepflegten XML-Config-Dateien die Möglichkeit, die speziellen Parameternummern des Gerätes mit ihren Parametergrößen und -werte als eigenständige config-Befehle mit Hilfsinformationen einzubinden. Ein manuelles Suchen im Geräte-Handbuch und Nutzung der configByte-, configWord- und configLong-Befehle ist dadurch in vielen Fällen unnötig. Für diese Funktion muss das Gerät von FHEM einmalig durch folgenden Befehl, der bei der Inklusion automatisch ausgeführt wird, identifiziert werden:   &lt;br /&gt;
 get &amp;lt;name&amp;gt; model&lt;br /&gt;
Die Readings &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;modelID&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; werden dadurch erzeugt. In &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; sollte der Klartextname des Gerätes stehen. Zudem sind dann -soweit eine XML-Config Datei für das Gerät existiert- die speziellen set/get-Kommandos configXYZ für das Geräte im Auswahldialog der Detailansicht mit Hilfsinformationen verfügbar:&lt;br /&gt;
[[Datei:Z-Wave_confighelp.PNG|900px|thumb|center|config-Befehl mit Hilfstext]]&lt;br /&gt;
&lt;br /&gt;
Bei vorhandener XML-Config-Datei kann die komplette Konfiguration eines Gerätes abgerufen werden:&lt;br /&gt;
 get &amp;lt;name&amp;gt; configAll&lt;br /&gt;
&lt;br /&gt;
Außerdem wird durch den &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; -Befehl geprüft, ob das Gerät in der [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] und/oder [http://products.zwavealliance.com/ products.zwavealliance.com] enthalten ist. Im Erfolgsfall wird ein Link &amp;quot;Details in pepper DB&amp;quot; und/oder &amp;quot;Details in alliance DB&amp;quot; zum entsprechenden Geräteeintrag in der jeweiligen Datenbank unten in der Detailansicht des FHEM-Geräte-Devices angelegt und ein Bild des Gerätes in die Detailansicht eingebunden.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf von &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; ist auch für die Nutzung der Class MANUFACTURER_PROPRIETARY zwingende Einsatzvoraussetzung.&lt;br /&gt;
&lt;br /&gt;
=== Entfernen eines Z-Wave-Geräts / Exklusion ===&lt;br /&gt;
Durch die Exklusion wird die Home-ID und Node-ID aus dem Gerät und das Gerät selbst aus der Node-List des Controllers gelöscht. Erst nach einer Exklusion kann das Gerät in ein anderes Z-Wave-Netz aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Zuerst wird der Z-Wave Gateway in den Standard-Modus zur Exklusion (Ausschluss) von Geräten gesetzt:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode on&lt;br /&gt;
&lt;br /&gt;
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt dem obigen Befehl besser der Network-Wide-Modus für die Exklusion genutzt werden (siehe auch Erläuterungen zu Standard- versus Network-Wide-Inklusion unter [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]]):&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode onNw&lt;br /&gt;
&lt;br /&gt;
Danach muss das Gerät in den Exklusionsmodus (Ausschlussmodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. &lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Exklusionsmodus am Z-Wave Gateway wieder ausgeschaltet:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode off&lt;br /&gt;
&lt;br /&gt;
Das FHEM-Device muss nach der Exklusion manuell durch &amp;lt;code&amp;gt;delete &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Die durch die Exklusion frei gewordene NodeID wird nicht bei der nächsten Inklusion wiederverwendet, sondern es wird die höchste noch nicht verwendete NodeID genutzt.&lt;br /&gt;
&lt;br /&gt;
=== Erneutes Hinzufügen eines bereits registrierten Z-Wave Geräts ===&lt;br /&gt;
Die an einem Z-Wave-Gateway bereits registrierten/inkludierten Geräte sind im Gateway selbst abgespeichert und können durch FHEM jederzeit wieder abgerufen werden. Dies kann man in folgenden Fällen sinnvoll nutzen:&lt;br /&gt;
* Inklusion mit einem batteriegespeisten ZWave-Gateway (bspw. Aeon Labs Z-Stick) ohne FHEM-Server-Anschluss während der Inklusion&lt;br /&gt;
* Umstieg eines ZWave-Netzwerkes von Fremdsoftware auf FHEM  &lt;br /&gt;
* Vollständiger oder teilweiser Verlust der FHEM-Konfiguration&lt;br /&gt;
&lt;br /&gt;
Eine Node-Liste aller inkludierten Geräte des Gateways wird abgerufen durch:&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; nodeList&lt;br /&gt;
Es wird eine Liste aller im Gateway inkludierten Gerät inklusive Gateway selbst zurückgeliefert. Sofern ein Gerät bereits als FHEM-Device angelegt wurde, wird der FHEM-Device-Name in der nodeList angezeigt. Dies ist für das Gateway selbst immer der Fall. Alle noch nicht in FHEM angelegten Geräte, werden als &amp;quot;UNKNOWN_x&amp;quot; ausgegeben, wobei x die ID des betreffenden Gerätes ist.&lt;br /&gt;
&lt;br /&gt;
Mit dem folgenden Befehl wird beispielsweise das bereits im Gateway inkludierte Gerät mit der ID 2 (in der nodeList angezeigt als &amp;quot;UNKNOWN_2&amp;quot;) in FHEM durch autocreate definiert:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; createNode 2&lt;br /&gt;
&lt;br /&gt;
Batteriebetriebene Geräte müssen bei Absetzen des &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt;-Befehls wach sein, damit der Befehl verarbeitet werden kann. Dies erreicht man, indem man das Gerät auf &amp;quot;permanent wach&amp;quot; stellt. Falls das Gerät diese Funktion nicht anbietet, muss man es manuell aufwecken und max. 2 Sekunden später den &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt;-Befehl absetzen. Alternativ kann das batteriebetriebene Gerät durch Versand des NIF vom Gerät aus automatisch in FHEM erzeugt werden: Hierzu am Gerät die Taste zum Versand des NIF drücken und &amp;lt;code&amp;gt;autocreate&amp;lt;/code&amp;gt; legt das FHEM-Device an; der Aufruf von &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt; entfällt dann.&lt;br /&gt;
&lt;br /&gt;
== Geräte-Besonderheiten ==&lt;br /&gt;
=== batteriebetriebene Geräte ===&lt;br /&gt;
Batteriebetriebenen Geräten können hinsichtlich ihrer Empfangsbereitschaft unterschieden werden in&lt;br /&gt;
&lt;br /&gt;
* Wakeup-Geräte&lt;br /&gt;
* FLIRS-Geräte&lt;br /&gt;
&lt;br /&gt;
==== Wakeup-Geräte ====&lt;br /&gt;
Wakeup-Geräte sind momentan die häufigste Art von batteriebetriebenen Z-Wave Geräten. Sie sind erkennbar an der Unterstützung der Command Class WAKE_UP.&lt;br /&gt;
Zur Verlängerung der Batterielaufzeit legen sich batteriebetriebene Wakeup-Geräte „schlafen“ und wachen (Wakeup) nur in konfigurierbaren Intervallen auf, um Befehle zu verarbeiten. Das Aufwachen signalisieren die Geräte durch den Versand einer Nachricht &amp;quot;wakeup notification&amp;quot;. Daraufhin senden FHEM und andere Geräte ihre bis dahin gesammelten Befehle, die dann verarbeitet bzw. beantwortet werden. Anschließend gehen die batteriebetriebenen Geräte wieder in den Schlafmodus.&lt;br /&gt;
&lt;br /&gt;
FHEM teilt bei set/get-Befehlen an batteriebetriebene Geräte über einen Hinweis der Form&lt;br /&gt;
:&amp;lt;code&amp;gt;Scheduled for sending after WAKEUP&amp;lt;/code&amp;gt; &lt;br /&gt;
::oder&lt;br /&gt;
:&amp;lt;code&amp;gt;Scheduled get requests for sending after WAKEUP&amp;lt;/code&amp;gt;&lt;br /&gt;
mit, dass der Befehl im Sendstack des FHEM-Geräte-Devices abgespeichert wurde und bei der nächsten &amp;quot;wakeup notification&amp;quot; an das Gerät versendet wird. Ein Versand der Befehle im Sendstack findet grundsätzlich ausschließlich nach Erhalt der &amp;quot;wakeup notification&amp;quot;-Nachricht statt, selbst wenn das Gerät zwischendurch andere Telegramme (bspw. Bewegungsmeldung, Temperatur) an den Controller verschickt. Nur nach Versand der &amp;quot;wakeup notification&amp;quot; ist das batteriebetriebene Gerät grundsätzlich in der Lage (&amp;quot;wach genug&amp;quot;), Telegramme korrekt zu empfangen und zu verarbeiten.&lt;br /&gt;
&lt;br /&gt;
Wie viele Nachrichten im Sendstack auf einen Versand an das Gerät warten, ist im Internal &amp;lt;code&amp;gt;cmdsPending&amp;lt;/code&amp;gt; des zugehörigen FHEM-Devices ersichtlich. Welche Nachrichten (Befehle) im Sendstack warten, ist in der Ausgabe des Befehls &amp;lt;code&amp;gt;[[list]] &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt; erkennbar: Unter der Überschrift Sendstack sind alle wartenden Nachrichten als Rohnachrichten aufgeführt. Der Sendstack wird beim Beenden von FHEM nicht gespeichert. Durch Beenden von FHEM (beispielsweise durch &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt;) geht der Sendstack der Geräte daher verloren.&lt;br /&gt;
&lt;br /&gt;
Das Wakeup-Interval und der Empfänger der &amp;quot;wakeup notification&amp;quot; wird wie folgt konfiguriert:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; wakeupInterval &amp;lt;time&amp;gt; &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;time&amp;gt;&amp;lt;/nowiki&amp;gt; ist die Zeit in Sekunden zwischen den Intervallen und &amp;lt;nodeID&amp;gt; der gewünschte Empfänger der &amp;quot;wakeup notification&amp;quot;; in der Regel ist dies &#039;&#039;&#039;immer&#039;&#039;&#039; der Controller &amp;lt;CtrlNodeId&amp;gt;. Viele Geräte kommen im Auslieferungszustand mit der NodeID 255. Die &amp;quot;wakeup notification&amp;quot; wird dann als Broadcast ohne Nutzung von Routing an alle erreichbaren Geräte gesendet. Hier sollte die Konfiguration auf die NodeID des Controllers geändert werden, da dadurch die &amp;quot;wakeup notification&amp;quot; geroutet wird und größere Entfernungen zwischen Gerät und Controller möglich sind. Zudem ist dies robuster und spart zusätzlich noch Batterielaufzeit. Darum setzt FHEM bei der Inklusion von WakeUp-Geräten &#039;&#039;&#039;automatisch&#039;&#039;&#039; den Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; wakeupInterval 86400 &amp;lt;ControllerNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ab. Bei abweichenden eigenen Vorstellungen ist dies gegebenenfalls anzupassen. Bei Geräten mit V2 der Command Class WAKE_UP kann das vom Hersteller vorgesehene Standard-wakeupInterval mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; wakeupIntervalCapabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vom Gerät abgerufen werden. Die Einstellungen von wakeupInterval nach Inklusion und nach jeder Änderung immer mit der Abfrage &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; wakeupInterval&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; überprüfen.&lt;br /&gt;
&lt;br /&gt;
Ein Aufwachen und Versand der &amp;quot;wakeup notification&amp;quot; von batteriebetriebenen Geräten kann für die [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] manuell erzwungen werden. Hierzu bringt man das Gerät normalerweise in den Inklusionsmodus oder findet in der Bedienungsanleitung gegebenenfalls andere Informationen. Bitte beachten, dass dann je nach Gerät nur eine geringe Entfernung von Gateway und Gerät vorhanden sein darf (direkte Erreichbarkeit). Alternativ kann für die Dauer der Assoziation und Konfiguration das Wakeup-Interval verkürzt werden (beispielsweise auf 60 Sekunden), wodurch das Routing genutzt werden kann und größere Entfernungen zwischen Gateway und Gerät überbrückt werden können. Anschließend das Wakeup-Interval wieder auf eine batterieschonenende Dauer einzustellen.&lt;br /&gt;
&lt;br /&gt;
Einzelne batteriebetriebene Gerät lassen sich für längere Zeit auf &amp;quot;wach&amp;quot; bzw. permanent &amp;quot;wach&amp;quot; stellen. Dann aus dem Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen, damit Befehle in diesem Gerätemodus von FHEM direkt verschickt werden. Nach Ausschalten des &amp;quot;wach&amp;quot;-Modus &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; wieder im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Bei Konfigurationsänderungen an batteriebetriebenen Geräten mit &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; config...&amp;lt;/code&amp;gt; sollte die korrekte Verarbeitung der Befehle immer mit dem entsprechenden &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; config...&amp;lt;/code&amp;gt; oder -falls vorhanden- mit &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; configAll&amp;lt;/code&amp;gt; überprüft werden, um eventuelle Funk-Telegrammverluste sofort festzustellen.&lt;br /&gt;
&lt;br /&gt;
==== FLIRS-Geräte ====&lt;br /&gt;
Ein batteriebetriebene FLIRS (frequently listening routing slave) Gerät wacht in sehr kurzen Zeitabständen (250ms oder 1000ms) auf und prüft, ob ein Funksignal vorliegt. Liegt kein Funksignal vor geht das Gerät wieder in Tiefschlaf. Zum Aufwecken eines FLIRS-Gerätes ist ein dauerhaftes Funksignal -der Wakeup-Beam-, notwendig, das etwas länger als die Aufweckzeitabstände sein muss. Näher beschrieben unter anderem [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF hier]. &lt;br /&gt;
&lt;br /&gt;
FLIRS-Geräte haben nicht die Command Class WAKE_UP und arbeiten deshalb nicht mit &amp;quot;wakeup notification&amp;quot;. Aus Sicht des FHEM-Nutzers sind die bekannten FLIRS-Geräte (Sirenen von Vision und Popp) nicht anders zu bedienen/einzurichten als netzgespeiste Geräte. Wakeup-Beam und andere Besonderheiten werden unsichtbar für den Nutzer automatisch abgewickelt.&lt;br /&gt;
&lt;br /&gt;
=== Aeon Labs / Aeotec ===&lt;br /&gt;
Ausführliche Handbücher und technische Informationen auf https://aeotec.freshdesk.com/support/home&lt;br /&gt;
&lt;br /&gt;
==== Multi Sensor 5 ====&lt;br /&gt;
* aktuellste Firmware installieren&lt;br /&gt;
* Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; um &amp;lt;code&amp;gt;BASIC&amp;lt;/code&amp;gt; ergänzen (ab [[version|Modulversion]] 8824/25.6.2015 wird das automatisch bei der Inklusion durchgeführt)&lt;br /&gt;
* bei USB-Anschluss aus Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen&lt;br /&gt;
* Parameter 101 auf 225 (oder 224 bei USB-Anschluss) setzen mit &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; configGroup1Reports 225&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; configLong 101 225&amp;lt;/code&amp;gt;, um Batteriezustand (nicht bei 224), Temperatur, Feuchte und Helligkeit regelmäßig zu erhalten. Das Sende-Intervall wird duch &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; configGroup1Interval &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; festgelegt (Standard 720 Sek).&lt;br /&gt;
* [http://devel.pepper1.net/zwavedb/device/407 Paramterübersicht pepper-Datenbank]&lt;br /&gt;
siehe {{Link2Forum|Topic=34505|Message=268913}}&lt;br /&gt;
&lt;br /&gt;
==== Multisensor 6 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40393}}&lt;br /&gt;
* arbeitet bei USB-Anschluß als Router&lt;br /&gt;
* bei USB-Anschluss aus Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen&lt;br /&gt;
* die &amp;lt;code&amp;gt;configGroupxInterval&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;configxxxReportingThreshold&amp;lt;/code&amp;gt; Einstellungen wirken nur bei USB-Anschluss, im reinen Batteriebetrieb werden die Sensordaten nur bei einem &amp;lt;code&amp;gt;wakeup&amp;lt;/code&amp;gt; übertragen&lt;br /&gt;
&lt;br /&gt;
==== Aeotec LED Bulb ZW098-C55 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40504}}&lt;br /&gt;
&lt;br /&gt;
=== Danfoss ===&lt;br /&gt;
==== DAN_LC-13 Heizungsthermostat LC-13 (014G0013) ====&lt;br /&gt;
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem &amp;lt;code&amp;gt;at&amp;lt;/code&amp;gt; abgefragt werden ({{Link2Forum|Topic=32145|Message=260795}}):&lt;br /&gt;
 define Atdanfoss at +*00:30 get &amp;lt;name&amp;gt; battery&lt;br /&gt;
Auf dem Markt sind mehrere Varianten des Thermostates LC-13 erhältlich. Darum beim Kauf unbedingt auf die genaue Bezeichnung LC-13 (014G0013) achten ({{Link2Forum|Topic=38041|Message=303146}}). &lt;br /&gt;
&lt;br /&gt;
=== devolo ===&lt;br /&gt;
Ausführliche Handbücher auf http://products.z-wavealliance.org&lt;br /&gt;
&lt;br /&gt;
==== MT02648 Tür-/Fenster Kontakt 3in1 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=41337}}&lt;br /&gt;
&lt;br /&gt;
=== DüWI ===&lt;br /&gt;
Geräte von DÜWI liefern bei örtlicher Betätigung kein automatisches Funk-Signal über die Statusänderung. Das liese sich nur durch eine regelmäßige Statusabfrage durch FHEM (beispielsweise &amp;lt;code&amp;gt;define Status_Abfrage at +*00:03:00 get &amp;lt;name&amp;gt; swmStatus&amp;lt;/code&amp;gt;) beheben.&lt;br /&gt;
Einige Produkte von [http://zwave.me Z-Wave.Me] basieren auf DÜWI-Geräten. Diese Z-Wave.Me Produkte haben jedoch eine erweiterte Firmware, welche die genannte und weitere Firmware-Schwächen der Original-Produkte von DÜWI behebt.&lt;br /&gt;
&lt;br /&gt;
=== Everspring ===&lt;br /&gt;
==== AN145 Sockelmodul E27 ====&lt;br /&gt;
Statusabfrage ohne permanente Abfrage: {{Link2Forum|Topic=48864|Message=405545|Beitrag}}&lt;br /&gt;
&lt;br /&gt;
=== Fibaro ===&lt;br /&gt;
Association Group für Übermittlung von Statusinformationen an den Controller:&lt;br /&gt;
* &amp;quot;alte&amp;quot; ZWave-Geräte (kein ZWave-Plus): häufig Association Group 3&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; associationAdd 3 &amp;lt;CtrlNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Bei diesen Geräten empfiehlt es sich zur Funklastreduzierung und Problemminimierung zu prüfen, ob die von FHEM automatisch vorgenommene Assoziation des Controllers mit der Association Group 1 gelöscht werden kann (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; associationDel 1 &amp;lt;CtrlNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). Nahezu immer werden in Association Group 1 die gleichen Infos, nur mit einer anderen Command Class, wie in der Association Group 3 an den Controller übermittelt.&lt;br /&gt;
* ZWave Plus-Geräte: Association Group 1 (&amp;quot;lifeline&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== FGSS-001 / FGSD-002 Rauchmelder ====&lt;br /&gt;
* nicht untereinander vernetzbar&lt;br /&gt;
* keine Alarmauslösung/Sirenenfunktion durch ZWave-Zentralen&lt;br /&gt;
&lt;br /&gt;
==== FGS-222 Relais Unterputzeinsatz ====&lt;br /&gt;
Bei der Inklusion werden von FHEM 3 Devices angelegt:&lt;br /&gt;
* Hauptdevice (Steuerung und automatischer Status für Kanal 1 und kanalübergreifende Funktionen)&lt;br /&gt;
* Device für Endpoint 1 (Steuerung Kanal 1)&lt;br /&gt;
* Device für Endpoint 2 (Steuerung und automatischer Status von Kanal 2)&lt;br /&gt;
Die Firmware des FGS-222 übermittelt den Status für Kanal 1 automatisch immer ausschließlich an das Hauptdevice. Die Steuerung von Kanal 1 kann hingegen sowohl über das Hauptdevice als auch über das Device für Endpoint 1 erfolgen. Das Device für Endpoint 1 ist somit nicht zwingend erforderlich und kann grundsätzlich gelöscht oder in den room hidden verschoben werden.&lt;br /&gt;
&lt;br /&gt;
Details: {{Link2Forum|Topic=50176}}&lt;br /&gt;
&lt;br /&gt;
Hinweis zum Reset: {{Link2Forum|Topic=55190|Message=469393}}&lt;br /&gt;
&lt;br /&gt;
==== FGK-101 Tür/Fensterkontakt ====&lt;br /&gt;
* Besonderheiten bei Anschluss eines Temperatursensors: {{Link2Forum|Topic=38012}}&lt;br /&gt;
&lt;br /&gt;
=== GE ===&lt;br /&gt;
==== GE (Model t.b.d) ====&lt;br /&gt;
Dieser Schalter unterstützt keine Statusrückmeldungen.&lt;br /&gt;
&lt;br /&gt;
=== Merten ===&lt;br /&gt;
Laut {{Link2Forum|Topic=38133}} müssen bei einigen Merten-Geräten, die mit Fremdsoftware inkludiert wurden, gegebenenfalls die Geräte wieder exkludiert und dann erneut mit FHEM inkludiert werden, damit Assoziationen mit FHEM gesetzt werden können.&lt;br /&gt;
&lt;br /&gt;
=== Philio ===&lt;br /&gt;
==== PHI_PAN04 Relais Unterputzeinsatz 2 Schalter a 1.5kW mit Messfunktion ====&lt;br /&gt;
siehe {{Link2Forum|Topic=28046}}&lt;br /&gt;
&lt;br /&gt;
=== Popp ===&lt;br /&gt;
==== POPE004001 Z-Wave Rauchmelder mit Innensirene ====&lt;br /&gt;
siehe {{Link2Forum|Topic=39856}}&lt;br /&gt;
==== POPE005107 Z-Wave Außensirene ====&lt;br /&gt;
siehe {{Link2Forum|Topic=42736}}&amp;lt;br&amp;gt;&lt;br /&gt;
Alte Firmwareversionen haben einen Bug bei der Übermittlung von negativen Temperaturen. Eine Lösungsvariante über ein &amp;lt;code&amp;gt;userReadings&amp;lt;/code&amp;gt; findet sich auch im verlinkten Thema. &lt;br /&gt;
==== POPE009006 Z-Wave Wall Plug Switch ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40771}}&lt;br /&gt;
==== POPE009402 10Year Smoke Detector ====&lt;br /&gt;
Die erste Firmwareversion hat eine fehlerhafte modelID.  Diese Rauchmelder wird dadurch fälschlich als [[Z-Wave#POPE005107_Z-Wave_Au.C3.9Fensirene|Popp Aussensirene]] in FHEM angezeigt. Neuere Geräte werden laut Popp mit der korrekten modelID ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
=== Z-Wave.Me ===&lt;br /&gt;
==== ZME_RC2 Fernbedienung ====&lt;br /&gt;
siehe {{Link2Forum|Topic=35513}}&amp;lt;BR&amp;gt;&lt;br /&gt;
Das Forenthema enthält eine detaillierte Beschreibung der Nutzung der Class MULTI_CHANNEL_ASSOCIATION.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Geräte-Vergleich ==&lt;br /&gt;
=== Doppel-Relais ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Eigenschaft !! FIBARO Double Switch 2-FGS-223 !! Qubino Flush 2 relays  !! Philio-PAN04&lt;br /&gt;
|-&lt;br /&gt;
| Standby-Leistung || ca. 0.4W || ca. 0.4W || ca. 0.5W&lt;br /&gt;
|-&lt;br /&gt;
| Reaktion beim Schalten am Tastereingang || schnell, kaum merkliche Verzögerung ||  schnell, kaum merkliche Verzögerung || langsam, unangenehm langes drücken des Tasters nötig &amp;gt;1 Sekunde &lt;br /&gt;
|-&lt;br /&gt;
| Geräte in FHEM || 3 &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 || 3  &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 || 4  &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 &amp;lt;br&amp;gt; x.03 Summengerät (ähnlich Hauptgerät, überflüssig)&lt;br /&gt;
|-&lt;br /&gt;
| Zustand Hauptgerät || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais&lt;br /&gt;
|-&lt;br /&gt;
| Statuswechsel Report vom Gerät zum FHEM || ca. 1 Sekunde || ca. 3 Sekunden || ca. 3-4 Sekunden&lt;br /&gt;
|-&lt;br /&gt;
| Empfänger des Status Reports || Hauptgerät und Untergeräte || Nur Hauptgerät &amp;lt;br&amp;gt; Aktualisierung der Untergeräte nur bei aktiver Abfrage  || Nur Hauptgerät &amp;lt;br&amp;gt;Aktualisierung der Untergeräte nur bei aktiver Abfrage &lt;br /&gt;
|-&lt;br /&gt;
| Leistungsmessung || Separat für Untergeräte || Nur Summe || Nur Summe&lt;br /&gt;
|-&lt;br /&gt;
| Leitungssicherung nötig || ja, 2x 6.5A, Summe max 10A || ja, max 2x 4A  || nein, 2x 6.5A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
* Grundlageninformation &amp;quot;Z-Wave-Haupt-Anleitung&amp;quot;: [http://www.zwave.de/z-wave-funknetz-einrichten-und-betreiben/ Wie errichte und betreibe ich ein Z-Wave basiertes Funknetz]&lt;br /&gt;
* [http://www.zwave.de/buch-z-wave-grundlagen/ Buch] &amp;quot;Z-Wave: Die Funktechnologie für das Smart Home&amp;quot; von Dr. Christian Paetz (Paetz &amp;quot;is the primary European representative for the Z-Wave Alliance&amp;quot; [http://z-wavealliance.org/global-contacts/])&lt;br /&gt;
* Z-Wave-Produktdatenbank mit Angabe zur Zertifizierung, Handbüchern und weiteren Detailinfos (Z-Wave oder [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus]): http://products.z-wavealliance.org (englisch)&lt;br /&gt;
* herstellerübergreifende Datenbank mit Bedienungsanleitungen zu Z-Wave-Geräten: http://www.zwave.de/handbuecher/ oder http://manuals.zwaveeurope.com (mehrsprachig)&lt;br /&gt;
* herstellerübergreifende Datenbank mit technischen Informationen zu Z-Wave-Geräten (Z-Wave Device Library): http://devel.pepper1.net/zwavedb/ (englisch; wird derzeit nicht mehr aktualisiert)&lt;br /&gt;
* informative Webseiten zu Z-Wave:&lt;br /&gt;
** [http://www.z-wavealliance.org/ http://www.z-wavealliance.org/] (englisch)&lt;br /&gt;
** [http://www.zwaveeurope.com/ http://www.zwaveeurope.com/] (englisch)&lt;br /&gt;
** [http://www.zwave.de/ http://www.zwave.de/] (deutsch)&lt;br /&gt;
** [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF Introductory Guide to Z-Wave-Technology von Honeywell] (englisch; nicht auf aktuellem Stand)&lt;br /&gt;
&lt;br /&gt;
=== Informationsquellen zur Einbindung von Command Classes ===&lt;br /&gt;
Offizielle und ausführliche Informationen von Sigma Designs (veröffentlicht am 31.08.2016):&lt;br /&gt;
* [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen (seit Veröffentlichung der Z-Wave Spezifikationen am 31.08.2016 geringe Relevanz)&lt;br /&gt;
* [https://github.com/yepher/RaZBerry Infos zu Command Classes (ausführlich; insbesondere im Verzeichnis &amp;quot;docs&amp;quot;), RaZBerry und Z-Wave allgemein], englisch&lt;br /&gt;
* [http://220.135.186.178/zwave/example/ Übersicht von Command Classes und deren Rückgabewerten mit Unterscheidung der Class-Versionen], englisch&lt;br /&gt;
* Code von http://www.openzwave.org (https://github.com/OpenZWave/open-zwave) und http://www.openhab.org (Z-Wave binding: https://github.com/cdjackson/openhab)&lt;br /&gt;
* eine Java-API-Beschreibung mit Hinweisen zu Unterschieden von Class-Versionen: http://dz.prosyst.com/pdoc/mBS_SH_SDK_8.1/modules/zwave/api/driver/index.html&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== Welche Infos sollten Anfragen im ZWave-Forum enthalten? ===&lt;br /&gt;
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ergibt Ausgabe &amp;quot;nothing to do...&amp;quot;&lt;br /&gt;
* detaillierte Beschreibung des Problems&lt;br /&gt;
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)&lt;br /&gt;
* list des jeweiligen FHEM-Devices (Ausgabe von &amp;lt;code&amp;gt;list &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
::Bitte vor Aufruf des list-Befehls -wenn vorhanden/möglich- folgende Befehle ausführen und Ergebnis abwarten:&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; associationAll&amp;lt;/code&amp;gt; &lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; configAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; versionClassAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcaAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; wakeupInterval&amp;lt;/code&amp;gt; (nur bei batteriebetriebenen Geräten)&lt;br /&gt;
* passender Ausschnitt aus dem Logfile (siehe Link im FHEM-Menü links) generiert mit den gesetzten Attributen&lt;br /&gt;
::*&amp;lt;code&amp;gt;attr &amp;lt;ZWDongle&amp;gt; verbose 5&amp;lt;/code&amp;gt; und&lt;br /&gt;
::*&amp;lt;code&amp;gt;attr global mseclog 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Welche Schritte sind für die Einbindung von ZWave-Geräten in FHEM mindestens durchzuführen? ===&lt;br /&gt;
Voraussetzung: ZWave-Gateway ist erfolgreich eingebunden!&lt;br /&gt;
# [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes&lt;br /&gt;
# [[#Assoziation|Assoziation]] der Assoziationsgruppe(n) des Gerätes mit dem Gateway&lt;br /&gt;
# [[#Konfiguration|Konfiguration]] des Gerätes&lt;br /&gt;
&lt;br /&gt;
=== Warum bleibt der Status (STATE) des neu inkludierten Gerätes dauerhaft auf &amp;quot;associationAdd &amp;lt;associationGroup&amp;gt; &amp;lt;CtrlNodeId&amp;gt;&amp;quot; stehen? ===&lt;br /&gt;
FHEM setzt das Reading &amp;quot;state&amp;quot;, das den STATE bestimmt, nicht bei allen ZWave-Devices mit vordefinierten Standardwerten. Daher bleibt der bei der Inklusion automatisch abgesetzte &amp;quot;associationAdd&amp;quot;-Befehl unter Umständen im STATE stehen, bis der Anwender den STATE über die Vergabe des Attributes &amp;lt;code&amp;gt;{{Link2CmdRef|Anker=stateFormat|Label=stateFormat}}&amp;lt;/code&amp;gt; manuell an seine Bedürfnisse angepasst hat.&lt;br /&gt;
(weitergehende Info zum state/STATE/stateFormat: [[DevelopmentState]])&lt;br /&gt;
&lt;br /&gt;
=== Wie können bei mehrkanaligen Aktoren die zusätzlichen Kanäle (&amp;gt;1) angesprochen werden? ===&lt;br /&gt;
* Bei der [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes wird das Hauptdevice mit dem Namen &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; und die Devices für alle Kanäle (Endpoints) nach dem Namensschema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;.&amp;lt;EndpointNr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; automatisch angelegt. Jedes dieser FHEM-Devices spricht regelmäßig einen bestimmten Kanal des Gerätes an; einige Geräte sprechen mit dem Hauptdevice jedoch das gesamte Gerät mit allen Kanälen an (Bedienungsanleitung beachten).&lt;br /&gt;
* Manuell werden Devices für zusätzliche Kanäle mit Hilfe der Befehle &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcEndpoints&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcCapability &amp;lt;chid&amp;gt;&amp;lt;/code&amp;gt; aus der Class MULTI_CHANNEL ermittelt bzw. einzeln über autocreate angelegt (Details und Beispiel siehe {{Link2CmdRef|Anker=ZWaveget}}). Mit dem Befehl &amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; mcCreateAll&amp;lt;/code&amp;gt; werden automatisch alle Kanäle des Gerätes durch autocreate als eigene Devices in FHEM angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man die SDK-Version eines Gerätes herausfinden? ===&lt;br /&gt;
Mit FHEM alleine kann eine [[#Grobermittlung|Grobermittlung]] der SDK-Version vorgenommen werden, die aber für einige Zwecke bereits ausreichend ist. Soll eine [[#Detailermittlung|Detailermittlung]] der genauen SDK-Version erfolgen, dann müssen die mit FHEM ermittelten Werte anhand externer Quellen übersetzt werden.&lt;br /&gt;
==== Grobermittlung ====&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; nodeInfo &amp;lt;dezimale nodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; liefert das Reading &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nodeInfo_&amp;lt;dezimale nodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
Die Angabe im Reading hinter &amp;lt;code&amp;gt;ProtocolVers:&amp;lt;/code&amp;gt; lässt grobe Rückschlüsse zu. Mögliche (bekannte) Werte:&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; -&amp;gt; bspw. keine Explorer Frames, keine SUC-Unterstützung (veraltet, keine bekannten Geräte mehr im Handel)&lt;br /&gt;
* &amp;lt;code&amp;gt;SDK5.0x+4.2x&amp;lt;/code&amp;gt; -&amp;gt; bspw. keine Explorer Frames, teilweise SUC-Unterstützung&lt;br /&gt;
* &amp;lt;code&amp;gt;SDK4.5x+6.0x&amp;lt;/code&amp;gt; -&amp;gt; bspw. Explorer Frames- und SUC-Unterstützung (Reading-Wert wird auch bei SDK 6.5x = Z-Wave Plus angezeigt)&lt;br /&gt;
==== Detailermittlung ====&lt;br /&gt;
Durch den Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; version&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; kann man die ZWave-Protokoll-Version von Geräten und Controller abfragen. Mit Unterstützung von Übersetzungstabellen&lt;br /&gt;
* http://wiki.micasaverde.com/index.php/ZWave_Protocol_Version&lt;br /&gt;
* Suche nach sdkids.xml in einer Suchmaschine&lt;br /&gt;
kann aus der Protokoll-Version das genutzte SDK festgestellt werden.&lt;br /&gt;
&lt;br /&gt;
Beispielsweis entspricht das Reading eines Gerätes &amp;quot;Lib 6 &#039;&#039;&#039;Prot 2.64&#039;&#039;&#039; App 1.6&amp;quot; dem SDK 5.02 Patch 2 oder eines Controller &amp;quot;Z-Wave &#039;&#039;&#039;3.41&#039;&#039;&#039; STATIC_CONTROLLER&amp;quot; dem SDK 6.02.00.&lt;br /&gt;
 &lt;br /&gt;
HINWEIS: Bei der Vergabe der Protokoll-Version und zugehörigem SDK gibt es keine erkennbare Logik: Eine höhere Protokoll-Version steht nicht notwendig für eine höheres SDK.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann eine verschlüsselte Kommunikation unter Nutzung der Command Class SECURITY eingerichtet werden? ===&lt;br /&gt;
{{Randnotiz|RNText=FHEM unterstützt derzeit ausschließlich SECURITY 1 und nicht das mit dem SDK 6.7 neu eingeführte SECURITY 2 (S2). Soweit bekannt, sind S2-Geräte rückwärtskompatibel zu SECURITY 1.}}&lt;br /&gt;
Die verschlüsselte Kommunikation zwischen Controller und Endgerät setzt eine secure-Inklusion voraus. Bereits mit der Inklusion wird entschieden, ob die Kommunikation von Controller und Endgerät dauerhaft verschlüsselt oder unverschlüsselt erfolgt. Ist ein Gerät bereits normal inkludiert und entscheidet man sich nachträglich für eine verschlüsselte Kommunikation, so ist das nur möglich, indem das Gerät exkludiert und dann wieder secure inkludiert wird.&lt;br /&gt;
&lt;br /&gt;
Ob die Verschlüsselung bei einem Gerät mit Unterstützung der Command Class SECURITY genutzt werden soll, sollte genau überlegt werden. Die Verschlüsselung führt zu einem deutlich größeren Funkverkehr zur Ausführung eines Befehls und teilweise auch zu spürbaren Latenzen.&lt;br /&gt;
&lt;br /&gt;
Vorarbeiten:&lt;br /&gt;
* Das Perl-Modul Crypt-Rijndael muss installiert sein.&lt;br /&gt;
* Das Attribut &amp;lt;code&amp;gt;networkKey&amp;lt;/code&amp;gt; muss mit einem 32-Zeichen langen Hexzahl beim ZWDongle angelegt werden. Dieser Schlüssel sollte nicht veröffentlicht werden und auch zusätzlich separat (bspw. auf Papier) festgehalten werden. Bei Verlust des Attributes und Schlüssels ist eine Kommunikation nur nach erneuter Inklusion möglich.&lt;br /&gt;
&lt;br /&gt;
Ablauf der secure-Inklusion:&lt;br /&gt;
* Controller in den Modus zur secure-Inklusion schalten:&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode onSec&amp;lt;/code&amp;gt; für die Standard-secure-Inklusion&lt;br /&gt;
: oder alternativ&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode onNwSec&amp;lt;/code&amp;gt; für die Nework-Wide-secure-Inklusion&lt;br /&gt;
* Gerät gemäß Handbuch in den Modus zur secure-Inklusion bringen (teilweise ist jeweils für secure- und normale Inklusion ein anderes Vorgehen notwendig!)&lt;br /&gt;
* Das Gerät sollte jetzt automatisch erkannt und das FHEM-Device durch &amp;lt;code&amp;gt;autocreate&amp;lt;/code&amp;gt; angelegt werden. Die secure-inkludierten Geräte haben ein zusätzliches Attribut &amp;lt;code&amp;gt;secure_classes&amp;lt;/code&amp;gt; in dem die Command Classes deren Kommunikation verschlüsselt abläuft aufgelistet sind. Nicht in diesem Attribut, aber in &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; aufgeführte Command Classes wickeln die Kommunikation weiterhin unverschlüsslt ab.&lt;br /&gt;
* Inklusionsmodus des Controllers ausschalten:&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addnode off&amp;lt;/code&amp;gt;&lt;br /&gt;
* Das Vorgehen in FHEM unterscheidet sich von nun an nicht von normal (unverschlüsselt) inkludierten Geräten. Die Verschlüsselung läuft für den Anwender transparent ab. Darum anschließend [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] vornehmen.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man ohne Exklusion Nodes des Controllers löschen? ===&lt;br /&gt;
HINWEIS: Geräte sollten grundsätzlich immer über eine Exklusion aus der Nodelist des Controllers gelöscht werden. Das nachfolgend geschilderte Vorgehen ist nur in Sonderfällen (bspw. Gerätedefekt, gebraucht gekauftes Gateway) anzuwenden.&lt;br /&gt;
&lt;br /&gt;
Nicht mehr zu erreichende/reagierende Nodes (Geräte) können manuell mit dem Befehl &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; gelöscht werden. Dazu muss sich der betroffene Node auf der FailedNodeList des Controllers befinden. Auf die FailedNodeList kommen netzbetriebene Geräte automatisch, wenn sie vom Controller nicht mehr per Funk erreicht werden. Batteriebetriebene Geräte müssen manuell auf die FailedNodelist gesetzt werden, da der Controller nicht feststellen kann, ob sie nur langfristig &amp;quot;schlafen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; löscht nur Nodes auf der FailedNodeList, die erst vor Kurzem nicht erreicht werden konnten. Darum muss sowohl das manuelle Verschieben von batteriebetriebenen als auch das Nicht-Erreichen der netzbetriebenen Geräte erst Kurz vor Aufruf des &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt;-Befehls erfolgt sein. &lt;br /&gt;
&lt;br /&gt;
Vorgehensweise für den Node &amp;lt;NodeId&amp;gt;:&lt;br /&gt;
# An den betroffenen Node eine Telegramm mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; sendNIF &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; verschicken, um ihn auf FailedNodeList zu verschieben bzw. Zeitstempel zu aktualisieren.&lt;br /&gt;
# Abfragen, ob der Node auf der FailedNodeList steht: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; isFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Wenn der Rückgabewert der Abfrage &amp;quot;yes&amp;quot; ist, steht der Node korrekt auf der FailedNodeList und kann mit &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; gelöscht werden.&lt;br /&gt;
# Befehl zum Löschen des Nodes absetzen: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; removeFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Der Befehl testet vor dem Löschen noch einmal, dass der Node nicht erreicht werden kann und entfernt erst dann den Node.&lt;br /&gt;
# Prüfen, der Ergebnisse des &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt;-Befehls im Log oder [[Event monitor]]. Die verschiedenen Ergebnisse werden durch die in der {{Link2CmdRef}} dokumentierten Events signalisiert. Tritt das Ergebnis &amp;quot;failedNodeRemoveProcessBusy&amp;quot; mehrfach hintereinander auf, muss das ZWDongle kurz stromlos gemacht werden.&lt;br /&gt;
# Prüfen, ob der Node nicht mehr auf der Nodelist des Controllers ist: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; nodeList&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siehe auch {{Link2Forum|Topic=32823|Message=292626}}&lt;br /&gt;
&lt;br /&gt;
=== Wie ist der einfachste Weg ein (defektes) Gerät durch ein gleiches Ersatzgerät auszutauschen? ===&lt;br /&gt;
Tauscht man ein defektes Gerät durch ein gleiches Ersatzgerät und inkludiert das Ersatzgerät per &amp;lt;code&amp;gt;addNode&amp;lt;/code&amp;gt;, so erhält das Ersatzgerät eine neue NodeId. Soll das Ersatzgerät die gleiche NodeId wie das alte Gerät erhalten, so muss statt &amp;lt;code&amp;gt;addNode&amp;lt;/code&amp;gt; der Befehl &amp;lt;code&amp;gt;replaceFailedNode&amp;lt;/code&amp;gt; zur Inklusion des Ersatzgerätes (=gleiches Modell) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Vorgehensweise für den Node &amp;lt;NodeId&amp;gt;:&lt;br /&gt;
# sofern das alte Gerät noch ansprechbar ist, die Konfiguration und Assoziationen abfragen, damit man die Werte im Ersatzgerät einfach wieder setzen kann:&lt;br /&gt;
## &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;device&amp;gt; configAll&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;device&amp;gt; associationAll&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# defektes Gerät aus- und neues einbauen&lt;br /&gt;
# Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; sendNIF &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; absetzen, damit das Dongle die NodeId auf die FailedNodeList setzt.&lt;br /&gt;
# Abfragen, ob der Node auf der FailedNodeList steht: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; isFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Wenn der Rückgabewert der Abfrage &amp;quot;yes&amp;quot; ist, steht der Node korrekt auf der FailedNodeList und das Ersatzgerät kann mit &amp;lt;code&amp;gt;replaceFailedNode&amp;lt;/code&amp;gt; inkludiert werden.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;zwdongle&amp;gt; replaceFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; für die NodeId des defekten Gerätes aufrufen und das Ersatzgerät in den Inklusionsmodus bringen&lt;br /&gt;
# Korrekte Inklusion prüfen und beim alten Aktor ausgelesene Werte beim neuen Aktor wieder setzen.&lt;br /&gt;
&lt;br /&gt;
=== Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? ===&lt;br /&gt;
Ja, das ist richtig.&lt;br /&gt;
&lt;br /&gt;
Bei der Inklusion über addNode vergibt der Controller die höchste bisher noch nie verwendete NodeID. Durch Exklusion oder removeFailedNode frei gewordene NodeIDs werden hierbei nicht erneut vergeben. Nur bei einem Controller-Reset, der mit einem unwiederbringlichen Verlust sämtlicher Informationen des ZWave-Netzes und Neuvergabe der HomeID verbunden ist, beginnt die Zählung wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
=== Welche Funktion haben die XML-Config-Dateien in FHEM? ===&lt;br /&gt;
In den XML-Config-Dateien sind Informationen zu einzelnen ZWave-Geräten enthalten, die der Erleichterung der Gerätenutzung und -einbindung in FHEM dienen. Dies sind unter anderem Erläuterungen zu den Parameternummer/-werten, Assoziationsgruppen und Besonderheiten eines Gerätes. Ob eine zum Zwave-Gerät passende XML-Config Datei existiert, wird im Rahmen der Inklusion oder durch manuellen Aufruf des Befehls &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; ermittelt. Wird eine passende XML-Config-Datei gefunden, wird sie automatisch in FHEM eingebunden. Das Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; enthält dann den zugehörigen XML-Config-Dateinamen. Stehen keine XML-Config-Informationen bereit, enthält das Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; den Wert &amp;quot;unknown&amp;quot;. Die Funktionsfähigkeit von FHEM mit ZWave-Geräten ist auch bei fehlender XML-Config-Datei gegeben. Es gibt dadurch keine funktionalen Einschränkungen in FHEM; es entfallen &amp;quot;nur&amp;quot; Erleichterungen und es sind unter Umständen mehr manuelle Schritte bei der Gerätenutzung/-einbindung notwendig.&lt;br /&gt;
&lt;br /&gt;
Erleichterungen bei vorhandener XML-Config für ein ZWave-Gerät:&lt;br /&gt;
* Bei der Inklusion:&lt;br /&gt;
** Assoziationen mit dem Controller bei von Gruppe 1 abweichenender Assoziationsgruppe werden automatisch gesetzt&lt;br /&gt;
** vom NIF nicht gemeldete, aber vom Gerät unterstützte Classes, werden im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; ergänzt&lt;br /&gt;
* Bei der Konfiguration:&lt;br /&gt;
** die Parameternummern stehen als configXY-Befehle zur Verfügung und werden mit Hilfetexten -auch zu den Parameterwerten- in der Detailansicht des FHEM-Device erläutert.&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bitte auch bei vorhandener XML-Config-Datei nach der Inklusion und bei der Konfiguration die Assoziationen und Parameter prüfen. Von den eigenen Vorstellungen abweichende Vorgaben oder gar Fehler in der Config-Datei können nie ausgeschlossen werden. Fehler bitte im Forum ({{Link2Forum|Area=ZWave}}) melden.&lt;br /&gt;
&lt;br /&gt;
=== Wie können fehlende XML-Config-Informationen für mein ZWave-Gerät in FHEM eingebunden werden? ===&lt;br /&gt;
Die XML-Config-Informationen von FHEM sind in folgenden Dateien im Ordner fhem/FHEM/lib gespeichert:&lt;br /&gt;
* openzwave_manufacturer_specific.xml&lt;br /&gt;
* openzwave_deviceconfig.xml.gz&lt;br /&gt;
* fhem_zwave_deviceconfig.xml.gz&lt;br /&gt;
Die in den Dateien enthaltenen Informationen beruhen in großen Teilen auf Daten von openzwave und übernehmen daher das openzwave-Datenformat, das unter https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices näher beschrieben wird. &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;openzwave_manufacturer_specific.xml&amp;quot; enthält die eindeutige Kennung des ZWave-Gerätes, die in FHEM nach Aufruf des Befehls &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; im Reading &amp;lt;code&amp;gt;modelId&amp;lt;/code&amp;gt; des FHEM-ZWave-Devices steht. Weiterhin wird der Klartextname dieses Gerätes, der im Reading &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; angezeigt werden soll, festgelegt. Zudem wird der Dateiname der eigentlichen XML-Config-Datei für das ZWave-Gerät angegeben, der später informativ im Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; steht.&lt;br /&gt;
&lt;br /&gt;
Die Dateien &amp;quot;openzwave_deviceconfig.xml.gz&amp;quot; und &amp;quot;fhem_zwave_deviceconfig.xml.gz&amp;quot; enthalten in komprimierter Form die eigentlichen XML-Config-Dateien für die ZWave-Geräte. FHEM durchsucht beide Dateien nach der passenden XML-Config-Datei. Ist in beiden Dateien eine XML-Config für ein Gerät vorhanden, so werden die XML-Daten aus der &amp;quot;fhem_zwave_deviceconfig.xml.gz&amp;quot; bevorzugt.&lt;br /&gt;
&lt;br /&gt;
Falls ein ZWave-Gerät von FHEM nicht erkannt wird, bitte auf folgenden Seiten nachschauen, ob es schon XML-Config-Dateien gibt, die nur nicht in FHEM eingebunden sind:&lt;br /&gt;
# https://github.com/OpenZWave/open-zwave/tree/master/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner&lt;br /&gt;
# https://github.com/jeedom/plugin-openzwave/tree/master/ressources/openzwave/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner &lt;br /&gt;
# http://www.cd-jackson.com/index.php/zwave/zwave-device-database&lt;br /&gt;
Sofern auf den genannten Seiten Daten vorhanden sind, postet eine Aktualisierungsbitte mit genauem Link zur entsprechenden Seite im Forum ({{Link2Forum|Area=ZWave}}).&lt;br /&gt;
&lt;br /&gt;
Gibt es auf keiner der Seiten Infos zu dem Gerät, dann entsprechend https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices die XML-Config-Datei für das Gerät erstellen und unkomprimiert zusammen mit der zu ergänzenden Info für die Datei &amp;quot;openzwave_manufacturer_specific.xml&amp;quot; im Forum ({{Link2Forum|Area=ZWave}}) zur Verfügung stellen.&lt;br /&gt;
&lt;br /&gt;
=== Wie führt man eine Komplett-Sicherung der ZWave-Installation durch? ===&lt;br /&gt;
Zu einer Komplett-Sicherung der ZWave-Konfiguration gehören:&lt;br /&gt;
&lt;br /&gt;
1. [[Backup]] der FHEM-Installation &lt;br /&gt;
::&#039;&#039;&#039;und&#039;&#039;&#039;&lt;br /&gt;
2. Backup des NVRAM des Controllers&lt;br /&gt;
&lt;br /&gt;
Es genügt nicht nur die FHEM-Installation/Konfiguration zu sichern, da der Controller im NVRAM Daten über HomeID, NodeIDs usw. speichert, die in der FHEM-Installation nicht enthalten sind und auch nicht durch FHEM rekonstruierbar sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
zu 2.) Backup des NVRAM des Controllers&lt;br /&gt;
&lt;br /&gt;
Einige Controllerhersteller bieten eine eigenständige Software zum Backup/Restore an (siehe Hinweise zu den Controllern unter [[#Autocreate_des_Gateways]]).&lt;br /&gt;
&lt;br /&gt;
FHEM kann mit den ZWDongle-Befehlen &amp;lt;code&amp;gt;backupCreate&amp;lt;/code&amp;gt; das NVRAM der Controller sichern und mit &amp;lt;code&amp;gt;backupRestore&amp;lt;/code&amp;gt; zurückschreiben. Da das Speicherlayout des NVRAM unter anderem von Controller-Hersteller, SDK und Firmwareversion abhängig sein kann, sollte man die Sicherung und Wiederherstellung des eigenen Controllers (auf eigenes Risiko) testen und sinnvollerweise einen gleichen Ersatzcontroller wie den Controller des Produktivsystem besitzen. Erfolgreiche Sicherung/Wiederherstellung wurde im Forum von den ZWavePlus-Controllern UZB1 (256k), Razberry (256k), Vision ZU 1401-5 EU (128k)und AEOTEC Z-Stick Gen5 (256k) berichtet.&lt;br /&gt;
(Weitergehende Infos - neben der {{Link2CmdRef}} - im Forum: {{Link2Forum|Topic=52364}}, {{Link2Forum|Topic=52914}}, {{Link2Forum|Topic=53023}})&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich zur Fortentwicklung der ZWave-Module beitragen? ===&lt;br /&gt;
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten ZWave-Geräten im Forum mitteilen&lt;br /&gt;
* Codeschnipsel und Ideen im Forum posten&lt;br /&gt;
* Fehler und Probleme im Forum melden&lt;br /&gt;
* [[How_to_write_a_patch|Patches]] für 00_ZWDongle.pm und 10_ZWave.pm erstellen&lt;br /&gt;
* Wiki: Ergänzungen und Korrekturen vornehmen; neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen&lt;br /&gt;
&lt;br /&gt;
=== Wie wird ein fehlendes Kernelmodul (Fritzbox) eingebunden? ===&lt;br /&gt;
Auf der Fritzbox (und evtl. auch anderen Systemen) muss sichergestellt werden, dass das Kernelmodul für das Gateway geladen wird. Ansonsten scheitert die Einbindung des Gateways in FHEM.&lt;br /&gt;
&lt;br /&gt;
Für den Aeon Labs Z-Stick muss beispielsweise auf der Fritzbox das Kernelmodul &amp;lt;code&amp;gt;cp2101.ko&amp;lt;/code&amp;gt; geladen werden.&lt;br /&gt;
Diese Datei ist bei einer [[FHEM und FritzBox 7390]] Installation über das Image von [http://www.fhem.de fhem.de] bereits enthalten.&lt;br /&gt;
Um den Aeon Labs Z-Stick zu verwenden, muss dieses Kernelmodul vor oder beim Starten des FHEM-Servers geladen sein. Dies erreicht man durch einen Eintrag in der Datei &amp;lt;code&amp;gt;startfhem&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Zeile kann direkt unterhalb der modprobe Anweisungen eingefügt werden.&lt;br /&gt;
 insmod $home/lib/cp2101.ko&lt;br /&gt;
&lt;br /&gt;
Nach einem FHEM-Neustart sollte das Gateway (der USB Stick) nun erkannt werden.&lt;br /&gt;
&lt;br /&gt;
=== Wie ist der Aufbau der Z-Wave Messages bzw. wie finde ich bei einem Sendefehler die NodeId des Empfängers heraus? ===&lt;br /&gt;
&lt;br /&gt;
Es könnte natürlich hin und wieder vorkommen, dass man im FHEM-Log folgende Fehler vorfindet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWDongle_ProcessSendStack: no ACK, resending message 010a00130603320110259277&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall gab es aus irgendeinem Grund einmalig das Problem, dass der Empfang einer Nachricht vom Empfänger nicht bestätigt wurde. &lt;br /&gt;
Will man dem auf die Spur kommen, so wäre es natürlich von Vorteil, die NodeId des Empfängers herauszufinden. Also muss man sich die Message näher anschauen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;010a00130603320110259277&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 01: data to controller&lt;br /&gt;
* 0a: length of msg&lt;br /&gt;
* 00: ?&lt;br /&gt;
* 13: ZW_SEND_DATA&lt;br /&gt;
* 06: NodeId&lt;br /&gt;
 &lt;br /&gt;
* 03: length of msg&lt;br /&gt;
* 32: Command Class 32 (METER, siehe %zwave_class in 10_ZWave.pm)&lt;br /&gt;
* 01: METER get scale command&lt;br /&gt;
* 10: scale parameter&lt;br /&gt;
 &lt;br /&gt;
* 25: send flags, explorer frames on&lt;br /&gt;
* 92: callbackId (um ACK zu identifizieren)&lt;br /&gt;
* 77: checkSum&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat der Z-Wave-Controller 01 eine Nachricht an die NodeId 06 geschickt, welche vom Node nicht bestätigt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Z-Wave Components|!]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Z-Wave&amp;diff=29805</id>
		<title>Z-Wave</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Z-Wave&amp;diff=29805"/>
		<updated>2019-03-10T11:52:36Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Doppel-Relais */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;{{Infobox Modul&lt;br /&gt;
|Name=ZWDongle&lt;br /&gt;
|ModPurpose=Einbindung Z-Wave-Gateways&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=ZWDongle&lt;br /&gt;
|ModForumArea=ZWave&lt;br /&gt;
|ModTechName=00_ZWDongle.pm &lt;br /&gt;
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=ZWave&lt;br /&gt;
|ModPurpose=Ansteuerung Z-Wave-Geräte über ZWDongle&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=ZWave&lt;br /&gt;
|ModForumArea=ZWave&lt;br /&gt;
|ModTechName=10_ZWave.pm &lt;br /&gt;
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Z-Wave]] ist ein drahtloser Kommunikations-Standard im 868 Mhz-Band (Europa), der von der Firma Sigma Designs und der Z-Wave Alliance, einen Zusammenschluss von mehreren Hundert Herstellern, für die Heimautomatisierung entwickelt wurde. Es existieren mehr als [http://products.z-wavealliance.org 1400 zertifizierte Produkte] verschiedenster Hersteller, die innerhalb eines gemeinsamen Z-Wave-Netzes einsetzbar sind. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia])&lt;br /&gt;
&lt;br /&gt;
Auf dieser Seite werden Grundlagen eines &#039;&#039;&#039;Z-Wave&#039;&#039;&#039; Systems und dessen Einrichtung in FHEM beschrieben.&lt;br /&gt;
== Z-Wave ==&lt;br /&gt;
=== Nodes - Controller und Slaves ===&lt;br /&gt;
Ein Z-Wave-Netz besteht aus mindestens 2 Geräten, den sogenannten &#039;&#039;&#039;Nodes&#039;&#039;&#039; (Knoten). Es setzt sich zusammen aus dem steuernden &#039;&#039;&#039;Controller&#039;&#039;&#039; (Zentrale) und min. 1 bis max. 231 gesteuerten &#039;&#039;&#039;Slaves&#039;&#039;&#039; (Geräten). &lt;br /&gt;
&lt;br /&gt;
=== Home-Id und Node-ID ===&lt;br /&gt;
Innerhalb eines Z-Wave-Netzes gibt es zu 2 Identifikationsnummern zur Kennzeichnung der Netzstruktur:&lt;br /&gt;
# &#039;&#039;&#039;Home-ID:&#039;&#039;&#039; Gemeinsame Identifikationsnummer aller Nodes in einem Netz zur Abgrenzung gegenüber anderen Netzen. Nur Nodes mit der gleichen Home-ID können miteinander kommunizieren.&lt;br /&gt;
# &#039;&#039;&#039;Node-ID:&#039;&#039;&#039; Identifikationsnummer zur eindeutigen Kennzeichnung von jedem Node im Netz. &lt;br /&gt;
&lt;br /&gt;
Die Home-ID ist im Controller (fest) hinterlegt und seine Node-ID ist typischerweise 1. Die Slaves haben zunächst keine Home-ID und Node-ID. Bei der &#039;&#039;&#039;Inklusion&#039;&#039;&#039; (Aufnahme) der Slaves in das Z-Wave-Netz überträgt der Controller seine Home-ID auf die Slaves und weist den Slaves eine eindeutige Node-ID im Netz zu, mit der Sie direkt angesprochen werden. &lt;br /&gt;
&lt;br /&gt;
Besondere Node-ID ist die 255. Eine Nachricht an die Node-ID 255 kann von allen Z-Wave-Nodes ausgewertet werden (Broadcast).&lt;br /&gt;
&lt;br /&gt;
=== Primär- und Sekundärcontroller ===&lt;br /&gt;
Der Controller, der durch Zuteilung seiner Home-ID auf die Slaves, das Netz aufbaut, ist der &#039;&#039;&#039;Primärcontroller&#039;&#039;&#039;. Grundsätzlich können in einem Netz mehrere Controller existieren, aber immer nur ein Primärcontroller. Weitere in das Netz eingebundene Controller werden zum &#039;&#039;&#039;Sekundärcontroller&#039;&#039;&#039;. Ohne besondere Maßnahmen kann nur der Primärcontroller die Inklusion (Einbindung) der Nodes in das Netz durchführen. Hingegen können sowohl Primär- als auch Sekundärcontroller die &#039;&#039;&#039;Exklusion&#039;&#039;&#039; (Ausschluss) eines Nodes aus dem Netz vornehmen.&lt;br /&gt;
&lt;br /&gt;
Der Controller speichert intern diverse Informationen (Home-ID, Node-IDs,..) über das ZWave-Netz. Hierdurch kann unter anderem die Haussteuerungssoftware bei einem PC-Controller relativ unkompliziert gewechselt werden, da die wesentlichen ZWave-Netzinformationen vom Controller selbst verwaltet und gespeichert werden. Andererseits muß bei einem Controllerdefekt das gesamte Netz grundsätzlich neu aufgebaut werden, wenn kein Backup der internen Controllerdaten vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledge ===&lt;br /&gt;
Im Z-Wave-Netz werden Nachrichten vom Empänger-Node an den Sender-Node rückbestätigt (Acknowledge). Bei ausbleibendem Acknowledge wiederholt der Sender-Node die Nachricht automatisch auf Protokollebene bis zu 2 mal. Hierdurch wird eine höhere Betriebssicherheit des Z-Wave-Netzes erreicht. Bei Broadcast-Nachrichten an die Node-ID 255 findet keine Rückbestätigung statt.&lt;br /&gt;
&lt;br /&gt;
=== Vermaschtes Netzwerk mit Routing ===&lt;br /&gt;
Z-Wave nutzt als Netzwerktopologie ein &#039;&#039;&#039;mesh network&#039;&#039;&#039; (vermaschtes Netzwerk), d. h. jeder Node ist mit einem oder mehreren anderen Nodes verbunden. Das hat den Vorteil, dass eine Nachricht zwischen zwei Nodes übermittelt werden kann, selbst wenn diese nicht direkt miteinander kommunizieren können, z. B. weil sie zu weit voneinander entfernt sind. In diesem Fall wird die Funk-Nachricht über einen oder mehrere „Zwischen-Nodes“ übertragen; dieser Vorgang wird &#039;&#039;&#039;Routing&#039;&#039;&#039; genannt. Nur netzgespeiste Z-Wave-Geräte sind Router. Batteriebetriebe Z-Wave-Geräte sind grundsätzlich keine Router und dienen somit auch nicht zur Reichweitenerhöhung. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia]) Einzelne Geräte, die alternativ per Batterie oder USB-Anschluss betrieben werden können, werden bei USB-Anschluss automatisch ({{Link2Forum|Topic=40393|Message=328080}}) oder durch Konfigurationsänderungen ({{Link2Forum|Topic=40393|Message=327331}}) zu Routern.&lt;br /&gt;
&lt;br /&gt;
Informationen über das optimale Routing werden bei der Inklusion der Nodes in einer Routing-Tabelle des Primärcontrollers gespeichert. Dies geschieht durch Abfrage des Nodes, welche weiteren Nodes er erreichen kann. Durch örtliche Änderung oder Defekte von Nodes können die in der Routing-Tabelle gespeicherten Informationen fehlerhaft bzw. suboptimal werden. Dies kann sich in Funkkommunikationsproblemen im Netzwerk äußern. Hier kann ein per Software manuell angeforderter Neuaufbau der Routing-Tabelle gegebenenfalls Abhilfe schaffen. Bei Geräten und Controllern mit aktuellen Firmware-Versionen (SDK 4.5x und SDK 6.xx oder größer, aber &#039;&#039;nicht&#039;&#039; SDK 5.x) und Unterstützung von Explorer Frames kann sich die Routing-Tabelle unter bestimmten Bedingungen auch automatisch aktualisieren (&amp;quot;Selbstheilung&amp;quot;)[https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames].&lt;br /&gt;
&lt;br /&gt;
=== Command Classes ===&lt;br /&gt;
Die Steuerung und Kommunikation der Nodes erfolgt über Befehle die funktionsbezogen in verschiedene &#039;&#039;&#039;Command Classes&#039;&#039;&#039; (Kommandoklassen) zusammengefasst sind.&lt;br /&gt;
&lt;br /&gt;
Alle Z-Wave-Geräte haben als gemeinsame kleinste Übereinstimmung die &#039;&#039;&#039;Class Basic&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Z-Wave-Geräte haben im Originalzustand eine bestimmte arbeitsfähige Grund-Konfiguration. Anpassbar an individuelle Bedürfnisse ist die Konfiguration über die &#039;&#039;&#039;Class Configuration&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Durch eine Assoziation wird definiert, welche Geräte miteinander direkt -ohne Umweg über den Controller- kommunizieren können. Auch bei Ausfall des Controllers können diese Geräte ihre gemeinsame Funkton ausüben. Zudem dienen Assoziationen der Geschwindigkeitssteigerung und Funklastreduzierung innerhalb des Netzes. Angelegt werden Assoziationen über die &#039;&#039;&#039;Class Association&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Dies sind nur die allerwichtigsten Command Classes. Weitere Command Classes sind den Handbüchern zu entnehmen. Zudem enthält die Wiki-Seite [[Z-Wave Command Classes]] weitergehende Informationen.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise zur Z-Wave-Geräteauswahl ===&lt;br /&gt;
Aufgrund der vielen Z-Wave-Gerätehersteller mit jeweils eigenem Z-Wave-Gerätesortiment existiert eine große Produktauswahl. Jedoch gibt es auch große Unterschiede hinsichtlich Produkteigenschaften, Pflege der Produkte, Häufigkeit der Aktualisierung der Produktpalette und so weiter. Schwierigkeiten bereitet insbesondere, dass neben den aktuellesten Chipsätzen und SDKs auch die älteren Chipsätze und SDKs weiterhin in Produkten im Handel verfügbar sind. Neuere Chipsätze und aktuelle SDKs bieten gerade bei der Netzwerkstabilität (Explorer Frames, Reichweite usw.) Vorteile zu älteren Chipsätzen und SDKs. Beispielsweise beherrschen nur Geräte mit SDK 4.5x und 6.x oder neuer die für automatische Routenkorrekturen wichtigen Explorer Frames. Das ältere SDK 5.0, das verwirrenderweise auch noch eine höhere Versionsnummer als das neuere SDK 4.5 besitzt, beherrscht unter anderem keine Explorer Frames. Details hierzu enthält das [https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames wiki.zwaveeurope.com]. Aktuellstes SDK ist Stand 10/2017 das SDK 6.7x, das in ZWave Plus - zertifizierten Produkten zum Einsatz kommt.&lt;br /&gt;
&lt;br /&gt;
Gerade Einsteiger beachten die Unterschiede bei den Chipsätze/SDKs aus Unkenntnis manchmal nicht und ärgern sich im Nachhinein über Probleme bei der Netzwerkstabilität und Reichweite. Darum nachfolgend allgemeine, aber sehr einfache Empfehlungen zur Geräteauswahl. Selbstverständlich wird hier nicht von anderen Produkten abgeraten, wenn man die Unterschiede kennt und Vorteile bei deren Produkteigenschaften sieht. Zudem kann man (leider) schlechtere Produkteigenschaften bei Geräten mit aktuelleren Chipsätzen/SDKs nie ausschließen.&lt;br /&gt;
&lt;br /&gt;
Gateway&lt;br /&gt;
# [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus-Zertifizierung]. Diese ist mittlerweile bei nahezu allen erhältlichen Gateways gegebenen.&lt;br /&gt;
&lt;br /&gt;
Endgeräte&lt;br /&gt;
# Z-Wave Plus-Zertifizierung (aktuellste Technik, höhere theoretische Reichweite, SDK 6.5x oder höher) oder&lt;br /&gt;
# zumindest Explorer Frames-Unterstützung (SDK 4.5x und 6.0x) oder&lt;br /&gt;
# zuletzt -bei Kenntnis der Besonderheiten und Auswirkungen- Produkte ohne Explorer Frames (SDK 5.0x)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kurz&#039;&#039;&#039;: Produkte mit Z-Wave Plus-Zertifizierung einsetzen.&lt;br /&gt;
&lt;br /&gt;
Bitte unbedingt beachten, dass Z-Wave Plus-Vorteile bei einem Mischbetrieb mit älteren (ohne Plus) Geräten teilweise verloren gehen. Zum negativen Effekt des Einsatzes eines älteren, aber weiterhin erhältlichen Z-Wave-Repeaters mit aktuellen Z-Wave Plus-Geräten siehe beispielsweise den Hinweis in diesem {{Link2Forum|Topic=42591|Message=350066}}.&lt;br /&gt;
&lt;br /&gt;
Bei Fragen zu bestimmten Geräten bitte -nach Durchsicht der Hinweise hier im Wiki- im Forum suchen oder anschließend nachfragen.&lt;br /&gt;
&lt;br /&gt;
== Z-Wave in FHEM ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ausführen und anschließend &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt; durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung von Z-Wave in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach möglich. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_FHEM|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht speziell Z-Wave behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend und auf den [[:Kategorie:Z-Wave Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der Konfiguration sollte -zur Verhinderung von Fehlern- nach Möglichkeit immer über das &amp;quot;[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]&amp;quot; und die &amp;quot;[[Konfiguration#Objektdetails|Objektdetails]]&amp;quot; erfolgen.&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Die Bedienungsanleitungen (Handbücher) sind zwingende Voraussetzung zur korrekten Einbindung und Konfiguration von Z-Wave-Geräten in FHEM. Sie müssen daher vorliegen. &lt;br /&gt;
Den ZWave-Geräten liegen teilweise nur gekürzte, gedruckte Fassungen der Handbücher bei (beispielsweise Devolo, AEOTEC). Man sollte bei allen Produkten auf folgenden Seiten nach eventuellen ausführlicheren Handbüchern suchen:&lt;br /&gt;
* Herstellerseite des ZWave-Gerätes&lt;br /&gt;
* http://www.zwave.de/handbuecher/ (deutsch)&lt;br /&gt;
* http://products.z-wavealliance.org (englisch)&lt;br /&gt;
Insbesondere auf http://products.z-wavealliance.org, der Datenbank der ZWave-zertifizierten Produkte, sind regelmäßig ausführliche Informationen zu den Geräten zu finden.&lt;br /&gt;
&lt;br /&gt;
== Definition des Gateways / Controllers ==&lt;br /&gt;
{{Randnotiz|RNText=&#039;&#039;&#039;Tester für ZWave@culfw gesucht!&#039;&#039;&#039;&lt;br /&gt;
Z-Wave-Controllerfunktionen werden derzeit in die Firmware [http://www.culfw.de culfw] für den [[CUL]] implementiert. Weitere Informationen im [[ZWCUL]] - Artikel.}}&lt;br /&gt;
=== Autocreate des Gateways ===&lt;br /&gt;
FHEM kann mit einem Funkgateway Z-Wave-Funk empfangen und senden. Z-Wave-Gateways (Controller) existieren von verschiedenen Herstellern. &lt;br /&gt;
&lt;br /&gt;
Folgende Gateways wurden unter anderem bereits erfolgreich mit FHEM eingesetzt:&lt;br /&gt;
* AEON Labs Z-Stick S2 (SDK 5.x; [https://aeotec.freshdesk.com/support/solutions/articles/6000091809-z-stick-s2-v3-08-firmware-update Firmwareupdate auf 3.08 aus 2016])&lt;br /&gt;
* Aeotec Z-Stick Gen5 (Z-Wave Plus; SDK 6.5; [https://aeotec.freshdesk.com/support/solutions/articles/6000108806-z-stick-gen5-backup-software Backup-Software)] ({{Link2Forum|Topic=47000}})&lt;br /&gt;
* Goodway WD6001 (SDK 5.03 {{Link2Forum|Topic=40594|Message=332235}})&lt;br /&gt;
* Vision Z-Wave USB Stick ZU 1401 EU (SDK 6.0x)&lt;br /&gt;
* Vision Z-Wave USB Stick ZU 1401-5 EU (Z-Wave Plus; SDK 6.5x)&lt;br /&gt;
* Z-Wave.Me Z-StickC ({{Link2Forum|Topic=29930|Message=226530}})&lt;br /&gt;
* Z-Wave.Me USB Stick ZME_UZB1 (SDK 6.5x;  Z-Wave Plus; [http://razberry.z-wave.me/z-way-server/ Firmwareupdate und Backup über z-way])&lt;br /&gt;
* Z-Wave.Me Razberry in Verbindung mit Raspberry Pi (1. Generation: Z-Wave, 2. Generation: Gen5-Razberry mit Z-Wave Plus[http://forum.z-wave.me/viewtopic.php?f=3419&amp;amp;t=21327#p55404]) &lt;br /&gt;
** Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das Razberry-Modul funktionsfähig ist: {{Link2Forum|Topic=78248|Message=702044}})&lt;br /&gt;
** Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]&lt;br /&gt;
&lt;br /&gt;
Folgende Gateways sind &#039;&#039;&#039;nicht&#039;&#039;&#039; mit FHEM einsetzbar:&lt;br /&gt;
* Merten Funk-USB-Datenschnittstelle CONNECT&lt;br /&gt;
&lt;br /&gt;
Sollte das eigene Gateway hier nicht aufgeführt sein, ist aufgrund der Standardisierung dennoch die Chance für eine erfolgreiche Einbindung des Gateways in FHEM vorhanden. Bitte dies hier oder im Forum entsprechend vermerken.&lt;br /&gt;
&lt;br /&gt;
Das Z-Wave-Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim nächsten FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; zumeist automatisch erkannt und das zugehörige FHEM-Device nach dem Namensschema &amp;lt;code&amp;gt;ZWDongle_&amp;lt;[https://forum.fhem.de/index.php/topic,92885.msg854533.html#msg854533 Anhang]&amp;gt;&amp;lt;/code&amp;gt; angelegt. Ein manuelles Anlegen des ZWDongle-Moduls oder Eingriffe in die Konfiguration sind unter Linux normalerweise nicht notwendig. &lt;br /&gt;
&lt;br /&gt;
Unter Windows ist ein manuelles Anlegen der Definition des ZWave-Gateways wegen fehlender Unterstützung des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; erforderlich (Beispiel für Z-Wave.Me USB Stick ZME_UZB1 unter Windows: &amp;lt;code&amp;gt;define ZWDongle_1 ZWDongle COM1@115200&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Das FHEM-Gateway-Device ist nach der Definition in FHEM im Raum &amp;quot;Everything&amp;quot; zu finden.&lt;br /&gt;
&lt;br /&gt;
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:&lt;br /&gt;
&lt;br /&gt;
Aeon Labs Z-Stick an der Fritzbox: &lt;br /&gt;
 define ZWDongle_1 ZWDongle /dev/ttyUSB1@115200&lt;br /&gt;
&lt;br /&gt;
Vision Z-Wave USB Stick ZU 1401 EU am Raspberry Pi (Raspbian):&lt;br /&gt;
 define ZWDongle_1 ZWDongle /dev/ttyACM1@115200&lt;br /&gt;
&lt;br /&gt;
Insbesondere wenn am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt werden, empfiehlt es sich zur Erhöhung der Betriebsstabilität das Z-Wave-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] oder [[LinuxDeviceNaming|uDev-Regeln]] anzusprechen.&lt;br /&gt;
&lt;br /&gt;
Bei einem statischen Controller wird die Einrichtung als SUC -sofern der Controller als solcher nicht bei Auslieferung eingerichtet ist- vor der ersten Inklusion von Geräten empfohlen.&lt;br /&gt;
&lt;br /&gt;
=== homeId und nodeList des Gateways ===&lt;br /&gt;
Zur manuellen Definition von Z-Wave Aktoren und Sensoren ist die &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; notwendig. Bei der hier bevorzugten Definition der Geräte durch autocreate ist die Kenntnis der &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; nicht zwingend. Jedoch sollte durch Abfrage der &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; direkt nach Einbindung des Zwave-Gateways dessen Funktionsfähigkeit getestet werden.&lt;br /&gt;
&lt;br /&gt;
Die &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;CtrlNodeId&amp;lt;/code&amp;gt; des Gateways wird mit folgendem Befehl ausgelesen (&amp;lt;ZWDongle&amp;gt; ist im folgenden durch den Namen des FHEM-Devices des eigenen Gateways zu ersetzen):&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; homeId&lt;br /&gt;
ergibt beispielsweise bei einem Gateway mit dem FHEM-Devicenamen ZWDongle_1:&lt;br /&gt;
 ZWDongle_1 homeId =&amp;gt; HomeId:e345c456 CtrlNodeId:01 &lt;br /&gt;
In diesem Beispiel ist die Home-Id des Gateways ZWDongle_1 e345c456 und das Gateway hat die Node-Id 1.&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Liste der Z-Wave Nodes, die bereits am Gateway registriert/inkludiert sind, wird mit dem folgendem Befehl ausgelesen:&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; nodeList&lt;br /&gt;
ergibt beispielsweise:&lt;br /&gt;
 ZWDongle_1 nodeList =&amp;gt; ZWDongle_1 UNKNOWN_2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition von Geräten / Slaves ==&lt;br /&gt;
=== Hinzufügen eines neuen Z-Wave Geräts / Inklusion ===&lt;br /&gt;
Zur Verfolgung von Inklusionsablauf und Meldungen des Controllers während der Inklusion sollte der [[Event monitor]] in einem 2. Browserfenster vor Aktivierung des Inklusionsmodus geöffnet werden.&lt;br /&gt;
&lt;br /&gt;
Das Z-Wave Gateway wird in den Standard-Modus zur Inklusion (zum Aufnehmen) neuer Geräte gesetzt:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; addNode on&lt;br /&gt;
Bei der Standard-Inklusion muss direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen.&lt;br /&gt;
&lt;br /&gt;
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt des obigen Befehls besser der Network-Wide-Modus für die Inklusion genutzt werden:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; addNode onNw&lt;br /&gt;
Bei der Network-Wide-Inklusion muss kein direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen. Es reicht, wenn das zu inkludierende Gerät über andere bereits inkludierte, netzgespeiste Geräte mit Explorer Frames-Unterstützung erreicht werden kann. Die Network-Wide-Inklusion ist zu bevorzugen, da die Z-Wave-Geräte regelmäßig an Ihren örtlichen Endpositionen inkludiert werden können. Dadurch werden bei der Inklusion direkt die korrekten Routen gespeichert. &lt;br /&gt;
&lt;br /&gt;
Nachdem das Gateway in den Inklusionmodus geschaltet wurde, muss das Gerät in den Inklusionsmodus (Aufnahmemodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. Typisch sind ein- oder dreimaliges Drücken einer Taste am Gerät oder beim Anlegen der Versorgungsspannung. Durch die Inklusion werden Home-ID und Node-ID im Gerät gespeichert. Zudem teilt das Gerät über ein spezielle Funknachricht (NIF=Node Information Frame) dem Controller seinen Gerätetyp und seine Geräteeigenschaften mit. Hierbei werden dem Controller auch die vom Gerät unterstützten Command Classes mitgeteilt. Aus diesen Informationen erzeugt FHEM automatisch durch autocreate das FHEM-Geräte-Device nach dem Namensschema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (an eigene Wünsche anpassbar mit {{Link2CmdRef|Anker=rename|Label=rename}}). Die vom Geräte unterstützen Command Classes, die die in FHEM verfügbaren Befehle bestimmen, werden automatisch im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; des FHEM-Geräte-Device gespeichert. Das Gerät ist damit grundlegend in FHEM definiert und im Raum &amp;quot;ZWave&amp;quot; zu finden. &lt;br /&gt;
&lt;br /&gt;
Nach der Inklusion schaltet FHEM den Inklusionsmodus des Z-Wave Gateway automatisch durch Absetzen des Befehls &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode off&amp;lt;/code&amp;gt; aus und zeigt eine Dialogbox mit dem Ergebnis der Inklusion:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;created ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Inklusion war erfolgreich und es wurde das bezeichnete FHEM-Device durch autocreate angelegt.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;addNode failed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Inklusion ist fehlgeschlagen&lt;br /&gt;
 &lt;br /&gt;
Eine erfolgreiche Inklusion ist zudem am Event &amp;quot;ZW_ADD_NODE_TO_NETWORK protocolDone&amp;quot; im Event monitor und natürlich der Anlage des entsprechenden FHEM-Devices durch autocreate zu erkennen.  Das Scheitern einer Inklusion führt typischerweise zur Ausgabe des Events &amp;quot;ZW_ADD_NODE_TO_NETWORK failed&amp;quot;. Häufigste Ursache sind Controllerprobleme, die sich oftmals durch kurzes Ein- und Ausstecken des Controllers, Neustart des Systems oder Ein- und Ausschalten des FHEM-Server-Computers beheben lassen.&lt;br /&gt;
&lt;br /&gt;
HINWEISE:&amp;lt;br /&amp;gt;&lt;br /&gt;
* Die Network-Wide-Inklusion kann nach derzeitiger Kenntnis auch bei Gateways und Geräten ohne Explorer Frames Unterstützung genutzt werden, da bei diesen Geräten grundsätzlich automatisch auf die Standard-Inklusion umgestellt wird.&lt;br /&gt;
* Bei der Standard-Inklusion ist unter Umständen nur ein geringer Abstand zwischen Gateway und Gerät möglich. Sollte die Inklusion daher nicht durchführbar sein, wenn Gateway und Gerät an ihren örtlichen Endpositionen sind (bevorzugte Variante), dann ist der Abstand zwischen diesen versuchsweise zu verringern. Anschließend bei örtlicher Veränderung die Routen mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWave-Devicename&amp;gt; neighborUpdate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set TYPE=ZWave:FILTER=ZWaveSubDevice=no neighborUpdate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; neu ermitteln lassen. Unter Umständen kann der Abstand nur schrittweise erhöht werden. Dann ist bei jeder Abstandsänderung eine Neuermittlung der Routen notwendig.&lt;br /&gt;
* Der NIF enthält bei manchen Geräten fälschlicherweise nicht alle unterstützten Command Classes. FHEM identifiziert während der Inklusion das Gerät und ergänzt die fehlenden Command Classes aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Weiterhin fehlende Command Classes können im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; manuell am Anfang der Liste entsprechend ergänzt werden. Informationen liefern die unter [[#Links|Links]] aufgeführten Datenbanken. Häufig fehlt die Pflicht-Class BASIC.&lt;br /&gt;
* Bei der hier beschriebenen Inklusion findet die Kommunikation zwischen Controller und Gerät anschließend dauerhaft unverschlüsselt statt. Manche Geräte bieten mit der Command Class SECURITY eine AES-verschlüsselte Kommunikation an. Da die Verschlüsselung zu einer höheren Funklast und Latenzen führt, sollte eine verschlüsselte Kommunikation nur mit Bedacht eingesetzt werden (bspw. bei Schlössern). Als Sonderfall ist das Vorgehen zur secure-Inklusion in der [[#Wie_kann_eine_verschl.C3.BCsselte_Kommunikation_unter_Nutzung_der_Command_Class_SECURITY_eingerichtet_werden.3F|FAQ]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nächster Schritt ist die [[#Assoziation|Assoziation]] des Gerätes mit dem Gateway.&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}&lt;br /&gt;
Z-Wave-Geräte können über Assoziationen direkt mit anderen Z-Wave-Geräten kommunizieren. Dies können zum einen Meldungen über den Status und Zustand der Geräte, als auch direkte Befehle sein. Zum Beispiel kann damit ein Bewegungsmelder eine entdeckte Bewegung an den Controller senden und/oder bei entdeckter Bewegung direkt eine Lampe ein- oder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Die Assoziation zwischen zwei Geräten wird durch Aufnahme des zu steuernden Gerätes in eine oder mehrere Assoziationsgruppe(n) des steuernden Gerätes angelegt. Durch die Wahl der Assoziationsgruppe wird festgelegt, bei welchen Ereignissen welche Nachricht an das assoziierte Gerät verschickt wird. Angaben zu den Ereignissen und versandten Nachrichten an die Geräte in einer bestimmten Assoziationsgruppe stehen in der Bedienungsanleitung des jeweiligen Gerätes.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM Statusmeldungen von Sensoren/Aktoren anzeigen und auch darauf reagieren kann, &#039;&#039;&#039;muss&#039;&#039;&#039; der Controller (&amp;lt;ZWDongle&amp;gt;-Device, &amp;lt;code&amp;gt;CtrlNodeId&amp;lt;/code&amp;gt; = typischerweise 1) immer in der/den passenden Assoziationsgruppe(n) des jeweiligen Gerätes &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; aufgenommen werden:&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;name&amp;gt; associationAdd &amp;lt;associationGroup&amp;gt; &amp;lt;CtrlNodeId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typischerweise ist die Assoziationsgruppe 1 der Geräte für die Statusmeldungen an den Controller vorgesehen (Ausnahme: [[#Fibaro|Fibaro-Geräte ohne ZWave Plus - Zertifizierung]]). Daher nimmt FHEM die Assoziation von Controller mit der Assoziationsgruppe 1 des Gerätes bei der Inklusion immer automatisch vor. Zudem identifiziert FHEM während der Inklusion das Gerät und setzt weitere Assoziationen mit dem Controller für von 1 abweichende Assoziationsgruppen aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Ist keine XML-Config-Datei für das Gerät vorhanden, sind Assoziationen des Controllers mit von 1 abweichenden Assoziationsgruppen oder weiteren Assoziationsgruppen mit dem zuvor genannten Befehl grundsätzlich manuell anzulegen. &lt;br /&gt;
&lt;br /&gt;
Die richtige Anlage der Assoziation(en) des Controllers mit dem Gerät immer prüfen, da dies eine Hauptfehlerquelle bei Funktionsproblemen mit FHEM ist.&lt;br /&gt;
&lt;br /&gt;
Abruf der assoziierten Geräte in einer bestimmten Assoziationsgruppe &amp;lt;associationGroup&amp;gt;:&lt;br /&gt;
 get &amp;lt;name&amp;gt; association &amp;lt;associationGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abruf der assozierten Geräte für alle Assoziationsgruppen eines Gerätes:&lt;br /&gt;
 get &amp;lt;name&amp;gt; associationAll&lt;br /&gt;
&lt;br /&gt;
Nahezu alle in Europa erhältlichen aktuellen Geräte unterstützen die Rückmeldung des Status via Association. Ausnahmen gibt es in Nordamerika, wo aufgrund von Patentansprüchen einige Hersteller auf die Statusrückmeldungen verzichten. Diese Geräte unterstützen in der Regel die Command Class ASSOCIATION nicht.&lt;br /&gt;
&lt;br /&gt;
Nächster Schritt ist die [[#Konfiguration|Konfiguration]] des Gerätes.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}&lt;br /&gt;
Die Standard-Konfiguration eines Gerätes entspricht oftmals nicht den eigenen Wünschen und Anforderungen (Einheiten usw.). Mit den Befehlen der Class CONFIGURATION lässt sich die Konfiguration anpassen. Die zur Konfiguration eines Gerätes notwendigen Angaben zu den Parameternummern, -größen und -werten sind im jeweiligen Geräte-Handbuch bzw. entsprechenden Datenbanken (bspw. [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] oder [http://products.zwavealliance.com/ products.zwavealliance.com]) enthalten. &lt;br /&gt;
&lt;br /&gt;
Die Konfiguration beispielsweise bei Parametergröße 1 lässt sich mit diesem Befehl anpassen:&lt;br /&gt;
 set &amp;lt;name&amp;gt; configByte &amp;lt;Parameternummer&amp;gt; &amp;lt;Parameterwert&amp;gt;&lt;br /&gt;
Für weitere Parametergrößen gibt es die Befehle &amp;lt;code&amp;gt;configWord&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;configLong&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die im Gerät hinterlegten Konfiguration kann pro Parameternummer mit folgendem Befehl abgerufen werden:&lt;br /&gt;
 get &amp;lt;name&amp;gt; config &amp;lt;Parameternummer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zudem bietet FHEM basierend auf den manuell gepflegten XML-Config-Dateien die Möglichkeit, die speziellen Parameternummern des Gerätes mit ihren Parametergrößen und -werte als eigenständige config-Befehle mit Hilfsinformationen einzubinden. Ein manuelles Suchen im Geräte-Handbuch und Nutzung der configByte-, configWord- und configLong-Befehle ist dadurch in vielen Fällen unnötig. Für diese Funktion muss das Gerät von FHEM einmalig durch folgenden Befehl, der bei der Inklusion automatisch ausgeführt wird, identifiziert werden:   &lt;br /&gt;
 get &amp;lt;name&amp;gt; model&lt;br /&gt;
Die Readings &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;modelID&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; werden dadurch erzeugt. In &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; sollte der Klartextname des Gerätes stehen. Zudem sind dann -soweit eine XML-Config Datei für das Gerät existiert- die speziellen set/get-Kommandos configXYZ für das Geräte im Auswahldialog der Detailansicht mit Hilfsinformationen verfügbar:&lt;br /&gt;
[[Datei:Z-Wave_confighelp.PNG|900px|thumb|center|config-Befehl mit Hilfstext]]&lt;br /&gt;
&lt;br /&gt;
Bei vorhandener XML-Config-Datei kann die komplette Konfiguration eines Gerätes abgerufen werden:&lt;br /&gt;
 get &amp;lt;name&amp;gt; configAll&lt;br /&gt;
&lt;br /&gt;
Außerdem wird durch den &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; -Befehl geprüft, ob das Gerät in der [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] und/oder [http://products.zwavealliance.com/ products.zwavealliance.com] enthalten ist. Im Erfolgsfall wird ein Link &amp;quot;Details in pepper DB&amp;quot; und/oder &amp;quot;Details in alliance DB&amp;quot; zum entsprechenden Geräteeintrag in der jeweiligen Datenbank unten in der Detailansicht des FHEM-Geräte-Devices angelegt und ein Bild des Gerätes in die Detailansicht eingebunden.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf von &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; ist auch für die Nutzung der Class MANUFACTURER_PROPRIETARY zwingende Einsatzvoraussetzung.&lt;br /&gt;
&lt;br /&gt;
=== Entfernen eines Z-Wave-Geräts / Exklusion ===&lt;br /&gt;
Durch die Exklusion wird die Home-ID und Node-ID aus dem Gerät und das Gerät selbst aus der Node-List des Controllers gelöscht. Erst nach einer Exklusion kann das Gerät in ein anderes Z-Wave-Netz aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Zuerst wird der Z-Wave Gateway in den Standard-Modus zur Exklusion (Ausschluss) von Geräten gesetzt:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode on&lt;br /&gt;
&lt;br /&gt;
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt dem obigen Befehl besser der Network-Wide-Modus für die Exklusion genutzt werden (siehe auch Erläuterungen zu Standard- versus Network-Wide-Inklusion unter [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]]):&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode onNw&lt;br /&gt;
&lt;br /&gt;
Danach muss das Gerät in den Exklusionsmodus (Ausschlussmodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. &lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Exklusionsmodus am Z-Wave Gateway wieder ausgeschaltet:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode off&lt;br /&gt;
&lt;br /&gt;
Das FHEM-Device muss nach der Exklusion manuell durch &amp;lt;code&amp;gt;delete &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Die durch die Exklusion frei gewordene NodeID wird nicht bei der nächsten Inklusion wiederverwendet, sondern es wird die höchste noch nicht verwendete NodeID genutzt.&lt;br /&gt;
&lt;br /&gt;
=== Erneutes Hinzufügen eines bereits registrierten Z-Wave Geräts ===&lt;br /&gt;
Die an einem Z-Wave-Gateway bereits registrierten/inkludierten Geräte sind im Gateway selbst abgespeichert und können durch FHEM jederzeit wieder abgerufen werden. Dies kann man in folgenden Fällen sinnvoll nutzen:&lt;br /&gt;
* Inklusion mit einem batteriegespeisten ZWave-Gateway (bspw. Aeon Labs Z-Stick) ohne FHEM-Server-Anschluss während der Inklusion&lt;br /&gt;
* Umstieg eines ZWave-Netzwerkes von Fremdsoftware auf FHEM  &lt;br /&gt;
* Vollständiger oder teilweiser Verlust der FHEM-Konfiguration&lt;br /&gt;
&lt;br /&gt;
Eine Node-Liste aller inkludierten Geräte des Gateways wird abgerufen durch:&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; nodeList&lt;br /&gt;
Es wird eine Liste aller im Gateway inkludierten Gerät inklusive Gateway selbst zurückgeliefert. Sofern ein Gerät bereits als FHEM-Device angelegt wurde, wird der FHEM-Device-Name in der nodeList angezeigt. Dies ist für das Gateway selbst immer der Fall. Alle noch nicht in FHEM angelegten Geräte, werden als &amp;quot;UNKNOWN_x&amp;quot; ausgegeben, wobei x die ID des betreffenden Gerätes ist.&lt;br /&gt;
&lt;br /&gt;
Mit dem folgenden Befehl wird beispielsweise das bereits im Gateway inkludierte Gerät mit der ID 2 (in der nodeList angezeigt als &amp;quot;UNKNOWN_2&amp;quot;) in FHEM durch autocreate definiert:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; createNode 2&lt;br /&gt;
&lt;br /&gt;
Batteriebetriebene Geräte müssen bei Absetzen des &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt;-Befehls wach sein, damit der Befehl verarbeitet werden kann. Dies erreicht man, indem man das Gerät auf &amp;quot;permanent wach&amp;quot; stellt. Falls das Gerät diese Funktion nicht anbietet, muss man es manuell aufwecken und max. 2 Sekunden später den &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt;-Befehl absetzen. Alternativ kann das batteriebetriebene Gerät durch Versand des NIF vom Gerät aus automatisch in FHEM erzeugt werden: Hierzu am Gerät die Taste zum Versand des NIF drücken und &amp;lt;code&amp;gt;autocreate&amp;lt;/code&amp;gt; legt das FHEM-Device an; der Aufruf von &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt; entfällt dann.&lt;br /&gt;
&lt;br /&gt;
== Geräte-Besonderheiten ==&lt;br /&gt;
=== batteriebetriebene Geräte ===&lt;br /&gt;
Batteriebetriebenen Geräten können hinsichtlich ihrer Empfangsbereitschaft unterschieden werden in&lt;br /&gt;
&lt;br /&gt;
* Wakeup-Geräte&lt;br /&gt;
* FLIRS-Geräte&lt;br /&gt;
&lt;br /&gt;
==== Wakeup-Geräte ====&lt;br /&gt;
Wakeup-Geräte sind momentan die häufigste Art von batteriebetriebenen Z-Wave Geräten. Sie sind erkennbar an der Unterstützung der Command Class WAKE_UP.&lt;br /&gt;
Zur Verlängerung der Batterielaufzeit legen sich batteriebetriebene Wakeup-Geräte „schlafen“ und wachen (Wakeup) nur in konfigurierbaren Intervallen auf, um Befehle zu verarbeiten. Das Aufwachen signalisieren die Geräte durch den Versand einer Nachricht &amp;quot;wakeup notification&amp;quot;. Daraufhin senden FHEM und andere Geräte ihre bis dahin gesammelten Befehle, die dann verarbeitet bzw. beantwortet werden. Anschließend gehen die batteriebetriebenen Geräte wieder in den Schlafmodus.&lt;br /&gt;
&lt;br /&gt;
FHEM teilt bei set/get-Befehlen an batteriebetriebene Geräte über einen Hinweis der Form&lt;br /&gt;
:&amp;lt;code&amp;gt;Scheduled for sending after WAKEUP&amp;lt;/code&amp;gt; &lt;br /&gt;
::oder&lt;br /&gt;
:&amp;lt;code&amp;gt;Scheduled get requests for sending after WAKEUP&amp;lt;/code&amp;gt;&lt;br /&gt;
mit, dass der Befehl im Sendstack des FHEM-Geräte-Devices abgespeichert wurde und bei der nächsten &amp;quot;wakeup notification&amp;quot; an das Gerät versendet wird. Ein Versand der Befehle im Sendstack findet grundsätzlich ausschließlich nach Erhalt der &amp;quot;wakeup notification&amp;quot;-Nachricht statt, selbst wenn das Gerät zwischendurch andere Telegramme (bspw. Bewegungsmeldung, Temperatur) an den Controller verschickt. Nur nach Versand der &amp;quot;wakeup notification&amp;quot; ist das batteriebetriebene Gerät grundsätzlich in der Lage (&amp;quot;wach genug&amp;quot;), Telegramme korrekt zu empfangen und zu verarbeiten.&lt;br /&gt;
&lt;br /&gt;
Wie viele Nachrichten im Sendstack auf einen Versand an das Gerät warten, ist im Internal &amp;lt;code&amp;gt;cmdsPending&amp;lt;/code&amp;gt; des zugehörigen FHEM-Devices ersichtlich. Welche Nachrichten (Befehle) im Sendstack warten, ist in der Ausgabe des Befehls &amp;lt;code&amp;gt;[[list]] &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt; erkennbar: Unter der Überschrift Sendstack sind alle wartenden Nachrichten als Rohnachrichten aufgeführt. Der Sendstack wird beim Beenden von FHEM nicht gespeichert. Durch Beenden von FHEM (beispielsweise durch &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt;) geht der Sendstack der Geräte daher verloren.&lt;br /&gt;
&lt;br /&gt;
Das Wakeup-Interval und der Empfänger der &amp;quot;wakeup notification&amp;quot; wird wie folgt konfiguriert:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; wakeupInterval &amp;lt;time&amp;gt; &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;time&amp;gt;&amp;lt;/nowiki&amp;gt; ist die Zeit in Sekunden zwischen den Intervallen und &amp;lt;nodeID&amp;gt; der gewünschte Empfänger der &amp;quot;wakeup notification&amp;quot;; in der Regel ist dies &#039;&#039;&#039;immer&#039;&#039;&#039; der Controller &amp;lt;CtrlNodeId&amp;gt;. Viele Geräte kommen im Auslieferungszustand mit der NodeID 255. Die &amp;quot;wakeup notification&amp;quot; wird dann als Broadcast ohne Nutzung von Routing an alle erreichbaren Geräte gesendet. Hier sollte die Konfiguration auf die NodeID des Controllers geändert werden, da dadurch die &amp;quot;wakeup notification&amp;quot; geroutet wird und größere Entfernungen zwischen Gerät und Controller möglich sind. Zudem ist dies robuster und spart zusätzlich noch Batterielaufzeit. Darum setzt FHEM bei der Inklusion von WakeUp-Geräten &#039;&#039;&#039;automatisch&#039;&#039;&#039; den Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; wakeupInterval 86400 &amp;lt;ControllerNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ab. Bei abweichenden eigenen Vorstellungen ist dies gegebenenfalls anzupassen. Bei Geräten mit V2 der Command Class WAKE_UP kann das vom Hersteller vorgesehene Standard-wakeupInterval mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; wakeupIntervalCapabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vom Gerät abgerufen werden. Die Einstellungen von wakeupInterval nach Inklusion und nach jeder Änderung immer mit der Abfrage &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; wakeupInterval&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; überprüfen.&lt;br /&gt;
&lt;br /&gt;
Ein Aufwachen und Versand der &amp;quot;wakeup notification&amp;quot; von batteriebetriebenen Geräten kann für die [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] manuell erzwungen werden. Hierzu bringt man das Gerät normalerweise in den Inklusionsmodus oder findet in der Bedienungsanleitung gegebenenfalls andere Informationen. Bitte beachten, dass dann je nach Gerät nur eine geringe Entfernung von Gateway und Gerät vorhanden sein darf (direkte Erreichbarkeit). Alternativ kann für die Dauer der Assoziation und Konfiguration das Wakeup-Interval verkürzt werden (beispielsweise auf 60 Sekunden), wodurch das Routing genutzt werden kann und größere Entfernungen zwischen Gateway und Gerät überbrückt werden können. Anschließend das Wakeup-Interval wieder auf eine batterieschonenende Dauer einzustellen.&lt;br /&gt;
&lt;br /&gt;
Einzelne batteriebetriebene Gerät lassen sich für längere Zeit auf &amp;quot;wach&amp;quot; bzw. permanent &amp;quot;wach&amp;quot; stellen. Dann aus dem Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen, damit Befehle in diesem Gerätemodus von FHEM direkt verschickt werden. Nach Ausschalten des &amp;quot;wach&amp;quot;-Modus &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; wieder im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Bei Konfigurationsänderungen an batteriebetriebenen Geräten mit &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; config...&amp;lt;/code&amp;gt; sollte die korrekte Verarbeitung der Befehle immer mit dem entsprechenden &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; config...&amp;lt;/code&amp;gt; oder -falls vorhanden- mit &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; configAll&amp;lt;/code&amp;gt; überprüft werden, um eventuelle Funk-Telegrammverluste sofort festzustellen.&lt;br /&gt;
&lt;br /&gt;
==== FLIRS-Geräte ====&lt;br /&gt;
Ein batteriebetriebene FLIRS (frequently listening routing slave) Gerät wacht in sehr kurzen Zeitabständen (250ms oder 1000ms) auf und prüft, ob ein Funksignal vorliegt. Liegt kein Funksignal vor geht das Gerät wieder in Tiefschlaf. Zum Aufwecken eines FLIRS-Gerätes ist ein dauerhaftes Funksignal -der Wakeup-Beam-, notwendig, das etwas länger als die Aufweckzeitabstände sein muss. Näher beschrieben unter anderem [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF hier]. &lt;br /&gt;
&lt;br /&gt;
FLIRS-Geräte haben nicht die Command Class WAKE_UP und arbeiten deshalb nicht mit &amp;quot;wakeup notification&amp;quot;. Aus Sicht des FHEM-Nutzers sind die bekannten FLIRS-Geräte (Sirenen von Vision und Popp) nicht anders zu bedienen/einzurichten als netzgespeiste Geräte. Wakeup-Beam und andere Besonderheiten werden unsichtbar für den Nutzer automatisch abgewickelt.&lt;br /&gt;
&lt;br /&gt;
=== Aeon Labs / Aeotec ===&lt;br /&gt;
Ausführliche Handbücher und technische Informationen auf https://aeotec.freshdesk.com/support/home&lt;br /&gt;
&lt;br /&gt;
==== Multi Sensor 5 ====&lt;br /&gt;
* aktuellste Firmware installieren&lt;br /&gt;
* Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; um &amp;lt;code&amp;gt;BASIC&amp;lt;/code&amp;gt; ergänzen (ab [[version|Modulversion]] 8824/25.6.2015 wird das automatisch bei der Inklusion durchgeführt)&lt;br /&gt;
* bei USB-Anschluss aus Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen&lt;br /&gt;
* Parameter 101 auf 225 (oder 224 bei USB-Anschluss) setzen mit &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; configGroup1Reports 225&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; configLong 101 225&amp;lt;/code&amp;gt;, um Batteriezustand (nicht bei 224), Temperatur, Feuchte und Helligkeit regelmäßig zu erhalten. Das Sende-Intervall wird duch &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; configGroup1Interval &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; festgelegt (Standard 720 Sek).&lt;br /&gt;
* [http://devel.pepper1.net/zwavedb/device/407 Paramterübersicht pepper-Datenbank]&lt;br /&gt;
siehe {{Link2Forum|Topic=34505|Message=268913}}&lt;br /&gt;
&lt;br /&gt;
==== Multisensor 6 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40393}}&lt;br /&gt;
* arbeitet bei USB-Anschluß als Router&lt;br /&gt;
* bei USB-Anschluss aus Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen&lt;br /&gt;
* die &amp;lt;code&amp;gt;configGroupxInterval&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;configxxxReportingThreshold&amp;lt;/code&amp;gt; Einstellungen wirken nur bei USB-Anschluss, im reinen Batteriebetrieb werden die Sensordaten nur bei einem &amp;lt;code&amp;gt;wakeup&amp;lt;/code&amp;gt; übertragen&lt;br /&gt;
&lt;br /&gt;
==== Aeotec LED Bulb ZW098-C55 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40504}}&lt;br /&gt;
&lt;br /&gt;
=== Danfoss ===&lt;br /&gt;
==== DAN_LC-13 Heizungsthermostat LC-13 (014G0013) ====&lt;br /&gt;
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem &amp;lt;code&amp;gt;at&amp;lt;/code&amp;gt; abgefragt werden ({{Link2Forum|Topic=32145|Message=260795}}):&lt;br /&gt;
 define Atdanfoss at +*00:30 get &amp;lt;name&amp;gt; battery&lt;br /&gt;
Auf dem Markt sind mehrere Varianten des Thermostates LC-13 erhältlich. Darum beim Kauf unbedingt auf die genaue Bezeichnung LC-13 (014G0013) achten ({{Link2Forum|Topic=38041|Message=303146}}). &lt;br /&gt;
&lt;br /&gt;
=== devolo ===&lt;br /&gt;
Ausführliche Handbücher auf http://products.z-wavealliance.org&lt;br /&gt;
&lt;br /&gt;
==== MT02648 Tür-/Fenster Kontakt 3in1 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=41337}}&lt;br /&gt;
&lt;br /&gt;
=== DüWI ===&lt;br /&gt;
Geräte von DÜWI liefern bei örtlicher Betätigung kein automatisches Funk-Signal über die Statusänderung. Das liese sich nur durch eine regelmäßige Statusabfrage durch FHEM (beispielsweise &amp;lt;code&amp;gt;define Status_Abfrage at +*00:03:00 get &amp;lt;name&amp;gt; swmStatus&amp;lt;/code&amp;gt;) beheben.&lt;br /&gt;
Einige Produkte von [http://zwave.me Z-Wave.Me] basieren auf DÜWI-Geräten. Diese Z-Wave.Me Produkte haben jedoch eine erweiterte Firmware, welche die genannte und weitere Firmware-Schwächen der Original-Produkte von DÜWI behebt.&lt;br /&gt;
&lt;br /&gt;
=== Everspring ===&lt;br /&gt;
==== AN145 Sockelmodul E27 ====&lt;br /&gt;
Statusabfrage ohne permanente Abfrage: {{Link2Forum|Topic=48864|Message=405545|Beitrag}}&lt;br /&gt;
&lt;br /&gt;
=== Fibaro ===&lt;br /&gt;
Association Group für Übermittlung von Statusinformationen an den Controller:&lt;br /&gt;
* &amp;quot;alte&amp;quot; ZWave-Geräte (kein ZWave-Plus): häufig Association Group 3&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; associationAdd 3 &amp;lt;CtrlNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Bei diesen Geräten empfiehlt es sich zur Funklastreduzierung und Problemminimierung zu prüfen, ob die von FHEM automatisch vorgenommene Assoziation des Controllers mit der Association Group 1 gelöscht werden kann (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; associationDel 1 &amp;lt;CtrlNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). Nahezu immer werden in Association Group 1 die gleichen Infos, nur mit einer anderen Command Class, wie in der Association Group 3 an den Controller übermittelt.&lt;br /&gt;
* ZWave Plus-Geräte: Association Group 1 (&amp;quot;lifeline&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== FGSS-001 / FGSD-002 Rauchmelder ====&lt;br /&gt;
* nicht untereinander vernetzbar&lt;br /&gt;
* keine Alarmauslösung/Sirenenfunktion durch ZWave-Zentralen&lt;br /&gt;
&lt;br /&gt;
==== FGS-222 Relais Unterputzeinsatz ====&lt;br /&gt;
Bei der Inklusion werden von FHEM 3 Devices angelegt:&lt;br /&gt;
* Hauptdevice (Steuerung und automatischer Status für Kanal 1 und kanalübergreifende Funktionen)&lt;br /&gt;
* Device für Endpoint 1 (Steuerung Kanal 1)&lt;br /&gt;
* Device für Endpoint 2 (Steuerung und automatischer Status von Kanal 2)&lt;br /&gt;
Die Firmware des FGS-222 übermittelt den Status für Kanal 1 automatisch immer ausschließlich an das Hauptdevice. Die Steuerung von Kanal 1 kann hingegen sowohl über das Hauptdevice als auch über das Device für Endpoint 1 erfolgen. Das Device für Endpoint 1 ist somit nicht zwingend erforderlich und kann grundsätzlich gelöscht oder in den room hidden verschoben werden.&lt;br /&gt;
&lt;br /&gt;
Details: {{Link2Forum|Topic=50176}}&lt;br /&gt;
&lt;br /&gt;
Hinweis zum Reset: {{Link2Forum|Topic=55190|Message=469393}}&lt;br /&gt;
&lt;br /&gt;
==== FGK-101 Tür/Fensterkontakt ====&lt;br /&gt;
* Besonderheiten bei Anschluss eines Temperatursensors: {{Link2Forum|Topic=38012}}&lt;br /&gt;
&lt;br /&gt;
=== GE ===&lt;br /&gt;
==== GE (Model t.b.d) ====&lt;br /&gt;
Dieser Schalter unterstützt keine Statusrückmeldungen.&lt;br /&gt;
&lt;br /&gt;
=== Merten ===&lt;br /&gt;
Laut {{Link2Forum|Topic=38133}} müssen bei einigen Merten-Geräten, die mit Fremdsoftware inkludiert wurden, gegebenenfalls die Geräte wieder exkludiert und dann erneut mit FHEM inkludiert werden, damit Assoziationen mit FHEM gesetzt werden können.&lt;br /&gt;
&lt;br /&gt;
=== Philio ===&lt;br /&gt;
==== PHI_PAN04 Relais Unterputzeinsatz 2 Schalter a 1.5kW mit Messfunktion ====&lt;br /&gt;
siehe {{Link2Forum|Topic=28046}}&lt;br /&gt;
&lt;br /&gt;
=== Popp ===&lt;br /&gt;
==== POPE004001 Z-Wave Rauchmelder mit Innensirene ====&lt;br /&gt;
siehe {{Link2Forum|Topic=39856}}&lt;br /&gt;
==== POPE005107 Z-Wave Außensirene ====&lt;br /&gt;
siehe {{Link2Forum|Topic=42736}}&amp;lt;br&amp;gt;&lt;br /&gt;
Alte Firmwareversionen haben einen Bug bei der Übermittlung von negativen Temperaturen. Eine Lösungsvariante über ein &amp;lt;code&amp;gt;userReadings&amp;lt;/code&amp;gt; findet sich auch im verlinkten Thema. &lt;br /&gt;
==== POPE009006 Z-Wave Wall Plug Switch ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40771}}&lt;br /&gt;
==== POPE009402 10Year Smoke Detector ====&lt;br /&gt;
Die erste Firmwareversion hat eine fehlerhafte modelID.  Diese Rauchmelder wird dadurch fälschlich als [[Z-Wave#POPE005107_Z-Wave_Au.C3.9Fensirene|Popp Aussensirene]] in FHEM angezeigt. Neuere Geräte werden laut Popp mit der korrekten modelID ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
=== Z-Wave.Me ===&lt;br /&gt;
==== ZME_RC2 Fernbedienung ====&lt;br /&gt;
siehe {{Link2Forum|Topic=35513}}&amp;lt;BR&amp;gt;&lt;br /&gt;
Das Forenthema enthält eine detaillierte Beschreibung der Nutzung der Class MULTI_CHANNEL_ASSOCIATION.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Geräte-Vergleich ==&lt;br /&gt;
=== Doppel-Relais ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Eigenschaft !! FIBARO Double Switch 2-FGS-223 !! Qubino Flush 2 relays  !! Philio-PAN04&lt;br /&gt;
|-&lt;br /&gt;
| Standby-Leistung || ca. 0.4W || ca. 0.4W || ca. 0.5W&lt;br /&gt;
|-&lt;br /&gt;
| Reaktion beim Schalten am Tastereingang || schnell, kaum merkliche Verzögerung ||  schnell, kaum merkliche Verzögerung || langsam, unangenehm langes drücken des Tasters nötig &amp;gt;1 Sekunde &lt;br /&gt;
|-&lt;br /&gt;
| Geräte in FHEM || 3 &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 || 3  &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 || 4  &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 &amp;lt;br&amp;gt; x.03 Summengerät (ähnlich Hauptgerät, überflüssig)&lt;br /&gt;
|-&lt;br /&gt;
| Zustand Hauptgerät || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais&lt;br /&gt;
|-&lt;br /&gt;
| Statuswechsel Report vom Gerät zum FHEM || ca. 1 Sekunde || ca. 3 Sekunden || ca. 3-4 Sekunden&lt;br /&gt;
|-&lt;br /&gt;
| Empfänger des Status Reports || Hauptgerät und Untergeräte || Nur Hauptgerät &amp;lt;br&amp;gt; Aktualisierung der Untergeräte nur bei aktiver Abfrage  || Nur Hauptgerät &amp;lt;br&amp;gt;Aktualisierung der Untergeräte nur bei aktiver Abfrage &lt;br /&gt;
|-&lt;br /&gt;
| Leistungsmessung || Separat für Untergeräte || Nur Summe || Nur Summe&lt;br /&gt;
|-&lt;br /&gt;
| Leitungssicherung nötig || ja, 2x 6.5A, Summe max 10A || ja, max 2x 4A  || nein&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
* Grundlageninformation &amp;quot;Z-Wave-Haupt-Anleitung&amp;quot;: [http://www.zwave.de/z-wave-funknetz-einrichten-und-betreiben/ Wie errichte und betreibe ich ein Z-Wave basiertes Funknetz]&lt;br /&gt;
* [http://www.zwave.de/buch-z-wave-grundlagen/ Buch] &amp;quot;Z-Wave: Die Funktechnologie für das Smart Home&amp;quot; von Dr. Christian Paetz (Paetz &amp;quot;is the primary European representative for the Z-Wave Alliance&amp;quot; [http://z-wavealliance.org/global-contacts/])&lt;br /&gt;
* Z-Wave-Produktdatenbank mit Angabe zur Zertifizierung, Handbüchern und weiteren Detailinfos (Z-Wave oder [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus]): http://products.z-wavealliance.org (englisch)&lt;br /&gt;
* herstellerübergreifende Datenbank mit Bedienungsanleitungen zu Z-Wave-Geräten: http://www.zwave.de/handbuecher/ oder http://manuals.zwaveeurope.com (mehrsprachig)&lt;br /&gt;
* herstellerübergreifende Datenbank mit technischen Informationen zu Z-Wave-Geräten (Z-Wave Device Library): http://devel.pepper1.net/zwavedb/ (englisch; wird derzeit nicht mehr aktualisiert)&lt;br /&gt;
* informative Webseiten zu Z-Wave:&lt;br /&gt;
** [http://www.z-wavealliance.org/ http://www.z-wavealliance.org/] (englisch)&lt;br /&gt;
** [http://www.zwaveeurope.com/ http://www.zwaveeurope.com/] (englisch)&lt;br /&gt;
** [http://www.zwave.de/ http://www.zwave.de/] (deutsch)&lt;br /&gt;
** [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF Introductory Guide to Z-Wave-Technology von Honeywell] (englisch; nicht auf aktuellem Stand)&lt;br /&gt;
&lt;br /&gt;
=== Informationsquellen zur Einbindung von Command Classes ===&lt;br /&gt;
Offizielle und ausführliche Informationen von Sigma Designs (veröffentlicht am 31.08.2016):&lt;br /&gt;
* [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen (seit Veröffentlichung der Z-Wave Spezifikationen am 31.08.2016 geringe Relevanz)&lt;br /&gt;
* [https://github.com/yepher/RaZBerry Infos zu Command Classes (ausführlich; insbesondere im Verzeichnis &amp;quot;docs&amp;quot;), RaZBerry und Z-Wave allgemein], englisch&lt;br /&gt;
* [http://220.135.186.178/zwave/example/ Übersicht von Command Classes und deren Rückgabewerten mit Unterscheidung der Class-Versionen], englisch&lt;br /&gt;
* Code von http://www.openzwave.org (https://github.com/OpenZWave/open-zwave) und http://www.openhab.org (Z-Wave binding: https://github.com/cdjackson/openhab)&lt;br /&gt;
* eine Java-API-Beschreibung mit Hinweisen zu Unterschieden von Class-Versionen: http://dz.prosyst.com/pdoc/mBS_SH_SDK_8.1/modules/zwave/api/driver/index.html&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== Welche Infos sollten Anfragen im ZWave-Forum enthalten? ===&lt;br /&gt;
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ergibt Ausgabe &amp;quot;nothing to do...&amp;quot;&lt;br /&gt;
* detaillierte Beschreibung des Problems&lt;br /&gt;
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)&lt;br /&gt;
* list des jeweiligen FHEM-Devices (Ausgabe von &amp;lt;code&amp;gt;list &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
::Bitte vor Aufruf des list-Befehls -wenn vorhanden/möglich- folgende Befehle ausführen und Ergebnis abwarten:&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; associationAll&amp;lt;/code&amp;gt; &lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; configAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; versionClassAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcaAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; wakeupInterval&amp;lt;/code&amp;gt; (nur bei batteriebetriebenen Geräten)&lt;br /&gt;
* passender Ausschnitt aus dem Logfile (siehe Link im FHEM-Menü links) generiert mit den gesetzten Attributen&lt;br /&gt;
::*&amp;lt;code&amp;gt;attr &amp;lt;ZWDongle&amp;gt; verbose 5&amp;lt;/code&amp;gt; und&lt;br /&gt;
::*&amp;lt;code&amp;gt;attr global mseclog 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Welche Schritte sind für die Einbindung von ZWave-Geräten in FHEM mindestens durchzuführen? ===&lt;br /&gt;
Voraussetzung: ZWave-Gateway ist erfolgreich eingebunden!&lt;br /&gt;
# [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes&lt;br /&gt;
# [[#Assoziation|Assoziation]] der Assoziationsgruppe(n) des Gerätes mit dem Gateway&lt;br /&gt;
# [[#Konfiguration|Konfiguration]] des Gerätes&lt;br /&gt;
&lt;br /&gt;
=== Warum bleibt der Status (STATE) des neu inkludierten Gerätes dauerhaft auf &amp;quot;associationAdd &amp;lt;associationGroup&amp;gt; &amp;lt;CtrlNodeId&amp;gt;&amp;quot; stehen? ===&lt;br /&gt;
FHEM setzt das Reading &amp;quot;state&amp;quot;, das den STATE bestimmt, nicht bei allen ZWave-Devices mit vordefinierten Standardwerten. Daher bleibt der bei der Inklusion automatisch abgesetzte &amp;quot;associationAdd&amp;quot;-Befehl unter Umständen im STATE stehen, bis der Anwender den STATE über die Vergabe des Attributes &amp;lt;code&amp;gt;{{Link2CmdRef|Anker=stateFormat|Label=stateFormat}}&amp;lt;/code&amp;gt; manuell an seine Bedürfnisse angepasst hat.&lt;br /&gt;
(weitergehende Info zum state/STATE/stateFormat: [[DevelopmentState]])&lt;br /&gt;
&lt;br /&gt;
=== Wie können bei mehrkanaligen Aktoren die zusätzlichen Kanäle (&amp;gt;1) angesprochen werden? ===&lt;br /&gt;
* Bei der [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes wird das Hauptdevice mit dem Namen &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; und die Devices für alle Kanäle (Endpoints) nach dem Namensschema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;.&amp;lt;EndpointNr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; automatisch angelegt. Jedes dieser FHEM-Devices spricht regelmäßig einen bestimmten Kanal des Gerätes an; einige Geräte sprechen mit dem Hauptdevice jedoch das gesamte Gerät mit allen Kanälen an (Bedienungsanleitung beachten).&lt;br /&gt;
* Manuell werden Devices für zusätzliche Kanäle mit Hilfe der Befehle &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcEndpoints&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcCapability &amp;lt;chid&amp;gt;&amp;lt;/code&amp;gt; aus der Class MULTI_CHANNEL ermittelt bzw. einzeln über autocreate angelegt (Details und Beispiel siehe {{Link2CmdRef|Anker=ZWaveget}}). Mit dem Befehl &amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; mcCreateAll&amp;lt;/code&amp;gt; werden automatisch alle Kanäle des Gerätes durch autocreate als eigene Devices in FHEM angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man die SDK-Version eines Gerätes herausfinden? ===&lt;br /&gt;
Mit FHEM alleine kann eine [[#Grobermittlung|Grobermittlung]] der SDK-Version vorgenommen werden, die aber für einige Zwecke bereits ausreichend ist. Soll eine [[#Detailermittlung|Detailermittlung]] der genauen SDK-Version erfolgen, dann müssen die mit FHEM ermittelten Werte anhand externer Quellen übersetzt werden.&lt;br /&gt;
==== Grobermittlung ====&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; nodeInfo &amp;lt;dezimale nodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; liefert das Reading &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nodeInfo_&amp;lt;dezimale nodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
Die Angabe im Reading hinter &amp;lt;code&amp;gt;ProtocolVers:&amp;lt;/code&amp;gt; lässt grobe Rückschlüsse zu. Mögliche (bekannte) Werte:&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; -&amp;gt; bspw. keine Explorer Frames, keine SUC-Unterstützung (veraltet, keine bekannten Geräte mehr im Handel)&lt;br /&gt;
* &amp;lt;code&amp;gt;SDK5.0x+4.2x&amp;lt;/code&amp;gt; -&amp;gt; bspw. keine Explorer Frames, teilweise SUC-Unterstützung&lt;br /&gt;
* &amp;lt;code&amp;gt;SDK4.5x+6.0x&amp;lt;/code&amp;gt; -&amp;gt; bspw. Explorer Frames- und SUC-Unterstützung (Reading-Wert wird auch bei SDK 6.5x = Z-Wave Plus angezeigt)&lt;br /&gt;
==== Detailermittlung ====&lt;br /&gt;
Durch den Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; version&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; kann man die ZWave-Protokoll-Version von Geräten und Controller abfragen. Mit Unterstützung von Übersetzungstabellen&lt;br /&gt;
* http://wiki.micasaverde.com/index.php/ZWave_Protocol_Version&lt;br /&gt;
* Suche nach sdkids.xml in einer Suchmaschine&lt;br /&gt;
kann aus der Protokoll-Version das genutzte SDK festgestellt werden.&lt;br /&gt;
&lt;br /&gt;
Beispielsweis entspricht das Reading eines Gerätes &amp;quot;Lib 6 &#039;&#039;&#039;Prot 2.64&#039;&#039;&#039; App 1.6&amp;quot; dem SDK 5.02 Patch 2 oder eines Controller &amp;quot;Z-Wave &#039;&#039;&#039;3.41&#039;&#039;&#039; STATIC_CONTROLLER&amp;quot; dem SDK 6.02.00.&lt;br /&gt;
 &lt;br /&gt;
HINWEIS: Bei der Vergabe der Protokoll-Version und zugehörigem SDK gibt es keine erkennbare Logik: Eine höhere Protokoll-Version steht nicht notwendig für eine höheres SDK.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann eine verschlüsselte Kommunikation unter Nutzung der Command Class SECURITY eingerichtet werden? ===&lt;br /&gt;
{{Randnotiz|RNText=FHEM unterstützt derzeit ausschließlich SECURITY 1 und nicht das mit dem SDK 6.7 neu eingeführte SECURITY 2 (S2). Soweit bekannt, sind S2-Geräte rückwärtskompatibel zu SECURITY 1.}}&lt;br /&gt;
Die verschlüsselte Kommunikation zwischen Controller und Endgerät setzt eine secure-Inklusion voraus. Bereits mit der Inklusion wird entschieden, ob die Kommunikation von Controller und Endgerät dauerhaft verschlüsselt oder unverschlüsselt erfolgt. Ist ein Gerät bereits normal inkludiert und entscheidet man sich nachträglich für eine verschlüsselte Kommunikation, so ist das nur möglich, indem das Gerät exkludiert und dann wieder secure inkludiert wird.&lt;br /&gt;
&lt;br /&gt;
Ob die Verschlüsselung bei einem Gerät mit Unterstützung der Command Class SECURITY genutzt werden soll, sollte genau überlegt werden. Die Verschlüsselung führt zu einem deutlich größeren Funkverkehr zur Ausführung eines Befehls und teilweise auch zu spürbaren Latenzen.&lt;br /&gt;
&lt;br /&gt;
Vorarbeiten:&lt;br /&gt;
* Das Perl-Modul Crypt-Rijndael muss installiert sein.&lt;br /&gt;
* Das Attribut &amp;lt;code&amp;gt;networkKey&amp;lt;/code&amp;gt; muss mit einem 32-Zeichen langen Hexzahl beim ZWDongle angelegt werden. Dieser Schlüssel sollte nicht veröffentlicht werden und auch zusätzlich separat (bspw. auf Papier) festgehalten werden. Bei Verlust des Attributes und Schlüssels ist eine Kommunikation nur nach erneuter Inklusion möglich.&lt;br /&gt;
&lt;br /&gt;
Ablauf der secure-Inklusion:&lt;br /&gt;
* Controller in den Modus zur secure-Inklusion schalten:&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode onSec&amp;lt;/code&amp;gt; für die Standard-secure-Inklusion&lt;br /&gt;
: oder alternativ&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode onNwSec&amp;lt;/code&amp;gt; für die Nework-Wide-secure-Inklusion&lt;br /&gt;
* Gerät gemäß Handbuch in den Modus zur secure-Inklusion bringen (teilweise ist jeweils für secure- und normale Inklusion ein anderes Vorgehen notwendig!)&lt;br /&gt;
* Das Gerät sollte jetzt automatisch erkannt und das FHEM-Device durch &amp;lt;code&amp;gt;autocreate&amp;lt;/code&amp;gt; angelegt werden. Die secure-inkludierten Geräte haben ein zusätzliches Attribut &amp;lt;code&amp;gt;secure_classes&amp;lt;/code&amp;gt; in dem die Command Classes deren Kommunikation verschlüsselt abläuft aufgelistet sind. Nicht in diesem Attribut, aber in &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; aufgeführte Command Classes wickeln die Kommunikation weiterhin unverschlüsslt ab.&lt;br /&gt;
* Inklusionsmodus des Controllers ausschalten:&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addnode off&amp;lt;/code&amp;gt;&lt;br /&gt;
* Das Vorgehen in FHEM unterscheidet sich von nun an nicht von normal (unverschlüsselt) inkludierten Geräten. Die Verschlüsselung läuft für den Anwender transparent ab. Darum anschließend [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] vornehmen.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man ohne Exklusion Nodes des Controllers löschen? ===&lt;br /&gt;
HINWEIS: Geräte sollten grundsätzlich immer über eine Exklusion aus der Nodelist des Controllers gelöscht werden. Das nachfolgend geschilderte Vorgehen ist nur in Sonderfällen (bspw. Gerätedefekt, gebraucht gekauftes Gateway) anzuwenden.&lt;br /&gt;
&lt;br /&gt;
Nicht mehr zu erreichende/reagierende Nodes (Geräte) können manuell mit dem Befehl &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; gelöscht werden. Dazu muss sich der betroffene Node auf der FailedNodeList des Controllers befinden. Auf die FailedNodeList kommen netzbetriebene Geräte automatisch, wenn sie vom Controller nicht mehr per Funk erreicht werden. Batteriebetriebene Geräte müssen manuell auf die FailedNodelist gesetzt werden, da der Controller nicht feststellen kann, ob sie nur langfristig &amp;quot;schlafen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; löscht nur Nodes auf der FailedNodeList, die erst vor Kurzem nicht erreicht werden konnten. Darum muss sowohl das manuelle Verschieben von batteriebetriebenen als auch das Nicht-Erreichen der netzbetriebenen Geräte erst Kurz vor Aufruf des &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt;-Befehls erfolgt sein. &lt;br /&gt;
&lt;br /&gt;
Vorgehensweise für den Node &amp;lt;NodeId&amp;gt;:&lt;br /&gt;
# An den betroffenen Node eine Telegramm mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; sendNIF &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; verschicken, um ihn auf FailedNodeList zu verschieben bzw. Zeitstempel zu aktualisieren.&lt;br /&gt;
# Abfragen, ob der Node auf der FailedNodeList steht: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; isFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Wenn der Rückgabewert der Abfrage &amp;quot;yes&amp;quot; ist, steht der Node korrekt auf der FailedNodeList und kann mit &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; gelöscht werden.&lt;br /&gt;
# Befehl zum Löschen des Nodes absetzen: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; removeFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Der Befehl testet vor dem Löschen noch einmal, dass der Node nicht erreicht werden kann und entfernt erst dann den Node.&lt;br /&gt;
# Prüfen, der Ergebnisse des &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt;-Befehls im Log oder [[Event monitor]]. Die verschiedenen Ergebnisse werden durch die in der {{Link2CmdRef}} dokumentierten Events signalisiert. Tritt das Ergebnis &amp;quot;failedNodeRemoveProcessBusy&amp;quot; mehrfach hintereinander auf, muss das ZWDongle kurz stromlos gemacht werden.&lt;br /&gt;
# Prüfen, ob der Node nicht mehr auf der Nodelist des Controllers ist: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; nodeList&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siehe auch {{Link2Forum|Topic=32823|Message=292626}}&lt;br /&gt;
&lt;br /&gt;
=== Wie ist der einfachste Weg ein (defektes) Gerät durch ein gleiches Ersatzgerät auszutauschen? ===&lt;br /&gt;
Tauscht man ein defektes Gerät durch ein gleiches Ersatzgerät und inkludiert das Ersatzgerät per &amp;lt;code&amp;gt;addNode&amp;lt;/code&amp;gt;, so erhält das Ersatzgerät eine neue NodeId. Soll das Ersatzgerät die gleiche NodeId wie das alte Gerät erhalten, so muss statt &amp;lt;code&amp;gt;addNode&amp;lt;/code&amp;gt; der Befehl &amp;lt;code&amp;gt;replaceFailedNode&amp;lt;/code&amp;gt; zur Inklusion des Ersatzgerätes (=gleiches Modell) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Vorgehensweise für den Node &amp;lt;NodeId&amp;gt;:&lt;br /&gt;
# sofern das alte Gerät noch ansprechbar ist, die Konfiguration und Assoziationen abfragen, damit man die Werte im Ersatzgerät einfach wieder setzen kann:&lt;br /&gt;
## &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;device&amp;gt; configAll&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;device&amp;gt; associationAll&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# defektes Gerät aus- und neues einbauen&lt;br /&gt;
# Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; sendNIF &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; absetzen, damit das Dongle die NodeId auf die FailedNodeList setzt.&lt;br /&gt;
# Abfragen, ob der Node auf der FailedNodeList steht: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; isFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Wenn der Rückgabewert der Abfrage &amp;quot;yes&amp;quot; ist, steht der Node korrekt auf der FailedNodeList und das Ersatzgerät kann mit &amp;lt;code&amp;gt;replaceFailedNode&amp;lt;/code&amp;gt; inkludiert werden.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;zwdongle&amp;gt; replaceFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; für die NodeId des defekten Gerätes aufrufen und das Ersatzgerät in den Inklusionsmodus bringen&lt;br /&gt;
# Korrekte Inklusion prüfen und beim alten Aktor ausgelesene Werte beim neuen Aktor wieder setzen.&lt;br /&gt;
&lt;br /&gt;
=== Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? ===&lt;br /&gt;
Ja, das ist richtig.&lt;br /&gt;
&lt;br /&gt;
Bei der Inklusion über addNode vergibt der Controller die höchste bisher noch nie verwendete NodeID. Durch Exklusion oder removeFailedNode frei gewordene NodeIDs werden hierbei nicht erneut vergeben. Nur bei einem Controller-Reset, der mit einem unwiederbringlichen Verlust sämtlicher Informationen des ZWave-Netzes und Neuvergabe der HomeID verbunden ist, beginnt die Zählung wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
=== Welche Funktion haben die XML-Config-Dateien in FHEM? ===&lt;br /&gt;
In den XML-Config-Dateien sind Informationen zu einzelnen ZWave-Geräten enthalten, die der Erleichterung der Gerätenutzung und -einbindung in FHEM dienen. Dies sind unter anderem Erläuterungen zu den Parameternummer/-werten, Assoziationsgruppen und Besonderheiten eines Gerätes. Ob eine zum Zwave-Gerät passende XML-Config Datei existiert, wird im Rahmen der Inklusion oder durch manuellen Aufruf des Befehls &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; ermittelt. Wird eine passende XML-Config-Datei gefunden, wird sie automatisch in FHEM eingebunden. Das Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; enthält dann den zugehörigen XML-Config-Dateinamen. Stehen keine XML-Config-Informationen bereit, enthält das Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; den Wert &amp;quot;unknown&amp;quot;. Die Funktionsfähigkeit von FHEM mit ZWave-Geräten ist auch bei fehlender XML-Config-Datei gegeben. Es gibt dadurch keine funktionalen Einschränkungen in FHEM; es entfallen &amp;quot;nur&amp;quot; Erleichterungen und es sind unter Umständen mehr manuelle Schritte bei der Gerätenutzung/-einbindung notwendig.&lt;br /&gt;
&lt;br /&gt;
Erleichterungen bei vorhandener XML-Config für ein ZWave-Gerät:&lt;br /&gt;
* Bei der Inklusion:&lt;br /&gt;
** Assoziationen mit dem Controller bei von Gruppe 1 abweichenender Assoziationsgruppe werden automatisch gesetzt&lt;br /&gt;
** vom NIF nicht gemeldete, aber vom Gerät unterstützte Classes, werden im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; ergänzt&lt;br /&gt;
* Bei der Konfiguration:&lt;br /&gt;
** die Parameternummern stehen als configXY-Befehle zur Verfügung und werden mit Hilfetexten -auch zu den Parameterwerten- in der Detailansicht des FHEM-Device erläutert.&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bitte auch bei vorhandener XML-Config-Datei nach der Inklusion und bei der Konfiguration die Assoziationen und Parameter prüfen. Von den eigenen Vorstellungen abweichende Vorgaben oder gar Fehler in der Config-Datei können nie ausgeschlossen werden. Fehler bitte im Forum ({{Link2Forum|Area=ZWave}}) melden.&lt;br /&gt;
&lt;br /&gt;
=== Wie können fehlende XML-Config-Informationen für mein ZWave-Gerät in FHEM eingebunden werden? ===&lt;br /&gt;
Die XML-Config-Informationen von FHEM sind in folgenden Dateien im Ordner fhem/FHEM/lib gespeichert:&lt;br /&gt;
* openzwave_manufacturer_specific.xml&lt;br /&gt;
* openzwave_deviceconfig.xml.gz&lt;br /&gt;
* fhem_zwave_deviceconfig.xml.gz&lt;br /&gt;
Die in den Dateien enthaltenen Informationen beruhen in großen Teilen auf Daten von openzwave und übernehmen daher das openzwave-Datenformat, das unter https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices näher beschrieben wird. &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;openzwave_manufacturer_specific.xml&amp;quot; enthält die eindeutige Kennung des ZWave-Gerätes, die in FHEM nach Aufruf des Befehls &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; im Reading &amp;lt;code&amp;gt;modelId&amp;lt;/code&amp;gt; des FHEM-ZWave-Devices steht. Weiterhin wird der Klartextname dieses Gerätes, der im Reading &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; angezeigt werden soll, festgelegt. Zudem wird der Dateiname der eigentlichen XML-Config-Datei für das ZWave-Gerät angegeben, der später informativ im Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; steht.&lt;br /&gt;
&lt;br /&gt;
Die Dateien &amp;quot;openzwave_deviceconfig.xml.gz&amp;quot; und &amp;quot;fhem_zwave_deviceconfig.xml.gz&amp;quot; enthalten in komprimierter Form die eigentlichen XML-Config-Dateien für die ZWave-Geräte. FHEM durchsucht beide Dateien nach der passenden XML-Config-Datei. Ist in beiden Dateien eine XML-Config für ein Gerät vorhanden, so werden die XML-Daten aus der &amp;quot;fhem_zwave_deviceconfig.xml.gz&amp;quot; bevorzugt.&lt;br /&gt;
&lt;br /&gt;
Falls ein ZWave-Gerät von FHEM nicht erkannt wird, bitte auf folgenden Seiten nachschauen, ob es schon XML-Config-Dateien gibt, die nur nicht in FHEM eingebunden sind:&lt;br /&gt;
# https://github.com/OpenZWave/open-zwave/tree/master/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner&lt;br /&gt;
# https://github.com/jeedom/plugin-openzwave/tree/master/ressources/openzwave/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner &lt;br /&gt;
# http://www.cd-jackson.com/index.php/zwave/zwave-device-database&lt;br /&gt;
Sofern auf den genannten Seiten Daten vorhanden sind, postet eine Aktualisierungsbitte mit genauem Link zur entsprechenden Seite im Forum ({{Link2Forum|Area=ZWave}}).&lt;br /&gt;
&lt;br /&gt;
Gibt es auf keiner der Seiten Infos zu dem Gerät, dann entsprechend https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices die XML-Config-Datei für das Gerät erstellen und unkomprimiert zusammen mit der zu ergänzenden Info für die Datei &amp;quot;openzwave_manufacturer_specific.xml&amp;quot; im Forum ({{Link2Forum|Area=ZWave}}) zur Verfügung stellen.&lt;br /&gt;
&lt;br /&gt;
=== Wie führt man eine Komplett-Sicherung der ZWave-Installation durch? ===&lt;br /&gt;
Zu einer Komplett-Sicherung der ZWave-Konfiguration gehören:&lt;br /&gt;
&lt;br /&gt;
1. [[Backup]] der FHEM-Installation &lt;br /&gt;
::&#039;&#039;&#039;und&#039;&#039;&#039;&lt;br /&gt;
2. Backup des NVRAM des Controllers&lt;br /&gt;
&lt;br /&gt;
Es genügt nicht nur die FHEM-Installation/Konfiguration zu sichern, da der Controller im NVRAM Daten über HomeID, NodeIDs usw. speichert, die in der FHEM-Installation nicht enthalten sind und auch nicht durch FHEM rekonstruierbar sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
zu 2.) Backup des NVRAM des Controllers&lt;br /&gt;
&lt;br /&gt;
Einige Controllerhersteller bieten eine eigenständige Software zum Backup/Restore an (siehe Hinweise zu den Controllern unter [[#Autocreate_des_Gateways]]).&lt;br /&gt;
&lt;br /&gt;
FHEM kann mit den ZWDongle-Befehlen &amp;lt;code&amp;gt;backupCreate&amp;lt;/code&amp;gt; das NVRAM der Controller sichern und mit &amp;lt;code&amp;gt;backupRestore&amp;lt;/code&amp;gt; zurückschreiben. Da das Speicherlayout des NVRAM unter anderem von Controller-Hersteller, SDK und Firmwareversion abhängig sein kann, sollte man die Sicherung und Wiederherstellung des eigenen Controllers (auf eigenes Risiko) testen und sinnvollerweise einen gleichen Ersatzcontroller wie den Controller des Produktivsystem besitzen. Erfolgreiche Sicherung/Wiederherstellung wurde im Forum von den ZWavePlus-Controllern UZB1 (256k), Razberry (256k), Vision ZU 1401-5 EU (128k)und AEOTEC Z-Stick Gen5 (256k) berichtet.&lt;br /&gt;
(Weitergehende Infos - neben der {{Link2CmdRef}} - im Forum: {{Link2Forum|Topic=52364}}, {{Link2Forum|Topic=52914}}, {{Link2Forum|Topic=53023}})&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich zur Fortentwicklung der ZWave-Module beitragen? ===&lt;br /&gt;
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten ZWave-Geräten im Forum mitteilen&lt;br /&gt;
* Codeschnipsel und Ideen im Forum posten&lt;br /&gt;
* Fehler und Probleme im Forum melden&lt;br /&gt;
* [[How_to_write_a_patch|Patches]] für 00_ZWDongle.pm und 10_ZWave.pm erstellen&lt;br /&gt;
* Wiki: Ergänzungen und Korrekturen vornehmen; neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen&lt;br /&gt;
&lt;br /&gt;
=== Wie wird ein fehlendes Kernelmodul (Fritzbox) eingebunden? ===&lt;br /&gt;
Auf der Fritzbox (und evtl. auch anderen Systemen) muss sichergestellt werden, dass das Kernelmodul für das Gateway geladen wird. Ansonsten scheitert die Einbindung des Gateways in FHEM.&lt;br /&gt;
&lt;br /&gt;
Für den Aeon Labs Z-Stick muss beispielsweise auf der Fritzbox das Kernelmodul &amp;lt;code&amp;gt;cp2101.ko&amp;lt;/code&amp;gt; geladen werden.&lt;br /&gt;
Diese Datei ist bei einer [[FHEM und FritzBox 7390]] Installation über das Image von [http://www.fhem.de fhem.de] bereits enthalten.&lt;br /&gt;
Um den Aeon Labs Z-Stick zu verwenden, muss dieses Kernelmodul vor oder beim Starten des FHEM-Servers geladen sein. Dies erreicht man durch einen Eintrag in der Datei &amp;lt;code&amp;gt;startfhem&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Zeile kann direkt unterhalb der modprobe Anweisungen eingefügt werden.&lt;br /&gt;
 insmod $home/lib/cp2101.ko&lt;br /&gt;
&lt;br /&gt;
Nach einem FHEM-Neustart sollte das Gateway (der USB Stick) nun erkannt werden.&lt;br /&gt;
&lt;br /&gt;
=== Wie ist der Aufbau der Z-Wave Messages bzw. wie finde ich bei einem Sendefehler die NodeId des Empfängers heraus? ===&lt;br /&gt;
&lt;br /&gt;
Es könnte natürlich hin und wieder vorkommen, dass man im FHEM-Log folgende Fehler vorfindet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWDongle_ProcessSendStack: no ACK, resending message 010a00130603320110259277&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall gab es aus irgendeinem Grund einmalig das Problem, dass der Empfang einer Nachricht vom Empfänger nicht bestätigt wurde. &lt;br /&gt;
Will man dem auf die Spur kommen, so wäre es natürlich von Vorteil, die NodeId des Empfängers herauszufinden. Also muss man sich die Message näher anschauen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;010a00130603320110259277&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 01: data to controller&lt;br /&gt;
* 0a: length of msg&lt;br /&gt;
* 00: ?&lt;br /&gt;
* 13: ZW_SEND_DATA&lt;br /&gt;
* 06: NodeId&lt;br /&gt;
 &lt;br /&gt;
* 03: length of msg&lt;br /&gt;
* 32: Command Class 32 (METER, siehe %zwave_class in 10_ZWave.pm)&lt;br /&gt;
* 01: METER get scale command&lt;br /&gt;
* 10: scale parameter&lt;br /&gt;
 &lt;br /&gt;
* 25: send flags, explorer frames on&lt;br /&gt;
* 92: callbackId (um ACK zu identifizieren)&lt;br /&gt;
* 77: checkSum&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat der Z-Wave-Controller 01 eine Nachricht an die NodeId 06 geschickt, welche vom Node nicht bestätigt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Z-Wave Components|!]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Z-Wave&amp;diff=29804</id>
		<title>Z-Wave</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Z-Wave&amp;diff=29804"/>
		<updated>2019-03-10T11:44:44Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;{{Infobox Modul&lt;br /&gt;
|Name=ZWDongle&lt;br /&gt;
|ModPurpose=Einbindung Z-Wave-Gateways&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=ZWDongle&lt;br /&gt;
|ModForumArea=ZWave&lt;br /&gt;
|ModTechName=00_ZWDongle.pm &lt;br /&gt;
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=ZWave&lt;br /&gt;
|ModPurpose=Ansteuerung Z-Wave-Geräte über ZWDongle&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=ZWave&lt;br /&gt;
|ModForumArea=ZWave&lt;br /&gt;
|ModTechName=10_ZWave.pm &lt;br /&gt;
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Z-Wave]] ist ein drahtloser Kommunikations-Standard im 868 Mhz-Band (Europa), der von der Firma Sigma Designs und der Z-Wave Alliance, einen Zusammenschluss von mehreren Hundert Herstellern, für die Heimautomatisierung entwickelt wurde. Es existieren mehr als [http://products.z-wavealliance.org 1400 zertifizierte Produkte] verschiedenster Hersteller, die innerhalb eines gemeinsamen Z-Wave-Netzes einsetzbar sind. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia])&lt;br /&gt;
&lt;br /&gt;
Auf dieser Seite werden Grundlagen eines &#039;&#039;&#039;Z-Wave&#039;&#039;&#039; Systems und dessen Einrichtung in FHEM beschrieben.&lt;br /&gt;
== Z-Wave ==&lt;br /&gt;
=== Nodes - Controller und Slaves ===&lt;br /&gt;
Ein Z-Wave-Netz besteht aus mindestens 2 Geräten, den sogenannten &#039;&#039;&#039;Nodes&#039;&#039;&#039; (Knoten). Es setzt sich zusammen aus dem steuernden &#039;&#039;&#039;Controller&#039;&#039;&#039; (Zentrale) und min. 1 bis max. 231 gesteuerten &#039;&#039;&#039;Slaves&#039;&#039;&#039; (Geräten). &lt;br /&gt;
&lt;br /&gt;
=== Home-Id und Node-ID ===&lt;br /&gt;
Innerhalb eines Z-Wave-Netzes gibt es zu 2 Identifikationsnummern zur Kennzeichnung der Netzstruktur:&lt;br /&gt;
# &#039;&#039;&#039;Home-ID:&#039;&#039;&#039; Gemeinsame Identifikationsnummer aller Nodes in einem Netz zur Abgrenzung gegenüber anderen Netzen. Nur Nodes mit der gleichen Home-ID können miteinander kommunizieren.&lt;br /&gt;
# &#039;&#039;&#039;Node-ID:&#039;&#039;&#039; Identifikationsnummer zur eindeutigen Kennzeichnung von jedem Node im Netz. &lt;br /&gt;
&lt;br /&gt;
Die Home-ID ist im Controller (fest) hinterlegt und seine Node-ID ist typischerweise 1. Die Slaves haben zunächst keine Home-ID und Node-ID. Bei der &#039;&#039;&#039;Inklusion&#039;&#039;&#039; (Aufnahme) der Slaves in das Z-Wave-Netz überträgt der Controller seine Home-ID auf die Slaves und weist den Slaves eine eindeutige Node-ID im Netz zu, mit der Sie direkt angesprochen werden. &lt;br /&gt;
&lt;br /&gt;
Besondere Node-ID ist die 255. Eine Nachricht an die Node-ID 255 kann von allen Z-Wave-Nodes ausgewertet werden (Broadcast).&lt;br /&gt;
&lt;br /&gt;
=== Primär- und Sekundärcontroller ===&lt;br /&gt;
Der Controller, der durch Zuteilung seiner Home-ID auf die Slaves, das Netz aufbaut, ist der &#039;&#039;&#039;Primärcontroller&#039;&#039;&#039;. Grundsätzlich können in einem Netz mehrere Controller existieren, aber immer nur ein Primärcontroller. Weitere in das Netz eingebundene Controller werden zum &#039;&#039;&#039;Sekundärcontroller&#039;&#039;&#039;. Ohne besondere Maßnahmen kann nur der Primärcontroller die Inklusion (Einbindung) der Nodes in das Netz durchführen. Hingegen können sowohl Primär- als auch Sekundärcontroller die &#039;&#039;&#039;Exklusion&#039;&#039;&#039; (Ausschluss) eines Nodes aus dem Netz vornehmen.&lt;br /&gt;
&lt;br /&gt;
Der Controller speichert intern diverse Informationen (Home-ID, Node-IDs,..) über das ZWave-Netz. Hierdurch kann unter anderem die Haussteuerungssoftware bei einem PC-Controller relativ unkompliziert gewechselt werden, da die wesentlichen ZWave-Netzinformationen vom Controller selbst verwaltet und gespeichert werden. Andererseits muß bei einem Controllerdefekt das gesamte Netz grundsätzlich neu aufgebaut werden, wenn kein Backup der internen Controllerdaten vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledge ===&lt;br /&gt;
Im Z-Wave-Netz werden Nachrichten vom Empänger-Node an den Sender-Node rückbestätigt (Acknowledge). Bei ausbleibendem Acknowledge wiederholt der Sender-Node die Nachricht automatisch auf Protokollebene bis zu 2 mal. Hierdurch wird eine höhere Betriebssicherheit des Z-Wave-Netzes erreicht. Bei Broadcast-Nachrichten an die Node-ID 255 findet keine Rückbestätigung statt.&lt;br /&gt;
&lt;br /&gt;
=== Vermaschtes Netzwerk mit Routing ===&lt;br /&gt;
Z-Wave nutzt als Netzwerktopologie ein &#039;&#039;&#039;mesh network&#039;&#039;&#039; (vermaschtes Netzwerk), d. h. jeder Node ist mit einem oder mehreren anderen Nodes verbunden. Das hat den Vorteil, dass eine Nachricht zwischen zwei Nodes übermittelt werden kann, selbst wenn diese nicht direkt miteinander kommunizieren können, z. B. weil sie zu weit voneinander entfernt sind. In diesem Fall wird die Funk-Nachricht über einen oder mehrere „Zwischen-Nodes“ übertragen; dieser Vorgang wird &#039;&#039;&#039;Routing&#039;&#039;&#039; genannt. Nur netzgespeiste Z-Wave-Geräte sind Router. Batteriebetriebe Z-Wave-Geräte sind grundsätzlich keine Router und dienen somit auch nicht zur Reichweitenerhöhung. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia]) Einzelne Geräte, die alternativ per Batterie oder USB-Anschluss betrieben werden können, werden bei USB-Anschluss automatisch ({{Link2Forum|Topic=40393|Message=328080}}) oder durch Konfigurationsänderungen ({{Link2Forum|Topic=40393|Message=327331}}) zu Routern.&lt;br /&gt;
&lt;br /&gt;
Informationen über das optimale Routing werden bei der Inklusion der Nodes in einer Routing-Tabelle des Primärcontrollers gespeichert. Dies geschieht durch Abfrage des Nodes, welche weiteren Nodes er erreichen kann. Durch örtliche Änderung oder Defekte von Nodes können die in der Routing-Tabelle gespeicherten Informationen fehlerhaft bzw. suboptimal werden. Dies kann sich in Funkkommunikationsproblemen im Netzwerk äußern. Hier kann ein per Software manuell angeforderter Neuaufbau der Routing-Tabelle gegebenenfalls Abhilfe schaffen. Bei Geräten und Controllern mit aktuellen Firmware-Versionen (SDK 4.5x und SDK 6.xx oder größer, aber &#039;&#039;nicht&#039;&#039; SDK 5.x) und Unterstützung von Explorer Frames kann sich die Routing-Tabelle unter bestimmten Bedingungen auch automatisch aktualisieren (&amp;quot;Selbstheilung&amp;quot;)[https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames].&lt;br /&gt;
&lt;br /&gt;
=== Command Classes ===&lt;br /&gt;
Die Steuerung und Kommunikation der Nodes erfolgt über Befehle die funktionsbezogen in verschiedene &#039;&#039;&#039;Command Classes&#039;&#039;&#039; (Kommandoklassen) zusammengefasst sind.&lt;br /&gt;
&lt;br /&gt;
Alle Z-Wave-Geräte haben als gemeinsame kleinste Übereinstimmung die &#039;&#039;&#039;Class Basic&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Z-Wave-Geräte haben im Originalzustand eine bestimmte arbeitsfähige Grund-Konfiguration. Anpassbar an individuelle Bedürfnisse ist die Konfiguration über die &#039;&#039;&#039;Class Configuration&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Durch eine Assoziation wird definiert, welche Geräte miteinander direkt -ohne Umweg über den Controller- kommunizieren können. Auch bei Ausfall des Controllers können diese Geräte ihre gemeinsame Funkton ausüben. Zudem dienen Assoziationen der Geschwindigkeitssteigerung und Funklastreduzierung innerhalb des Netzes. Angelegt werden Assoziationen über die &#039;&#039;&#039;Class Association&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Dies sind nur die allerwichtigsten Command Classes. Weitere Command Classes sind den Handbüchern zu entnehmen. Zudem enthält die Wiki-Seite [[Z-Wave Command Classes]] weitergehende Informationen.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise zur Z-Wave-Geräteauswahl ===&lt;br /&gt;
Aufgrund der vielen Z-Wave-Gerätehersteller mit jeweils eigenem Z-Wave-Gerätesortiment existiert eine große Produktauswahl. Jedoch gibt es auch große Unterschiede hinsichtlich Produkteigenschaften, Pflege der Produkte, Häufigkeit der Aktualisierung der Produktpalette und so weiter. Schwierigkeiten bereitet insbesondere, dass neben den aktuellesten Chipsätzen und SDKs auch die älteren Chipsätze und SDKs weiterhin in Produkten im Handel verfügbar sind. Neuere Chipsätze und aktuelle SDKs bieten gerade bei der Netzwerkstabilität (Explorer Frames, Reichweite usw.) Vorteile zu älteren Chipsätzen und SDKs. Beispielsweise beherrschen nur Geräte mit SDK 4.5x und 6.x oder neuer die für automatische Routenkorrekturen wichtigen Explorer Frames. Das ältere SDK 5.0, das verwirrenderweise auch noch eine höhere Versionsnummer als das neuere SDK 4.5 besitzt, beherrscht unter anderem keine Explorer Frames. Details hierzu enthält das [https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames wiki.zwaveeurope.com]. Aktuellstes SDK ist Stand 10/2017 das SDK 6.7x, das in ZWave Plus - zertifizierten Produkten zum Einsatz kommt.&lt;br /&gt;
&lt;br /&gt;
Gerade Einsteiger beachten die Unterschiede bei den Chipsätze/SDKs aus Unkenntnis manchmal nicht und ärgern sich im Nachhinein über Probleme bei der Netzwerkstabilität und Reichweite. Darum nachfolgend allgemeine, aber sehr einfache Empfehlungen zur Geräteauswahl. Selbstverständlich wird hier nicht von anderen Produkten abgeraten, wenn man die Unterschiede kennt und Vorteile bei deren Produkteigenschaften sieht. Zudem kann man (leider) schlechtere Produkteigenschaften bei Geräten mit aktuelleren Chipsätzen/SDKs nie ausschließen.&lt;br /&gt;
&lt;br /&gt;
Gateway&lt;br /&gt;
# [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus-Zertifizierung]. Diese ist mittlerweile bei nahezu allen erhältlichen Gateways gegebenen.&lt;br /&gt;
&lt;br /&gt;
Endgeräte&lt;br /&gt;
# Z-Wave Plus-Zertifizierung (aktuellste Technik, höhere theoretische Reichweite, SDK 6.5x oder höher) oder&lt;br /&gt;
# zumindest Explorer Frames-Unterstützung (SDK 4.5x und 6.0x) oder&lt;br /&gt;
# zuletzt -bei Kenntnis der Besonderheiten und Auswirkungen- Produkte ohne Explorer Frames (SDK 5.0x)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kurz&#039;&#039;&#039;: Produkte mit Z-Wave Plus-Zertifizierung einsetzen.&lt;br /&gt;
&lt;br /&gt;
Bitte unbedingt beachten, dass Z-Wave Plus-Vorteile bei einem Mischbetrieb mit älteren (ohne Plus) Geräten teilweise verloren gehen. Zum negativen Effekt des Einsatzes eines älteren, aber weiterhin erhältlichen Z-Wave-Repeaters mit aktuellen Z-Wave Plus-Geräten siehe beispielsweise den Hinweis in diesem {{Link2Forum|Topic=42591|Message=350066}}.&lt;br /&gt;
&lt;br /&gt;
Bei Fragen zu bestimmten Geräten bitte -nach Durchsicht der Hinweise hier im Wiki- im Forum suchen oder anschließend nachfragen.&lt;br /&gt;
&lt;br /&gt;
== Z-Wave in FHEM ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ausführen und anschließend &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt; durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung von Z-Wave in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach möglich. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_FHEM|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht speziell Z-Wave behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend und auf den [[:Kategorie:Z-Wave Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der Konfiguration sollte -zur Verhinderung von Fehlern- nach Möglichkeit immer über das &amp;quot;[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]&amp;quot; und die &amp;quot;[[Konfiguration#Objektdetails|Objektdetails]]&amp;quot; erfolgen.&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Die Bedienungsanleitungen (Handbücher) sind zwingende Voraussetzung zur korrekten Einbindung und Konfiguration von Z-Wave-Geräten in FHEM. Sie müssen daher vorliegen. &lt;br /&gt;
Den ZWave-Geräten liegen teilweise nur gekürzte, gedruckte Fassungen der Handbücher bei (beispielsweise Devolo, AEOTEC). Man sollte bei allen Produkten auf folgenden Seiten nach eventuellen ausführlicheren Handbüchern suchen:&lt;br /&gt;
* Herstellerseite des ZWave-Gerätes&lt;br /&gt;
* http://www.zwave.de/handbuecher/ (deutsch)&lt;br /&gt;
* http://products.z-wavealliance.org (englisch)&lt;br /&gt;
Insbesondere auf http://products.z-wavealliance.org, der Datenbank der ZWave-zertifizierten Produkte, sind regelmäßig ausführliche Informationen zu den Geräten zu finden.&lt;br /&gt;
&lt;br /&gt;
== Definition des Gateways / Controllers ==&lt;br /&gt;
{{Randnotiz|RNText=&#039;&#039;&#039;Tester für ZWave@culfw gesucht!&#039;&#039;&#039;&lt;br /&gt;
Z-Wave-Controllerfunktionen werden derzeit in die Firmware [http://www.culfw.de culfw] für den [[CUL]] implementiert. Weitere Informationen im [[ZWCUL]] - Artikel.}}&lt;br /&gt;
=== Autocreate des Gateways ===&lt;br /&gt;
FHEM kann mit einem Funkgateway Z-Wave-Funk empfangen und senden. Z-Wave-Gateways (Controller) existieren von verschiedenen Herstellern. &lt;br /&gt;
&lt;br /&gt;
Folgende Gateways wurden unter anderem bereits erfolgreich mit FHEM eingesetzt:&lt;br /&gt;
* AEON Labs Z-Stick S2 (SDK 5.x; [https://aeotec.freshdesk.com/support/solutions/articles/6000091809-z-stick-s2-v3-08-firmware-update Firmwareupdate auf 3.08 aus 2016])&lt;br /&gt;
* Aeotec Z-Stick Gen5 (Z-Wave Plus; SDK 6.5; [https://aeotec.freshdesk.com/support/solutions/articles/6000108806-z-stick-gen5-backup-software Backup-Software)] ({{Link2Forum|Topic=47000}})&lt;br /&gt;
* Goodway WD6001 (SDK 5.03 {{Link2Forum|Topic=40594|Message=332235}})&lt;br /&gt;
* Vision Z-Wave USB Stick ZU 1401 EU (SDK 6.0x)&lt;br /&gt;
* Vision Z-Wave USB Stick ZU 1401-5 EU (Z-Wave Plus; SDK 6.5x)&lt;br /&gt;
* Z-Wave.Me Z-StickC ({{Link2Forum|Topic=29930|Message=226530}})&lt;br /&gt;
* Z-Wave.Me USB Stick ZME_UZB1 (SDK 6.5x;  Z-Wave Plus; [http://razberry.z-wave.me/z-way-server/ Firmwareupdate und Backup über z-way])&lt;br /&gt;
* Z-Wave.Me Razberry in Verbindung mit Raspberry Pi (1. Generation: Z-Wave, 2. Generation: Gen5-Razberry mit Z-Wave Plus[http://forum.z-wave.me/viewtopic.php?f=3419&amp;amp;t=21327#p55404]) &lt;br /&gt;
** Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das Razberry-Modul funktionsfähig ist: {{Link2Forum|Topic=78248|Message=702044}})&lt;br /&gt;
** Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]&lt;br /&gt;
&lt;br /&gt;
Folgende Gateways sind &#039;&#039;&#039;nicht&#039;&#039;&#039; mit FHEM einsetzbar:&lt;br /&gt;
* Merten Funk-USB-Datenschnittstelle CONNECT&lt;br /&gt;
&lt;br /&gt;
Sollte das eigene Gateway hier nicht aufgeführt sein, ist aufgrund der Standardisierung dennoch die Chance für eine erfolgreiche Einbindung des Gateways in FHEM vorhanden. Bitte dies hier oder im Forum entsprechend vermerken.&lt;br /&gt;
&lt;br /&gt;
Das Z-Wave-Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim nächsten FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; zumeist automatisch erkannt und das zugehörige FHEM-Device nach dem Namensschema &amp;lt;code&amp;gt;ZWDongle_&amp;lt;[https://forum.fhem.de/index.php/topic,92885.msg854533.html#msg854533 Anhang]&amp;gt;&amp;lt;/code&amp;gt; angelegt. Ein manuelles Anlegen des ZWDongle-Moduls oder Eingriffe in die Konfiguration sind unter Linux normalerweise nicht notwendig. &lt;br /&gt;
&lt;br /&gt;
Unter Windows ist ein manuelles Anlegen der Definition des ZWave-Gateways wegen fehlender Unterstützung des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; erforderlich (Beispiel für Z-Wave.Me USB Stick ZME_UZB1 unter Windows: &amp;lt;code&amp;gt;define ZWDongle_1 ZWDongle COM1@115200&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Das FHEM-Gateway-Device ist nach der Definition in FHEM im Raum &amp;quot;Everything&amp;quot; zu finden.&lt;br /&gt;
&lt;br /&gt;
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:&lt;br /&gt;
&lt;br /&gt;
Aeon Labs Z-Stick an der Fritzbox: &lt;br /&gt;
 define ZWDongle_1 ZWDongle /dev/ttyUSB1@115200&lt;br /&gt;
&lt;br /&gt;
Vision Z-Wave USB Stick ZU 1401 EU am Raspberry Pi (Raspbian):&lt;br /&gt;
 define ZWDongle_1 ZWDongle /dev/ttyACM1@115200&lt;br /&gt;
&lt;br /&gt;
Insbesondere wenn am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt werden, empfiehlt es sich zur Erhöhung der Betriebsstabilität das Z-Wave-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] oder [[LinuxDeviceNaming|uDev-Regeln]] anzusprechen.&lt;br /&gt;
&lt;br /&gt;
Bei einem statischen Controller wird die Einrichtung als SUC -sofern der Controller als solcher nicht bei Auslieferung eingerichtet ist- vor der ersten Inklusion von Geräten empfohlen.&lt;br /&gt;
&lt;br /&gt;
=== homeId und nodeList des Gateways ===&lt;br /&gt;
Zur manuellen Definition von Z-Wave Aktoren und Sensoren ist die &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; notwendig. Bei der hier bevorzugten Definition der Geräte durch autocreate ist die Kenntnis der &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; nicht zwingend. Jedoch sollte durch Abfrage der &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; direkt nach Einbindung des Zwave-Gateways dessen Funktionsfähigkeit getestet werden.&lt;br /&gt;
&lt;br /&gt;
Die &amp;lt;code&amp;gt;homeId&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;CtrlNodeId&amp;lt;/code&amp;gt; des Gateways wird mit folgendem Befehl ausgelesen (&amp;lt;ZWDongle&amp;gt; ist im folgenden durch den Namen des FHEM-Devices des eigenen Gateways zu ersetzen):&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; homeId&lt;br /&gt;
ergibt beispielsweise bei einem Gateway mit dem FHEM-Devicenamen ZWDongle_1:&lt;br /&gt;
 ZWDongle_1 homeId =&amp;gt; HomeId:e345c456 CtrlNodeId:01 &lt;br /&gt;
In diesem Beispiel ist die Home-Id des Gateways ZWDongle_1 e345c456 und das Gateway hat die Node-Id 1.&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Liste der Z-Wave Nodes, die bereits am Gateway registriert/inkludiert sind, wird mit dem folgendem Befehl ausgelesen:&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; nodeList&lt;br /&gt;
ergibt beispielsweise:&lt;br /&gt;
 ZWDongle_1 nodeList =&amp;gt; ZWDongle_1 UNKNOWN_2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition von Geräten / Slaves ==&lt;br /&gt;
=== Hinzufügen eines neuen Z-Wave Geräts / Inklusion ===&lt;br /&gt;
Zur Verfolgung von Inklusionsablauf und Meldungen des Controllers während der Inklusion sollte der [[Event monitor]] in einem 2. Browserfenster vor Aktivierung des Inklusionsmodus geöffnet werden.&lt;br /&gt;
&lt;br /&gt;
Das Z-Wave Gateway wird in den Standard-Modus zur Inklusion (zum Aufnehmen) neuer Geräte gesetzt:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; addNode on&lt;br /&gt;
Bei der Standard-Inklusion muss direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen.&lt;br /&gt;
&lt;br /&gt;
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt des obigen Befehls besser der Network-Wide-Modus für die Inklusion genutzt werden:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; addNode onNw&lt;br /&gt;
Bei der Network-Wide-Inklusion muss kein direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen. Es reicht, wenn das zu inkludierende Gerät über andere bereits inkludierte, netzgespeiste Geräte mit Explorer Frames-Unterstützung erreicht werden kann. Die Network-Wide-Inklusion ist zu bevorzugen, da die Z-Wave-Geräte regelmäßig an Ihren örtlichen Endpositionen inkludiert werden können. Dadurch werden bei der Inklusion direkt die korrekten Routen gespeichert. &lt;br /&gt;
&lt;br /&gt;
Nachdem das Gateway in den Inklusionmodus geschaltet wurde, muss das Gerät in den Inklusionsmodus (Aufnahmemodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. Typisch sind ein- oder dreimaliges Drücken einer Taste am Gerät oder beim Anlegen der Versorgungsspannung. Durch die Inklusion werden Home-ID und Node-ID im Gerät gespeichert. Zudem teilt das Gerät über ein spezielle Funknachricht (NIF=Node Information Frame) dem Controller seinen Gerätetyp und seine Geräteeigenschaften mit. Hierbei werden dem Controller auch die vom Gerät unterstützten Command Classes mitgeteilt. Aus diesen Informationen erzeugt FHEM automatisch durch autocreate das FHEM-Geräte-Device nach dem Namensschema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (an eigene Wünsche anpassbar mit {{Link2CmdRef|Anker=rename|Label=rename}}). Die vom Geräte unterstützen Command Classes, die die in FHEM verfügbaren Befehle bestimmen, werden automatisch im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; des FHEM-Geräte-Device gespeichert. Das Gerät ist damit grundlegend in FHEM definiert und im Raum &amp;quot;ZWave&amp;quot; zu finden. &lt;br /&gt;
&lt;br /&gt;
Nach der Inklusion schaltet FHEM den Inklusionsmodus des Z-Wave Gateway automatisch durch Absetzen des Befehls &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode off&amp;lt;/code&amp;gt; aus und zeigt eine Dialogbox mit dem Ergebnis der Inklusion:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;created ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Inklusion war erfolgreich und es wurde das bezeichnete FHEM-Device durch autocreate angelegt.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;addNode failed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Inklusion ist fehlgeschlagen&lt;br /&gt;
 &lt;br /&gt;
Eine erfolgreiche Inklusion ist zudem am Event &amp;quot;ZW_ADD_NODE_TO_NETWORK protocolDone&amp;quot; im Event monitor und natürlich der Anlage des entsprechenden FHEM-Devices durch autocreate zu erkennen.  Das Scheitern einer Inklusion führt typischerweise zur Ausgabe des Events &amp;quot;ZW_ADD_NODE_TO_NETWORK failed&amp;quot;. Häufigste Ursache sind Controllerprobleme, die sich oftmals durch kurzes Ein- und Ausstecken des Controllers, Neustart des Systems oder Ein- und Ausschalten des FHEM-Server-Computers beheben lassen.&lt;br /&gt;
&lt;br /&gt;
HINWEISE:&amp;lt;br /&amp;gt;&lt;br /&gt;
* Die Network-Wide-Inklusion kann nach derzeitiger Kenntnis auch bei Gateways und Geräten ohne Explorer Frames Unterstützung genutzt werden, da bei diesen Geräten grundsätzlich automatisch auf die Standard-Inklusion umgestellt wird.&lt;br /&gt;
* Bei der Standard-Inklusion ist unter Umständen nur ein geringer Abstand zwischen Gateway und Gerät möglich. Sollte die Inklusion daher nicht durchführbar sein, wenn Gateway und Gerät an ihren örtlichen Endpositionen sind (bevorzugte Variante), dann ist der Abstand zwischen diesen versuchsweise zu verringern. Anschließend bei örtlicher Veränderung die Routen mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWave-Devicename&amp;gt; neighborUpdate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set TYPE=ZWave:FILTER=ZWaveSubDevice=no neighborUpdate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; neu ermitteln lassen. Unter Umständen kann der Abstand nur schrittweise erhöht werden. Dann ist bei jeder Abstandsänderung eine Neuermittlung der Routen notwendig.&lt;br /&gt;
* Der NIF enthält bei manchen Geräten fälschlicherweise nicht alle unterstützten Command Classes. FHEM identifiziert während der Inklusion das Gerät und ergänzt die fehlenden Command Classes aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Weiterhin fehlende Command Classes können im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; manuell am Anfang der Liste entsprechend ergänzt werden. Informationen liefern die unter [[#Links|Links]] aufgeführten Datenbanken. Häufig fehlt die Pflicht-Class BASIC.&lt;br /&gt;
* Bei der hier beschriebenen Inklusion findet die Kommunikation zwischen Controller und Gerät anschließend dauerhaft unverschlüsselt statt. Manche Geräte bieten mit der Command Class SECURITY eine AES-verschlüsselte Kommunikation an. Da die Verschlüsselung zu einer höheren Funklast und Latenzen führt, sollte eine verschlüsselte Kommunikation nur mit Bedacht eingesetzt werden (bspw. bei Schlössern). Als Sonderfall ist das Vorgehen zur secure-Inklusion in der [[#Wie_kann_eine_verschl.C3.BCsselte_Kommunikation_unter_Nutzung_der_Command_Class_SECURITY_eingerichtet_werden.3F|FAQ]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nächster Schritt ist die [[#Assoziation|Assoziation]] des Gerätes mit dem Gateway.&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}&lt;br /&gt;
Z-Wave-Geräte können über Assoziationen direkt mit anderen Z-Wave-Geräten kommunizieren. Dies können zum einen Meldungen über den Status und Zustand der Geräte, als auch direkte Befehle sein. Zum Beispiel kann damit ein Bewegungsmelder eine entdeckte Bewegung an den Controller senden und/oder bei entdeckter Bewegung direkt eine Lampe ein- oder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Die Assoziation zwischen zwei Geräten wird durch Aufnahme des zu steuernden Gerätes in eine oder mehrere Assoziationsgruppe(n) des steuernden Gerätes angelegt. Durch die Wahl der Assoziationsgruppe wird festgelegt, bei welchen Ereignissen welche Nachricht an das assoziierte Gerät verschickt wird. Angaben zu den Ereignissen und versandten Nachrichten an die Geräte in einer bestimmten Assoziationsgruppe stehen in der Bedienungsanleitung des jeweiligen Gerätes.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM Statusmeldungen von Sensoren/Aktoren anzeigen und auch darauf reagieren kann, &#039;&#039;&#039;muss&#039;&#039;&#039; der Controller (&amp;lt;ZWDongle&amp;gt;-Device, &amp;lt;code&amp;gt;CtrlNodeId&amp;lt;/code&amp;gt; = typischerweise 1) immer in der/den passenden Assoziationsgruppe(n) des jeweiligen Gerätes &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; aufgenommen werden:&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;name&amp;gt; associationAdd &amp;lt;associationGroup&amp;gt; &amp;lt;CtrlNodeId&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typischerweise ist die Assoziationsgruppe 1 der Geräte für die Statusmeldungen an den Controller vorgesehen (Ausnahme: [[#Fibaro|Fibaro-Geräte ohne ZWave Plus - Zertifizierung]]). Daher nimmt FHEM die Assoziation von Controller mit der Assoziationsgruppe 1 des Gerätes bei der Inklusion immer automatisch vor. Zudem identifiziert FHEM während der Inklusion das Gerät und setzt weitere Assoziationen mit dem Controller für von 1 abweichende Assoziationsgruppen aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Ist keine XML-Config-Datei für das Gerät vorhanden, sind Assoziationen des Controllers mit von 1 abweichenden Assoziationsgruppen oder weiteren Assoziationsgruppen mit dem zuvor genannten Befehl grundsätzlich manuell anzulegen. &lt;br /&gt;
&lt;br /&gt;
Die richtige Anlage der Assoziation(en) des Controllers mit dem Gerät immer prüfen, da dies eine Hauptfehlerquelle bei Funktionsproblemen mit FHEM ist.&lt;br /&gt;
&lt;br /&gt;
Abruf der assoziierten Geräte in einer bestimmten Assoziationsgruppe &amp;lt;associationGroup&amp;gt;:&lt;br /&gt;
 get &amp;lt;name&amp;gt; association &amp;lt;associationGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abruf der assozierten Geräte für alle Assoziationsgruppen eines Gerätes:&lt;br /&gt;
 get &amp;lt;name&amp;gt; associationAll&lt;br /&gt;
&lt;br /&gt;
Nahezu alle in Europa erhältlichen aktuellen Geräte unterstützen die Rückmeldung des Status via Association. Ausnahmen gibt es in Nordamerika, wo aufgrund von Patentansprüchen einige Hersteller auf die Statusrückmeldungen verzichten. Diese Geräte unterstützen in der Regel die Command Class ASSOCIATION nicht.&lt;br /&gt;
&lt;br /&gt;
Nächster Schritt ist die [[#Konfiguration|Konfiguration]] des Gerätes.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}&lt;br /&gt;
Die Standard-Konfiguration eines Gerätes entspricht oftmals nicht den eigenen Wünschen und Anforderungen (Einheiten usw.). Mit den Befehlen der Class CONFIGURATION lässt sich die Konfiguration anpassen. Die zur Konfiguration eines Gerätes notwendigen Angaben zu den Parameternummern, -größen und -werten sind im jeweiligen Geräte-Handbuch bzw. entsprechenden Datenbanken (bspw. [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] oder [http://products.zwavealliance.com/ products.zwavealliance.com]) enthalten. &lt;br /&gt;
&lt;br /&gt;
Die Konfiguration beispielsweise bei Parametergröße 1 lässt sich mit diesem Befehl anpassen:&lt;br /&gt;
 set &amp;lt;name&amp;gt; configByte &amp;lt;Parameternummer&amp;gt; &amp;lt;Parameterwert&amp;gt;&lt;br /&gt;
Für weitere Parametergrößen gibt es die Befehle &amp;lt;code&amp;gt;configWord&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;configLong&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die im Gerät hinterlegten Konfiguration kann pro Parameternummer mit folgendem Befehl abgerufen werden:&lt;br /&gt;
 get &amp;lt;name&amp;gt; config &amp;lt;Parameternummer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zudem bietet FHEM basierend auf den manuell gepflegten XML-Config-Dateien die Möglichkeit, die speziellen Parameternummern des Gerätes mit ihren Parametergrößen und -werte als eigenständige config-Befehle mit Hilfsinformationen einzubinden. Ein manuelles Suchen im Geräte-Handbuch und Nutzung der configByte-, configWord- und configLong-Befehle ist dadurch in vielen Fällen unnötig. Für diese Funktion muss das Gerät von FHEM einmalig durch folgenden Befehl, der bei der Inklusion automatisch ausgeführt wird, identifiziert werden:   &lt;br /&gt;
 get &amp;lt;name&amp;gt; model&lt;br /&gt;
Die Readings &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;modelID&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; werden dadurch erzeugt. In &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; sollte der Klartextname des Gerätes stehen. Zudem sind dann -soweit eine XML-Config Datei für das Gerät existiert- die speziellen set/get-Kommandos configXYZ für das Geräte im Auswahldialog der Detailansicht mit Hilfsinformationen verfügbar:&lt;br /&gt;
[[Datei:Z-Wave_confighelp.PNG|900px|thumb|center|config-Befehl mit Hilfstext]]&lt;br /&gt;
&lt;br /&gt;
Bei vorhandener XML-Config-Datei kann die komplette Konfiguration eines Gerätes abgerufen werden:&lt;br /&gt;
 get &amp;lt;name&amp;gt; configAll&lt;br /&gt;
&lt;br /&gt;
Außerdem wird durch den &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; -Befehl geprüft, ob das Gerät in der [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] und/oder [http://products.zwavealliance.com/ products.zwavealliance.com] enthalten ist. Im Erfolgsfall wird ein Link &amp;quot;Details in pepper DB&amp;quot; und/oder &amp;quot;Details in alliance DB&amp;quot; zum entsprechenden Geräteeintrag in der jeweiligen Datenbank unten in der Detailansicht des FHEM-Geräte-Devices angelegt und ein Bild des Gerätes in die Detailansicht eingebunden.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf von &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; ist auch für die Nutzung der Class MANUFACTURER_PROPRIETARY zwingende Einsatzvoraussetzung.&lt;br /&gt;
&lt;br /&gt;
=== Entfernen eines Z-Wave-Geräts / Exklusion ===&lt;br /&gt;
Durch die Exklusion wird die Home-ID und Node-ID aus dem Gerät und das Gerät selbst aus der Node-List des Controllers gelöscht. Erst nach einer Exklusion kann das Gerät in ein anderes Z-Wave-Netz aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Zuerst wird der Z-Wave Gateway in den Standard-Modus zur Exklusion (Ausschluss) von Geräten gesetzt:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode on&lt;br /&gt;
&lt;br /&gt;
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt dem obigen Befehl besser der Network-Wide-Modus für die Exklusion genutzt werden (siehe auch Erläuterungen zu Standard- versus Network-Wide-Inklusion unter [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]]):&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode onNw&lt;br /&gt;
&lt;br /&gt;
Danach muss das Gerät in den Exklusionsmodus (Ausschlussmodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. &lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Exklusionsmodus am Z-Wave Gateway wieder ausgeschaltet:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; removeNode off&lt;br /&gt;
&lt;br /&gt;
Das FHEM-Device muss nach der Exklusion manuell durch &amp;lt;code&amp;gt;delete &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Die durch die Exklusion frei gewordene NodeID wird nicht bei der nächsten Inklusion wiederverwendet, sondern es wird die höchste noch nicht verwendete NodeID genutzt.&lt;br /&gt;
&lt;br /&gt;
=== Erneutes Hinzufügen eines bereits registrierten Z-Wave Geräts ===&lt;br /&gt;
Die an einem Z-Wave-Gateway bereits registrierten/inkludierten Geräte sind im Gateway selbst abgespeichert und können durch FHEM jederzeit wieder abgerufen werden. Dies kann man in folgenden Fällen sinnvoll nutzen:&lt;br /&gt;
* Inklusion mit einem batteriegespeisten ZWave-Gateway (bspw. Aeon Labs Z-Stick) ohne FHEM-Server-Anschluss während der Inklusion&lt;br /&gt;
* Umstieg eines ZWave-Netzwerkes von Fremdsoftware auf FHEM  &lt;br /&gt;
* Vollständiger oder teilweiser Verlust der FHEM-Konfiguration&lt;br /&gt;
&lt;br /&gt;
Eine Node-Liste aller inkludierten Geräte des Gateways wird abgerufen durch:&lt;br /&gt;
 get &amp;lt;ZWDongle&amp;gt; nodeList&lt;br /&gt;
Es wird eine Liste aller im Gateway inkludierten Gerät inklusive Gateway selbst zurückgeliefert. Sofern ein Gerät bereits als FHEM-Device angelegt wurde, wird der FHEM-Device-Name in der nodeList angezeigt. Dies ist für das Gateway selbst immer der Fall. Alle noch nicht in FHEM angelegten Geräte, werden als &amp;quot;UNKNOWN_x&amp;quot; ausgegeben, wobei x die ID des betreffenden Gerätes ist.&lt;br /&gt;
&lt;br /&gt;
Mit dem folgenden Befehl wird beispielsweise das bereits im Gateway inkludierte Gerät mit der ID 2 (in der nodeList angezeigt als &amp;quot;UNKNOWN_2&amp;quot;) in FHEM durch autocreate definiert:&lt;br /&gt;
 set &amp;lt;ZWDongle&amp;gt; createNode 2&lt;br /&gt;
&lt;br /&gt;
Batteriebetriebene Geräte müssen bei Absetzen des &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt;-Befehls wach sein, damit der Befehl verarbeitet werden kann. Dies erreicht man, indem man das Gerät auf &amp;quot;permanent wach&amp;quot; stellt. Falls das Gerät diese Funktion nicht anbietet, muss man es manuell aufwecken und max. 2 Sekunden später den &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt;-Befehl absetzen. Alternativ kann das batteriebetriebene Gerät durch Versand des NIF vom Gerät aus automatisch in FHEM erzeugt werden: Hierzu am Gerät die Taste zum Versand des NIF drücken und &amp;lt;code&amp;gt;autocreate&amp;lt;/code&amp;gt; legt das FHEM-Device an; der Aufruf von &amp;lt;code&amp;gt;createNode&amp;lt;/code&amp;gt; entfällt dann.&lt;br /&gt;
&lt;br /&gt;
== Geräte-Besonderheiten ==&lt;br /&gt;
=== batteriebetriebene Geräte ===&lt;br /&gt;
Batteriebetriebenen Geräten können hinsichtlich ihrer Empfangsbereitschaft unterschieden werden in&lt;br /&gt;
&lt;br /&gt;
* Wakeup-Geräte&lt;br /&gt;
* FLIRS-Geräte&lt;br /&gt;
&lt;br /&gt;
==== Wakeup-Geräte ====&lt;br /&gt;
Wakeup-Geräte sind momentan die häufigste Art von batteriebetriebenen Z-Wave Geräten. Sie sind erkennbar an der Unterstützung der Command Class WAKE_UP.&lt;br /&gt;
Zur Verlängerung der Batterielaufzeit legen sich batteriebetriebene Wakeup-Geräte „schlafen“ und wachen (Wakeup) nur in konfigurierbaren Intervallen auf, um Befehle zu verarbeiten. Das Aufwachen signalisieren die Geräte durch den Versand einer Nachricht &amp;quot;wakeup notification&amp;quot;. Daraufhin senden FHEM und andere Geräte ihre bis dahin gesammelten Befehle, die dann verarbeitet bzw. beantwortet werden. Anschließend gehen die batteriebetriebenen Geräte wieder in den Schlafmodus.&lt;br /&gt;
&lt;br /&gt;
FHEM teilt bei set/get-Befehlen an batteriebetriebene Geräte über einen Hinweis der Form&lt;br /&gt;
:&amp;lt;code&amp;gt;Scheduled for sending after WAKEUP&amp;lt;/code&amp;gt; &lt;br /&gt;
::oder&lt;br /&gt;
:&amp;lt;code&amp;gt;Scheduled get requests for sending after WAKEUP&amp;lt;/code&amp;gt;&lt;br /&gt;
mit, dass der Befehl im Sendstack des FHEM-Geräte-Devices abgespeichert wurde und bei der nächsten &amp;quot;wakeup notification&amp;quot; an das Gerät versendet wird. Ein Versand der Befehle im Sendstack findet grundsätzlich ausschließlich nach Erhalt der &amp;quot;wakeup notification&amp;quot;-Nachricht statt, selbst wenn das Gerät zwischendurch andere Telegramme (bspw. Bewegungsmeldung, Temperatur) an den Controller verschickt. Nur nach Versand der &amp;quot;wakeup notification&amp;quot; ist das batteriebetriebene Gerät grundsätzlich in der Lage (&amp;quot;wach genug&amp;quot;), Telegramme korrekt zu empfangen und zu verarbeiten.&lt;br /&gt;
&lt;br /&gt;
Wie viele Nachrichten im Sendstack auf einen Versand an das Gerät warten, ist im Internal &amp;lt;code&amp;gt;cmdsPending&amp;lt;/code&amp;gt; des zugehörigen FHEM-Devices ersichtlich. Welche Nachrichten (Befehle) im Sendstack warten, ist in der Ausgabe des Befehls &amp;lt;code&amp;gt;[[list]] &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt; erkennbar: Unter der Überschrift Sendstack sind alle wartenden Nachrichten als Rohnachrichten aufgeführt. Der Sendstack wird beim Beenden von FHEM nicht gespeichert. Durch Beenden von FHEM (beispielsweise durch &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt;) geht der Sendstack der Geräte daher verloren.&lt;br /&gt;
&lt;br /&gt;
Das Wakeup-Interval und der Empfänger der &amp;quot;wakeup notification&amp;quot; wird wie folgt konfiguriert:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; wakeupInterval &amp;lt;time&amp;gt; &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;time&amp;gt;&amp;lt;/nowiki&amp;gt; ist die Zeit in Sekunden zwischen den Intervallen und &amp;lt;nodeID&amp;gt; der gewünschte Empfänger der &amp;quot;wakeup notification&amp;quot;; in der Regel ist dies &#039;&#039;&#039;immer&#039;&#039;&#039; der Controller &amp;lt;CtrlNodeId&amp;gt;. Viele Geräte kommen im Auslieferungszustand mit der NodeID 255. Die &amp;quot;wakeup notification&amp;quot; wird dann als Broadcast ohne Nutzung von Routing an alle erreichbaren Geräte gesendet. Hier sollte die Konfiguration auf die NodeID des Controllers geändert werden, da dadurch die &amp;quot;wakeup notification&amp;quot; geroutet wird und größere Entfernungen zwischen Gerät und Controller möglich sind. Zudem ist dies robuster und spart zusätzlich noch Batterielaufzeit. Darum setzt FHEM bei der Inklusion von WakeUp-Geräten &#039;&#039;&#039;automatisch&#039;&#039;&#039; den Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; wakeupInterval 86400 &amp;lt;ControllerNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ab. Bei abweichenden eigenen Vorstellungen ist dies gegebenenfalls anzupassen. Bei Geräten mit V2 der Command Class WAKE_UP kann das vom Hersteller vorgesehene Standard-wakeupInterval mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; wakeupIntervalCapabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vom Gerät abgerufen werden. Die Einstellungen von wakeupInterval nach Inklusion und nach jeder Änderung immer mit der Abfrage &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; wakeupInterval&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; überprüfen.&lt;br /&gt;
&lt;br /&gt;
Ein Aufwachen und Versand der &amp;quot;wakeup notification&amp;quot; von batteriebetriebenen Geräten kann für die [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] manuell erzwungen werden. Hierzu bringt man das Gerät normalerweise in den Inklusionsmodus oder findet in der Bedienungsanleitung gegebenenfalls andere Informationen. Bitte beachten, dass dann je nach Gerät nur eine geringe Entfernung von Gateway und Gerät vorhanden sein darf (direkte Erreichbarkeit). Alternativ kann für die Dauer der Assoziation und Konfiguration das Wakeup-Interval verkürzt werden (beispielsweise auf 60 Sekunden), wodurch das Routing genutzt werden kann und größere Entfernungen zwischen Gateway und Gerät überbrückt werden können. Anschließend das Wakeup-Interval wieder auf eine batterieschonenende Dauer einzustellen.&lt;br /&gt;
&lt;br /&gt;
Einzelne batteriebetriebene Gerät lassen sich für längere Zeit auf &amp;quot;wach&amp;quot; bzw. permanent &amp;quot;wach&amp;quot; stellen. Dann aus dem Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen, damit Befehle in diesem Gerätemodus von FHEM direkt verschickt werden. Nach Ausschalten des &amp;quot;wach&amp;quot;-Modus &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; wieder im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; aufnehmen.&lt;br /&gt;
&lt;br /&gt;
Bei Konfigurationsänderungen an batteriebetriebenen Geräten mit &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; config...&amp;lt;/code&amp;gt; sollte die korrekte Verarbeitung der Befehle immer mit dem entsprechenden &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; config...&amp;lt;/code&amp;gt; oder -falls vorhanden- mit &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; configAll&amp;lt;/code&amp;gt; überprüft werden, um eventuelle Funk-Telegrammverluste sofort festzustellen.&lt;br /&gt;
&lt;br /&gt;
==== FLIRS-Geräte ====&lt;br /&gt;
Ein batteriebetriebene FLIRS (frequently listening routing slave) Gerät wacht in sehr kurzen Zeitabständen (250ms oder 1000ms) auf und prüft, ob ein Funksignal vorliegt. Liegt kein Funksignal vor geht das Gerät wieder in Tiefschlaf. Zum Aufwecken eines FLIRS-Gerätes ist ein dauerhaftes Funksignal -der Wakeup-Beam-, notwendig, das etwas länger als die Aufweckzeitabstände sein muss. Näher beschrieben unter anderem [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF hier]. &lt;br /&gt;
&lt;br /&gt;
FLIRS-Geräte haben nicht die Command Class WAKE_UP und arbeiten deshalb nicht mit &amp;quot;wakeup notification&amp;quot;. Aus Sicht des FHEM-Nutzers sind die bekannten FLIRS-Geräte (Sirenen von Vision und Popp) nicht anders zu bedienen/einzurichten als netzgespeiste Geräte. Wakeup-Beam und andere Besonderheiten werden unsichtbar für den Nutzer automatisch abgewickelt.&lt;br /&gt;
&lt;br /&gt;
=== Aeon Labs / Aeotec ===&lt;br /&gt;
Ausführliche Handbücher und technische Informationen auf https://aeotec.freshdesk.com/support/home&lt;br /&gt;
&lt;br /&gt;
==== Multi Sensor 5 ====&lt;br /&gt;
* aktuellste Firmware installieren&lt;br /&gt;
* Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; um &amp;lt;code&amp;gt;BASIC&amp;lt;/code&amp;gt; ergänzen (ab [[version|Modulversion]] 8824/25.6.2015 wird das automatisch bei der Inklusion durchgeführt)&lt;br /&gt;
* bei USB-Anschluss aus Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen&lt;br /&gt;
* Parameter 101 auf 225 (oder 224 bei USB-Anschluss) setzen mit &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; configGroup1Reports 225&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; configLong 101 225&amp;lt;/code&amp;gt;, um Batteriezustand (nicht bei 224), Temperatur, Feuchte und Helligkeit regelmäßig zu erhalten. Das Sende-Intervall wird duch &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; configGroup1Interval &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; festgelegt (Standard 720 Sek).&lt;br /&gt;
* [http://devel.pepper1.net/zwavedb/device/407 Paramterübersicht pepper-Datenbank]&lt;br /&gt;
siehe {{Link2Forum|Topic=34505|Message=268913}}&lt;br /&gt;
&lt;br /&gt;
==== Multisensor 6 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40393}}&lt;br /&gt;
* arbeitet bei USB-Anschluß als Router&lt;br /&gt;
* bei USB-Anschluss aus Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;WAKE_UP&amp;lt;/code&amp;gt; entfernen&lt;br /&gt;
* die &amp;lt;code&amp;gt;configGroupxInterval&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;configxxxReportingThreshold&amp;lt;/code&amp;gt; Einstellungen wirken nur bei USB-Anschluss, im reinen Batteriebetrieb werden die Sensordaten nur bei einem &amp;lt;code&amp;gt;wakeup&amp;lt;/code&amp;gt; übertragen&lt;br /&gt;
&lt;br /&gt;
==== Aeotec LED Bulb ZW098-C55 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40504}}&lt;br /&gt;
&lt;br /&gt;
=== Danfoss ===&lt;br /&gt;
==== DAN_LC-13 Heizungsthermostat LC-13 (014G0013) ====&lt;br /&gt;
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem &amp;lt;code&amp;gt;at&amp;lt;/code&amp;gt; abgefragt werden ({{Link2Forum|Topic=32145|Message=260795}}):&lt;br /&gt;
 define Atdanfoss at +*00:30 get &amp;lt;name&amp;gt; battery&lt;br /&gt;
Auf dem Markt sind mehrere Varianten des Thermostates LC-13 erhältlich. Darum beim Kauf unbedingt auf die genaue Bezeichnung LC-13 (014G0013) achten ({{Link2Forum|Topic=38041|Message=303146}}). &lt;br /&gt;
&lt;br /&gt;
=== devolo ===&lt;br /&gt;
Ausführliche Handbücher auf http://products.z-wavealliance.org&lt;br /&gt;
&lt;br /&gt;
==== MT02648 Tür-/Fenster Kontakt 3in1 ====&lt;br /&gt;
siehe {{Link2Forum|Topic=41337}}&lt;br /&gt;
&lt;br /&gt;
=== DüWI ===&lt;br /&gt;
Geräte von DÜWI liefern bei örtlicher Betätigung kein automatisches Funk-Signal über die Statusänderung. Das liese sich nur durch eine regelmäßige Statusabfrage durch FHEM (beispielsweise &amp;lt;code&amp;gt;define Status_Abfrage at +*00:03:00 get &amp;lt;name&amp;gt; swmStatus&amp;lt;/code&amp;gt;) beheben.&lt;br /&gt;
Einige Produkte von [http://zwave.me Z-Wave.Me] basieren auf DÜWI-Geräten. Diese Z-Wave.Me Produkte haben jedoch eine erweiterte Firmware, welche die genannte und weitere Firmware-Schwächen der Original-Produkte von DÜWI behebt.&lt;br /&gt;
&lt;br /&gt;
=== Everspring ===&lt;br /&gt;
==== AN145 Sockelmodul E27 ====&lt;br /&gt;
Statusabfrage ohne permanente Abfrage: {{Link2Forum|Topic=48864|Message=405545|Beitrag}}&lt;br /&gt;
&lt;br /&gt;
=== Fibaro ===&lt;br /&gt;
Association Group für Übermittlung von Statusinformationen an den Controller:&lt;br /&gt;
* &amp;quot;alte&amp;quot; ZWave-Geräte (kein ZWave-Plus): häufig Association Group 3&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; associationAdd 3 &amp;lt;CtrlNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Bei diesen Geräten empfiehlt es sich zur Funklastreduzierung und Problemminimierung zu prüfen, ob die von FHEM automatisch vorgenommene Assoziation des Controllers mit der Association Group 1 gelöscht werden kann (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; associationDel 1 &amp;lt;CtrlNodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). Nahezu immer werden in Association Group 1 die gleichen Infos, nur mit einer anderen Command Class, wie in der Association Group 3 an den Controller übermittelt.&lt;br /&gt;
* ZWave Plus-Geräte: Association Group 1 (&amp;quot;lifeline&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== FGSS-001 / FGSD-002 Rauchmelder ====&lt;br /&gt;
* nicht untereinander vernetzbar&lt;br /&gt;
* keine Alarmauslösung/Sirenenfunktion durch ZWave-Zentralen&lt;br /&gt;
&lt;br /&gt;
==== FGS-222 Relais Unterputzeinsatz ====&lt;br /&gt;
Bei der Inklusion werden von FHEM 3 Devices angelegt:&lt;br /&gt;
* Hauptdevice (Steuerung und automatischer Status für Kanal 1 und kanalübergreifende Funktionen)&lt;br /&gt;
* Device für Endpoint 1 (Steuerung Kanal 1)&lt;br /&gt;
* Device für Endpoint 2 (Steuerung und automatischer Status von Kanal 2)&lt;br /&gt;
Die Firmware des FGS-222 übermittelt den Status für Kanal 1 automatisch immer ausschließlich an das Hauptdevice. Die Steuerung von Kanal 1 kann hingegen sowohl über das Hauptdevice als auch über das Device für Endpoint 1 erfolgen. Das Device für Endpoint 1 ist somit nicht zwingend erforderlich und kann grundsätzlich gelöscht oder in den room hidden verschoben werden.&lt;br /&gt;
&lt;br /&gt;
Details: {{Link2Forum|Topic=50176}}&lt;br /&gt;
&lt;br /&gt;
Hinweis zum Reset: {{Link2Forum|Topic=55190|Message=469393}}&lt;br /&gt;
&lt;br /&gt;
==== FGK-101 Tür/Fensterkontakt ====&lt;br /&gt;
* Besonderheiten bei Anschluss eines Temperatursensors: {{Link2Forum|Topic=38012}}&lt;br /&gt;
&lt;br /&gt;
=== GE ===&lt;br /&gt;
==== GE (Model t.b.d) ====&lt;br /&gt;
Dieser Schalter unterstützt keine Statusrückmeldungen.&lt;br /&gt;
&lt;br /&gt;
=== Merten ===&lt;br /&gt;
Laut {{Link2Forum|Topic=38133}} müssen bei einigen Merten-Geräten, die mit Fremdsoftware inkludiert wurden, gegebenenfalls die Geräte wieder exkludiert und dann erneut mit FHEM inkludiert werden, damit Assoziationen mit FHEM gesetzt werden können.&lt;br /&gt;
&lt;br /&gt;
=== Philio ===&lt;br /&gt;
==== PHI_PAN04 Relais Unterputzeinsatz 2 Schalter a 1.5kW mit Messfunktion ====&lt;br /&gt;
siehe {{Link2Forum|Topic=28046}}&lt;br /&gt;
&lt;br /&gt;
=== Popp ===&lt;br /&gt;
==== POPE004001 Z-Wave Rauchmelder mit Innensirene ====&lt;br /&gt;
siehe {{Link2Forum|Topic=39856}}&lt;br /&gt;
==== POPE005107 Z-Wave Außensirene ====&lt;br /&gt;
siehe {{Link2Forum|Topic=42736}}&amp;lt;br&amp;gt;&lt;br /&gt;
Alte Firmwareversionen haben einen Bug bei der Übermittlung von negativen Temperaturen. Eine Lösungsvariante über ein &amp;lt;code&amp;gt;userReadings&amp;lt;/code&amp;gt; findet sich auch im verlinkten Thema. &lt;br /&gt;
==== POPE009006 Z-Wave Wall Plug Switch ====&lt;br /&gt;
siehe {{Link2Forum|Topic=40771}}&lt;br /&gt;
==== POPE009402 10Year Smoke Detector ====&lt;br /&gt;
Die erste Firmwareversion hat eine fehlerhafte modelID.  Diese Rauchmelder wird dadurch fälschlich als [[Z-Wave#POPE005107_Z-Wave_Au.C3.9Fensirene|Popp Aussensirene]] in FHEM angezeigt. Neuere Geräte werden laut Popp mit der korrekten modelID ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
=== Z-Wave.Me ===&lt;br /&gt;
==== ZME_RC2 Fernbedienung ====&lt;br /&gt;
siehe {{Link2Forum|Topic=35513}}&amp;lt;BR&amp;gt;&lt;br /&gt;
Das Forenthema enthält eine detaillierte Beschreibung der Nutzung der Class MULTI_CHANNEL_ASSOCIATION.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Geräte-Vergleich ==&lt;br /&gt;
=== Doppel-Relais ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Eigenschaft !! FIBARO Double Switch 2-FGS-223 !! Qubino Flush 2 relays  !! Philio-PAN04&lt;br /&gt;
|-&lt;br /&gt;
| Standby-Leistung || ca. 0.4W || ca. 0.4W || ca. 0.5W&lt;br /&gt;
|-&lt;br /&gt;
| Reaktion beim Schalten am Tastereingang || schnell, kaum merkliche Verzögerung ||  schnell, kaum merkliche Verzögerung || langsam, unangenehm langes drücken des Tasters nötig &amp;gt;1 Sekunde &lt;br /&gt;
|-&lt;br /&gt;
| Geräte in FHEM || 3 &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 || 3  &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 || 4  &amp;lt;br&amp;gt; x Hauptgerät &amp;lt;br&amp;gt; x.01 Relais 1 &amp;lt;br&amp;gt; x.02 Relais 2 &amp;lt;br&amp;gt; x.03 Summengerät (ähnlich Hauptgerät, überflüssig)&lt;br /&gt;
|-&lt;br /&gt;
| Zustand Hauptgerät || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais&lt;br /&gt;
|-&lt;br /&gt;
| Statuswechsel Report vom Gerät zum FHEM || ca. 1 Sekunde || ca. 3 Sekunden || ca. 3-4 Sekunden&lt;br /&gt;
|-&lt;br /&gt;
| Empfänger des Status Reports || Hauptgerät und Untergeräte || Nur Hauptgerät &amp;lt;br&amp;gt; Aktualisierung der Untergeräte nur bei aktiver Abfrage  || Nur Hauptgerät &amp;lt;br&amp;gt;Aktualisierung der Untergeräte nur bei aktiver Abfrage &lt;br /&gt;
|-&lt;br /&gt;
| Leistungsmessung || Separat für Untergeräte || Nur Summe || Nur Summe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
* Grundlageninformation &amp;quot;Z-Wave-Haupt-Anleitung&amp;quot;: [http://www.zwave.de/z-wave-funknetz-einrichten-und-betreiben/ Wie errichte und betreibe ich ein Z-Wave basiertes Funknetz]&lt;br /&gt;
* [http://www.zwave.de/buch-z-wave-grundlagen/ Buch] &amp;quot;Z-Wave: Die Funktechnologie für das Smart Home&amp;quot; von Dr. Christian Paetz (Paetz &amp;quot;is the primary European representative for the Z-Wave Alliance&amp;quot; [http://z-wavealliance.org/global-contacts/])&lt;br /&gt;
* Z-Wave-Produktdatenbank mit Angabe zur Zertifizierung, Handbüchern und weiteren Detailinfos (Z-Wave oder [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus]): http://products.z-wavealliance.org (englisch)&lt;br /&gt;
* herstellerübergreifende Datenbank mit Bedienungsanleitungen zu Z-Wave-Geräten: http://www.zwave.de/handbuecher/ oder http://manuals.zwaveeurope.com (mehrsprachig)&lt;br /&gt;
* herstellerübergreifende Datenbank mit technischen Informationen zu Z-Wave-Geräten (Z-Wave Device Library): http://devel.pepper1.net/zwavedb/ (englisch; wird derzeit nicht mehr aktualisiert)&lt;br /&gt;
* informative Webseiten zu Z-Wave:&lt;br /&gt;
** [http://www.z-wavealliance.org/ http://www.z-wavealliance.org/] (englisch)&lt;br /&gt;
** [http://www.zwaveeurope.com/ http://www.zwaveeurope.com/] (englisch)&lt;br /&gt;
** [http://www.zwave.de/ http://www.zwave.de/] (deutsch)&lt;br /&gt;
** [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF Introductory Guide to Z-Wave-Technology von Honeywell] (englisch; nicht auf aktuellem Stand)&lt;br /&gt;
&lt;br /&gt;
=== Informationsquellen zur Einbindung von Command Classes ===&lt;br /&gt;
Offizielle und ausführliche Informationen von Sigma Designs (veröffentlicht am 31.08.2016):&lt;br /&gt;
* [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen (seit Veröffentlichung der Z-Wave Spezifikationen am 31.08.2016 geringe Relevanz)&lt;br /&gt;
* [https://github.com/yepher/RaZBerry Infos zu Command Classes (ausführlich; insbesondere im Verzeichnis &amp;quot;docs&amp;quot;), RaZBerry und Z-Wave allgemein], englisch&lt;br /&gt;
* [http://220.135.186.178/zwave/example/ Übersicht von Command Classes und deren Rückgabewerten mit Unterscheidung der Class-Versionen], englisch&lt;br /&gt;
* Code von http://www.openzwave.org (https://github.com/OpenZWave/open-zwave) und http://www.openhab.org (Z-Wave binding: https://github.com/cdjackson/openhab)&lt;br /&gt;
* eine Java-API-Beschreibung mit Hinweisen zu Unterschieden von Class-Versionen: http://dz.prosyst.com/pdoc/mBS_SH_SDK_8.1/modules/zwave/api/driver/index.html&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== Welche Infos sollten Anfragen im ZWave-Forum enthalten? ===&lt;br /&gt;
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ergibt Ausgabe &amp;quot;nothing to do...&amp;quot;&lt;br /&gt;
* detaillierte Beschreibung des Problems&lt;br /&gt;
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)&lt;br /&gt;
* list des jeweiligen FHEM-Devices (Ausgabe von &amp;lt;code&amp;gt;list &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
::Bitte vor Aufruf des list-Befehls -wenn vorhanden/möglich- folgende Befehle ausführen und Ergebnis abwarten:&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; associationAll&amp;lt;/code&amp;gt; &lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; configAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; versionClassAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcaAll&amp;lt;/code&amp;gt;&lt;br /&gt;
::*&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; wakeupInterval&amp;lt;/code&amp;gt; (nur bei batteriebetriebenen Geräten)&lt;br /&gt;
* passender Ausschnitt aus dem Logfile (siehe Link im FHEM-Menü links) generiert mit den gesetzten Attributen&lt;br /&gt;
::*&amp;lt;code&amp;gt;attr &amp;lt;ZWDongle&amp;gt; verbose 5&amp;lt;/code&amp;gt; und&lt;br /&gt;
::*&amp;lt;code&amp;gt;attr global mseclog 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Welche Schritte sind für die Einbindung von ZWave-Geräten in FHEM mindestens durchzuführen? ===&lt;br /&gt;
Voraussetzung: ZWave-Gateway ist erfolgreich eingebunden!&lt;br /&gt;
# [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes&lt;br /&gt;
# [[#Assoziation|Assoziation]] der Assoziationsgruppe(n) des Gerätes mit dem Gateway&lt;br /&gt;
# [[#Konfiguration|Konfiguration]] des Gerätes&lt;br /&gt;
&lt;br /&gt;
=== Warum bleibt der Status (STATE) des neu inkludierten Gerätes dauerhaft auf &amp;quot;associationAdd &amp;lt;associationGroup&amp;gt; &amp;lt;CtrlNodeId&amp;gt;&amp;quot; stehen? ===&lt;br /&gt;
FHEM setzt das Reading &amp;quot;state&amp;quot;, das den STATE bestimmt, nicht bei allen ZWave-Devices mit vordefinierten Standardwerten. Daher bleibt der bei der Inklusion automatisch abgesetzte &amp;quot;associationAdd&amp;quot;-Befehl unter Umständen im STATE stehen, bis der Anwender den STATE über die Vergabe des Attributes &amp;lt;code&amp;gt;{{Link2CmdRef|Anker=stateFormat|Label=stateFormat}}&amp;lt;/code&amp;gt; manuell an seine Bedürfnisse angepasst hat.&lt;br /&gt;
(weitergehende Info zum state/STATE/stateFormat: [[DevelopmentState]])&lt;br /&gt;
&lt;br /&gt;
=== Wie können bei mehrkanaligen Aktoren die zusätzlichen Kanäle (&amp;gt;1) angesprochen werden? ===&lt;br /&gt;
* Bei der [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes wird das Hauptdevice mit dem Namen &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; und die Devices für alle Kanäle (Endpoints) nach dem Namensschema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWave_&amp;lt;Geräteklasse laut NIF des Gerätes&amp;gt;_&amp;lt;NodeID&amp;gt;.&amp;lt;EndpointNr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; automatisch angelegt. Jedes dieser FHEM-Devices spricht regelmäßig einen bestimmten Kanal des Gerätes an; einige Geräte sprechen mit dem Hauptdevice jedoch das gesamte Gerät mit allen Kanälen an (Bedienungsanleitung beachten).&lt;br /&gt;
* Manuell werden Devices für zusätzliche Kanäle mit Hilfe der Befehle &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcEndpoints&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; mcCapability &amp;lt;chid&amp;gt;&amp;lt;/code&amp;gt; aus der Class MULTI_CHANNEL ermittelt bzw. einzeln über autocreate angelegt (Details und Beispiel siehe {{Link2CmdRef|Anker=ZWaveget}}). Mit dem Befehl &amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; mcCreateAll&amp;lt;/code&amp;gt; werden automatisch alle Kanäle des Gerätes durch autocreate als eigene Devices in FHEM angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man die SDK-Version eines Gerätes herausfinden? ===&lt;br /&gt;
Mit FHEM alleine kann eine [[#Grobermittlung|Grobermittlung]] der SDK-Version vorgenommen werden, die aber für einige Zwecke bereits ausreichend ist. Soll eine [[#Detailermittlung|Detailermittlung]] der genauen SDK-Version erfolgen, dann müssen die mit FHEM ermittelten Werte anhand externer Quellen übersetzt werden.&lt;br /&gt;
==== Grobermittlung ====&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; nodeInfo &amp;lt;dezimale nodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; liefert das Reading &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nodeInfo_&amp;lt;dezimale nodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
Die Angabe im Reading hinter &amp;lt;code&amp;gt;ProtocolVers:&amp;lt;/code&amp;gt; lässt grobe Rückschlüsse zu. Mögliche (bekannte) Werte:&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; -&amp;gt; bspw. keine Explorer Frames, keine SUC-Unterstützung (veraltet, keine bekannten Geräte mehr im Handel)&lt;br /&gt;
* &amp;lt;code&amp;gt;SDK5.0x+4.2x&amp;lt;/code&amp;gt; -&amp;gt; bspw. keine Explorer Frames, teilweise SUC-Unterstützung&lt;br /&gt;
* &amp;lt;code&amp;gt;SDK4.5x+6.0x&amp;lt;/code&amp;gt; -&amp;gt; bspw. Explorer Frames- und SUC-Unterstützung (Reading-Wert wird auch bei SDK 6.5x = Z-Wave Plus angezeigt)&lt;br /&gt;
==== Detailermittlung ====&lt;br /&gt;
Durch den Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;name&amp;gt; version&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; kann man die ZWave-Protokoll-Version von Geräten und Controller abfragen. Mit Unterstützung von Übersetzungstabellen&lt;br /&gt;
* http://wiki.micasaverde.com/index.php/ZWave_Protocol_Version&lt;br /&gt;
* Suche nach sdkids.xml in einer Suchmaschine&lt;br /&gt;
kann aus der Protokoll-Version das genutzte SDK festgestellt werden.&lt;br /&gt;
&lt;br /&gt;
Beispielsweis entspricht das Reading eines Gerätes &amp;quot;Lib 6 &#039;&#039;&#039;Prot 2.64&#039;&#039;&#039; App 1.6&amp;quot; dem SDK 5.02 Patch 2 oder eines Controller &amp;quot;Z-Wave &#039;&#039;&#039;3.41&#039;&#039;&#039; STATIC_CONTROLLER&amp;quot; dem SDK 6.02.00.&lt;br /&gt;
 &lt;br /&gt;
HINWEIS: Bei der Vergabe der Protokoll-Version und zugehörigem SDK gibt es keine erkennbare Logik: Eine höhere Protokoll-Version steht nicht notwendig für eine höheres SDK.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann eine verschlüsselte Kommunikation unter Nutzung der Command Class SECURITY eingerichtet werden? ===&lt;br /&gt;
{{Randnotiz|RNText=FHEM unterstützt derzeit ausschließlich SECURITY 1 und nicht das mit dem SDK 6.7 neu eingeführte SECURITY 2 (S2). Soweit bekannt, sind S2-Geräte rückwärtskompatibel zu SECURITY 1.}}&lt;br /&gt;
Die verschlüsselte Kommunikation zwischen Controller und Endgerät setzt eine secure-Inklusion voraus. Bereits mit der Inklusion wird entschieden, ob die Kommunikation von Controller und Endgerät dauerhaft verschlüsselt oder unverschlüsselt erfolgt. Ist ein Gerät bereits normal inkludiert und entscheidet man sich nachträglich für eine verschlüsselte Kommunikation, so ist das nur möglich, indem das Gerät exkludiert und dann wieder secure inkludiert wird.&lt;br /&gt;
&lt;br /&gt;
Ob die Verschlüsselung bei einem Gerät mit Unterstützung der Command Class SECURITY genutzt werden soll, sollte genau überlegt werden. Die Verschlüsselung führt zu einem deutlich größeren Funkverkehr zur Ausführung eines Befehls und teilweise auch zu spürbaren Latenzen.&lt;br /&gt;
&lt;br /&gt;
Vorarbeiten:&lt;br /&gt;
* Das Perl-Modul Crypt-Rijndael muss installiert sein.&lt;br /&gt;
* Das Attribut &amp;lt;code&amp;gt;networkKey&amp;lt;/code&amp;gt; muss mit einem 32-Zeichen langen Hexzahl beim ZWDongle angelegt werden. Dieser Schlüssel sollte nicht veröffentlicht werden und auch zusätzlich separat (bspw. auf Papier) festgehalten werden. Bei Verlust des Attributes und Schlüssels ist eine Kommunikation nur nach erneuter Inklusion möglich.&lt;br /&gt;
&lt;br /&gt;
Ablauf der secure-Inklusion:&lt;br /&gt;
* Controller in den Modus zur secure-Inklusion schalten:&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode onSec&amp;lt;/code&amp;gt; für die Standard-secure-Inklusion&lt;br /&gt;
: oder alternativ&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addNode onNwSec&amp;lt;/code&amp;gt; für die Nework-Wide-secure-Inklusion&lt;br /&gt;
* Gerät gemäß Handbuch in den Modus zur secure-Inklusion bringen (teilweise ist jeweils für secure- und normale Inklusion ein anderes Vorgehen notwendig!)&lt;br /&gt;
* Das Gerät sollte jetzt automatisch erkannt und das FHEM-Device durch &amp;lt;code&amp;gt;autocreate&amp;lt;/code&amp;gt; angelegt werden. Die secure-inkludierten Geräte haben ein zusätzliches Attribut &amp;lt;code&amp;gt;secure_classes&amp;lt;/code&amp;gt; in dem die Command Classes deren Kommunikation verschlüsselt abläuft aufgelistet sind. Nicht in diesem Attribut, aber in &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; aufgeführte Command Classes wickeln die Kommunikation weiterhin unverschlüsslt ab.&lt;br /&gt;
* Inklusionsmodus des Controllers ausschalten:&lt;br /&gt;
: &amp;lt;code&amp;gt;set &amp;lt;ZWDongle&amp;gt; addnode off&amp;lt;/code&amp;gt;&lt;br /&gt;
* Das Vorgehen in FHEM unterscheidet sich von nun an nicht von normal (unverschlüsselt) inkludierten Geräten. Die Verschlüsselung läuft für den Anwender transparent ab. Darum anschließend [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] vornehmen.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man ohne Exklusion Nodes des Controllers löschen? ===&lt;br /&gt;
HINWEIS: Geräte sollten grundsätzlich immer über eine Exklusion aus der Nodelist des Controllers gelöscht werden. Das nachfolgend geschilderte Vorgehen ist nur in Sonderfällen (bspw. Gerätedefekt, gebraucht gekauftes Gateway) anzuwenden.&lt;br /&gt;
&lt;br /&gt;
Nicht mehr zu erreichende/reagierende Nodes (Geräte) können manuell mit dem Befehl &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; gelöscht werden. Dazu muss sich der betroffene Node auf der FailedNodeList des Controllers befinden. Auf die FailedNodeList kommen netzbetriebene Geräte automatisch, wenn sie vom Controller nicht mehr per Funk erreicht werden. Batteriebetriebene Geräte müssen manuell auf die FailedNodelist gesetzt werden, da der Controller nicht feststellen kann, ob sie nur langfristig &amp;quot;schlafen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; löscht nur Nodes auf der FailedNodeList, die erst vor Kurzem nicht erreicht werden konnten. Darum muss sowohl das manuelle Verschieben von batteriebetriebenen als auch das Nicht-Erreichen der netzbetriebenen Geräte erst Kurz vor Aufruf des &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt;-Befehls erfolgt sein. &lt;br /&gt;
&lt;br /&gt;
Vorgehensweise für den Node &amp;lt;NodeId&amp;gt;:&lt;br /&gt;
# An den betroffenen Node eine Telegramm mit &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; sendNIF &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; verschicken, um ihn auf FailedNodeList zu verschieben bzw. Zeitstempel zu aktualisieren.&lt;br /&gt;
# Abfragen, ob der Node auf der FailedNodeList steht: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; isFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Wenn der Rückgabewert der Abfrage &amp;quot;yes&amp;quot; ist, steht der Node korrekt auf der FailedNodeList und kann mit &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt; gelöscht werden.&lt;br /&gt;
# Befehl zum Löschen des Nodes absetzen: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; removeFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Der Befehl testet vor dem Löschen noch einmal, dass der Node nicht erreicht werden kann und entfernt erst dann den Node.&lt;br /&gt;
# Prüfen, der Ergebnisse des &amp;lt;code&amp;gt;removeFailedNode&amp;lt;/code&amp;gt;-Befehls im Log oder [[Event monitor]]. Die verschiedenen Ergebnisse werden durch die in der {{Link2CmdRef}} dokumentierten Events signalisiert. Tritt das Ergebnis &amp;quot;failedNodeRemoveProcessBusy&amp;quot; mehrfach hintereinander auf, muss das ZWDongle kurz stromlos gemacht werden.&lt;br /&gt;
# Prüfen, ob der Node nicht mehr auf der Nodelist des Controllers ist: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; nodeList&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siehe auch {{Link2Forum|Topic=32823|Message=292626}}&lt;br /&gt;
&lt;br /&gt;
=== Wie ist der einfachste Weg ein (defektes) Gerät durch ein gleiches Ersatzgerät auszutauschen? ===&lt;br /&gt;
Tauscht man ein defektes Gerät durch ein gleiches Ersatzgerät und inkludiert das Ersatzgerät per &amp;lt;code&amp;gt;addNode&amp;lt;/code&amp;gt;, so erhält das Ersatzgerät eine neue NodeId. Soll das Ersatzgerät die gleiche NodeId wie das alte Gerät erhalten, so muss statt &amp;lt;code&amp;gt;addNode&amp;lt;/code&amp;gt; der Befehl &amp;lt;code&amp;gt;replaceFailedNode&amp;lt;/code&amp;gt; zur Inklusion des Ersatzgerätes (=gleiches Modell) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Vorgehensweise für den Node &amp;lt;NodeId&amp;gt;:&lt;br /&gt;
# sofern das alte Gerät noch ansprechbar ist, die Konfiguration und Assoziationen abfragen, damit man die Werte im Ersatzgerät einfach wieder setzen kann:&lt;br /&gt;
## &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;device&amp;gt; configAll&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;device&amp;gt; associationAll&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# defektes Gerät aus- und neues einbauen&lt;br /&gt;
# Befehl &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;ZWDongle&amp;gt; sendNIF &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; absetzen, damit das Dongle die NodeId auf die FailedNodeList setzt.&lt;br /&gt;
# Abfragen, ob der Node auf der FailedNodeList steht: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get &amp;lt;ZWDongle&amp;gt; isFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Wenn der Rückgabewert der Abfrage &amp;quot;yes&amp;quot; ist, steht der Node korrekt auf der FailedNodeList und das Ersatzgerät kann mit &amp;lt;code&amp;gt;replaceFailedNode&amp;lt;/code&amp;gt; inkludiert werden.&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set &amp;lt;zwdongle&amp;gt; replaceFailedNode &amp;lt;NodeId&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; für die NodeId des defekten Gerätes aufrufen und das Ersatzgerät in den Inklusionsmodus bringen&lt;br /&gt;
# Korrekte Inklusion prüfen und beim alten Aktor ausgelesene Werte beim neuen Aktor wieder setzen.&lt;br /&gt;
&lt;br /&gt;
=== Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? ===&lt;br /&gt;
Ja, das ist richtig.&lt;br /&gt;
&lt;br /&gt;
Bei der Inklusion über addNode vergibt der Controller die höchste bisher noch nie verwendete NodeID. Durch Exklusion oder removeFailedNode frei gewordene NodeIDs werden hierbei nicht erneut vergeben. Nur bei einem Controller-Reset, der mit einem unwiederbringlichen Verlust sämtlicher Informationen des ZWave-Netzes und Neuvergabe der HomeID verbunden ist, beginnt die Zählung wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
=== Welche Funktion haben die XML-Config-Dateien in FHEM? ===&lt;br /&gt;
In den XML-Config-Dateien sind Informationen zu einzelnen ZWave-Geräten enthalten, die der Erleichterung der Gerätenutzung und -einbindung in FHEM dienen. Dies sind unter anderem Erläuterungen zu den Parameternummer/-werten, Assoziationsgruppen und Besonderheiten eines Gerätes. Ob eine zum Zwave-Gerät passende XML-Config Datei existiert, wird im Rahmen der Inklusion oder durch manuellen Aufruf des Befehls &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; ermittelt. Wird eine passende XML-Config-Datei gefunden, wird sie automatisch in FHEM eingebunden. Das Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; enthält dann den zugehörigen XML-Config-Dateinamen. Stehen keine XML-Config-Informationen bereit, enthält das Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; den Wert &amp;quot;unknown&amp;quot;. Die Funktionsfähigkeit von FHEM mit ZWave-Geräten ist auch bei fehlender XML-Config-Datei gegeben. Es gibt dadurch keine funktionalen Einschränkungen in FHEM; es entfallen &amp;quot;nur&amp;quot; Erleichterungen und es sind unter Umständen mehr manuelle Schritte bei der Gerätenutzung/-einbindung notwendig.&lt;br /&gt;
&lt;br /&gt;
Erleichterungen bei vorhandener XML-Config für ein ZWave-Gerät:&lt;br /&gt;
* Bei der Inklusion:&lt;br /&gt;
** Assoziationen mit dem Controller bei von Gruppe 1 abweichenender Assoziationsgruppe werden automatisch gesetzt&lt;br /&gt;
** vom NIF nicht gemeldete, aber vom Gerät unterstützte Classes, werden im Attribut &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; ergänzt&lt;br /&gt;
* Bei der Konfiguration:&lt;br /&gt;
** die Parameternummern stehen als configXY-Befehle zur Verfügung und werden mit Hilfetexten -auch zu den Parameterwerten- in der Detailansicht des FHEM-Device erläutert.&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bitte auch bei vorhandener XML-Config-Datei nach der Inklusion und bei der Konfiguration die Assoziationen und Parameter prüfen. Von den eigenen Vorstellungen abweichende Vorgaben oder gar Fehler in der Config-Datei können nie ausgeschlossen werden. Fehler bitte im Forum ({{Link2Forum|Area=ZWave}}) melden.&lt;br /&gt;
&lt;br /&gt;
=== Wie können fehlende XML-Config-Informationen für mein ZWave-Gerät in FHEM eingebunden werden? ===&lt;br /&gt;
Die XML-Config-Informationen von FHEM sind in folgenden Dateien im Ordner fhem/FHEM/lib gespeichert:&lt;br /&gt;
* openzwave_manufacturer_specific.xml&lt;br /&gt;
* openzwave_deviceconfig.xml.gz&lt;br /&gt;
* fhem_zwave_deviceconfig.xml.gz&lt;br /&gt;
Die in den Dateien enthaltenen Informationen beruhen in großen Teilen auf Daten von openzwave und übernehmen daher das openzwave-Datenformat, das unter https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices näher beschrieben wird. &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;openzwave_manufacturer_specific.xml&amp;quot; enthält die eindeutige Kennung des ZWave-Gerätes, die in FHEM nach Aufruf des Befehls &amp;lt;code&amp;gt;get &amp;lt;name&amp;gt; model&amp;lt;/code&amp;gt; im Reading &amp;lt;code&amp;gt;modelId&amp;lt;/code&amp;gt; des FHEM-ZWave-Devices steht. Weiterhin wird der Klartextname dieses Gerätes, der im Reading &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; angezeigt werden soll, festgelegt. Zudem wird der Dateiname der eigentlichen XML-Config-Datei für das ZWave-Gerät angegeben, der später informativ im Reading &amp;lt;code&amp;gt;modelConfig&amp;lt;/code&amp;gt; steht.&lt;br /&gt;
&lt;br /&gt;
Die Dateien &amp;quot;openzwave_deviceconfig.xml.gz&amp;quot; und &amp;quot;fhem_zwave_deviceconfig.xml.gz&amp;quot; enthalten in komprimierter Form die eigentlichen XML-Config-Dateien für die ZWave-Geräte. FHEM durchsucht beide Dateien nach der passenden XML-Config-Datei. Ist in beiden Dateien eine XML-Config für ein Gerät vorhanden, so werden die XML-Daten aus der &amp;quot;fhem_zwave_deviceconfig.xml.gz&amp;quot; bevorzugt.&lt;br /&gt;
&lt;br /&gt;
Falls ein ZWave-Gerät von FHEM nicht erkannt wird, bitte auf folgenden Seiten nachschauen, ob es schon XML-Config-Dateien gibt, die nur nicht in FHEM eingebunden sind:&lt;br /&gt;
# https://github.com/OpenZWave/open-zwave/tree/master/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner&lt;br /&gt;
# https://github.com/jeedom/plugin-openzwave/tree/master/ressources/openzwave/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner &lt;br /&gt;
# http://www.cd-jackson.com/index.php/zwave/zwave-device-database&lt;br /&gt;
Sofern auf den genannten Seiten Daten vorhanden sind, postet eine Aktualisierungsbitte mit genauem Link zur entsprechenden Seite im Forum ({{Link2Forum|Area=ZWave}}).&lt;br /&gt;
&lt;br /&gt;
Gibt es auf keiner der Seiten Infos zu dem Gerät, dann entsprechend https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices die XML-Config-Datei für das Gerät erstellen und unkomprimiert zusammen mit der zu ergänzenden Info für die Datei &amp;quot;openzwave_manufacturer_specific.xml&amp;quot; im Forum ({{Link2Forum|Area=ZWave}}) zur Verfügung stellen.&lt;br /&gt;
&lt;br /&gt;
=== Wie führt man eine Komplett-Sicherung der ZWave-Installation durch? ===&lt;br /&gt;
Zu einer Komplett-Sicherung der ZWave-Konfiguration gehören:&lt;br /&gt;
&lt;br /&gt;
1. [[Backup]] der FHEM-Installation &lt;br /&gt;
::&#039;&#039;&#039;und&#039;&#039;&#039;&lt;br /&gt;
2. Backup des NVRAM des Controllers&lt;br /&gt;
&lt;br /&gt;
Es genügt nicht nur die FHEM-Installation/Konfiguration zu sichern, da der Controller im NVRAM Daten über HomeID, NodeIDs usw. speichert, die in der FHEM-Installation nicht enthalten sind und auch nicht durch FHEM rekonstruierbar sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
zu 2.) Backup des NVRAM des Controllers&lt;br /&gt;
&lt;br /&gt;
Einige Controllerhersteller bieten eine eigenständige Software zum Backup/Restore an (siehe Hinweise zu den Controllern unter [[#Autocreate_des_Gateways]]).&lt;br /&gt;
&lt;br /&gt;
FHEM kann mit den ZWDongle-Befehlen &amp;lt;code&amp;gt;backupCreate&amp;lt;/code&amp;gt; das NVRAM der Controller sichern und mit &amp;lt;code&amp;gt;backupRestore&amp;lt;/code&amp;gt; zurückschreiben. Da das Speicherlayout des NVRAM unter anderem von Controller-Hersteller, SDK und Firmwareversion abhängig sein kann, sollte man die Sicherung und Wiederherstellung des eigenen Controllers (auf eigenes Risiko) testen und sinnvollerweise einen gleichen Ersatzcontroller wie den Controller des Produktivsystem besitzen. Erfolgreiche Sicherung/Wiederherstellung wurde im Forum von den ZWavePlus-Controllern UZB1 (256k), Razberry (256k), Vision ZU 1401-5 EU (128k)und AEOTEC Z-Stick Gen5 (256k) berichtet.&lt;br /&gt;
(Weitergehende Infos - neben der {{Link2CmdRef}} - im Forum: {{Link2Forum|Topic=52364}}, {{Link2Forum|Topic=52914}}, {{Link2Forum|Topic=53023}})&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich zur Fortentwicklung der ZWave-Module beitragen? ===&lt;br /&gt;
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten ZWave-Geräten im Forum mitteilen&lt;br /&gt;
* Codeschnipsel und Ideen im Forum posten&lt;br /&gt;
* Fehler und Probleme im Forum melden&lt;br /&gt;
* [[How_to_write_a_patch|Patches]] für 00_ZWDongle.pm und 10_ZWave.pm erstellen&lt;br /&gt;
* Wiki: Ergänzungen und Korrekturen vornehmen; neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen&lt;br /&gt;
&lt;br /&gt;
=== Wie wird ein fehlendes Kernelmodul (Fritzbox) eingebunden? ===&lt;br /&gt;
Auf der Fritzbox (und evtl. auch anderen Systemen) muss sichergestellt werden, dass das Kernelmodul für das Gateway geladen wird. Ansonsten scheitert die Einbindung des Gateways in FHEM.&lt;br /&gt;
&lt;br /&gt;
Für den Aeon Labs Z-Stick muss beispielsweise auf der Fritzbox das Kernelmodul &amp;lt;code&amp;gt;cp2101.ko&amp;lt;/code&amp;gt; geladen werden.&lt;br /&gt;
Diese Datei ist bei einer [[FHEM und FritzBox 7390]] Installation über das Image von [http://www.fhem.de fhem.de] bereits enthalten.&lt;br /&gt;
Um den Aeon Labs Z-Stick zu verwenden, muss dieses Kernelmodul vor oder beim Starten des FHEM-Servers geladen sein. Dies erreicht man durch einen Eintrag in der Datei &amp;lt;code&amp;gt;startfhem&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Zeile kann direkt unterhalb der modprobe Anweisungen eingefügt werden.&lt;br /&gt;
 insmod $home/lib/cp2101.ko&lt;br /&gt;
&lt;br /&gt;
Nach einem FHEM-Neustart sollte das Gateway (der USB Stick) nun erkannt werden.&lt;br /&gt;
&lt;br /&gt;
=== Wie ist der Aufbau der Z-Wave Messages bzw. wie finde ich bei einem Sendefehler die NodeId des Empfängers heraus? ===&lt;br /&gt;
&lt;br /&gt;
Es könnte natürlich hin und wieder vorkommen, dass man im FHEM-Log folgende Fehler vorfindet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ZWDongle_ProcessSendStack: no ACK, resending message 010a00130603320110259277&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall gab es aus irgendeinem Grund einmalig das Problem, dass der Empfang einer Nachricht vom Empfänger nicht bestätigt wurde. &lt;br /&gt;
Will man dem auf die Spur kommen, so wäre es natürlich von Vorteil, die NodeId des Empfängers herauszufinden. Also muss man sich die Message näher anschauen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;010a00130603320110259277&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 01: data to controller&lt;br /&gt;
* 0a: length of msg&lt;br /&gt;
* 00: ?&lt;br /&gt;
* 13: ZW_SEND_DATA&lt;br /&gt;
* 06: NodeId&lt;br /&gt;
 &lt;br /&gt;
* 03: length of msg&lt;br /&gt;
* 32: Command Class 32 (METER, siehe %zwave_class in 10_ZWave.pm)&lt;br /&gt;
* 01: METER get scale command&lt;br /&gt;
* 10: scale parameter&lt;br /&gt;
 &lt;br /&gt;
* 25: send flags, explorer frames on&lt;br /&gt;
* 92: callbackId (um ACK zu identifizieren)&lt;br /&gt;
* 77: checkSum&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hat der Z-Wave-Controller 01 eine Nachricht an die NodeId 06 geschickt, welche vom Node nicht bestätigt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Z-Wave Components|!]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hue&amp;diff=29065</id>
		<title>Hue</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hue&amp;diff=29065"/>
		<updated>2019-01-14T09:55:10Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* HUE-Bridge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;{{Infobox Modul&lt;br /&gt;
|Name=HUEBridge&lt;br /&gt;
|ModPurpose=Anbindung Bridge des Philips Hue Lighting System&lt;br /&gt;
|ModType=d&lt;br /&gt;
&amp;lt;!-- |ModCategory= (noch?) nicht verwendet --&amp;gt;&lt;br /&gt;
|ModCmdRef=HUEBridge&lt;br /&gt;
|ModForumArea=Beleuchtung&lt;br /&gt;
|ModTechName=30_HUEBridge.pm&lt;br /&gt;
|ModOwner=Andre ([http://forum.fhem.de/index.php?action=profile;u=430 Forum] / [[Benutzer Diskussion:justme|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=HUEDevice&lt;br /&gt;
|ModPurpose=Ansteuerung Geräte des Philips Hue Lighting System über HUEBridge&lt;br /&gt;
|ModType=d&lt;br /&gt;
&amp;lt;!-- |ModCategory= (noch?) nicht verwendet --&amp;gt;&lt;br /&gt;
|ModCmdRef=HUEDevice&lt;br /&gt;
|ModForumArea=Beleuchtung&lt;br /&gt;
|ModTechName=31_HUEDevice.pm&lt;br /&gt;
|ModOwner=Andre ([http://forum.fhem.de/index.php?action=profile;u=430 Forum] / [[Benutzer Diskussion:justme|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HUE-Bridge ==&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung in fhem ===&lt;br /&gt;
Die Einrichtung ist wirklich einfach. Mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define Wiesollesheißen HUEBridge eu.re.ip.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird die Bridge eingebunden. Dann einfach auf den runden Knopf in der Mitte der Bridge drücken und sie wird von FHEM erkannt. Die drei Lampen des Starterkits werden automatisch erkannt und sind ansteuerbar -&amp;gt; fertig!&lt;br /&gt;
&lt;br /&gt;
WICHTIG: danach in FHEM einmal die Konfiguration speichern damit der Pairing-Key gesichert wird. Sonst muss beim nächsten FHEM-Neustart das Pairing erneut durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Eine ausführliche Anleitung mit Bildern zudem unter: http://www.meintechblog.de/2014/11/philips-hue-so-klappt-die-integration-in-fhem/&lt;br /&gt;
&lt;br /&gt;
Falls die Hue Bridge resetet wurde bleibt der Status auf &amp;quot;paired&amp;quot; und geht nicht mehr auf connected. Um das paring erneut durchzuführen muss das Attribut &amp;quot;key&amp;quot; gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
=== Nonblocking ===&lt;br /&gt;
Wenn man möchte, dass die Versuche, die HUEBridge zu kontaktieren, FHEM nicht blockieren, sollte man &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;attr &amp;lt;HUEBridge_Name&amp;gt; httpUtils 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
setzen.&lt;br /&gt;
&lt;br /&gt;
== HUE-Device ==&lt;br /&gt;
Als Gerät können alle Hue und LightLink kompatiblen Modelle verwendet werden. Dies sind unter anderem:&lt;br /&gt;
*HueBulbs (E27, GU10, Lux, White, ...)&lt;br /&gt;
*Hue Beyond und Phoenix&lt;br /&gt;
*Friends of Hue LightStrips und LivingColors Bloom&lt;br /&gt;
*LivingColors ab gen2&lt;br /&gt;
*LivingColors Bloom, Iris und Aura&lt;br /&gt;
*LivingWhites Energiesparlampen&lt;br /&gt;
*LivingWhites Leuchtenadapter&lt;br /&gt;
*LivingWhites Bulbs&lt;br /&gt;
*[[HUE_Dimmer_Switch|Hue Tap und Hue Dimmer]] (mit Einschränkungen)&lt;br /&gt;
*dresden elektronik Vorschaltgeräte&lt;br /&gt;
*OSRAM LIGHTIFY Lampen (an der Hue Bridge angelernt)&lt;br /&gt;
&lt;br /&gt;
Diese sind jeweils über eine Bridge (HueDevice) steuerbar. Die LivingColors und LivingWhites Geräte sind vorher mit Hilfe einer LivingColors oder LivingWhites Fernbedienung an der Bridge anzulernen.&lt;br /&gt;
&lt;br /&gt;
Es werden auch alle HUE Sensoren unterstützt. Diese werden aber nicht per autocreate angelegt sondern müssen manuell definiert werden. Hier ist auf ein passendes polling Intervall zu achten. Siehe: [[HUE_Dimmer_Switch|HUE Dimmer Switch]]. Das [[Hue#RaspBee|RaspBee]] Gateway unterstützt auch ein PushAPI über das Sensoren ohne polling eingebunden werden können.&lt;br /&gt;
&lt;br /&gt;
=== Grundlagen - Farbmodelle ===&lt;br /&gt;
Ein HueDevice kann per set-Befehl über unterschiedliche Farbmodelle gesteuert werden. In der folgenden Tabelle ist dargestellt, welche Werte-Kombinationen sinnvoll sind:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Farbmodell !! Bestandteile !! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| xyY || x- und y-Koordinate im Farbraum, Y ist die Helligkeit || &amp;lt;code&amp;gt; set bulb1 xy 0.4595,0.4105 : bri 220 &amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| hue,sat,bri || Farbwert, Sättigung und Helligkeit || &amp;lt;code&amp;gt; set bulb1 hue 14922 : sat 144 : bri 220 &amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ct || Farbwert über Farbtemperatur || &amp;lt;code&amp;gt; set bulb1 color 2600 &amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| rgb || Farbbestandteile rot, grün und blau || &amp;lt;code&amp;gt; set bulb1 rgb FFC698 &amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Zur Regelung der Helligkeit sind die Befehle &#039;&#039;bri&#039;&#039; und &#039;&#039;pct&#039;&#039; gleichwertig. &#039;&#039;bri&#039;&#039; hat den Bereich 0..254, &#039;&#039;pct&#039;&#039; 0..100 .&amp;lt;br&amp;gt;&lt;br /&gt;
Das Modul lässt die Mischung von Angaben aus unterschiedlichen Farbmodellen technisch zu, jedoch sind diese nicht immer sinnvoll.&lt;br /&gt;
&lt;br /&gt;
=== Darstellung im Webfrontend ===&lt;br /&gt;
Wenn man die SVG Icons verwendet ist es sinnvoll, das Attribut color-icons zu setzen. Mit &amp;lt;code&amp;gt;attr HUEDevice1 color-icons 2&amp;lt;/code&amp;gt; werden z.B. die Farben und der Dimmzustand der Lampe als Icon dargestellt.&lt;br /&gt;
Damit das ganze funktioniert, müsst ihr auch noch das &amp;lt;code&amp;gt;attr WEB iconPath fhemSVG:openautomation:default&amp;lt;/code&amp;gt; setzen.&lt;br /&gt;
&lt;br /&gt;
== RaspBee &amp;amp; ConBee ==&lt;br /&gt;
Das HUEBridge Modul unterstützt auch die ZigBee Gateway Module RaspBee und ConBee von Dresden Elektronik über die zugehörige deCONZ Software und die Wireless Light Control WebApp und die Phoscon WebApp (kommt zusammen mit deConz). Die hierzu erhältlichen Funk-Vorschaltgeräte sind noch nicht getestet sollten aber auch funktionieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im {{Link2Forum|Topic=80985|LinkText=Forum}} gibt es eine Betaversion der HUE Module, die das deCONZ PushAPI über Websockets unterstützen. Sensoren müssen hier nicht mehr gepollt werden.&lt;br /&gt;
&lt;br /&gt;
Mittlerweile funktioniert die Einbindung der RaspBee und ConBee Module auf einem sehr einfachen Weg. Dieser ist in  {{Link2Forum|Topic=95288|LinkText=Forum}} zusammengefasst. Zusätzliche Plugins sind nicht mehr nötig.&lt;br /&gt;
&lt;br /&gt;
== HUE auf der Fritzbox ==&lt;br /&gt;
Da auf der FB standardmäßig kein JSON installiert ist, muss dies nachinstalliert werden:  Man lädt das JSON-Paket http://search.cpan.org/CPAN/authors/id/M/MA/MAKAMAKA/JSON-2.53.tar.gz, packt es aus und kopiert den Inhalt vom &amp;lt;b&amp;gt;lib-Verzeichnis&amp;lt;/b&amp;gt; nach \fhem\lib\perl5\site_perl\5.12.2&lt;br /&gt;
&lt;br /&gt;
== HUE auf der Synology Diskstation ==&lt;br /&gt;
Da auf der DS standardmäßig kein JSON installiert ist, muss dies nachinstalliert werden, die Anleitung dazu {{Link2Forum|Topic=19093|Message=224641|LinkText=hier}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:ZigBee Components]]&lt;br /&gt;
[[Kategorie:ZigBee]]&lt;br /&gt;
[[Kategorie:Lichteffektgeräte]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=LaCrosseGateway_V1.x&amp;diff=27735</id>
		<title>LaCrosseGateway V1.x</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=LaCrosseGateway_V1.x&amp;diff=27735"/>
		<updated>2018-08-20T21:16:05Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: z&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Wiki-Seite beschreibt ausschließlich das LaCrosseGateway V1.x, das auf dem ESP8266 basiert.&amp;lt;br/&amp;gt;&lt;br /&gt;
Für das LaCrosseGateway32 [https://forum.fhem.de/index.php?topic=70338.0] das auf dem ESP32 basiert, wird es eine eigene Seite geben.{{Randnotiz|RNText=Dokumentationsstand Version 1.27}}&lt;br /&gt;
&lt;br /&gt;
Das LaCrosseGateway (hier und im Forum auch mit LGW abgekürzt) erfüllt den gleichen Zweck wie ein [[JeeLink|JeeLink USB-Stick]] und zwar das Empfangen, Abfragen und Steuern von funkbasierten LaCrosse Sensoren und Aktoren, die im 868 MHz FSK Sendeverfahren arbeiten (OOK-Sendeverfahren (433 Mhz) wird nicht unterstützt). Die Verarbeitung der Daten und Steuerung der Aktoren erfolgt mithilfe von FHEM, das als zentrale Steuereinheit dient. &lt;br /&gt;
Der signifikante Unterschied zu einem JeeLink USB-Stick ist der Betrieb über Wireless LAN ([https://de.wikipedia.org/wiki/Wi-Fi WiFi]). &lt;br /&gt;
Das Herzstück des LaCrosse-Gateways besteht aus einem ESP8266-12E/F. Das LaCrosseGateway ist aufgrund des hohen Stromverbrauchs nicht für den Akkubetrieb geeignet.&lt;br /&gt;
&lt;br /&gt;
Der Einsatz eines WiFi-LaCrosse-Gateways bietet folgende Vorteile:&lt;br /&gt;
*Kann an eine Stelle platziert werden, an der alle Sensoren optimal empfangen werden, dafür ist nur Strom (5V/1A USB Netzteil) und [https://de.wikipedia.org/wiki/Wi-Fi WiFi] Access Point erforderlich&lt;br /&gt;
*Im Minimalausbau nur zwei Bauteile NodeMCU DEVKIT 1.0 + RFM69 (siehe Bauteile) nötig&lt;br /&gt;
*Alternativ am USB-Port wie ein JeeLink verwendbar&lt;br /&gt;
*Einsatz von on board Sensoren / Aktoren (siehe [[#Unterstützte Sensoren und Aktoren | Unterstützte Sensoren und Aktoren]]) möglich&lt;br /&gt;
&lt;br /&gt;
Hinweis: Die Anbindung in FHEM kann zwar noch mit dem JeeLink-Modul erfolgen, aber es ist sinnvoll, auf das LaCrosseGateway-Modul (36_LaCrosseGateway.pm) umzustellen, da dieses eine bessere Unterstützung für die Funktionen des LGW bietet.&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
==Bauteile==&lt;br /&gt;
Für das WiFi-LaCrosse-Gateway werden folgende Bauteile verwendet:&lt;br /&gt;
*[Option 1] [http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family#esp-12-e_q ESP8266 ESP-12E Modul].&amp;lt;br /&amp;gt;Diese Variante eignet sich für Projekte für die eine kleine Bauform benötigt wird.&amp;lt;br /&amp;gt;Für die Inbetriebnahme, insbesondere für das Aufbringen der Firmware, muss das Modul an ein [[Medium:Lgw USB2Serial Adapter.jpg|USB2Serial-Adapter]], angeschlossen werden. Für diese Variante sind Lötkenntnisse erforderlich. &lt;br /&gt;
*[Option 2] [https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg NodeMCU DEVKIT 1.0 (oder 2.0)]ist die Inbetriebnahme einfacher, da alles für das Aufbringen der Firmware bereits vorhanden ist und kein Löten nötig ist.&amp;lt;br /&amp;gt;{{Link2Forum|Topic=45594|Message=430183|LinkText=Hinweis:}} Folgende Devkits werden nicht &amp;quot;offiziel&amp;quot; unterstützt, da ungetestet, können aber durchaus in bestimmten Fällen verwendet werden:&lt;br /&gt;
** V0.9 (da ungetestet, bekommt man aber kaum noch zu kaufen)&lt;br /&gt;
** V3.0 - passt nicht auf die Platine von PeMue, ist größer als das 2.0. Auf der Rückseite steht &amp;quot;Lolin&amp;quot;.&lt;br /&gt;
** Devkits mit einem CH340 USB converter (da ungetestet und teils falsche Bauform und von der USB-Anbindung her teils problematisch)&lt;br /&gt;
*[Option 3] Alternativ zu einem Devkit 1.0 kann auch ein [http://www.wemos.cc/Products/d1_mini.html &amp;quot;WeMOS D1 mini&amp;quot;] eingesetzt werden. Vorteil bei diesem Kit ist die kleine Bauform bei gleichem Funktionsumfang wie das DEVKIT 1.0.&lt;br /&gt;
*[Option 4] ESP8266-07 auf einem DEVKIT 1.0. für den Betrieb mit einer externen Wifi Antenne.&lt;br /&gt;
**&#039;&#039;Hinweis:&#039;&#039; Der ESP-07 hat einen 25Q80 1M flash Chip. Dieser ist für den Betrieb mit der LaCrosseGateway Firmware geeignet, für ein OTA-Update ist es jedoch zu wenig. Aus diesem Grund muss/kann dieser auf 4M flash umgebaut werden. Weitere Informationen und Details zum Umbau sind im {{Link2Forum|Topic=45594|Message=448307|LinkText=Forenthread (Gehäuse-Variante)}} beschrieben.&lt;br /&gt;
*[Optional] RFM69CW - Für das Senden und Emfangen funkbasierte LaCrosse Aktoren und Sensoren&lt;br /&gt;
*[Optional] On board Sensoren (siehe [[#Unterstützte Sensoren und Aktoren | Unterstützte Sensoren und Aktoren]])&lt;br /&gt;
*[Optional] SC16IS750 Zur Bereitstellung der seriellen Schnittstelle, da die GPIOs (GPIO1 / GPIO3) DEVKIT&#039;s V1.0 von FTDI verwendet werden und damit nicht genutzt werden können.&lt;br /&gt;
*[Optional] OLED-Display SSD1306 I2C zur Darstellung von Daten (Bootvorgang, on board Sensoren, Inhalte aus FHEM)&lt;br /&gt;
*[Optional] [[#MCP23008|MCP23008]] zur Bereitstellung (Konfigurierbar) von digitalen 8 Ein- Ausgängen oder Sonderfunktion (OLED)&lt;br /&gt;
*[Optional] Nextion Touch Display zur Darstellung von verschiedenen Informationen oder zum Schalten von Aktoren. &lt;br /&gt;
*Steckbrett (inkl. Kabel/Widerstände)/Lochrasterplatine (Lötkolben, Lötzinn, Widerstände etc.)) / [[#Platine|PeMue Platine]]&lt;br /&gt;
&lt;br /&gt;
==Schaltung==&lt;br /&gt;
===Variante: Devkit 1.0 Minimum===&lt;br /&gt;
[[Datei:lgw_Schaltplan_Devkit_minimum.png|400px|thumb|left|Variante: Devkit 1.0]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Variante: Devkit 1.0 Maximalausbau===&lt;br /&gt;
[[Datei:lgw_Schaltplan_Devkit_full.png|400px|thumb|left|Variante: FTDI]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Variante: Platine (PeMue)===&lt;br /&gt;
siehe hier: {{Link2Forum|Topic=45594|LinkText=Thread}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Siehe [[#Erweiterungsmöglichkeiten | Erweiterungsmöglichkeiten]].&lt;br /&gt;
&lt;br /&gt;
===MCP23008=== &lt;br /&gt;
I2C Adresse 0x27 -&amp;gt; A0,A1,A2 = 3.3V&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;             &lt;br /&gt;
               |-------\/-------|&lt;br /&gt;
    LGW D1     |1 SCL     VDD 18|  LGW 3.3V &lt;br /&gt;
    LGW D2     |2 SDA     GP7 17|  PB7   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |3 A2      GP6 16|  PB6   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |4 A1      GP5 15|  PB5   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |5 A0      GP4 14|  PB4   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |6 RES     GP3 13|  PB3   --/ --- GND  or Output&lt;br /&gt;
               |7 NC      GP2 12|  PB2   --/ --- GND  or Output&lt;br /&gt;
               |8 INT     GP1 11|  PB1   --/ --- GND  or Output&lt;br /&gt;
    LGW GND    |9 VSS     GP0 10|  PB0   --/ --- GND  or Output&lt;br /&gt;
               |----------------|&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Nextion Display===&lt;br /&gt;
Angeschlossen wird das Display wie folgt:&lt;br /&gt;
GPIO0: TXD -&amp;gt; Nextion RXD&lt;br /&gt;
GPIO2: RXD -&amp;gt; Nextion TXD&lt;br /&gt;
&lt;br /&gt;
Das Display benötigt eine 5V Spannungsversorgung, diese kann vom VIN des DevKit&#039;s abgegriffen werden. Vom Betrieb mit 3.3V wird abgeraten.&lt;br /&gt;
Ein level shifter für RXD/TXD ist nicht nötig.&lt;br /&gt;
&lt;br /&gt;
==Aufbau auf einem Steckbrett==&lt;br /&gt;
[[Datei:lgw_Steckbrett.png|600px|thumb|left|LaCrosseGateway Aufbau auf einem Steckbrett]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Der Sender und Empfänger RFM12, der auf dem Steckbrett zu sehen ist, wird nicht mehr unterstützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Platine==&lt;br /&gt;
PeMue (vielen Dank) hat {{Link2Forum|Topic=45594|LinkText=hier}} eine Platine (7,1cm x 5,0cm) für das LaCrosseGateway entworfen (Stand 05.2016).&lt;br /&gt;
&lt;br /&gt;
===Oberseite===&lt;br /&gt;
[[Datei:lgw_Platine_Oberseite.jpg|400px|thumb|left|LaCrosseGateway Platine Oberseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Unterseite===&lt;br /&gt;
[[Datei:lgw_Platine_Unterseite.jpg|400px|thumb|left|LaCrosseGateway Platine Unterseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Devkit 1.0 bestückt Oberseite===&lt;br /&gt;
[[Datei:Lgw_Platine_Devkit_oberseite.png|400px|thumb|left|LaCrosseGateway Platine Oberseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Devkit 1.0 bestückt Unterseite===&lt;br /&gt;
[[Datei:lgw_Platine_Devkit_unterseite.png|400px|thumb|left|LaCrosseGateway Platine Unterseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ESP8266-12E bestückt Oberseite===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_oberseite.png|400px|thumb|left|(1) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280 und DHT22]]&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_oberseite_2.jpg|490px|thumb|left|(2) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280]]&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_oberseite_2_inkl_GE.jpg.jpg|325px|thumb|left|(2) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280 inkl. Gehäuse]]&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Platine (Bild (1)) ist mit einem LM75 Sensor bestückt. Diese Bestückung macht zusammen mit einem BME280 keinen Sinn, es handelt sich hierbei um eine Entwicklungsplatine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===ESP8266-12E bestückt Unterseite===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_unterseite.png|400px|thumb|left|(1) LaCrosseGateway Platine Unterseite]]&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_unterseite_2.jpg|415px|thumb|left|(2) LaCrosseGateway Platine Unterseite mit 2 x RFM69CW, BME280]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Platine bestücken (Hinweise und Tipps)===&lt;br /&gt;
*Auf der Platine (Version 1.0) ist für das RFM69CW-Modul eine Markierung (zwei Quadrate) aufgedruckt, die den Chip und den Quarz symbolisieren. Wenn man den RFM69CW so drauflötet, wie abgebildet, ist er falsch rum drauf.&amp;lt;br /&amp;gt;Es muss darauf geachtet werden, wo auf dem RFM69CW die &amp;quot;Ant&amp;quot; Beschriftung steht, dieser Lötpunkt muss auf die Platine an den Punkt &amp;quot;1&amp;quot; ausgerichtet werden. Zur Sicherheit bitte den [[#Variante: Platine (PeMue)|Schaltplan]] konsultieren und die genaue Position ermitteln.&amp;lt;br&amp;gt;&#039;&#039;&#039;Für die Platine V1.1 wurde das korrigiert.&#039;&#039;&#039;&lt;br /&gt;
*Die Antennenlänge für das RFM69CW beträgt 82 mm. Dafür möglichst eindrähtigen Leiter (aus Kupfer) verwenden.&lt;br /&gt;
&lt;br /&gt;
==Erweiterungsmöglichkeiten==&lt;br /&gt;
Das LaCrosseGateway kann optional mit verschiedenen Komponenten erweitert werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Erweiterungen sind möglich:&lt;br /&gt;
*es kann ein eigener Prozessor (mit eigener Firmware) angeschlossen werden, der Daten empfängt und diese dem LGW übergibt.&lt;br /&gt;
*es kann z.B. ein NanoCUL angeschlossen werden, dessen serielle Schnittstelle transparent auf einem Port im Web bereitgestellt wird.&lt;br /&gt;
*es kann ein vierter und fünfter RFM69CW angeschlossen werden, diese können alles, was die bisherigen drei auch können.&lt;br /&gt;
*es kann ein aktiver Piezo Summer (Piezo Buzzer) angeschlossen (an GPIO7 des SC16IS750) werden, um von FHEM aus das LaCrosseGateway einen Alarm ausgeben zu lassen. Hinweis: Falls der Strom von 10mA, den die Ausgänge liefern, nicht reicht, ist noch eine Transistor-Schaltstufe vorzusehen.&lt;br /&gt;
&lt;br /&gt;
Alle diese Daten stellt das LaCrosseGateway per WiFi an FHEM zu, dort wird es von den entsprechenden Modulen (LaCrosseGateway, LaCrosse, PCA301, ...) weiterverarbeitet.&lt;br /&gt;
&lt;br /&gt;
Alle Komponenten werden automatisch erkannt, sofern angeschlossen.&lt;br /&gt;
Für die Realisierung der o.g Möglichkeiten wird ein [http://www.aliexpress.com/item/1x-Breakout-Board-for-SC16IS750-I2C-SPI-to-UART-IC/1327351219.html?spm=2114.30010308.3.38.HxdznQ&amp;amp;ws_ab_test=searchweb201556_9,searchweb201602_2_10034_507_10020_10001_10002_10017_10010_10005_10011_10006_10021_10003_10004_10022_10009_10008_10018_10019,searchweb201603_6&amp;amp;btsid=97b30f2b-e937-426b-8202-de585dd7ee97 SC16IS750] verwendet.&lt;br /&gt;
&lt;br /&gt;
Der SC16IS750 wird per I2C an das LaCrosseGateway angeschlossen und bietet eine serielle Schnittstelle und 8 Digital I/Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auf dieser Basis sind momentan folgende Erweiterungen möglich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===SubProzessor===&lt;br /&gt;
Der SubProzessor dient dazu, dass mit einem eigenen Sketch Daten erfasst werden können, ohne sich um die ganze Nummer, die das LGW macht (WiFi, Kommunikation mit FHEM, Frontend, OTA, ...), kümmern zu müssen.&lt;br /&gt;
Ferner ermöglicht es die Implementierung von eigenen Projekten, dabei werden die zeitkritischen Abläufe des LGWs nicht beeinträchtig.&lt;br /&gt;
&lt;br /&gt;
An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini)&lt;br /&gt;
Entweder ein 3.3V / 8MHz oder ein 5V / 16MHz, der aber dann auch mit 3.3V betrieben wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Alle LaCrosseGateway Komponenten laufen ausschließlich mit &#039;&#039;&#039;3.3V&#039;&#039;&#039;, aus diesem Grund dürfen keine &#039;&#039;&#039;5V&#039;&#039;&#039; Komponenten angeschlossen werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Firmware flashen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Firmware kann über das LGW auf den SubProzessor (Voraussetzung: Arduino hat einen bootloader) geflasht werden.&lt;br /&gt;
&lt;br /&gt;
Dazu wird sie auf das LGW hochgeladen (&amp;lt;nowiki&amp;gt;http://&amp;lt;LGW-IP&amp;gt;/ota/addon.hex&amp;lt;/nowiki&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Das LGW nimmt den Upload entgegen, wandelt das Intel-Hex in binary um und schickt es per STK500-Protokoll an den Arduino.&lt;br /&gt;
&lt;br /&gt;
Falls ein OLED angeschlossen ist, wird sogar ein progress angezeigt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorgehen Firmware flashen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Firmware kann z.B. mithilfe von &amp;quot;curl&amp;quot; mit dem nachfolgendem Befehl hochgeladen werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;curl --http1.0 -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@/myFolder/LGW-Addon.ino.hex; filename=addon.hex&amp;quot; http://192.168.31.211/ota/addon.hex&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; fielname=addon.hex im Beispiel darf nicht verändert werden, nur /myFolder/LGW-Addon.ino.hex und die IP-Adresse wird entsprechend angepasst.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Upload dauert etwas, danach sollte bei Erfolg vom LGW ein Protokoll zurückgeschickt bekommen, der wie folgt aussieht:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;Start receiving &#039;addon.hex&#039;&lt;br /&gt;
File: /addon.hex Size: 21417&lt;br /&gt;
Starting flash&lt;br /&gt;
Sending sync&lt;br /&gt;
Enter program mode&lt;br /&gt;
Binary size is:7608&lt;br /&gt;
Leave Program Mode&lt;br /&gt;
Flash finished&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem SubProzessor können die entsprechenden Daten auf zwei mögliche Arten am LGW übermittelt werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;KeyValueProtokoll (KVP):&#039;&#039;&#039;&lt;br /&gt;
Format:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;KV &amp;lt;Type&amp;gt; &amp;lt;Address&amp;gt; &amp;lt;Key&amp;gt;=&amp;lt;Value&amp;gt;,&amp;lt;Key&amp;gt;=&amp;lt;Value&amp;gt;,&amp;lt;Key&amp;gt;=&amp;lt;Value&amp;gt;, ...&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Beispiel:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;KV DHT 01 Temperature=21.5,Humidity=62&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das LGW übermittelt die Daten als KVP an FHEM und dort entsteht ein KVP Device, das die Daten darstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LaCrosse:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Format:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;LC &amp;lt;Address&amp;gt; T=&amp;lt;Temperature&amp;gt;,H=&amp;lt;Humidity&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;LC 9F T=21.5,H=62&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;LC 9F T=21.5&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Das LGW setzt die Werte in das LaCrosse Protokoll um (wie z.B. ein TX29DTH) und schickt sie an FHEM.&lt;br /&gt;
In FHEM entsteht ein LaCrosse Device (autocreate, LaCrossePairForSec ...), als ob es ein LaCrosse Sensor wäre.&lt;br /&gt;
&lt;br /&gt;
Das [https://forum.fhem.de/index.php?action=dlattach;topic=43672.0;attach=48914 LGW-Addon.ino] ist ein einfaches Beispiel, das diese Technik veranschaulicht.&lt;br /&gt;
Es bindet den geliebten DHT22 an und sendet ihn als LaCrosse-Sensor (über das LGW) an FHEM und es misst die Spannung und sendet sie zusammen mit der UpTime des SubProzessors als KVP&lt;br /&gt;
&lt;br /&gt;
Der umrandete Bereich [[#Addon Schaltung |Schaltung - &amp;quot;Example&amp;quot;]] &amp;quot;Example&amp;quot; ist das zu [https://forum.fhem.de/index.php?action=dlattach;topic=43672.0;attach=48914 LGW-Addon.ino] passende Beispiel.&lt;br /&gt;
&lt;br /&gt;
==Unterstützte Sensoren und Aktoren==&lt;br /&gt;
Alle Sensoren und Aktoren, die auch vom &amp;quot;LaCrosse Arduino&amp;quot; Sketch unterstützt werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
(siehe [[JeeLink#Unterst.C3.BCtzte_Sensoren_und_Aktoren_incl._Wetterstation_WS_1600JeeLink|vom JeeLink unterstützte LaCrosse Sensoren und Aktoren]])&lt;br /&gt;
&lt;br /&gt;
Zusätzlich zu LaCrosse werden auch die folgenden Geräte unterstützt:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung !! Datenrate !! Sonstiges !! Funktion !! Hinweise&lt;br /&gt;
|-&lt;br /&gt;
| PCA301 ||868950 kHz (868,970 und 868,990 ) 6.631 kbps || extern || Energiemess-Steckdose (Unterstützt werden bis zu 50 Dosen) || &lt;br /&gt;
|-&lt;br /&gt;
| EC3000 ||868.300 kHz mit 20.000 kbps|| extern || Energiemess-Steckdose || &lt;br /&gt;
|-&lt;br /&gt;
| RFM69CW || || on board || Zum Empfangen und Senden von Sensor/Aktor Daten.|| Hinweise DHT22 beachten.&lt;br /&gt;
|-&lt;br /&gt;
| BME280 || || on board || Temperatur, Feuchte und Druck || Falls das verwendete Breakout bereits PullUp-Widerstände für SDA und SCL enthält, sind diese nicht mehr zusätzlich nötig.&lt;br /&gt;
|-&lt;br /&gt;
| BMP180 || || on board || Temperatur und Druck || Falls das verwendete Breakout bereits PullUp-Widerstände für SDA und SCL enthält, sind diese nicht mehr zusätzlich nötig.&lt;br /&gt;
|-&lt;br /&gt;
| LM75 || || on board|| Temperatur || &lt;br /&gt;
|-&lt;br /&gt;
| DHT22 || ||on board|| Temperatur und Feuchte. || Kann anstatt RFM69 Radio#3 eingesetzt werden.&lt;br /&gt;
|-&lt;br /&gt;
| SC16IS750 || I2C Adresse: 0x90 ||on board|| OI Erweiterung || &lt;br /&gt;
|-&lt;br /&gt;
| OLED SSD1306|| I2C Adresse: 0x3C || on board || OLED Display||&lt;br /&gt;
|-&lt;br /&gt;
| MCP23008|| I2C Adresse: 0x27 || on board || Input/Output Port Expander||&lt;br /&gt;
|-&lt;br /&gt;
| Piezo Summer |||| on board ||Piezo Buzzer||&lt;br /&gt;
|-&lt;br /&gt;
| Nextion Display ||(Max.) 57600 baud || on board ||Touch Display||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle direkt am LGW anschließbare Sensoren werden automatisch erkannt, wenn sie vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Sie werden in folgender Reihenfolge verwendet:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn ein BME280 vorhanden ist, wird dieser verwendet und sonst nichts, da man dann bereits Temperatur, Feuchte und Druck hat.&lt;br /&gt;
&lt;br /&gt;
Ist kein BME280 vorhanden, wird geschaut, ob ein BMP180 vorhanden ist. Falls ja, haben wir Druck und Temperatur.&lt;br /&gt;
&lt;br /&gt;
Dann wird geschaut, ob ein DHT22 vorhanden ist. Wenn ja, wird er zusätzlich verwendet, aber vom BMP180 dann nur noch der Druck.&lt;br /&gt;
&lt;br /&gt;
Temperatur und Feuchte vom DHT22, dass dieses Wertepaar von einem Sensor stammt.&lt;br /&gt;
&lt;br /&gt;
Wenn kein BMP180 und kein BME180 da ist, sondern nur ein DHT22, dann hat man Temperatur und Feuchte.&lt;br /&gt;
&lt;br /&gt;
Wenn nichts vorhanden ist (also keiner der bisher genannten Sensoren), wird, falls vorhanden, der LM75 verwendet.&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
== Release Notes ==&lt;br /&gt;
*[https://forum.fhem.de/index.php/topic,43672.0.html LaCrosseGateway Release Notes im Forum]&lt;br /&gt;
&lt;br /&gt;
==Funktionsumfang==&lt;br /&gt;
*Access Point für die Konfiguration&lt;br /&gt;
*Konfiguration über WEB-Frontend (Erreichbar per &#039;&#039;&amp;lt;nowiki&amp;gt;http://IP-Adresse oder Hostname/setup&amp;lt;/nowiki&amp;gt;&#039;&#039; auf Port 80 )&lt;br /&gt;
**SSID und Password (Die Konfiguration wird im EEPROM gespeichert und bei zukünftigen Neustarts verwendet.)&lt;br /&gt;
**Statische IP-Adresse anstatt DHCP&lt;br /&gt;
**Hostname&lt;br /&gt;
*Vom LaCrosseGateway FHEM-Modul über IP-Adresse:Port oder Hostname:Port ansprechbar. Der Port ist konfigurierbar.&lt;br /&gt;
*Unterstützt bis zu 5 x RFM69CW (Keine Unterstützung für RFM12) &lt;br /&gt;
*On board und externe Sensoren und Aktoren ([[#Unterstützte Sensoren und Aktoren |Unterstützte Sensoren und Aktoren]])&lt;br /&gt;
*Betrieb nur per USB möglich, als ob es ein JeeLink wäre&lt;br /&gt;
*FHEM Anbindung&lt;br /&gt;
*Log im Web-Frontend&lt;br /&gt;
*Firmware OTA-Update (Firmware-Over-the-Air-Update per FHEM)&lt;br /&gt;
*Erweiterungsmöglichkeiten per SC16IS750 (Für Buzzer und für weitere zwei RFM69)&lt;br /&gt;
*SubProzessor (An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini))&lt;br /&gt;
*Serial bridge (Optional kann die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitgestellt werden)&lt;br /&gt;
*Software Serial Bridge - Stellt die Soft Serial Schnittstelle transparent auf einem TCP Port.&lt;br /&gt;
&lt;br /&gt;
==Sourcecode==&lt;br /&gt;
Der Quellcode des LaCrosse Gateways befindet sich [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/arduino/36_LaCrosseGateway.zip im FHEM SVN Repository (contrib)].&lt;br /&gt;
&lt;br /&gt;
==Firmware Download==&lt;br /&gt;
Die [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] befindet sich im [https://svn.fhem.de/trac/browser/trunk/fhem FHEM SVN Repository] und wird per FHEM Update verteilt. Neue Version der [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] wird im {{Link2Forum|Topic=43672|LinkText=FHEM Forum &amp;quot;LaCrosse Gateway&amp;quot;}} angekündigt und der Funktionsumfang bzw. die Änderungen beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nach einem FEHM-Update alternativ auch: &#039;&#039;&amp;lt;FHEM-Installations-Verzeichnis&amp;gt;/FHEM/firmware/JeeLink_LaCrosseGateway.bin&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Firmware aufspielen==&lt;br /&gt;
Wie bei einem JeeLink muss auch für das LaCrosseGateway die Firmware aufgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Das [https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg NodeMCU DEVKIT 1.0] hat eine CP2102 UART Bridge implementiert, dafür muss ein CP2102 Treiber installiert sein.&lt;br /&gt;
&lt;br /&gt;
Bei einem ESP8266-12E Modul kann die Firmware mithilfe eines Seriell-USB-Konverters aufgespielt werden.&lt;br /&gt;
&lt;br /&gt;
===Windows/Mac/Linux per &amp;quot;esptool&amp;quot;===&lt;br /&gt;
Verifiziert und getestet wurde dieses Vorgehen auf Windows (Windows 10), Mac (El Capitan):&lt;br /&gt;
&lt;br /&gt;
1) Das [https://github.com/igrr/esptool-ck/releases esptool 0.4.6] für die entsprechende Plattform herunterladen.&lt;br /&gt;
&lt;br /&gt;
2) Zum Aufspielen der Firmware, muss ein Befehl nach der folgenden Syntax ausgeführt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
esptool -vv -cp [Port] -cb 921600 -ca 0x00000 -cd nodemcu -cf [Pfad zur Firmware (bin-File)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[Port]&#039;&#039;&#039; und &#039;&#039;&#039;[Pfad zur Firmware (bin-File)]&#039;&#039;&#039; müssen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel (Mac/Linux):&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 921600 -ca 0x00000 -cd nodemcu -cf JeeLink_LaCrosseGateway.bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das esptool ist nicht sonderlich stabil. Es kommt vor, dass es manchmal den upload nicht startet oder nicht durchbekommt. In diesem Fall hilft es den Vorgang, auch mehrmals, zu wiederholen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Linux/Debian/Ubuntu &amp;quot;esptool v2.1&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Installieren:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get esptool&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel mit neuer Syntax bei esptool v2.1:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; sudo esptool --port /dev/ttyUSB0 write_flash 0x00000 JeeLink_LaCrosseGateway.bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows per &amp;quot;nodemcu-flasher&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
1) [https://github.com/nodemcu/nodemcu-flasher/raw/master/Win32/Release/ESP8266Flasher.exe Espressif Flashtool] downloaden und entpacken:&lt;br /&gt;
&lt;br /&gt;
2) [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] downloaden&lt;br /&gt;
&lt;br /&gt;
3) FlashTool starten und wie folgt einstellen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:nodemcu-flasher_1.png|450px|thumb|left|Firmware auswählen]]&lt;br /&gt;
| [[Datei:nodemcu-flasher_2.png|450px|thumb|left|Flash Parameter (Advanced Tab) wie abgebildet einstellen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
4) COM-Port auswählen und den Flashvorgang starten (Button: &#039;&#039;&#039;Flash(F)&#039;&#039;&#039;) ...&lt;br /&gt;
[[Datei:nodemcu-flasher_3.png|450px|thumb|left|COM Port auswählen und das &amp;quot;Flashen&amp;quot; initiieren]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Flashen sollte über die serielle Ausgabe des ESP der Start und das Öffen des AccessPoints zu sehen sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Geschwindigkeit von 921600 baud ist nicht auf jedem Rechner (besonders auf virtualisierten Systemen) machbar. In diesem Fall die Baudrate auf 57600 reduzieren.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Funktionsweise==&lt;br /&gt;
Während des Startvorgangs versucht sich das LaCrosseGateway in einem WLAN anzumelden. Dazu muss es eine SSID und das entsprechende Passwort kennen.&lt;br /&gt;
&lt;br /&gt;
Beim ersten Start (nach dem initialen Aufspielen der Firmware) sind diese Informationen noch unbekannt. Aus diesem Grund wird folgende Strategie verfolgt:&lt;br /&gt;
&lt;br /&gt;
Wenn es sich in keinem WLAN anmelden kann, dann öffnet es einen Access Point mit der SSID &amp;quot;LaCrosseGateway_&#039;&#039;&#039;xxxxxx&#039;&#039;&#039;&amp;quot;, wobei &#039;&#039;&#039;xxxxxx&#039;&#039;&#039; die eindeutige Chip-ID des ESP8266 ist.&lt;br /&gt;
&lt;br /&gt;
Der Access Point wird aus Sicherheitsgründen nach 15 Minuten wieder geschlossen.&lt;br /&gt;
Innerhalb dieser 15 Minuten kann man sich mit dem Access Point verbinden. Der Access Point vergibt (per DHCP) IP-Adressen aus dem Netzwerk 192.168.222.0. Anschließend kann über die LaCrosseGateway Konfigurationsseite [http://192.168.222.1/setup http://192.168.222.1/setup] die initiale Konfiguration vorgenommen werden.&lt;br /&gt;
Die Konfiguration wird im EEPROM gespeichert und bei zukünftigen Neustarts verwendet.&lt;br /&gt;
Die Konfigurationsseite ist auch im &amp;quot;Normalbetrieb&amp;quot; (ohne Access Point) über die Adresse http://&#039;&#039;seine aktuelle IP-Adresse&#039;&#039;/setup erreichbar.&lt;br /&gt;
&lt;br /&gt;
Wenn sich das LaCrosseGateway an dem konfigurierten WLAN anmelden konnte (es wartet max. 30 Sekunden auf einen connect) und von diesem per DHCP eine IP-Adresse erhalten hat, dann stellt es auf dieser Adresse den Port 81 zur Verfügung, über den in FHEM das LaCrosseGateway Modul senden und empfangen kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optische Darstellung der Initialisierung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Beim Start und der Initialisierung wird mit der Board-eigenen LED signalisieren, was gerade passiert:&lt;br /&gt;
*5 schnelle blinks direkt nach dem Start, als Zeichen, dass ein Reset stattgefunden hat&lt;br /&gt;
*Blinken im Sekundentakt, während versucht wird, sich mit einem WLAN zu verbinden.&lt;br /&gt;
*LED aus, wenn der Connect zu einem WLAN geklappt hat und dann vereinzeltes Blinken, wenn Daten an FHEM übermittelt werden&lt;br /&gt;
&lt;br /&gt;
== LaCrosseGateway einrichten ==&lt;br /&gt;
Für die Ersteinrichtung des LaCrosseGateways werden die SSID und das Passwort des WLAN-Routers benötigt. Ferner wird empfohlen auf dem WLAN-Router bzw. dem DHCP-Server eine IP-Adresse für das LaCrosseGateway zu reservieren. Für die Reservierung wird die MAC-Adresse des LaCrosseGateways benötigt, diese kann über die &amp;quot;Home&amp;quot;-Page des LaCrosseGateways ermittelt, alternativ von dem [[#Windows per &amp;quot;nodemcu-flasher&amp;quot; |NODEMCU Firmware Programmer]] (&#039;&#039;Reiter &amp;quot;Operation -&amp;gt; &amp;quot;STA MAC&amp;quot;&#039;&#039;) entnommen werden. &lt;br /&gt;
&lt;br /&gt;
Sofern diese Vorbereitungen getroffen wurden und alle Informationen vorliegen, kann das LaCrosseGateway eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;u&amp;gt;Für die Konfiguration sind folgende Schritte nötig:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Mit dem LaCrosseGateway Access Point &amp;quot;LaCrosseGateway_xxxxxx&amp;quot; verbinden (siehe [[#Funktionsweise |Beschreibung Funktionsweise]])&lt;br /&gt;
*Mithilfe eines Browsers die [http://192.168.222.1/setup LaCrosseGateway &amp;quot;Setup&amp;quot;-Page] öffnen&lt;br /&gt;
*SSID und das Password eintragen. Man kann zwei SSID/Passwort-Kombinationen mit jeweils einem Timeout konfigurieren. 120 bedeutet z.B. dass das LGW 120 Sekunden lang versucht, die SSID zu erreichen. Falls die erste SSID nach &amp;quot;Timeout&amp;quot; Sekunden nicht erreicht wurde, wird Timeout Sekunden lang versucht, die zweite SSID zu connecten.&lt;br /&gt;
*&#039;&#039;[Empfohlen]&#039;&#039; Das Frontend Passwort festlegen&lt;br /&gt;
*&#039;&#039;[Optional]&#039;&#039; Falls kein DHCP-Server zur Verfügung steht bzw. keine Reservierung erwünscht ist, dann muss die IP-Adresse / Netmask (Optional auch Gateway) eingetragen werden&lt;br /&gt;
*&#039;&#039;[Empfohlen]&#039;&#039; Hostnamen festlegen bzw. anpassen&lt;br /&gt;
*Alle Angaben mit dem Button &amp;quot;save and restart&amp;quot; bestätigen. Dabei werden die vorgenommen Einstellungen im EEPROM gespeichert und ein Neustart des LaCrosseGateways initiiert.&lt;br /&gt;
&lt;br /&gt;
Nach dem Neustart verbindet sich das LaCrosseGateway mit dem WLAN-Router. &lt;br /&gt;
&lt;br /&gt;
Anschließend kann mit der [[#Hinweise zum Betrieb mit FHEM |Inbetriebnahme in FHEM]] fortgefahren werden.&lt;br /&gt;
&lt;br /&gt;
==Firmware aktualisieren==&lt;br /&gt;
&lt;br /&gt;
Nachfolgend werden, neben der unter dem Punkt [[#Firmware aufspielen |Firmware aufspielen]] beschriebenen Möglichkeiten, weitere Möglichkeiten zur Aktualisierung der LaCrosseGateway [[LaCrosseGateway#Firmware Download|Firmware]] aufgezeigt.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Die Einstellungen des LaCrosseGateway werden dabei nicht gelöscht.&lt;br /&gt;
&lt;br /&gt;
=== Per FHEM (OTA-Update)===&lt;br /&gt;
Voraussetzungen:&lt;br /&gt;
&lt;br /&gt;
*Das LGW muss auf der IP-Adresse, die im LaCrosseGateway Modul definiert ist, erreichbar sein&lt;br /&gt;
*Es wird kein avrdude benötigt&lt;br /&gt;
*Das Attribut &amp;quot;flashCommand&amp;quot; spielt keine Rolle&lt;br /&gt;
&lt;br /&gt;
Die LaCrosseGateway Firmware kann von LaCrosseGateway Device (LaCrosseGateway Modul) aus mit &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway flash&amp;lt;/syntaxhighlight&amp;gt; aktualisiert werden.&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;myLaCrosseGateway&#039;&#039;&#039; muss bei Bedarf auf den Gerätenamen in FHEM angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das Update dauert ca. 30 Sekunden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Per FHEM (USB)===&lt;br /&gt;
Voraussetzungen:&lt;br /&gt;
Auf dem FHEM-Server muss Python und pyserial installiert sein. Die Installation kann z.B. so erfolgen:&lt;br /&gt;
*apt-get install python&lt;br /&gt;
*wget https://bootstrap.pypa.io/get-pip.py&lt;br /&gt;
*python get-pip.py&lt;br /&gt;
*pip install pyserial&lt;br /&gt;
&lt;br /&gt;
Das Attribut &amp;quot;mode&amp;quot; muss auf USB gesetzt sein: attr myLaCrosseGateway mode USB&lt;br /&gt;
&lt;br /&gt;
Der flash-Vorgang wird gestartet mit: set myLaCrosseGateway flash&lt;br /&gt;
&lt;br /&gt;
=== Per CURL ===&lt;br /&gt;
Voraussetzungen:&lt;br /&gt;
*[https://curl.haxx.se/download.html curl-Tool] installiert &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;curl --http1.0 -# -o ~output.txt -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@.\JeeLink_LaCrosseGateway.bin; filename=firmware.bin&amp;quot; http://192.168.31.211/ota/firmware.bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Firmwaredateiname (file=)&#039;&#039;&#039; und die &#039;&#039;&#039;IP-Adresse&#039;&#039;&#039; muss entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Per WEB OTA-Update (deprecated)===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;deprecated&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==LaCrosseGateway Web-Frontend==&lt;br /&gt;
===Staus-Wert RSSI===&lt;br /&gt;
Die WiFi Signalstärke (dBm) (-36 ist besser als -60)&lt;br /&gt;
&lt;br /&gt;
===Staus-Wert FramesPerMinute===&lt;br /&gt;
Dieser gibt an, wie viele frames von Sensoren in der letzten Minute erfolgreich empfangen, dekodiert und verarbeitet wurden.&lt;br /&gt;
Es eignet sich zur Überwachung, wenn weniger als ein Grenzwert empfangen wurde, dann kann ein Alarm (Benachrichtigung, Restart etc.) ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
===Staus-Wert ReceivedFrames===&lt;br /&gt;
Dieser Wert gibt an, wie viele seit dem Start des LGW empfangen wurden.&lt;br /&gt;
&lt;br /&gt;
===WiFi &amp;quot;Startup-delay&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Mit diesen Konfigurationsprameter kann eine Verzögerung (in Sekunden) definiert werden, bis das LGW nach einen Neustart einen ersten Verbindungsversuch zum WiFi Access Point (Router: Fritzbox etc.) startet.&lt;br /&gt;
&lt;br /&gt;
Eine Anpassung kann für den folgenden Fall sinnvoll sein:&lt;br /&gt;
&lt;br /&gt;
Nach einem Stromausfall benötigt ein WiFi Access Point (Router: Fritzbox etc.) in den meisten Fällen länger zum Starten als das LGW. In der default Einstellung führt das dazu, dass der LGW nach dem Starten versucht 30 Sekunden lang eine Verbindung zum AP herzustellen. Wenn keine Verbindung innerhalb dieser Zeit zustande kommt, dann gibt das LGW auf und macht seinen eigenen AP auf. Mit einer entsprechenden Verzögerung (Dauer bis der Router gestartet ist und der WiFi-AP zur Verfügung steht) kann sichergestellt werden, dass der AP gestartet ist und sich das LGW mit dem AP verbinden kann.&lt;br /&gt;
&lt;br /&gt;
===Internal Sensors &amp;quot;Sensor-ID&amp;quot;===&lt;br /&gt;
Bei Einsatz von mehr als einem LaCrosseGateway, muss die LaCrosse-ID, mit der die internen Sensoren des Gateways übermittelt werden, angepasst werden. &lt;br /&gt;
Hierbei ist darauf zu achten, dass die LaCrosse-ID nur einmal auf einer FHEM Instanz vorkommen darf. Die ID kann entweder Dezimal (211) oder Hex (0xD3) angegeben werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Detailinformationen:&#039;&#039;&#039;&#039;&#039; Wenn ein LGW interne Sensoren hat (BME280, BMP180, DHT22, ...) dann sendet es die Daten des Sensors so, als ob es eine Wetterstation wäre (WS 1600 Format) an das LGW. Bisher hat es dafür die Sensor-ID 0 verwendet. Wenn man mehrere LGWs an ein FHEM angebunden hat, dann mischen sich deren Sensor-Daten auf dem LaCrosse device mit der ID 0. Um das zu vermeiden, kann man nun konfigurieren, mit welcher Sensor-ID die internen Sensoren gesendet werden sollen und die beiden LGWs unterschiedliche konfigurieren.&lt;br /&gt;
&lt;br /&gt;
Die Anpassung der LaCrosse-ID hat keinerlei Einfluss auf die Daten, die von den Radios empfangen werden.&lt;br /&gt;
&lt;br /&gt;
===Internal Sensors &amp;quot;Altitude&amp;quot;===&lt;br /&gt;
Mit diesen Parameter kann die Höhe über NN konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
===Internal Sensors &amp;quot;Temperature-/Humidity-correction&amp;quot;===&lt;br /&gt;
Für Temperatur und Feuchte kann ein Korrekturwert angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Der Wert kann entweder ein Offset oder prozentual sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiele:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Korrekturwert !! Gemessen !! Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| -5 &lt;br /&gt;
| 20°C&lt;br /&gt;
| 15°C&lt;br /&gt;
|-&lt;br /&gt;
| +3&lt;br /&gt;
| 20°C&lt;br /&gt;
| 23°C&lt;br /&gt;
|-&lt;br /&gt;
| -10%&lt;br /&gt;
| 20°C&lt;br /&gt;
| 18°C&lt;br /&gt;
|-&lt;br /&gt;
| +20%&lt;br /&gt;
| 20°C&lt;br /&gt;
| 24°C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SC16IS750-Clone===&lt;br /&gt;
Wenn aktiviert, wird die I2C clock auf 100 kHz runtergenommen und&lt;br /&gt;
es wird an einigen Stellen etwas auf die Bremse getreten, dass ein SC16IS70-Clone, der langsamer&lt;br /&gt;
als echte Hardware ist, mitkommt.&lt;br /&gt;
Sollte man ohne zwingenden Grund nicht aktivieren.&lt;br /&gt;
&lt;br /&gt;
===Use MDNS=== &lt;br /&gt;
Legt fest, ob das LGW seine IP-Adresse per MDNS bekannt gibt. Dies ist nötig, wenn man einen Mac hat oder bei Windows einen Bonjour-Service laufen hat.&lt;br /&gt;
Dies ist beim Entwickeln sinnvoll, kann üblicherweise ausgeschaltet bleiben.&lt;br /&gt;
&lt;br /&gt;
===MCP23008=== &lt;br /&gt;
Konfigurationsmöglichkeit für die 8 IO Pins (siehe auch [[#Inbetriebnahme_von_MCP23008|Inbetriebnahme von MCP23008]]).&lt;br /&gt;
&lt;br /&gt;
===Serial bridge port und bridge baud===&lt;br /&gt;
Das LGW kann nun optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen.&lt;br /&gt;
Dazu gibt es die &amp;quot;Serial bridge port&amp;quot; und &amp;quot;Serial bridge baud&amp;quot; auf der &amp;quot;config&amp;quot;-Page des LGWs.&lt;br /&gt;
Das LGW überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
===Soft Serial Bridge===&lt;br /&gt;
Das LGW kann optional eine Soft serial bridge (Zuverlässig nur mit bis zu 57600 baud) transparent auf einem TCP Port bereitstellen.&lt;br /&gt;
Folgende Parameter können auf der LGW Setup-Page angepasst/konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Parameter !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Port&lt;br /&gt;
| Der Port, auf dem es angesprochen werden kann&lt;br /&gt;
|-&lt;br /&gt;
| Baud&lt;br /&gt;
| Die Baudrate für die Kommunikation&lt;br /&gt;
|-&lt;br /&gt;
| Nextion display&lt;br /&gt;
| Für den Betrieb eines Nextion Display muss diese Option aktiviert sein.&lt;br /&gt;
|-&lt;br /&gt;
| Add units&lt;br /&gt;
| Fügt an die Werte (Temp,Hum,Pres), die das LGW an das Display schickt, Einheiten an.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mithilfe des Soft serial bridge können verschiedene Geräte (nanoCUL, Nextion Display, etc.), welche per seriellen Schnitstelle kommunizieren können, in Betrieb genommen werden.&lt;br /&gt;
&lt;br /&gt;
===Statuswerte abrufen===&lt;br /&gt;
Mit http://&amp;lt;IP-des-LGW&amp;gt;/state können die Statuswerte, die das LGW-Frontend anzeigt, als XML zur Weiterverarbeitung abgerufen werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;LGW&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;UpTimeSeconds&amp;quot; Value=&amp;quot;107086&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;UpTimeText&amp;quot; Value=&amp;quot;1Tg. 5Std. 44Min. 46Sek. &amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;WIFI&amp;quot; Value=&amp;quot;NeverTellThem&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;MacAddress&amp;quot; Value=&amp;quot;18:FE:34:9A:6D:48&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;ChipID&amp;quot; Value=&amp;quot;10120520&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;ReceivedFrames&amp;quot; Value=&amp;quot;93593&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;FramesPerMinute&amp;quot; Value=&amp;quot;52&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/LGW&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Funktionsweise Log===&lt;br /&gt;
Das Log ist als Hilfsmittel bei der Fehlersuche gedacht z.B. um bei PCA301 zu verfolgen, wann wer was wie frägt und antwortet oder um zu schauen, ob irgend welche Sensoren überhaupt empfangen werden und die Daten an FHEM geliefert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:lgw_LogPage.png|600px|thumb|left|LaCrosseGateway Log ebfrontend]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Mit &amp;quot;Command&amp;quot; kann man Befehle an das LGW senden. Sie entsprechen dem, was man mit &amp;quot;set myLaCrosseGateway raw ...&amp;quot; aus FHEM schicken kann.&lt;br /&gt;
Die obere Liste enthält die Daten, die an FHEM übermittelt werden (bzw. würden, wenn sich ein FHEM auf das LGW verbunden hat)&lt;br /&gt;
Die untere Liste enthält debug-Informationen u.a. wird hier der letzte Systemstart aufgezeichnet.&lt;br /&gt;
Die verwendete SDK-Version und der letzte Reset-Grund werden ebenfalls ausgegeben&lt;br /&gt;
&lt;br /&gt;
Das Log kann per HTTP abgerufen werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;http://&amp;lt;LGW-IP&amp;gt;/getLogData&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;http://192.168.31.211/getLogData&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Ergebnis sieht wie folgt aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;DATA:OK 22 117 196 0 58 226 102 0 58 191 86 0 0 40 172 0 105 1 101 3 0 [75 C4 E2 66 00 00 BF 56 00 00 00 02 3B FC DC 00 69 01 65 4A A4 C4 F9 F2 4F 11 A4 F6 7C 03 A0 00 00 00 00 03 A0 38 09 21 27]&lt;br /&gt;
DATA:OK 9 11 130 4 173 125 [92 D5 97 7D 75]&lt;br /&gt;
DATA:OK EMT7110 84 81 8 207 0 36 0 1 1 199 1 [25 6A 54 51 40 02 00 24 C3 41 C7 9B]&lt;br /&gt;
SYS: AddOn: KV ADDON 01 Voltage=3.33,UpTime=4921&lt;br /&gt;
DATA:OK VALUES ADDON 01 Voltage=3.33,UpTime=4921&lt;br /&gt;
DATA:OK 9 38 1 4 67 65 [99 84 91 41 07]&lt;br /&gt;
DATA:OK 22 126 67 0 65 236 34 0 65 231 116 0 0 32 103 0 48 0 134 1 0 [7E 43 EC 22 00 00 E7 74 00 00 00 01 C7 AC D7 00 30 00 86 00 57 E4 69 1E 46 8E D4 68 C7 04 10 00 00 00 00 04 10 18 0A DC F7]&lt;br /&gt;
DATA:OK 9 36 1 4 128 61 [99 05 52 3D 96]&lt;br /&gt;
DATA:OK WS 0 4 4 185 255 255 255 255 255 255 255 255 255 0 3 252&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;DATA:&#039;&#039;&#039;&#039;&#039; für die obere Liste&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;SYS: &#039;&#039;&#039;&#039;&#039; für die untere Liste&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei jedem Aufruf werden die seit dem letzten Abruf neu aufgelaufenen Logeinträge geliefert.&lt;br /&gt;
Intern werden maximal 40 Einträge gepuffert (aber kein Ringpuffer, weil die ersten 40 mit dem Bootlog erhalten bleiben müssen)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039;&#039;&#039; Aus Performance- und Stabilitätsgründen sollten die Daten nicht zu häufig und nicht von zwei Instanzen gleichzeitig abgerufen werden.&lt;br /&gt;
&lt;br /&gt;
=Hinweise zum Betrieb mit FHEM=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voraussetzungen==&lt;br /&gt;
Es wird ein [[#LaCrosseGateway einrichten |vorkonfiguriertes]] LaCrosseGateway vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
Perl Modul: &#039;&#039;LWP::UserAgent&#039;&#039; - Dieses wird für das Firmware Update per FHEM LaCrosseGateway Modul benötigt.&lt;br /&gt;
Auf einem Raspberry Pi kann die Installation wie folgt durchgeführt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;sudo apt-get install libwww-perl&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
alternativ auch mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;sudo cpan LWP::UserAgent&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FHEM Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Ursprünglich wurde für das LaCrosseGateway das FHEM-Modul 36_JeeLink.pm verwendet. Da es aber inzwischen erhebliche Unterschiede zwischen dem JeeLink-LaCrosse-Sketch und dem LaCrosseGateway gibt, existiert seit Mitte November 2016 ein für das LaCrosseGateway spezialisiertes und optimiertes FHEM-Modul, das 36_LaCrosseGateway.pm.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses sollte anstatt dem 36_JeeLink.pm vorzugsweise verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_LaCrosseGeateway.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_KeyValueProtocol.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_LaCrosse.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_PCA301.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_EC3000.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_EMT7110.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_Level.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;42_Nextion.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
==Device Definition==&lt;br /&gt;
===WLAN===&lt;br /&gt;
Die Definition sieht dann wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;myLaCrosseGateway&amp;gt; LaCrosseGateway &amp;lt;IP-Adresse&amp;gt;:81&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;myLaCrosseGateway&amp;gt;&#039;&#039; kann bei Bedarf angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;IP-Adresse&amp;gt;&#039;&#039; muss entsprechend angepasst werden. Anstatt der IP-Adresse kann auch der Hostname vom LaCrosseGateway verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define myLaCrosseGateway LaCrosseGateway 192.168.22.33:81&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;IP-Adresse ermitteln:&amp;lt;/u&amp;gt; Das LaCrosseGateway heist per default Einstellung &amp;quot;&#039;&#039;LaCrosseGateway&#039;&#039;&amp;quot;, per ping auf den Hostnamen &#039;&#039;LaCrosseGateway&#039;&#039; kann die &amp;lt;IP-Adresse&amp;gt; ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
Wenn man das LGW über USB betreiben will, dann möchte man üblicherweise kein WiFi.&lt;br /&gt;
Um das WiFi zu deaktivieren gibt es zwei Möglichkeiten:&amp;lt;br&amp;gt;&lt;br /&gt;
1.) Man kann mit einen 10k pullup auf 3.3V an MOSI == GPIO13 == D7 &amp;quot;jumpern&amp;quot;, dass man kein wifi will. Wenn voranden, wird WiFi sofort beim Start deaktiviert.&amp;lt;br&amp;gt;&lt;br /&gt;
2.) Man kann WiFi auf der Setup-Page des LGW deaktivieren.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb via USB sieht die Definition wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;myLaCrosseGateway&amp;gt; LaCrosseGateway &amp;lt;USB-Port&amp;gt;@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;myLaCrosseGateway&amp;gt;&#039;&#039; kann bei Bedarf angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;USB-Port&amp;gt;&#039;&#039; muss entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: &amp;lt;code&amp;gt;define myLaCrosseGateway LaCrosseGateway /dev/ttyUSB0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;/dev/ttyUSB0&#039;&#039; Falls bereits mehrere USB Geräte angeschlossen sind muss der USB Port angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sind mehrere USB Devices am FHEM Server (z.B. RPI, Cubietruck etc.) in Betrieb, dann ist die Zuordnung über den USB-Port nicht zuverlässig. Die Ports werden u.a. in der Reihenfolge vergeben, in der die Geräte angeschlossen werden. Zuverlässiger und eindeutiger ist die Zuordnung über die Serial-ID.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl zeigt die Serial-ID der angeschlossenen USB-Devices an: &lt;br /&gt;
&amp;lt;code&amp;gt;ls -l /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Ausgabe:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;lrwxrwxrwx 1 root root 13 Mai 14 10:37 usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 -&amp;gt; ../../ttyUSB1&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Mai 30 11:27 usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -&amp;gt; ../../ttyUSB2&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Apr 16 14:52 usb-Silicon_Labs_ELV_USB-Modul_UM2102_EVFSRFF8COEXIKOT-if00-port0 -&amp;gt; ../../ttyUSB0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In diesem Fall ist u.a. ein DEVKIT 1.0 mit der Serial-ID &#039;&#039;usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -&amp;gt; ../../ttyUSB2&#039;&#039; angeschlossen.&lt;br /&gt;
&lt;br /&gt;
Auf Basis dieser Informationen lässt sich folgende Definition erstellen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define myLaCrosseGateway LaCrosseGateway /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0@57600&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wichtig ist es, die Übertragungsrate von 57600 bit/s anzugeben.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man das LGW ohne WiFi betreibt, dann muss man natürlich auf die Annehmlichkeiten des Web-Frontends verzichten.&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Fall kann man die Konfiguration, die man über das Web-Frontend machen würde, über die serielle Schnittstelle machen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set myLaCrosseGateway raw &amp;quot;SETUP ...&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das ... sind die gewünschten Einstellungen. Es müssen nicht alle Einstellungen gesendet werden sondern nur die, die man setzen will.&amp;lt;br&amp;gt;&lt;br /&gt;
Es werden nur die Einstellungen gesetzt und im EEPROM gespeichert, es wird aber kein Reboot ausgelöst&amp;lt;br&amp;gt;&lt;br /&gt;
Einen Reboot kann man mit &amp;quot;set myLaCrosseGateway raw 8377e&amp;quot; auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
Mehrere Einstellungen können durch Semikolon getrennt angegeben werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;code&amp;gt;set myJeeLink213 raw &amp;quot;SETUP UseWiFi false; IO0 OLED mode=thp; IO1 OLED Off; CorrT -2.5; ISID 213&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann auf der seriellen Schnittstelle die aktuellen Einstellungen abrufen.&lt;br /&gt;
Das command ist 1g&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;set myLaCrosseGateway raw 1g&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Man bekommt dann so etwas zurück:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;SETUP ctSSID esesidee; ctPASS PasstWort; staticIP 192.168.31.211; staticMask 255.255.255.0; staticGW 192.168.31.1;&lt;br /&gt;
HostName LGW211; StartupDelay 1; ISID 0xD3; Altitude 220; CorrT 0; CorrH 0; DataPort1 81; DataPort2 82; SerialBridgePort 85; &lt;br /&gt;
SerialBridgeBaud 38400; UseMDNS true; IO0 OLED mode=s; IO1 OLED mode=thp; IO2 OLED On; IO3 OLED Off; oledStart 120; KVInterval 10; &lt;br /&gt;
KVIdentity 211; PCA301Plugs 036180=3,03A094=1,035FF1=6;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reconnect==&lt;br /&gt;
Falls das LaCrosseGateway nicht erreichbar ist (Kein Strom/Stromausfall, WLAN Verbingung unterbrochen etc.), bricht das LaCrosseGateway Device die Kommunikation ab. Über das entsprechende &#039;&#039;timeout&#039;&#039; Attribut kann das LaCrosseGateway device so konfigurert werden, dass es in regelmässigen Abständen erneut versucht eine Verbindung mit dem LaCrosseGateway herzustellen.&lt;br /&gt;
&lt;br /&gt;
Konfigurationsempfehlung für &#039;&#039;timeout&#039;&#039; = 120 Sekunden und &#039;&#039;checkInterval&#039;&#039; = 30 Sekunden:&lt;br /&gt;
&lt;br /&gt;
Der Wert kann in FHEM wie folgt gesetzt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway timeout 120,30&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;myLaCrosseGateway&#039;&#039;&#039; muss auf den Gerätenamen in FHEM angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Während das LaCrosseGateway eine WiFi-Verbindung aufbaut, benötigt das LaCrosseGateway-Modul je nach Konfiguration einige Zeit bis es einen neuen Connect auf den Datenport des LaCrosseGateway versucht. Das Finden der optimalen Werte erfordert etwas Geduld, es kann auch schon mal ein, zwei Minuten Dauern, bis die ersten Daten in FHEM übertragen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Erklärung der Timeout Werte:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
120,30 prüft alle 30 Sekunden, ob seit mindestens 120 Sekunden keine Daten mehr übermittelt wurden und falls dem so ist, macht es einen Reset auf der Schnittstelle, was die Verbindung zum LaCrosseGateway neu aufbaut. Das bedeutet, in so einem Fall ist die Verbindung nach spätestens 150 Sekunden wieder hergestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Attribut wird lediglich eine neue Verbindung aufgebaut, dabei wird das LaCrosseGateway nicht resetet.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Liste aller initCommands==&lt;br /&gt;
Eine aktuelle Liste der initCommands, die man von FHEM, Terminalprogramm oder Web-Frontend aus senden kann, sind auf dem Web-Frontend &amp;quot;Help&amp;quot;-Page&amp;quot; des LaCrosseGateways (ab V1.17) aufgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://IP-Adresse/setup http://IP-Adresse oder Hostname/help]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;n&amp;gt;a       set to 0 if the blue LED bothers&lt;br /&gt;
&amp;lt;n&amp;gt;c       use one of the possible data rates (for transmit on RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;d       set to 1 to see debug messages&lt;br /&gt;
&amp;lt;8266&amp;gt;e    Clear EEPROM&lt;br /&gt;
&amp;lt;n&amp;gt;f       initial frequency in kHz (5 kHz steps, 860480 ... 879515)&lt;br /&gt;
&amp;lt;n&amp;gt;g       get information (1g: get current settings)&lt;br /&gt;
&amp;lt;n&amp;gt;h       Altitude&lt;br /&gt;
&amp;lt;n,f,i&amp;gt;i   Init PCA for Radio #&amp;lt;n&amp;gt; to &amp;lt;m&amp;gt;MHz and &amp;lt;i&amp;gt;s Interval&lt;br /&gt;
&amp;lt;n&amp;gt;m       bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;M       bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #2)&lt;br /&gt;
&amp;lt;n&amp;gt;#&amp;lt;x&amp;gt;m   bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #x)&lt;br /&gt;
&amp;lt;n&amp;gt;o       set HF-parameter e.g. 1,4o for RFM69&lt;br /&gt;
&amp;lt;n&amp;gt;p       payload on the serial port (1: all, 2: only undecoded data)&lt;br /&gt;
&amp;lt;n&amp;gt;r       use one of the possible data rates (for RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;R       use one of the possible data rates (for RFM #2)&lt;br /&gt;
&amp;lt;n&amp;gt;#&amp;lt;x&amp;gt;r   use one of the possible data rates (for RFM #x)&lt;br /&gt;
&amp;lt;x,x,...&amp;gt;s Send to PCA301 (must be 10 byte)&lt;br /&gt;
&amp;lt;x,x,...&amp;gt;S Send to CustomSensor&lt;br /&gt;
&amp;lt;n&amp;gt;t       0=no toggle, else interval in seconds (for RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;T       0=no toggle, else interval in seconds (for RFM #2)&lt;br /&gt;
&amp;lt;n&amp;gt;#&amp;lt;x&amp;gt;t   0=no toggle, else interval in seconds (for RFM #x)&lt;br /&gt;
v          show version&lt;br /&gt;
&amp;lt;n&amp;gt;w       0=no wifi&lt;br /&gt;
&amp;lt;n&amp;gt;z       set to 1 to display analyzed frame data instead of the normal data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LaCrosseGateway zurücksetzen==&lt;br /&gt;
Das LaCrosseGateway kann auf die &amp;quot;Werkseinstellungen&amp;quot; zurückgesetzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch werden alle auf der Setup-Page gemachten und im EEPROM gespeicherten Einstellungen verworfen.&lt;br /&gt;
Der Befehl dazu lautet: &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;8266e&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Er kann mit einem Terminalprogramm, von FHEM aus mit &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set &amp;lt;myLaCrosseGateway&amp;gt; raw 8266e&amp;lt;/syntaxhighlight&amp;gt; oder von der Log-Page des LGW gesendet werden.&lt;br /&gt;
&lt;br /&gt;
Danach startet das LGW wieder als Access Point [[#LaCrosseGateway einrichten|initiale Konfiguration]] und die Konfiguration kann über die &amp;quot;Setup-Page&amp;quot; neu vorgenommen werden kann.&lt;br /&gt;
&lt;br /&gt;
==Sensoren/Aktoren anlegen==&lt;br /&gt;
&lt;br /&gt;
Voraussetzung: FHEM autocreat ist aktiv.&lt;br /&gt;
Die [http://fhem.de/commandref.html#autocreate FHEM autocreate Funktion] ist aktiv.&lt;br /&gt;
&lt;br /&gt;
Die erkannnten Sensoren und Aktoren werden automatisch erkannt und in FHEM angelegt, sobald Daten empfangen werden.&lt;br /&gt;
&lt;br /&gt;
Empfangene Sensoren werden nur hinzugefügt werden, wenn LaCrossePairForSec auf 120 Sekunden gesetzt wird.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von BMP180 / BME280==&lt;br /&gt;
Damit die Daten der o.g. Sensoren in FHEM zur Verfügung stehen, muss zunächst das FHEM-Device angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Das Anlegen kann automatisch erfolgen, dafür muss der folgende FHEM Befehl ausgeführt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann sollte von [http://fhem.de/commandref.html#autocreate FHEM autocreate Funktion] ein LaCrosse Device mit der [[#Sensor-ID | Sensor-ID]] (Default Wert: 0) angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das FHEM Device manuell angelegt werden:&lt;br /&gt;
Die &#039;&#039;&#039;&#039;&#039;ID&#039;&#039;&#039;&#039;&#039;, mit der das LGW die internen Sensoren sendet, entspricht der konfugurierten [[#Sensor-ID | Sensor-ID]] (Default Wert: 0)&lt;br /&gt;
Es verhält sich so, als ob es eine Wetterstation (wie z.B. WS 1600) wäre.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define &amp;lt;name&amp;gt; LaCrosse 00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Anchließend muss eine Höhenkorrektur (Grund: der Luftdruck wird immer bezogen auf NN angegeben, der Sensor liefert aber den Absolutdruck) mit dem command &#039;&#039;&#039;&#039;&#039;h&#039;&#039;&#039;&#039;&#039; in den initCommands vorgenommen werden, dies erfolgt mit dem FHEM Befehl:&lt;br /&gt;
&lt;br /&gt;
Beispiel: 220h legt 220m über NN fest.&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 220h&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Besser:&#039;&#039;&#039; Alternativ kann die Höhe über NN auch auf der Setup-Page des LGW gesetzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Das hat den Vorteil, dass sofort vom Start an der normalisierte Luftdruck an FHEM gesendet wird und nicht erst, wenn die initCommands von FHEM geschickt wurden.&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme Piezo Summer==&lt;br /&gt;
&lt;br /&gt;
Der Piezo Summer wird in FHEM über das LaCrosseGateway Modul angesteuert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiele:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
set myLaCrosseGateway raw 1,60b   -&amp;gt; beep ... beep ... beep                      60 Sekunden lang&lt;br /&gt;
set myLaCrosseGateway raw 2,300b  -&amp;gt; beep beep ... beep beep ... beep beep      300 Sekunden lang&lt;br /&gt;
set myLaCrosseGateway raw 3,120b  -&amp;gt; beep beep beep ... beep beep beep ...      120 Sekunden lang&lt;br /&gt;
set myLaCrosseGateway raw 0b      -&amp;gt; beep stoppen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von RFM69CW==&lt;br /&gt;
Mit dem LaCrosseGateway ist es möglich mehrere RFM69CW einzusetzten. Nachfolgend wird die Konfiguration des Senders/Empfängers erläutert.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Default Werte&amp;quot; (wenn keine Angaben definiert werden) für die data rate sind wie folgt definiert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
#1 (Erste)  =&amp;gt; 17241&lt;br /&gt;
#2 (Zweite) =&amp;gt; 9579&lt;br /&gt;
#3 (Dritte) =&amp;gt; 8842&lt;br /&gt;
#4 (Vierte) =&amp;gt; 20000&lt;br /&gt;
#5 (Fünfte) =&amp;gt; 17241&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Detailinformationen sind auch auf der LaCrosseGateway &amp;quot;Help&amp;quot;-Page zu finden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center&amp;quot;|&#039;&#039;&#039;&amp;lt;Datenrate&amp;gt;#&amp;lt;Radio-Nummer&amp;gt;&amp;lt;command&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;m t:&amp;lt;/code&amp;gt;    || &#039;&#039;Toggle-Steuerung&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r:&amp;lt;/code&amp;gt;    || &#039;&#039;Datarate&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;f:&amp;lt;/code&amp;gt;    || &#039;&#039;Frequenz&#039;&#039; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiele:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
!Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 0#1r v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| DataRate des ersten RFM setzen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 8842#3r v &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| DataRate des dritten RFM setzen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868300#2f v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Frequenz des zweiten RFM setzten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868295#3f v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Frequenz des dritten RFM setzten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 17241#1r 8842#2r v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zwei RFM69CW mit DataRate 17241 und 8842&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 3#1m 20#1t 8842#2r v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zwei RFM69CW mit 20 Sekunden DataRate 17241 toggle 9579 plus 8842 permanent&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 220h 868295#1f 868310#2f v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zwei RFMs Frequenz 868295 und 868310 sowie Höhe über NN&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868295#1f 3#1m 20#1t 2,868950,60i 8842#3r 220h 0a v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Drei RFMs Frequenz 868295 / PCA301 / WS1600 sowie Höhe über NN &amp;lt;br&amp;gt;Radio 1 auf 868295 MHz und Toggle 9K/17K mit 20 Sekunden&amp;lt;br&amp;gt;Radio 2 für PCA301 initialisiert&amp;lt;br&amp;gt;Radio 3 macht 8842 kbps für die WS 1600&amp;lt;br&amp;gt;Höhe 220m über NN&amp;lt;br&amp;gt;Activity LED aus&amp;lt;br&amp;gt;v am Ende ruft die neu gesetzen Daten vom LaCrosseGateway ab, damit sie in FHEM LaCrosseGateway Modul aktualisiert werden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Es ist wichtig ein &amp;quot;v&amp;quot; an das Ende eines initCommands anzuhängen. Damit wird veranlasst, dass das LaCrosseGateway seine neuen Einstellungen an FHEM zurückmeldet.&lt;br /&gt;
==Inbetriebnahme von PCA301==&lt;br /&gt;
PCA301 im LGW funtioniert ähnlich dem PCA301 Sketch, allerding mit einigen systembedingten Abweichungen.&lt;br /&gt;
&lt;br /&gt;
Per default ist PCA301 nicht aktiviert, es muss in den initCommands aktiviert werden. Dazu gibt es das command &amp;quot;&#039;&#039;&#039;&#039;&#039;i&#039;&#039;&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;RadioNr&amp;gt;,&amp;lt;Frequenz&amp;gt;,&amp;lt;Poll-Intervall&amp;gt;i&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Initialisierung kann auch erneut geschickt werden, um z.B. das Poll-Intervall zu ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Wichtig:&#039;&#039;&#039;&#039;&#039; Es darf nur &#039;&#039;&#039;&amp;quot;ein&amp;quot;&#039;&#039;&#039; Radio für PCA301 initialisiert sein, nicht mehrere. Das PCA301 initialisierte Radio ist dediziert für PCA301 zuständig, es kann nicht zwischen anderen Protokollen (z.B. LaCrosse) toggeln.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;Poll-Interval&#039;&#039; sollte nicht extrem heruntergesetzt (nicht unter eine Minute) werden, da PCA301 sonst LaCrosse verdrängt. PCA301 hat hörere Priorität, da es bei der Kommunikation&lt;br /&gt;
mit den Dosen keine Antworten überhören darf.&lt;br /&gt;
&lt;br /&gt;
Unter Umständen muss die Frequenz etwas angepasst werden, wenn das Radio und/oder die Dosen nicht genau auf 868950 liegen.&lt;br /&gt;
Das ist daran zu erkennen, dass entweder gar keine Antwort von den Dosen oder verzögerte Antwort ankommt.&lt;br /&gt;
Werte von 868960 oder 960970 haben in manchen Fällen Abhilfe gebracht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiele:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | &amp;lt;code&amp;gt;attr myLaCrosseGateway initCommands 2,868950,120i v&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initialisiert den zweiten RFM auf 868950 MHz und setzt das Poll-Intervall auf 120 Sekunden&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myLaCrosseGateway initCommands 1,868950,120i 3#2m 20#2t 220h 0a v&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initialisierung eines LaCrosseGateways mit zwei Radios für TX29, TX35, PCA301 und BMP180/BME280.&amp;lt;br&amp;gt;Das erste Radio macht PCA301 und das zweite toggelt 17241/9579 im 20 Sekunden Takt um TX29 und TX35 zu empfangen&amp;lt;br&amp;gt;der BMP180/BME280 liefert den Druck für 220m Meereshöhe&amp;lt;br&amp;gt;die LED ist deaktiviert&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ablauf:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nachdem PCA301 initialisiert ist, lauscht das LaCrosseGateway auf der entsprechenden Frequenz.&lt;br /&gt;
Sobald eine Dose empfangen wurde, wird sie in der Konfiguration (EEPROM) dauerhaft registriert und ab sofort gepollt.&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;Polling&#039;&#039; funtioniert so, dass für jede Dose geschaut wird, wann sie zuletzt empfangen wurde und wenn das länger als das konfigurierte Interval zurück liegt,&lt;br /&gt;
dann wird sie abgefragt. Wenn sonst etwas (Basisstation, anderes FHEM) die Dose abgefragt hat und das LaCrosseGateway die Antwort gehört hat, dann gilt das auch als&lt;br /&gt;
empfangen und es wird kein eigener Poll für die Dose ausgelöst. &#039;&#039;Das Zusammenspiel mit einer echten Basisstation konnte bisher nur grob simuliert werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;Pairing&#039;&#039; (also die Vergabe eines Kanals) funktioniert wie im PCA301-Sketch, button an der Dose &#039;&#039;&amp;quot;3 Sekunden&amp;quot;&#039;&#039; drücken, dann vergibt das LaCrosseGateway den nächsten freien Kanal.&lt;br /&gt;
Dosen, die bereits einen Kanal haben, können durch ein Schalten vor Ort, an das LaCrosseGateway angelernt werden. Das LaCrosseGateway erkennt sie und nimmt sie in die&lt;br /&gt;
Konfiguration auf. Falls die Dose bereits mit einem anderen Kanal bekannt war, wird der Kanal im LaCrosseGateway aktualisisert.&lt;br /&gt;
&lt;br /&gt;
Auf der Setup-Page im Web-Frontend (http://IP-Adresse oder Hostname/setup) des LaCrosseGateway kann die Liste der bekannten Dosen (ID=Kanal) eingesehen werden. Hinweis: Es sollten keine Änderungen in diesem Bereich vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn ein Kommando (Schalten, Daten abfragen, ...) an eine Dose gesendet wurde und keine Antwort kam, wird bereits im Sketch drei mal versucht, eine Antwort zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Das PCA301 Modul in FHEM funktioniert komplett wie bisher.&lt;br /&gt;
&lt;br /&gt;
Weiterführende Themen zum PCA301 sind im Wiki [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung]] und PCA301 FHEM Thread {{Link2Forum|Topic=11648|LinkText=JeeLink / PCA301 Thread}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Die Befehle, die der PCA301-Sketch kennt, gibt es im LaCrosseGateway nur teilweise:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Befehl (Beschreibung)!! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;quot;turn activity LED on or off&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;l &amp;quot;list known devices&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen, kann man nun im Web-Frontend sehen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;q &amp;quot;turn quiet mode on or off&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r &amp;quot;list recordings&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;s &amp;quot;send to plug&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;v &amp;quot;report version and configuration parameters&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;d, e, p &amp;quot;poll / turn a device on / off&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;h, +, -, # &amp;quot;modify and display RF12 Frequency register&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen, ersetzt durch das &amp;quot;i&amp;quot; command bzw. das bereits vorhandene &amp;quot;f&amp;quot; command&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von Energy Count 3000 (EC3000)==&lt;br /&gt;
Die EC3000 sendet auf 868.300 kHz mit 20.000 kbps. Dafür wurde eine neue data rate hinzugefügt.&lt;br /&gt;
Sie kann mit 3r oder 20000r gesetzt werden. Wenn diese data rate gesetzt wird, wird auch automatisch der RFM69 auf den Empfang von EC3000 uminitialisiert.&lt;br /&gt;
&lt;br /&gt;
EC3000 kann auch in einen data rate toggle mit einbezogen werden. Dazu gibt es nun das bit mit dem Wert 8 für 20.000 kbps&lt;br /&gt;
&lt;br /&gt;
Um EC3000 dediziert mit einem der drei RFMs zu empfangen muss man einfach die data rate des gewünschten RFM setzen. Beispiel initCommand:&lt;br /&gt;
20000#2r&lt;br /&gt;
&lt;br /&gt;
Um EC3000 in einen data rate toggle mit einzubeziehen muss im m command das 8-wertige bit gesetzt werden.&lt;br /&gt;
Wenn man z.B. mit dem zweiten Radio 17k Sensoren  (TX29...) und EC3000 empfangen soll (20 Sekunden toggle), wäre das initCommand:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 9#2m 20#2t v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von MCP23008==&lt;br /&gt;
Auf der LaCrosseGateway &amp;quot;config&amp;quot;-page kann für jeden der 8 IO Pins konfiguriert werden, ob es ein Input oder Output Pin ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Input&#039;&#039;&#039;: Eingang, wird per KVP an FHEM übermittelt. Einsatzzweck: z.B. Anschluß von Pushbuttons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output&#039;&#039;&#039;: Kann von FHEM aus gesetzt werden. Einsatzzweck: z.B. Anschluß von LEDs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel: &#039;&#039;Input =&amp;gt; Eingang, wird per KVP an FHEM übermittelt&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;OK VALUES LGPB 211 GP2=0,GP3=1,GP4=0,GP5=0,GP6=0,GP7=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel: &#039;&#039;Output =&amp;gt; Kann von FHEM aus gesetzt werden.&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;MCP GP0=1,GP1=0&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme Analogport==&lt;br /&gt;
Der Analogport A0 des ESP8266 wird als Reading im LaCrosseGatewayModul aufgeführt.&lt;br /&gt;
Um das zu aktivieren, muss man auf der Setup-Page des LGW die Option &amp;quot;Send analog values&amp;quot; ankreuzen.&lt;br /&gt;
Der Eingangsspannungsbereich von A0 ist 0V ... 1.0V, was zu einem Reading von 0 ... 1023 führt.&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von OLED-Display==&lt;br /&gt;
Es wird das 128x64 pixel 0.96&amp;quot; I2C Display mit dem SSD1306 controller und das 128x64 pixel 1.3&amp;quot; mit dem SH1106 controller unterstützt.&lt;br /&gt;
&lt;br /&gt;
Für die korrekte Darstellung auf dem 1.3&amp;quot; Display, muss die Checkbox 1.3&amp;quot; auf der Setup-Page aktiviert werden &lt;br /&gt;
&lt;br /&gt;
Hinweis: das 0.96&amp;quot; Display bekommt man auch in einer Varianten, die SPI unterstützt. Diese Variante kann nur nach einem Umbau verwendet werden. &lt;br /&gt;
&lt;br /&gt;
Der nachfolgende Funktionsumfang ist implementiert:&lt;br /&gt;
&lt;br /&gt;
*OLED ein- und ausschalten sowie das Senden von individuellen Texten über FHEM mithilfe des LaCrosseGateway-Moduls&lt;br /&gt;
*OLED Startverhalten konfigurierbar&lt;br /&gt;
*Übermittlung des Display Status im KVP&lt;br /&gt;
*Anzeige von Statusinformationen in der obersten Zeile mithilfe von Symbolen (siehe Abbildung - von links nach rechts)&lt;br /&gt;
**WiFI connect erfolgreich&lt;br /&gt;
**Ein FHEM hat sich auf einen DataPort connected&lt;br /&gt;
**Ein FHEM hat sich auf den Prozessor an der [[#Serial_transparent_bridge|uart bridge]] connected&lt;br /&gt;
**WiFi Signalstärke (dBm). Hinweis: -36 ist besser als -60&lt;br /&gt;
[[Datei:lgw_oled_statuszeile.png|400px|thumb|left|OLED Anzeige von Statusinformationen]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
*Darstellung von bis zu drei Texten und optional ein Symbol.&lt;br /&gt;
*Definition des Zeitintvervalls für das Umschalten zur nächsten Seite&lt;br /&gt;
*Zuweisung der Modes an die Ports des MCP23008 (Die Konfiguration erfolgt auf der &amp;quot;Setup&amp;quot;-Page)&lt;br /&gt;
*Fortschrittsanzeige beim Flashen eines an die serielle Schnittstelle des SC16IS750 angeschlossenen Arduinos (siehe SubProzessor und Serial transparent bridge)&lt;br /&gt;
&lt;br /&gt;
===OLED Start Modus===&lt;br /&gt;
Einstellungsmöglichkeit über die &amp;quot;Config&amp;quot;-Page wie sich das OLED nach einem Start verhalten soll.&lt;br /&gt;
Mögliche Optionen: on / off / Anzahl Sekunden, nach denen es ausgeht.&lt;br /&gt;
Zusätzlich kann der initiale Mode festgelegt werden (z.B. thp)&lt;br /&gt;
&lt;br /&gt;
===Modes===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Prefix !! Parameter !! Erläuterung &lt;br /&gt;
|-&lt;br /&gt;
| OLED mode= &lt;br /&gt;
| t&lt;br /&gt;
| Temperatur des internen Sensors&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| h&lt;br /&gt;
| Feuchte des internen Sensors&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| p&lt;br /&gt;
| Druck des internen Sensors&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| s&lt;br /&gt;
| Statuswerte des LGW&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| f&lt;br /&gt;
| von FHEM gesetzter Text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Mögliche Symbole===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Parameter !! Erläuterung !! OLED Darstellung&lt;br /&gt;
|-&lt;br /&gt;
| t&lt;br /&gt;
| Temperature&lt;br /&gt;
| [[Datei:lgw_sym_t.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| h&lt;br /&gt;
| Humidity&lt;br /&gt;
|[[Datei:lgw_sym_h.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| p&lt;br /&gt;
| Pressure&lt;br /&gt;
|[[Datei:lgw_sym_p.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| s&lt;br /&gt;
| System&lt;br /&gt;
|[[Datei:lgw_sym_s.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| i&lt;br /&gt;
| Info&lt;br /&gt;
|[[Datei:lgw_sym_i.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| w&lt;br /&gt;
| Warning&lt;br /&gt;
|[[Datei:lgw_sym_w.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| e&lt;br /&gt;
| Error&lt;br /&gt;
|[[Datei:lgw_sym_e.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Definition !! Erläuterung&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:30%&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED On&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Schaltet ein angeschlossenes Display ein &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED Off&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Schaltet ein angeschlossenes Display aus &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED interval=20&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Legt fest, dass (je nach mode) alle 20 Sekunden die nächste Seite angezeigt wird. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=ths&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte und Systemdaten an &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=thp&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte und Luftdruck an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=thps&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=f&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt ausschließlich den von FHEM festgeleget Text an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=s&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt ausschließlich die Systemdaten an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=Soll: 20.5,Ist: 19.2,,t&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt die übergebenen Texte an und links das Symbol für Temperatur&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=55%,,,h&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nur den Text &amp;quot;55%&amp;quot; und das Symbol für Feuchte an. Da es nur ein Text ist, wird er größer dargestellt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=Line 1,Line 2,Line 3&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt drei Texte aber kein Symbol an.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands &amp;quot;OLED mode=thps&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an. Der Mode wird immer geschickt, wenn FHEM sich neu auf das LGW connected.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme eines Nextion Displays==&lt;br /&gt;
&lt;br /&gt;
Mithilfe der Seriellen Schnittstelle [[#Soft_serial_bridge|(Soft serial bridge]]), kann ein Nextion Display in Betrieb genommen werden. Das Besondere dabei ist, dass das LGW zusätzlich seine Status Informationen (AP-Verbindungsstatus, RSSI ,IP ,Version ,FHEM Verbindungsstatus, etc.) an das Display schickt. &lt;br /&gt;
Die Anbindung an FHEM erfolgt Mithilfe des Nextion Moduls (42_Nextion.pm), welches per FHEM Update verteilt wird. &lt;br /&gt;
&lt;br /&gt;
Ein Diskussionsthread zum Thema „LaCrosseGateway mit Nextion Display“ findet man {{Link2Forum|Topic=63443|LinkText=hier}}. &lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
Vor der Inbetriebnahme in FHEM, müssen folgende Voraussetzungen erfüllt sein:&lt;br /&gt;
*Das Display ist wie [[#Nextion_Display|hier]] beschrieben an das LGW angeschlossen.&lt;br /&gt;
*Die [[#Soft_serial_bridge|Soft serial bridge]] auf der LGW Setup-page ist konfiguriert.&lt;br /&gt;
*Das LaCrosse Gateway Device ist wie [[#Device_Definition|hier]] beschrieben angelegt.&lt;br /&gt;
&lt;br /&gt;
===Funktionsumfang===&lt;br /&gt;
&lt;br /&gt;
Der nachfolgende Funktionsumfang ist implementiert:&lt;br /&gt;
&lt;br /&gt;
*OTA Firmware (.tft File) übertragung an das Display &lt;br /&gt;
*Automatische Anpassung der Baudrate auf dem Nextion&lt;br /&gt;
*Das LGW schickt (periodisch) Werte an folgende Controls:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Control!! Beschreibung/Anmerkung&lt;br /&gt;
|-&lt;br /&gt;
| LGW#temp.txt&lt;br /&gt;
| Nur wenn ein entsprechender on board sensor vorhanden ist.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#hum.txt&lt;br /&gt;
| Nur wenn ein entsprechender on board sensor vorhanden ist.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#pres.txt&lt;br /&gt;
| Nur wenn ein entsprechender on board sensor vorhanden ist.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#rssi.txt&lt;br /&gt;
| WLAN RSSI Signalstärke&lt;br /&gt;
|-&lt;br /&gt;
| LGW#ip.txt&lt;br /&gt;
| IP-Adresse des LGW&#039;s&lt;br /&gt;
|-&lt;br /&gt;
| LGW#fpm.txt&lt;br /&gt;
| Frames Per Minute&lt;br /&gt;
|-&lt;br /&gt;
| LGW#heap.txt&lt;br /&gt;
| Free Heap&lt;br /&gt;
|-&lt;br /&gt;
| LGW#up.txt&lt;br /&gt;
| Uptime&lt;br /&gt;
|-&lt;br /&gt;
| LGW#ver.txt&lt;br /&gt;
| Version&lt;br /&gt;
|-&lt;br /&gt;
| LGW#wifi (vis)&lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#fhem&lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#cpu1 &lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#cpu2&lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#main&lt;br /&gt;
| Sendet, nachdem es sich initialisiert hat, ein &amp;quot;page LGW#main&amp;quot; an das Nextion.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#info&lt;br /&gt;
| Sendet die Info an die LGW#prog page&lt;br /&gt;
|-&lt;br /&gt;
| LGW#ptext&lt;br /&gt;
| Sendet die Info an die LGW#prog page&lt;br /&gt;
|-&lt;br /&gt;
| LGW#pbar&lt;br /&gt;
| Sendet die Info an die LGW#prog page&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Fortschrittsanzeige beim flashen der Nextion Firmware&lt;br /&gt;
&lt;br /&gt;
===Device Definition Nextion Modul===&lt;br /&gt;
&lt;br /&gt;
Die Definition für die Nextion Bridge sieht dann wie folgt aus: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;nextion&amp;gt; Nextion &amp;lt;IP-Adresse&amp;gt;:&amp;lt;Port&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;nextion&amp;gt;&#039;&#039; kann bei Bedarf angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;IP-Adresse&amp;gt;&#039;&#039; muss entsprechend angepasst werden. Anstatt der IP-Adresse kann auch der Hostname vom LaCrosseGateway verwendet werden.&lt;br /&gt;
  &lt;br /&gt;
&#039;&#039;&amp;lt;Port&amp;gt;&#039;&#039; Ist der auf der Setup-page definierte Port &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define nextion Nextion 192.168.22.33:86&amp;lt;/syntaxhighlight&amp;gt; IP-Adresse ermitteln: Das LaCrosseGateway heist per default Einstellung &amp;quot;LaCrosseGateway&amp;quot;, per ping auf den Hostnamen LaCrosseGateway kann die &amp;lt;IP-Adresse&amp;gt; ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
===Firmware erstellen und flashen ===&lt;br /&gt;
Ein UI für das Nextion Display wird mit dem Nextion Editor erstellt. Mithilfe des Editors kann die entsprechende Firmware (tft Datei – siehe „File -&amp;gt; Open build folder“) kompiliert (Button: Compile) werden. &lt;br /&gt;
&lt;br /&gt;
Das LGW kann die Firmware (.tft Datei) zum Display übertragen. Dazu gibt es zwei Varianten:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;curl&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;curl --http1.0 -# -o ~output.txt -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@&amp;lt;tftFileName&amp;gt;; filename=nextion.tft&amp;quot; http://&amp;lt;LGW-IP&amp;gt;/ota/nextion&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;curl --http1.0 -# -o ~output.txt -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@D:\MyNextionFiles\lgw.tft; filename=nextion.tft&amp;quot; http://192.168.31.213/ota/nextion&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das LaCrosseGateway Modul in FHEM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set &amp;lt;myLaCrosseGateway&amp;gt; nextionUpload&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das Attribut &amp;quot;tftFile&amp;quot; gesetzt ist, wird die darin angegebene Datei hochgeladen, ansonsten wird versucht, das File „FHEM/firmware/nextion.tft“ hochzuladen.&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiel===&lt;br /&gt;
In {{Link2Forum|Topic=63443|LinkText=diesem FHEM Forum Thread}} wurde ein LGW Nextion UI erarbeitet (Stand 01.08.2017 {{Link2Forum|Topic=63443|Message=582453|LinkText=Version 0.7}}), um die Funktionsweise zu demonstrieren.&lt;br /&gt;
Das Nextion UI besteht aus folgenden Pages: &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Name !! Page !! Beispiel !! Hinweise/Funktion/Bechreibung !! Nextion Debug commands&lt;br /&gt;
|-&lt;br /&gt;
| 0 ||Boot || Boot || [[Datei:lgw_nextion_boot.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || Das ist die Startseite nach Einschalten des Nextion Displays. ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||Progress||LGW#prog ||[[Datei:lgw_nextion_prog.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;|| Auf dieser Seite wird der WiFi Verbindungsfortschritt angezeit. Alles Werte werden vom LGW befüllt. ||page LGW#prog&lt;br /&gt;
vis LGW#pbar,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#ptext,1&lt;br /&gt;
&lt;br /&gt;
LGW#pbar.val=50&lt;br /&gt;
&lt;br /&gt;
LGW#ptext.txt=&amp;quot;Connect WiFi (1)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 ||Main|| LGW#main ||  [[Datei:lgw_nextion_main.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; ||Dies ist die Haupseite, welche vom LGW aufgerufen wird, sobald der Bootvorgang abgeschlossen ist.&amp;lt;br&amp;gt;Hinweise zur Funktionsweise findet man {{Link2Forum|Topic=63443|Message=546896|LinkText=hier}}|| page LGW#main&lt;br /&gt;
vis LGW#wifi,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#fhem,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#cpu1,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#cpu2,1&lt;br /&gt;
&lt;br /&gt;
LGW#rssi.txt=&amp;quot;-68&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tTime.txt=&amp;quot;23:45&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tDate.txt=&amp;quot;01.08.2017&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iTemp,1&lt;br /&gt;
&lt;br /&gt;
LGW#temp.txt=&amp;quot;25.7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iHum,1&lt;br /&gt;
&lt;br /&gt;
LGW#hum.txt=&amp;quot;68%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iPres,1&lt;br /&gt;
&lt;br /&gt;
LGW#pres.txt=&amp;quot;1024hPa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iWind,1&lt;br /&gt;
&lt;br /&gt;
tout_ws.txt=&amp;quot;23km/h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iOutT,1&lt;br /&gt;
&lt;br /&gt;
tout_t.txt=&amp;quot;28°C&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||Info Page||  Info || [[Datei:lgw_nextion_info.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || Alle Informationen auf dieser Seite werden von LGW automatisch befüllt. || page Info&lt;br /&gt;
vis LGW#ip,1&lt;br /&gt;
&lt;br /&gt;
LGW#ip.txt=&amp;quot;192.168.222.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#fpm,1&lt;br /&gt;
&lt;br /&gt;
LGW#fpm.txt=&amp;quot;5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#heap,1&lt;br /&gt;
&lt;br /&gt;
LGW#heap.txt=&amp;quot;16280&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#ver,1&lt;br /&gt;
&lt;br /&gt;
LGW#ver.txt=&amp;quot;1.30&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#up,1&lt;br /&gt;
&lt;br /&gt;
LGW#up.txt=&amp;quot;1Tg.4Std.34Min.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Info Page 2 ||  Info2 ||  [[Datei:lgw_nextion_info2.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || tInfo50 und tInf51 sind für Nextion UI Version reserviert. tInfo60 bis tInfo91 sind nicht belegt und können verwendet werden, um z.B. die FHEM Verison anzuzeigen. || page Info2&lt;br /&gt;
tInfo60.txt=&amp;quot;tInfo60:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo61.txt=&amp;quot;tInfo61&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo70.txt=&amp;quot;tInfo70:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo71.txt=&amp;quot;tInfo71&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo80.txt=&amp;quot;tInfo80:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo81.txt=&amp;quot;tInfo81&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo90.txt=&amp;quot;tInfo90:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo91.txt=&amp;quot;tInfo91&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Settings || Settings || [[Datei:Lgw_nextion_Settings.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || Einstellungsmöglichkeit von Helligkeit (Wertebereich von 10% bis 100%) des Displays und des PowerOff Timeouts (Wertebereich: off und 1-120 Sek.)||page Settings&lt;br /&gt;
h1.val=25&lt;br /&gt;
&lt;br /&gt;
h0.val=60&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Control Center||CoCe||[[Datei:lgw_nextion_CoCe.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; ||Zum Schalten von Aktoren und Status anzeige.&amp;lt;br&amp;gt;Weiteren Hinweise zur Funktionsweise sind {{Link2Forum|Topic=63443|Message=576902|LinkText=hier}} zu finden. || page CoCe&lt;br /&gt;
lblT1.txt=&amp;quot;lbT1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS1.txt=&amp;quot;aus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT2.txt=&amp;quot;lbT2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS2.txt=&amp;quot;an&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT3.txt=&amp;quot;lbT4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS3.txt=&amp;quot;zu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT4.txt=&amp;quot;lbT3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS4.txt=&amp;quot;auf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT5.txt=&amp;quot;lbT5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS5.txt=&amp;quot;n.a.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Weather ||Weather||[[Datei:lgw_nextion_Weather.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;||Zur Anzeige einer Wettervorhersage. Diese Seite wird durch ein touch auf den &amp;quot;Temp-Wert&amp;quot; in der Main#Page aufgerufen. &amp;lt;br&amp;gt;Implementierungshinweise sind {{Link2Forum|Topic=63443|Message=582453|LinkText=hier}} zu finden. ||page Weather&lt;br /&gt;
p0.pic=12&lt;br /&gt;
&lt;br /&gt;
t0.txt=&amp;quot;Mo 01 Aug 2017\rmin:15 max:18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p1.pic=16&lt;br /&gt;
&lt;br /&gt;
t1.txt=&amp;quot;Di 02 Aug 2017\rmin:15 max:18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p2.pic=17&lt;br /&gt;
&lt;br /&gt;
t2.txt=&amp;quot;Mi 03 Aug 2017\rmin:15 max:18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p3.pic=12&lt;br /&gt;
&lt;br /&gt;
t3.txt=&amp;quot;Do 04 Aug 2017\rmin:25 max:28&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p4.pic=15&lt;br /&gt;
&lt;br /&gt;
t4.txt=&amp;quot;Fr 05 Aug 2017\rmin:28 max:32&amp;quot; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweis: Alle Contorls die mit dem Namen &amp;quot;LGW#&amp;quot; beginnen sind für das LGW reserviert und werden entsprechend vom Gateway befüllt.&lt;br /&gt;
&lt;br /&gt;
===Nextion Tipps &amp;amp; Tricks===&lt;br /&gt;
====Nextion Commandreferenz====&lt;br /&gt;
Sehr hilfreich ist die Nextion instruction Page, welche hier: https://www.itead.cc/wiki/Nextion_Instruction_Set zu finden ist.&lt;br /&gt;
&lt;br /&gt;
==Serial Transparent Bridge==&lt;br /&gt;
Das LGW kann optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen.&lt;br /&gt;
Dazu gibt es die settings &#039;&#039;&amp;quot;Serial bridge port&amp;quot;&#039;&#039; und &#039;&#039;&amp;quot;Serial bridge baud&amp;quot;&#039;&#039; auf der &amp;quot;Setup&amp;quot;-Page&amp;quot; (Web-Frontend) des LaCrosseGateways.&lt;br /&gt;
Das LaCrosseGateway überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt.&lt;br /&gt;
Damit kann z.B. ein NanoCUL an das LaCrosseGateway angeschlossen werden und in FHEM verwenden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Vorgehensweise:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Einen NanoCUL bauen, z.B. auf Basis eines Arduino Pro Mini, flashen und testweise in Betrieb nehmen. &lt;br /&gt;
*Den NanoCUL an die serielle Schnittstelle des SC16IS70 anschließen&lt;br /&gt;
*Port und baud rate auf der &amp;quot;Setup&amp;quot;-Page des LaCrosseGateways festlegen, z.B. Port 85 und 38400 baud&lt;br /&gt;
*CUL in FHEM definieren (Beispiel): &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define CULXYZ CUL &amp;lt;IP-Adresse&amp;gt;:85 0000&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;CULXYZ&amp;gt;&#039;&#039;&#039;&#039;&#039; Muss nach eigenen Bedürfnissen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;IP-Adresse&amp;gt;&#039;&#039;&#039;&#039;&#039; Muss entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Sollte das CUL-Device nicht erreichbar sein (Restart, Austausch im Falle eines Deffekts etc.), empfiehlt sich einen reconnect Mechnismus in FHEM zu implementieren.&lt;br /&gt;
&lt;br /&gt;
Dieser kann wie folgt aussehen: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define CULXYZ-Reconnector at +*00:00:30 {\&lt;br /&gt;
my $deviceName = &amp;quot;&amp;lt;CULXYZ&amp;gt;&amp;quot;;;\&lt;br /&gt;
my $version = CommandGet(&amp;quot;&amp;quot;, $deviceName . &amp;quot; version&amp;quot;);;\&lt;br /&gt;
my $gotAnswer = index($version, &#039;No answer&#039;) == -1;;\&lt;br /&gt;
\&lt;br /&gt;
if(!$gotAnswer) {\&lt;br /&gt;
  fhem(&amp;quot;set &amp;quot; . $deviceName . &amp;quot; reopen&amp;quot;);;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
}  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;CULXYZ&amp;gt;&#039;&#039;&#039;&#039;&#039; Muss nach eigenen Bedürfnissen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Vorgehen Firmware flashen mit LGW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein bereits in Betrieb genomene NanoCUL kann nach dem gleichen Vorgehen (siehe [[#SubProzessor|&amp;quot;SubProzessor - Vorgehen Firmware flashen&amp;quot;]]) wie ein SubProzessor geflasht werden.&lt;br /&gt;
&lt;br /&gt;
==Zugriff mit mehreren FHEM Instanzen==&lt;br /&gt;
&lt;br /&gt;
Bis zu drei FHEM Instanzen können auf das LaCrosseGateway gleichzeitig zugreifen.&lt;br /&gt;
Auf der &amp;quot;Setup&amp;quot;-Page des LaCrosseGateways können bis zu drei Ports (Data ports), pro Port eine FHEM Instanz, definiert werden (Reboot erforderlich).&lt;br /&gt;
Aus Performancegründen empfiehlt sich nur die benötigten Ports zu definieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweise:&#039;&#039;&#039;&#039;&#039; Die Portnummer 8266 wird für OTA Update verwendet, und 80 für die &amp;quot;Config&amp;quot;-page. Aus diesem Grund ist die Verwendung dieser ports nicht erlaubt.&lt;br /&gt;
&lt;br /&gt;
Wenn sich mehrere FHEM Instanzen ein LaCrosseGateway teilen, dann ist darauf zu achten, dass die eine gemeinsame/gleiche initCommand Konfiguration haben. Sollten die FHEM Instanzen unterschiedliche initCommands senden, gewinnt das (zufällig) letzte und legt es für alle anderen fest.&lt;br /&gt;
&lt;br /&gt;
=Nano LaCrosse Gateway=&lt;br /&gt;
Das nano LaCrosse Gateway verwendet die gleiche [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] wie das WiFi LaCrosse Gateway, der signifikante Unterschied ist die kompakte (portable) Bauform. Aufgrund der Bauform können jeodch nicht alle Bauteile verwendet werden.&lt;br /&gt;
Das Gateway eignet sich sehr gut als Entwicklungstick (dies ist der Ent­ste­hungs­grund) oder zum Empfangen und Steuern von LaCrosse basierten Sensoren/Aktoren an einem FHEM Server (RPI,Cubietruck, etc.).&lt;br /&gt;
&lt;br /&gt;
Der Betieb über WiFi, entsprechende Stromversorgung (per USB) vorausgesetzt, ist ebenfalls möglich.&lt;br /&gt;
&lt;br /&gt;
Weiterführende Informationen zum nano LaCrosse Gateway und Ideensammlung für eine Platine sind im {{Link2Forum|Topic=51329|LinkText=FHEM Forum}} zu finden.&lt;br /&gt;
&lt;br /&gt;
==Bauteile==&lt;br /&gt;
Folgende Bauteile werden benötigt:&lt;br /&gt;
*Gehäuse [http://www.elv.de/output/controller.aspx?cid=74&amp;amp;detail=10&amp;amp;detail2=36507 schwarz] oder [http://www.voelkner.de/products/164819/USB-Gehaeuse-USB-1kl-Transparent.html transparent]&lt;br /&gt;
*ESP-12E&lt;br /&gt;
*Auto-Flash-Reset-Schaltung&lt;br /&gt;
*[http://www.aliexpress.com/item/6Pin-USB-2-0-to-TTL-UART-Module-Serial-Converter-CP2102-STC-Replace-Ft232/32364013343.html?spm=2114.13010208.99999999.261.mWmpl5 CP2102 FTDI]&lt;br /&gt;
*RFM69CW&lt;br /&gt;
*Status-LED&lt;br /&gt;
&lt;br /&gt;
==Schaltung==&lt;br /&gt;
[[Datei:lgw_nano_Schaltplan.png|600px|thumb|left|Schaltplan NanoLGW]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Selbstbau==&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:lgw_nano_Selbstbau1.png|320px|thumb|left|Selbstbau nano LaCrosse Gateway 1]]&lt;br /&gt;
| [[Datei:lgw_nano_Selbstbau2.png|300px|thumb|left|Selbstbau nano LaCrosse Gateway 2]]&lt;br /&gt;
| [[Datei:lgw_nano_Selbstbau3.png|475px|thumb|left|Selbstbau nano LaCrosse Gateway 3]]&lt;br /&gt;
|}&lt;br /&gt;
==Platine==&lt;br /&gt;
===nano LaCrosse Gateway===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_bestueckt_oberseite.jpg|400px|thumb|left|nano LaCrosse Gateway Platine Oberseite]]&lt;br /&gt;
|[[Datei:Nanolgw_bestueckt_unterseite.jpg|400px|thumb|left|nano LaCrosse Gateway Platine Unterseite]]&lt;br /&gt;
|}&lt;br /&gt;
===USB2TTL===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_USB2TTL_1.jpg|400px|thumb|left|USB2TTL Platine Oberseite]]&lt;br /&gt;
|[[Datei:Nanolgw_USB2TTL_2.jpg|400px|thumb|left|USB2TTL Platine Unterseite]]&lt;br /&gt;
|}&lt;br /&gt;
===nano LaCrosse Gateway inkl. USB2TTL===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_oberseite_USB2TTL_1.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Oberseite]]&lt;br /&gt;
|[[Datei:Nanolgw_oberseite_USB2TTL_2.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Oberseite]]&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_unterseite_USB2TTL.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Unterseite]]&lt;br /&gt;
|[[Datei:Nanolgw_seitenansicht_USB2TTL.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Seitenansicht]]&lt;br /&gt;
|}&lt;br /&gt;
===nano LaCrosse Gateway fertig bestückt inkl. Gehäuse===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_USB2TTL_fertig_oberseite.jpg|400px|thumb|left|nano LGW fertig bestückt inkl. Gehäuse Oberseite]]&lt;br /&gt;
|[[Datei:nanolgw_USB2TTL_fertig_unterseite.jpg|400px|thumb|left|nano LGW fertig bestückt inkl. Gehäuse Unterseite]]&lt;br /&gt;
|}&lt;br /&gt;
===Platine bestücken (Hinweise und Tipps)===&lt;br /&gt;
*Die Beschriftung SJ4 und SJ3 ist auf dem USB2TTL Wandler vertauscht, dies beeinträchtigt aber die Funktion nicht.&lt;br /&gt;
*Beim nanoLGW hängt C1 etwas über dem FTDI232RL vom USB2TTL Wandler, daher braucht diese Platine noch eine &amp;quot;Schönheitskorrektur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Tipps &amp;amp; Tricks =&lt;br /&gt;
&lt;br /&gt;
==Löschen des kompletten Flash des ESP8266 mit dem esptool==&lt;br /&gt;
Aufgrund eines aktuell im espressif SDK vorhandenen Bugs, kann es passieren, dass das LaCrosseGateway nach dem Aufspielen der Firmware, mit einer Exception den Bootvorgang (nach &amp;quot;Start WIFI_STA&amp;quot;) abbricht und nicht mehr ordnungsgemäß starten kann. In diesem Fall hilft nur noch das Löschen des kompletten Speichers des ESP8266 und das erneute Aufspielen der Firmware.&lt;br /&gt;
&lt;br /&gt;
Mit dem nachfolgenden Befehl kann der Speicher des ESP8266 komplett gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Dabei werden alle Einstellungen unwiderruflich gelöscht&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;./esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 115200 -ca 0x00000 -cd nodemcu -ce&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;/dev/tty.SLAB_USBtoUART&amp;gt;&#039;&#039;&#039; Muss entsprechend angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
Diskussionsthread aus dem Forum:&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=43672|LinkText=LaCrosseGateway - LaCrosse, PCA301 und EC3000 über wifi mit ESP8266 ohne Arduino}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=45594|LinkText=Platine für LaCrosseGateway: Platinenbestellung}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=51329|LinkText=Platine für nanoLGW (LaCrosse Gateway): Layout}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=52921|LinkText=Display für LaCrosseGateway}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=63443|LinkText=LaCrosseGateway mit Nextion Display}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Wetterstationen]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=LaCrosseGateway_V1.x&amp;diff=27601</id>
		<title>LaCrosseGateway V1.x</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=LaCrosseGateway_V1.x&amp;diff=27601"/>
		<updated>2018-08-04T13:53:35Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Wiki-Seite beschreibt ausschließlich das LaCrosseGateway V1.x, das auf dem ESP8266 basiert.&amp;lt;br/&amp;gt;&lt;br /&gt;
Für das LaCrosseGateway32 das auf dem ESP32 basiert, wird es eine eigene Seite geben.{{Randnotiz|RNText=Dokumentationsstand Version 1.27}}&lt;br /&gt;
&lt;br /&gt;
Das LaCrosseGateway (hier und im Forum auch mit LGW abgekürzt) erfüllt den gleichen Zweck wie ein [[JeeLink|JeeLink USB-Stick]] und zwar das Empfangen, Abfragen und Steuern von funkbasierten LaCrosse Sensoren und Aktoren, die im 868 MHz FSK Sendeverfahren arbeiten (OOK-Sendeverfahren (433 Mhz) wird nicht unterstützt). Die Verarbeitung der Daten und Steuerung der Aktoren erfolgt mithilfe von FHEM, das als zentrale Steuereinheit dient. &lt;br /&gt;
Der signifikante Unterschied zu einem JeeLink USB-Stick ist der Betrieb über Wireless LAN ([https://de.wikipedia.org/wiki/Wi-Fi WiFi]). &lt;br /&gt;
Das Herzstück des LaCrosse-Gateways besteht aus einem ESP8266-12E/F. Das LaCrosseGateway ist aufgrund des hohen Stromverbrauchs nicht für den Akkubetrieb geeignet.&lt;br /&gt;
&lt;br /&gt;
Der Einsatz eines WiFi-LaCrosse-Gateways bietet folgende Vorteile:&lt;br /&gt;
*Kann an eine Stelle platziert werden, an der alle Sensoren optimal empfangen werden, dafür ist nur Strom (5V/1A USB Netzteil) und [https://de.wikipedia.org/wiki/Wi-Fi WiFi] Access Point erforderlich&lt;br /&gt;
*Im Minimalausbau nur zwei Bauteile NodeMCU DEVKIT 1.0 + RFM69 (siehe Bauteile) nötig&lt;br /&gt;
*Alternativ am USB-Port wie ein JeeLink verwendbar&lt;br /&gt;
*Einsatz von on board Sensoren / Aktoren (siehe [[#Unterstützte Sensoren und Aktoren | Unterstützte Sensoren und Aktoren]]) möglich&lt;br /&gt;
&lt;br /&gt;
Hinweis: Die Anbindung in FHEM kann zwar noch mit dem JeeLink-Modul erfolgen, aber es ist sinnvoll, auf das LaCrosseGateway-Modul (36_LaCrosseGateway.pm) umzustellen, da dieses eine bessere Unterstützung für die Funktionen des LGW bietet.&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
==Bauteile==&lt;br /&gt;
Für das WiFi-LaCrosse-Gateway werden folgende Bauteile verwendet:&lt;br /&gt;
*[Option 1] [http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family#esp-12-e_q ESP8266 ESP-12E Modul].&amp;lt;br /&amp;gt;Diese Variante eignet sich für Projekte für die eine kleine Bauform benötigt wird.&amp;lt;br /&amp;gt;Für die Inbetriebnahme, insbesondere für das Aufbringen der Firmware, muss das Modul an ein [[Medium:Lgw USB2Serial Adapter.jpg|USB2Serial-Adapter]], angeschlossen werden. Für diese Variante sind Lötkenntnisse erforderlich. &lt;br /&gt;
*[Option 2] [https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg NodeMCU DEVKIT 1.0 (oder 2.0)]ist die Inbetriebnahme einfacher, da alles für das Aufbringen der Firmware bereits vorhanden ist und kein Löten nötig ist.&amp;lt;br /&amp;gt;{{Link2Forum|Topic=45594|Message=430183|LinkText=Hinweis:}} Folgende Devkits werden nicht &amp;quot;offiziel&amp;quot; unterstützt, da ungetestet, können aber durchaus in bestimmten Fällen verwendet werden:&lt;br /&gt;
** V0.9 (da ungetestet, bekommt man aber kaum noch zu kaufen)&lt;br /&gt;
** V3.0 - passt nicht auf die Platine von PeMue, ist größer als das 2.0. Auf der Rückseite steht &amp;quot;Lolin&amp;quot;.&lt;br /&gt;
** Devkits mit einem CH340 USB converter (da ungetestet und teils falsche Bauform und von der USB-Anbindung her teils problematisch)&lt;br /&gt;
*[Option 3] Alternativ zu einem Devkit 1.0 kann auch ein [http://www.wemos.cc/Products/d1_mini.html &amp;quot;WeMOS D1 mini&amp;quot;] eingesetzt werden. Vorteil bei diesem Kit ist die kleine Bauform bei gleichem Funktionsumfang wie das DEVKIT 1.0.&lt;br /&gt;
*[Option 4] ESP8266-07 auf einem DEVKIT 1.0. für den Betrieb mit einer externen Wifi Antenne.&lt;br /&gt;
**&#039;&#039;Hinweis:&#039;&#039; Der ESP-07 hat einen 25Q80 1M flash Chip. Dieser ist für den Betrieb mit der LaCrosseGateway Firmware geeignet, für ein OTA-Update ist es jedoch zu wenig. Aus diesem Grund muss/kann dieser auf 4M flash umgebaut werden. Weitere Informationen und Details zum Umbau sind im {{Link2Forum|Topic=45594|Message=448307|LinkText=Forenthread (Gehäuse-Variante)}} beschrieben.&lt;br /&gt;
*[Optional] RFM69CW - Für das Senden und Emfangen funkbasierte LaCrosse Aktoren und Sensoren&lt;br /&gt;
*[Optional] On board Sensoren (siehe [[#Unterstützte Sensoren und Aktoren | Unterstützte Sensoren und Aktoren]])&lt;br /&gt;
*[Optional] SC16IS750 Zur Bereitstellung der seriellen Schnittstelle, da die GPIOs (GPIO1 / GPIO3) DEVKIT&#039;s V1.0 von FTDI verwendet werden und damit nicht genutzt werden können.&lt;br /&gt;
*[Optional] OLED-Display SSD1306 I2C zur Darstellung von Daten (Bootvorgang, on board Sensoren, Inhalte aus FHEM)&lt;br /&gt;
*[Optional] [[#MCP23008|MCP23008]] zur Bereitstellung (Konfigurierbar) von digitalen 8 Ein- Ausgängen oder Sonderfunktion (OLED)&lt;br /&gt;
*[Optional] Nextion Touch Display zur Darstellung von verschiedenen Informationen oder zum Schalten von Aktoren. &lt;br /&gt;
*Steckbrett (inkl. Kabel/Widerstände)/Lochrasterplatine (Lötkolben, Lötzinn, Widerstände etc.)) / [[#Platine|PeMue Platine]]&lt;br /&gt;
&lt;br /&gt;
==Schaltung==&lt;br /&gt;
===Variante: Devkit 1.0 Minimum===&lt;br /&gt;
[[Datei:lgw_Schaltplan_Devkit_minimum.png|400px|thumb|left|Variante: Devkit 1.0]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Variante: Devkit 1.0 Maximalausbau===&lt;br /&gt;
[[Datei:lgw_Schaltplan_Devkit_full.png|400px|thumb|left|Variante: FTDI]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Variante: Platine (PeMue)===&lt;br /&gt;
siehe hier: {{Link2Forum|Topic=45594|LinkText=Thread}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Siehe [[#Erweiterungsmöglichkeiten | Erweiterungsmöglichkeiten]].&lt;br /&gt;
&lt;br /&gt;
===MCP23008=== &lt;br /&gt;
I2C Adresse 0x27 -&amp;gt; A0,A1,A2 = 3.3V&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;             &lt;br /&gt;
               |-------\/-------|&lt;br /&gt;
    LGW D1     |1 SCL     VDD 18|  LGW 3.3V &lt;br /&gt;
    LGW D2     |2 SDA     GP7 17|  PB7   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |3 A2      GP6 16|  PB6   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |4 A1      GP5 15|  PB5   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |5 A0      GP4 14|  PB4   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |6 RES     GP3 13|  PB3   --/ --- GND  or Output&lt;br /&gt;
               |7 NC      GP2 12|  PB2   --/ --- GND  or Output&lt;br /&gt;
               |8 INT     GP1 11|  PB1   --/ --- GND  or Output&lt;br /&gt;
    LGW GND    |9 VSS     GP0 10|  PB0   --/ --- GND  or Output&lt;br /&gt;
               |----------------|&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Nextion Display===&lt;br /&gt;
Angeschlossen wird das Display wie folgt:&lt;br /&gt;
GPIO0: TXD -&amp;gt; Nextion RXD&lt;br /&gt;
GPIO2: RXD -&amp;gt; Nextion TXD&lt;br /&gt;
&lt;br /&gt;
Das Display benötigt eine 5V Spannungsversorgung, diese kann vom VIN des DevKit&#039;s abgegriffen werden. Vom Betrieb mit 3.3V wird abgeraten.&lt;br /&gt;
Ein level shifter für RXD/TXD ist nicht nötig.&lt;br /&gt;
&lt;br /&gt;
==Aufbau auf einem Steckbrett==&lt;br /&gt;
[[Datei:lgw_Steckbrett.png|600px|thumb|left|LaCrosseGateway Aufbau auf einem Steckbrett]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Der Sender und Empfänger RFM12, der auf dem Steckbrett zu sehen ist, wird nicht mehr unterstützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Platine==&lt;br /&gt;
PeMue (vielen Dank) hat {{Link2Forum|Topic=45594|LinkText=hier}} eine Platine (7,1cm x 5,0cm) für das LaCrosseGateway entworfen (Stand 05.2016).&lt;br /&gt;
&lt;br /&gt;
===Oberseite===&lt;br /&gt;
[[Datei:lgw_Platine_Oberseite.jpg|400px|thumb|left|LaCrosseGateway Platine Oberseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Unterseite===&lt;br /&gt;
[[Datei:lgw_Platine_Unterseite.jpg|400px|thumb|left|LaCrosseGateway Platine Unterseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Devkit 1.0 bestückt Oberseite===&lt;br /&gt;
[[Datei:Lgw_Platine_Devkit_oberseite.png|400px|thumb|left|LaCrosseGateway Platine Oberseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Devkit 1.0 bestückt Unterseite===&lt;br /&gt;
[[Datei:lgw_Platine_Devkit_unterseite.png|400px|thumb|left|LaCrosseGateway Platine Unterseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ESP8266-12E bestückt Oberseite===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_oberseite.png|400px|thumb|left|(1) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280 und DHT22]]&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_oberseite_2.jpg|490px|thumb|left|(2) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280]]&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_oberseite_2_inkl_GE.jpg.jpg|325px|thumb|left|(2) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280 inkl. Gehäuse]]&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Platine (Bild (1)) ist mit einem LM75 Sensor bestückt. Diese Bestückung macht zusammen mit einem BME280 keinen Sinn, es handelt sich hierbei um eine Entwicklungsplatine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===ESP8266-12E bestückt Unterseite===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_unterseite.png|400px|thumb|left|(1) LaCrosseGateway Platine Unterseite]]&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_unterseite_2.jpg|415px|thumb|left|(2) LaCrosseGateway Platine Unterseite mit 2 x RFM69CW, BME280]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Platine bestücken (Hinweise und Tipps)===&lt;br /&gt;
*Auf der Platine (Version 1.0) ist für das RFM69CW-Modul eine Markierung (zwei Quadrate) aufgedruckt, die den Chip und den Quarz symbolisieren. Wenn man den RFM69CW so drauflötet, wie abgebildet, ist er falsch rum drauf.&amp;lt;br /&amp;gt;Es muss darauf geachtet werden, wo auf dem RFM69CW die &amp;quot;Ant&amp;quot; Beschriftung steht, dieser Lötpunkt muss auf die Platine an den Punkt &amp;quot;1&amp;quot; ausgerichtet werden. Zur Sicherheit bitte den [[#Variante: Platine (PeMue)|Schaltplan]] konsultieren und die genaue Position ermitteln.&amp;lt;br&amp;gt;&#039;&#039;&#039;Für die Platine V1.1 wurde das korrigiert.&#039;&#039;&#039;&lt;br /&gt;
*Die Antennenlänge für das RFM69CW beträgt 82 mm. Dafür möglichst eindrähtigen Leiter (aus Kupfer) verwenden.&lt;br /&gt;
&lt;br /&gt;
==Erweiterungsmöglichkeiten==&lt;br /&gt;
Das LaCrosseGateway kann optional mit verschiedenen Komponenten erweitert werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Erweiterungen sind möglich:&lt;br /&gt;
*es kann ein eigener Prozessor (mit eigener Firmware) angeschlossen werden, der Daten empfängt und diese dem LGW übergibt.&lt;br /&gt;
*es kann z.B. ein NanoCUL angeschlossen werden, dessen serielle Schnittstelle transparent auf einem Port im Web bereitgestellt wird.&lt;br /&gt;
*es kann ein vierter und fünfter RFM69CW angeschlossen werden, diese können alles, was die bisherigen drei auch können.&lt;br /&gt;
*es kann ein aktiver Piezo Summer (Piezo Buzzer) angeschlossen (an GPIO7 des SC16IS750) werden, um von FHEM aus das LaCrosseGateway einen Alarm ausgeben zu lassen. Hinweis: Falls der Strom von 10mA, den die Ausgänge liefern, nicht reicht, ist noch eine Transistor-Schaltstufe vorzusehen.&lt;br /&gt;
&lt;br /&gt;
Alle diese Daten stellt das LaCrosseGateway per WiFi an FHEM zu, dort wird es von den entsprechenden Modulen (LaCrosseGateway, LaCrosse, PCA301, ...) weiterverarbeitet.&lt;br /&gt;
&lt;br /&gt;
Alle Komponenten werden automatisch erkannt, sofern angeschlossen.&lt;br /&gt;
Für die Realisierung der o.g Möglichkeiten wird ein [http://www.aliexpress.com/item/1x-Breakout-Board-for-SC16IS750-I2C-SPI-to-UART-IC/1327351219.html?spm=2114.30010308.3.38.HxdznQ&amp;amp;ws_ab_test=searchweb201556_9,searchweb201602_2_10034_507_10020_10001_10002_10017_10010_10005_10011_10006_10021_10003_10004_10022_10009_10008_10018_10019,searchweb201603_6&amp;amp;btsid=97b30f2b-e937-426b-8202-de585dd7ee97 SC16IS750] verwendet.&lt;br /&gt;
&lt;br /&gt;
Der SC16IS750 wird per I2C an das LaCrosseGateway angeschlossen und bietet eine serielle Schnittstelle und 8 Digital I/Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auf dieser Basis sind momentan folgende Erweiterungen möglich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===SubProzessor===&lt;br /&gt;
Der SubProzessor dient dazu, dass mit einem eigenen Sketch Daten erfasst werden können, ohne sich um die ganze Nummer, die das LGW macht (WiFi, Kommunikation mit FHEM, Frontend, OTA, ...), kümmern zu müssen.&lt;br /&gt;
Ferner ermöglicht es die Implementierung von eigenen Projekten, dabei werden die zeitkritischen Abläufe des LGWs nicht beeinträchtig.&lt;br /&gt;
&lt;br /&gt;
An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini)&lt;br /&gt;
Entweder ein 3.3V / 8MHz oder ein 5V / 16MHz, der aber dann auch mit 3.3V betrieben wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Alle LaCrosseGateway Komponenten laufen ausschließlich mit &#039;&#039;&#039;3.3V&#039;&#039;&#039;, aus diesem Grund dürfen keine &#039;&#039;&#039;5V&#039;&#039;&#039; Komponenten angeschlossen werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Firmware flashen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Firmware kann über das LGW auf den SubProzessor (Voraussetzung: Arduino hat einen bootloader) geflasht werden.&lt;br /&gt;
&lt;br /&gt;
Dazu wird sie auf das LGW hochgeladen (&amp;lt;nowiki&amp;gt;http://&amp;lt;LGW-IP&amp;gt;/ota/addon.hex&amp;lt;/nowiki&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Das LGW nimmt den Upload entgegen, wandelt das Intel-Hex in binary um und schickt es per STK500-Protokoll an den Arduino.&lt;br /&gt;
&lt;br /&gt;
Falls ein OLED angeschlossen ist, wird sogar ein progress angezeigt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorgehen Firmware flashen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Firmware kann z.B. mithilfe von &amp;quot;curl&amp;quot; mit dem nachfolgendem Befehl hochgeladen werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;curl --http1.0 -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@/myFolder/LGW-Addon.ino.hex; filename=addon.hex&amp;quot; http://192.168.31.211/ota/addon.hex&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; fielname=addon.hex im Beispiel darf nicht verändert werden, nur /myFolder/LGW-Addon.ino.hex und die IP-Adresse wird entsprechend angepasst.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Upload dauert etwas, danach sollte bei Erfolg vom LGW ein Protokoll zurückgeschickt bekommen, der wie folgt aussieht:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;Start receiving &#039;addon.hex&#039;&lt;br /&gt;
File: /addon.hex Size: 21417&lt;br /&gt;
Starting flash&lt;br /&gt;
Sending sync&lt;br /&gt;
Enter program mode&lt;br /&gt;
Binary size is:7608&lt;br /&gt;
Leave Program Mode&lt;br /&gt;
Flash finished&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem SubProzessor können die entsprechenden Daten auf zwei mögliche Arten am LGW übermittelt werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;KeyValueProtokoll (KVP):&#039;&#039;&#039;&lt;br /&gt;
Format:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;KV &amp;lt;Type&amp;gt; &amp;lt;Address&amp;gt; &amp;lt;Key&amp;gt;=&amp;lt;Value&amp;gt;,&amp;lt;Key&amp;gt;=&amp;lt;Value&amp;gt;,&amp;lt;Key&amp;gt;=&amp;lt;Value&amp;gt;, ...&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Beispiel:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;KV DHT 01 Temperature=21.5,Humidity=62&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das LGW übermittelt die Daten als KVP an FHEM und dort entsteht ein KVP Device, das die Daten darstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LaCrosse:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Format:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;LC &amp;lt;Address&amp;gt; T=&amp;lt;Temperature&amp;gt;,H=&amp;lt;Humidity&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;LC 9F T=21.5,H=62&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;LC 9F T=21.5&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Das LGW setzt die Werte in das LaCrosse Protokoll um (wie z.B. ein TX29DTH) und schickt sie an FHEM.&lt;br /&gt;
In FHEM entsteht ein LaCrosse Device (autocreate, LaCrossePairForSec ...), als ob es ein LaCrosse Sensor wäre.&lt;br /&gt;
&lt;br /&gt;
Das [https://forum.fhem.de/index.php?action=dlattach;topic=43672.0;attach=48914 LGW-Addon.ino] ist ein einfaches Beispiel, das diese Technik veranschaulicht.&lt;br /&gt;
Es bindet den geliebten DHT22 an und sendet ihn als LaCrosse-Sensor (über das LGW) an FHEM und es misst die Spannung und sendet sie zusammen mit der UpTime des SubProzessors als KVP&lt;br /&gt;
&lt;br /&gt;
Der umrandete Bereich [[#Addon Schaltung |Schaltung - &amp;quot;Example&amp;quot;]] &amp;quot;Example&amp;quot; ist das zu [https://forum.fhem.de/index.php?action=dlattach;topic=43672.0;attach=48914 LGW-Addon.ino] passende Beispiel.&lt;br /&gt;
&lt;br /&gt;
==Unterstützte Sensoren und Aktoren==&lt;br /&gt;
Alle Sensoren und Aktoren, die auch vom &amp;quot;LaCrosse Arduino&amp;quot; Sketch unterstützt werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
(siehe [[JeeLink#Unterst.C3.BCtzte_Sensoren_und_Aktoren_incl._Wetterstation_WS_1600JeeLink|vom JeeLink unterstützte LaCrosse Sensoren und Aktoren]])&lt;br /&gt;
&lt;br /&gt;
Zusätzlich zu LaCrosse werden auch die folgenden Geräte unterstützt:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung !! Datenrate !! Sonstiges !! Funktion !! Hinweise&lt;br /&gt;
|-&lt;br /&gt;
| PCA301 ||868950 kHz (868,970 und 868,990 ) 6.631 kbps || extern || Energiemess-Steckdose (Unterstützt werden bis zu 50 Dosen) || &lt;br /&gt;
|-&lt;br /&gt;
| EC3000 ||868.300 kHz mit 20.000 kbps|| extern || Energiemess-Steckdose || &lt;br /&gt;
|-&lt;br /&gt;
| RFM69CW || || on board || Zum Empfangen und Senden von Sensor/Aktor Daten.|| Hinweise DHT22 beachten.&lt;br /&gt;
|-&lt;br /&gt;
| BME280 || || on board || Temperatur, Feuchte und Druck || Falls das verwendete Breakout bereits PullUp-Widerstände für SDA und SCL enthält, sind diese nicht mehr zusätzlich nötig.&lt;br /&gt;
|-&lt;br /&gt;
| BMP180 || || on board || Temperatur und Druck || Falls das verwendete Breakout bereits PullUp-Widerstände für SDA und SCL enthält, sind diese nicht mehr zusätzlich nötig.&lt;br /&gt;
|-&lt;br /&gt;
| LM75 || || on board|| Temperatur || &lt;br /&gt;
|-&lt;br /&gt;
| DHT22 || ||on board|| Temperatur und Feuchte. || Kann anstatt RFM69 Radio#3 eingesetzt werden.&lt;br /&gt;
|-&lt;br /&gt;
| SC16IS750 || I2C Adresse: 0x90 ||on board|| OI Erweiterung || &lt;br /&gt;
|-&lt;br /&gt;
| OLED SSD1306|| I2C Adresse: 0x3C || on board || OLED Display||&lt;br /&gt;
|-&lt;br /&gt;
| MCP23008|| I2C Adresse: 0x27 || on board || Input/Output Port Expander||&lt;br /&gt;
|-&lt;br /&gt;
| Piezo Summer |||| on board ||Piezo Buzzer||&lt;br /&gt;
|-&lt;br /&gt;
| Nextion Display ||(Max.) 57600 baud || on board ||Touch Display||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle direkt am LGW anschließbare Sensoren werden automatisch erkannt, wenn sie vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Sie werden in folgender Reihenfolge verwendet:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn ein BME280 vorhanden ist, wird dieser verwendet und sonst nichts, da man dann bereits Temperatur, Feuchte und Druck hat.&lt;br /&gt;
&lt;br /&gt;
Ist kein BME280 vorhanden, wird geschaut, ob ein BMP180 vorhanden ist. Falls ja, haben wir Druck und Temperatur.&lt;br /&gt;
&lt;br /&gt;
Dann wird geschaut, ob ein DHT22 vorhanden ist. Wenn ja, wird er zusätzlich verwendet, aber vom BMP180 dann nur noch der Druck.&lt;br /&gt;
&lt;br /&gt;
Temperatur und Feuchte vom DHT22, dass dieses Wertepaar von einem Sensor stammt.&lt;br /&gt;
&lt;br /&gt;
Wenn kein BMP180 und kein BME180 da ist, sondern nur ein DHT22, dann hat man Temperatur und Feuchte.&lt;br /&gt;
&lt;br /&gt;
Wenn nichts vorhanden ist (also keiner der bisher genannten Sensoren), wird, falls vorhanden, der LM75 verwendet.&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
== Release Notes ==&lt;br /&gt;
*[https://forum.fhem.de/index.php/topic,43672.0.html LaCrosseGateway Release Notes im Forum]&lt;br /&gt;
&lt;br /&gt;
==Funktionsumfang==&lt;br /&gt;
*Access Point für die Konfiguration&lt;br /&gt;
*Konfiguration über WEB-Frontend (Erreichbar per &#039;&#039;&amp;lt;nowiki&amp;gt;http://IP-Adresse oder Hostname/setup&amp;lt;/nowiki&amp;gt;&#039;&#039; auf Port 80 )&lt;br /&gt;
**SSID und Password (Die Konfiguration wird im EEPROM gespeichert und bei zukünftigen Neustarts verwendet.)&lt;br /&gt;
**Statische IP-Adresse anstatt DHCP&lt;br /&gt;
**Hostname&lt;br /&gt;
*Vom LaCrosseGateway FHEM-Modul über IP-Adresse:Port oder Hostname:Port ansprechbar. Der Port ist konfigurierbar.&lt;br /&gt;
*Unterstützt bis zu 5 x RFM69CW (Keine Unterstützung für RFM12) &lt;br /&gt;
*On board und externe Sensoren und Aktoren ([[#Unterstützte Sensoren und Aktoren |Unterstützte Sensoren und Aktoren]])&lt;br /&gt;
*Betrieb nur per USB möglich, als ob es ein JeeLink wäre&lt;br /&gt;
*FHEM Anbindung&lt;br /&gt;
*Log im Web-Frontend&lt;br /&gt;
*Firmware OTA-Update (Firmware-Over-the-Air-Update per FHEM)&lt;br /&gt;
*Erweiterungsmöglichkeiten per SC16IS750 (Für Buzzer und für weitere zwei RFM69)&lt;br /&gt;
*SubProzessor (An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini))&lt;br /&gt;
*Serial bridge (Optional kann die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitgestellt werden)&lt;br /&gt;
*Software Serial Bridge - Stellt die Soft Serial Schnittstelle transparent auf einem TCP Port.&lt;br /&gt;
&lt;br /&gt;
==Sourcecode==&lt;br /&gt;
Der Quellcode des LaCrosse Gateways befindet sich [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/arduino/36_LaCrosseGateway.zip im FHEM SVN Repository (contrib)].&lt;br /&gt;
&lt;br /&gt;
==Firmware Download==&lt;br /&gt;
Die [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] befindet sich im [https://svn.fhem.de/trac/browser/trunk/fhem FHEM SVN Repository] und wird per FHEM Update verteilt. Neue Version der [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] wird im {{Link2Forum|Topic=43672|LinkText=FHEM Forum &amp;quot;LaCrosse Gateway&amp;quot;}} angekündigt und der Funktionsumfang bzw. die Änderungen beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nach einem FEHM-Update alternativ auch: &#039;&#039;&amp;lt;FHEM-Installations-Verzeichnis&amp;gt;/FHEM/firmware/JeeLink_LaCrosseGateway.bin&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Firmware aufspielen==&lt;br /&gt;
Wie bei einem JeeLink muss auch für das LaCrosseGateway die Firmware aufgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Das [https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg NodeMCU DEVKIT 1.0] hat eine CP2102 UART Bridge implementiert, dafür muss ein CP2102 Treiber installiert sein.&lt;br /&gt;
&lt;br /&gt;
Bei einem ESP8266-12E Modul kann die Firmware mithilfe eines Seriell-USB-Konverters aufgespielt werden.&lt;br /&gt;
&lt;br /&gt;
===Windows/Mac/Linux per &amp;quot;esptool&amp;quot;===&lt;br /&gt;
Verifiziert und getestet wurde dieses Vorgehen auf Windows (Windows 10), Mac (El Capitan):&lt;br /&gt;
&lt;br /&gt;
1) Das [https://github.com/igrr/esptool-ck/releases esptool 0.4.6] für die entsprechende Plattform herunterladen.&lt;br /&gt;
&lt;br /&gt;
2) Zum Aufspielen der Firmware, muss ein Befehl nach der folgenden Syntax ausgeführt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
esptool -vv -cp [Port] -cb 921600 -ca 0x00000 -cd nodemcu -cf [Pfad zur Firmware (bin-File)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[Port]&#039;&#039;&#039; und &#039;&#039;&#039;[Pfad zur Firmware (bin-File)]&#039;&#039;&#039; müssen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel (Mac/Linux):&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 921600 -ca 0x00000 -cd nodemcu -cf JeeLink_LaCrosseGateway.bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das esptool ist nicht sonderlich stabil. Es kommt vor, dass es manchmal den upload nicht startet oder nicht durchbekommt. In diesem Fall hilft es den Vorgang, auch mehrmals, zu wiederholen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Linux/Debian/Ubuntu &amp;quot;esptool v2.1&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Installieren:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get esptool&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel mit neuer Syntax bei esptool v2.1:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; sudo esptool --port /dev/ttyUSB0 write_flash 0x00000 JeeLink_LaCrosseGateway.bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows per &amp;quot;nodemcu-flasher&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
1) [https://github.com/nodemcu/nodemcu-flasher/raw/master/Win32/Release/ESP8266Flasher.exe Espressif Flashtool] downloaden und entpacken:&lt;br /&gt;
&lt;br /&gt;
2) [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] downloaden&lt;br /&gt;
&lt;br /&gt;
3) FlashTool starten und wie folgt einstellen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:nodemcu-flasher_1.png|450px|thumb|left|Firmware auswählen]]&lt;br /&gt;
| [[Datei:nodemcu-flasher_2.png|450px|thumb|left|Flash Parameter (Advanced Tab) wie abgebildet einstellen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
4) COM-Port auswählen und den Flashvorgang starten (Button: &#039;&#039;&#039;Flash(F)&#039;&#039;&#039;) ...&lt;br /&gt;
[[Datei:nodemcu-flasher_3.png|450px|thumb|left|COM Port auswählen und das &amp;quot;Flashen&amp;quot; initiieren]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Flashen sollte über die serielle Ausgabe des ESP der Start und das Öffen des AccessPoints zu sehen sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Geschwindigkeit von 921600 baud ist nicht auf jedem Rechner (besonders auf virtualisierten Systemen) machbar. In diesem Fall die Baudrate auf 57600 reduzieren.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Funktionsweise==&lt;br /&gt;
Während des Startvorgangs versucht sich das LaCrosseGateway in einem WLAN anzumelden. Dazu muss es eine SSID und das entsprechende Passwort kennen.&lt;br /&gt;
&lt;br /&gt;
Beim ersten Start (nach dem initialen Aufspielen der Firmware) sind diese Informationen noch unbekannt. Aus diesem Grund wird folgende Strategie verfolgt:&lt;br /&gt;
&lt;br /&gt;
Wenn es sich in keinem WLAN anmelden kann, dann öffnet es einen Access Point mit der SSID &amp;quot;LaCrosseGateway_&#039;&#039;&#039;xxxxxx&#039;&#039;&#039;&amp;quot;, wobei &#039;&#039;&#039;xxxxxx&#039;&#039;&#039; die eindeutige Chip-ID des ESP8266 ist.&lt;br /&gt;
&lt;br /&gt;
Der Access Point wird aus Sicherheitsgründen nach 15 Minuten wieder geschlossen.&lt;br /&gt;
Innerhalb dieser 15 Minuten kann man sich mit dem Access Point verbinden. Der Access Point vergibt (per DHCP) IP-Adressen aus dem Netzwerk 192.168.222.0. Anschließend kann über die LaCrosseGateway Konfigurationsseite [http://192.168.222.1/setup http://192.168.222.1/setup] die initiale Konfiguration vorgenommen werden.&lt;br /&gt;
Die Konfiguration wird im EEPROM gespeichert und bei zukünftigen Neustarts verwendet.&lt;br /&gt;
Die Konfigurationsseite ist auch im &amp;quot;Normalbetrieb&amp;quot; (ohne Access Point) über die Adresse http://&#039;&#039;seine aktuelle IP-Adresse&#039;&#039;/setup erreichbar.&lt;br /&gt;
&lt;br /&gt;
Wenn sich das LaCrosseGateway an dem konfigurierten WLAN anmelden konnte (es wartet max. 30 Sekunden auf einen connect) und von diesem per DHCP eine IP-Adresse erhalten hat, dann stellt es auf dieser Adresse den Port 81 zur Verfügung, über den in FHEM das LaCrosseGateway Modul senden und empfangen kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optische Darstellung der Initialisierung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Beim Start und der Initialisierung wird mit der Board-eigenen LED signalisieren, was gerade passiert:&lt;br /&gt;
*5 schnelle blinks direkt nach dem Start, als Zeichen, dass ein Reset stattgefunden hat&lt;br /&gt;
*Blinken im Sekundentakt, während versucht wird, sich mit einem WLAN zu verbinden.&lt;br /&gt;
*LED aus, wenn der Connect zu einem WLAN geklappt hat und dann vereinzeltes Blinken, wenn Daten an FHEM übermittelt werden&lt;br /&gt;
&lt;br /&gt;
== LaCrosseGateway einrichten ==&lt;br /&gt;
Für die Ersteinrichtung des LaCrosseGateways werden die SSID und das Passwort des WLAN-Routers benötigt. Ferner wird empfohlen auf dem WLAN-Router bzw. dem DHCP-Server eine IP-Adresse für das LaCrosseGateway zu reservieren. Für die Reservierung wird die MAC-Adresse des LaCrosseGateways benötigt, diese kann über die &amp;quot;Home&amp;quot;-Page des LaCrosseGateways ermittelt, alternativ von dem [[#Windows per &amp;quot;nodemcu-flasher&amp;quot; |NODEMCU Firmware Programmer]] (&#039;&#039;Reiter &amp;quot;Operation -&amp;gt; &amp;quot;STA MAC&amp;quot;&#039;&#039;) entnommen werden. &lt;br /&gt;
&lt;br /&gt;
Sofern diese Vorbereitungen getroffen wurden und alle Informationen vorliegen, kann das LaCrosseGateway eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;u&amp;gt;Für die Konfiguration sind folgende Schritte nötig:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Mit dem LaCrosseGateway Access Point &amp;quot;LaCrosseGateway_xxxxxx&amp;quot; verbinden (siehe [[#Funktionsweise |Beschreibung Funktionsweise]])&lt;br /&gt;
*Mithilfe eines Browsers die [http://192.168.222.1/setup LaCrosseGateway &amp;quot;Setup&amp;quot;-Page] öffnen&lt;br /&gt;
*SSID und das Password eintragen. Man kann zwei SSID/Passwort-Kombinationen mit jeweils einem Timeout konfigurieren. 120 bedeutet z.B. dass das LGW 120 Sekunden lang versucht, die SSID zu erreichen. Falls die erste SSID nach &amp;quot;Timeout&amp;quot; Sekunden nicht erreicht wurde, wird Timeout Sekunden lang versucht, die zweite SSID zu connecten.&lt;br /&gt;
*&#039;&#039;[Empfohlen]&#039;&#039; Das Frontend Passwort festlegen&lt;br /&gt;
*&#039;&#039;[Optional]&#039;&#039; Falls kein DHCP-Server zur Verfügung steht bzw. keine Reservierung erwünscht ist, dann muss die IP-Adresse / Netmask (Optional auch Gateway) eingetragen werden&lt;br /&gt;
*&#039;&#039;[Empfohlen]&#039;&#039; Hostnamen festlegen bzw. anpassen&lt;br /&gt;
*Alle Angaben mit dem Button &amp;quot;save and restart&amp;quot; bestätigen. Dabei werden die vorgenommen Einstellungen im EEPROM gespeichert und ein Neustart des LaCrosseGateways initiiert.&lt;br /&gt;
&lt;br /&gt;
Nach dem Neustart verbindet sich das LaCrosseGateway mit dem WLAN-Router. &lt;br /&gt;
&lt;br /&gt;
Anschließend kann mit der [[#Hinweise zum Betrieb mit FHEM |Inbetriebnahme in FHEM]] fortgefahren werden.&lt;br /&gt;
&lt;br /&gt;
==Firmware aktualisieren==&lt;br /&gt;
&lt;br /&gt;
Nachfolgend werden, neben der unter dem Punkt [[#Firmware aufspielen |Firmware aufspielen]] beschriebenen Möglichkeiten, weitere Möglichkeiten zur Aktualisierung der LaCrosseGateway [[LaCrosseGateway#Firmware Download|Firmware]] aufgezeigt.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Die Einstellungen des LaCrosseGateway werden dabei nicht gelöscht.&lt;br /&gt;
&lt;br /&gt;
=== Per FHEM (OTA-Update)===&lt;br /&gt;
Voraussetzungen:&lt;br /&gt;
&lt;br /&gt;
*Das LGW muss auf der IP-Adresse, die im LaCrosseGateway Modul definiert ist, erreichbar sein&lt;br /&gt;
*Es wird kein avrdude benötigt&lt;br /&gt;
*Das Attribut &amp;quot;flashCommand&amp;quot; spielt keine Rolle&lt;br /&gt;
&lt;br /&gt;
Die LaCrosseGateway Firmware kann von LaCrosseGateway Device (LaCrosseGateway Modul) aus mit &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway flash&amp;lt;/syntaxhighlight&amp;gt; aktualisiert werden.&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;myLaCrosseGateway&#039;&#039;&#039; muss bei Bedarf auf den Gerätenamen in FHEM angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das Update dauert ca. 30 Sekunden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Per FHEM (USB)===&lt;br /&gt;
Voraussetzungen:&lt;br /&gt;
Auf dem FHEM-Server muss Python und pyserial installiert sein. Die Installation kann z.B. so erfolgen:&lt;br /&gt;
*apt-get install python&lt;br /&gt;
*wget https://bootstrap.pypa.io/get-pip.py&lt;br /&gt;
*python get-pip.py&lt;br /&gt;
*pip install pyserial&lt;br /&gt;
&lt;br /&gt;
Das Attribut &amp;quot;mode&amp;quot; muss auf USB gesetzt sein: attr myLaCrosseGateway mode USB&lt;br /&gt;
&lt;br /&gt;
Der flash-Vorgang wird gestartet mit: set myLaCrosseGateway flash&lt;br /&gt;
&lt;br /&gt;
=== Per CURL ===&lt;br /&gt;
Voraussetzungen:&lt;br /&gt;
*[https://curl.haxx.se/download.html curl-Tool] installiert &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;curl --http1.0 -# -o ~output.txt -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@.\JeeLink_LaCrosseGateway.bin; filename=firmware.bin&amp;quot; http://192.168.31.211/ota/firmware.bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Firmwaredateiname (file=)&#039;&#039;&#039; und die &#039;&#039;&#039;IP-Adresse&#039;&#039;&#039; muss entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Per WEB OTA-Update (deprecated)===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;deprecated&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==LaCrosseGateway Web-Frontend==&lt;br /&gt;
===Staus-Wert RSSI===&lt;br /&gt;
Die WiFi Signalstärke (dBm) (-36 ist besser als -60)&lt;br /&gt;
&lt;br /&gt;
===Staus-Wert FramesPerMinute===&lt;br /&gt;
Dieser gibt an, wie viele frames von Sensoren in der letzten Minute erfolgreich empfangen, dekodiert und verarbeitet wurden.&lt;br /&gt;
Es eignet sich zur Überwachung, wenn weniger als ein Grenzwert empfangen wurde, dann kann ein Alarm (Benachrichtigung, Restart etc.) ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
===Staus-Wert ReceivedFrames===&lt;br /&gt;
Dieser Wert gibt an, wie viele seit dem Start des LGW empfangen wurden.&lt;br /&gt;
&lt;br /&gt;
===WiFi &amp;quot;Startup-delay&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Mit diesen Konfigurationsprameter kann eine Verzögerung (in Sekunden) definiert werden, bis das LGW nach einen Neustart einen ersten Verbindungsversuch zum WiFi Access Point (Router: Fritzbox etc.) startet.&lt;br /&gt;
&lt;br /&gt;
Eine Anpassung kann für den folgenden Fall sinnvoll sein:&lt;br /&gt;
&lt;br /&gt;
Nach einem Stromausfall benötigt ein WiFi Access Point (Router: Fritzbox etc.) in den meisten Fällen länger zum Starten als das LGW. In der default Einstellung führt das dazu, dass der LGW nach dem Starten versucht 30 Sekunden lang eine Verbindung zum AP herzustellen. Wenn keine Verbindung innerhalb dieser Zeit zustande kommt, dann gibt das LGW auf und macht seinen eigenen AP auf. Mit einer entsprechenden Verzögerung (Dauer bis der Router gestartet ist und der WiFi-AP zur Verfügung steht) kann sichergestellt werden, dass der AP gestartet ist und sich das LGW mit dem AP verbinden kann.&lt;br /&gt;
&lt;br /&gt;
===Internal Sensors &amp;quot;Sensor-ID&amp;quot;===&lt;br /&gt;
Bei Einsatz von mehr als einem LaCrosseGateway, muss die LaCrosse-ID, mit der die internen Sensoren des Gateways übermittelt werden, angepasst werden. &lt;br /&gt;
Hierbei ist darauf zu achten, dass die LaCrosse-ID nur einmal auf einer FHEM Instanz vorkommen darf. Die ID kann entweder Dezimal (211) oder Hex (0xD3) angegeben werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Detailinformationen:&#039;&#039;&#039;&#039;&#039; Wenn ein LGW interne Sensoren hat (BME280, BMP180, DHT22, ...) dann sendet es die Daten des Sensors so, als ob es eine Wetterstation wäre (WS 1600 Format) an das LGW. Bisher hat es dafür die Sensor-ID 0 verwendet. Wenn man mehrere LGWs an ein FHEM angebunden hat, dann mischen sich deren Sensor-Daten auf dem LaCrosse device mit der ID 0. Um das zu vermeiden, kann man nun konfigurieren, mit welcher Sensor-ID die internen Sensoren gesendet werden sollen und die beiden LGWs unterschiedliche konfigurieren.&lt;br /&gt;
&lt;br /&gt;
Die Anpassung der LaCrosse-ID hat keinerlei Einfluss auf die Daten, die von den Radios empfangen werden.&lt;br /&gt;
&lt;br /&gt;
===Internal Sensors &amp;quot;Altitude&amp;quot;===&lt;br /&gt;
Mit diesen Parameter kann die Höhe über NN konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
===Internal Sensors &amp;quot;Temperature-/Humidity-correction&amp;quot;===&lt;br /&gt;
Für Temperatur und Feuchte kann ein Korrekturwert angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Der Wert kann entweder ein Offset oder prozentual sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiele:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Korrekturwert !! Gemessen !! Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| -5 &lt;br /&gt;
| 20°C&lt;br /&gt;
| 15°C&lt;br /&gt;
|-&lt;br /&gt;
| +3&lt;br /&gt;
| 20°C&lt;br /&gt;
| 23°C&lt;br /&gt;
|-&lt;br /&gt;
| -10%&lt;br /&gt;
| 20°C&lt;br /&gt;
| 18°C&lt;br /&gt;
|-&lt;br /&gt;
| +20%&lt;br /&gt;
| 20°C&lt;br /&gt;
| 24°C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SC16IS750-Clone===&lt;br /&gt;
Wenn aktiviert, wird die I2C clock auf 100 kHz runtergenommen und&lt;br /&gt;
es wird an einigen Stellen etwas auf die Bremse getreten, dass ein SC16IS70-Clone, der langsamer&lt;br /&gt;
als echte Hardware ist, mitkommt.&lt;br /&gt;
Sollte man ohne zwingenden Grund nicht aktivieren.&lt;br /&gt;
&lt;br /&gt;
===Use MDNS=== &lt;br /&gt;
Legt fest, ob das LGW seine IP-Adresse per MDNS bekannt gibt. Dies ist nötig, wenn man einen Mac hat oder bei Windows einen Bonjour-Service laufen hat.&lt;br /&gt;
Dies ist beim Entwickeln sinnvoll, kann üblicherweise ausgeschaltet bleiben.&lt;br /&gt;
&lt;br /&gt;
===MCP23008=== &lt;br /&gt;
Konfigurationsmöglichkeit für die 8 IO Pins (siehe auch [[#Inbetriebnahme_von_MCP23008|Inbetriebnahme von MCP23008]]).&lt;br /&gt;
&lt;br /&gt;
===Serial bridge port und bridge baud===&lt;br /&gt;
Das LGW kann nun optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen.&lt;br /&gt;
Dazu gibt es die &amp;quot;Serial bridge port&amp;quot; und &amp;quot;Serial bridge baud&amp;quot; auf der &amp;quot;config&amp;quot;-Page des LGWs.&lt;br /&gt;
Das LGW überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
===Soft Serial Bridge===&lt;br /&gt;
Das LGW kann optional eine Soft serial bridge (Zuverlässig nur mit bis zu 57600 baud) transparent auf einem TCP Port bereitstellen.&lt;br /&gt;
Folgende Parameter können auf der LGW Setup-Page angepasst/konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Parameter !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Port&lt;br /&gt;
| Der Port, auf dem es angesprochen werden kann&lt;br /&gt;
|-&lt;br /&gt;
| Baud&lt;br /&gt;
| Die Baudrate für die Kommunikation&lt;br /&gt;
|-&lt;br /&gt;
| Nextion display&lt;br /&gt;
| Für den Betrieb eines Nextion Display muss diese Option aktiviert sein.&lt;br /&gt;
|-&lt;br /&gt;
| Add units&lt;br /&gt;
| Fügt an die Werte (Temp,Hum,Pres), die das LGW an das Display schickt, Einheiten an.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mithilfe des Soft serial bridge können verschiedene Geräte (nanoCUL, Nextion Display, etc.), welche per seriellen Schnitstelle kommunizieren können, in Betrieb genommen werden.&lt;br /&gt;
&lt;br /&gt;
===Statuswerte abrufen===&lt;br /&gt;
Mit http://&amp;lt;IP-des-LGW&amp;gt;/state können die Statuswerte, die das LGW-Frontend anzeigt, als XML zur Weiterverarbeitung abgerufen werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;LGW&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;UpTimeSeconds&amp;quot; Value=&amp;quot;107086&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;UpTimeText&amp;quot; Value=&amp;quot;1Tg. 5Std. 44Min. 46Sek. &amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;WIFI&amp;quot; Value=&amp;quot;NeverTellThem&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;MacAddress&amp;quot; Value=&amp;quot;18:FE:34:9A:6D:48&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;ChipID&amp;quot; Value=&amp;quot;10120520&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;ReceivedFrames&amp;quot; Value=&amp;quot;93593&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;FramesPerMinute&amp;quot; Value=&amp;quot;52&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/LGW&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Funktionsweise Log===&lt;br /&gt;
Das Log ist als Hilfsmittel bei der Fehlersuche gedacht z.B. um bei PCA301 zu verfolgen, wann wer was wie frägt und antwortet oder um zu schauen, ob irgend welche Sensoren überhaupt empfangen werden und die Daten an FHEM geliefert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:lgw_LogPage.png|600px|thumb|left|LaCrosseGateway Log ebfrontend]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Mit &amp;quot;Command&amp;quot; kann man Befehle an das LGW senden. Sie entsprechen dem, was man mit &amp;quot;set myLaCrosseGateway raw ...&amp;quot; aus FHEM schicken kann.&lt;br /&gt;
Die obere Liste enthält die Daten, die an FHEM übermittelt werden (bzw. würden, wenn sich ein FHEM auf das LGW verbunden hat)&lt;br /&gt;
Die untere Liste enthält debug-Informationen u.a. wird hier der letzte Systemstart aufgezeichnet.&lt;br /&gt;
Die verwendete SDK-Version und der letzte Reset-Grund werden ebenfalls ausgegeben&lt;br /&gt;
&lt;br /&gt;
Das Log kann per HTTP abgerufen werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;http://&amp;lt;LGW-IP&amp;gt;/getLogData&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;http://192.168.31.211/getLogData&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Ergebnis sieht wie folgt aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;DATA:OK 22 117 196 0 58 226 102 0 58 191 86 0 0 40 172 0 105 1 101 3 0 [75 C4 E2 66 00 00 BF 56 00 00 00 02 3B FC DC 00 69 01 65 4A A4 C4 F9 F2 4F 11 A4 F6 7C 03 A0 00 00 00 00 03 A0 38 09 21 27]&lt;br /&gt;
DATA:OK 9 11 130 4 173 125 [92 D5 97 7D 75]&lt;br /&gt;
DATA:OK EMT7110 84 81 8 207 0 36 0 1 1 199 1 [25 6A 54 51 40 02 00 24 C3 41 C7 9B]&lt;br /&gt;
SYS: AddOn: KV ADDON 01 Voltage=3.33,UpTime=4921&lt;br /&gt;
DATA:OK VALUES ADDON 01 Voltage=3.33,UpTime=4921&lt;br /&gt;
DATA:OK 9 38 1 4 67 65 [99 84 91 41 07]&lt;br /&gt;
DATA:OK 22 126 67 0 65 236 34 0 65 231 116 0 0 32 103 0 48 0 134 1 0 [7E 43 EC 22 00 00 E7 74 00 00 00 01 C7 AC D7 00 30 00 86 00 57 E4 69 1E 46 8E D4 68 C7 04 10 00 00 00 00 04 10 18 0A DC F7]&lt;br /&gt;
DATA:OK 9 36 1 4 128 61 [99 05 52 3D 96]&lt;br /&gt;
DATA:OK WS 0 4 4 185 255 255 255 255 255 255 255 255 255 0 3 252&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;DATA:&#039;&#039;&#039;&#039;&#039; für die obere Liste&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;SYS: &#039;&#039;&#039;&#039;&#039; für die untere Liste&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei jedem Aufruf werden die seit dem letzten Abruf neu aufgelaufenen Logeinträge geliefert.&lt;br /&gt;
Intern werden maximal 40 Einträge gepuffert (aber kein Ringpuffer, weil die ersten 40 mit dem Bootlog erhalten bleiben müssen)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039;&#039;&#039; Aus Performance- und Stabilitätsgründen sollten die Daten nicht zu häufig und nicht von zwei Instanzen gleichzeitig abgerufen werden.&lt;br /&gt;
&lt;br /&gt;
=Hinweise zum Betrieb mit FHEM=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voraussetzungen==&lt;br /&gt;
Es wird ein [[#LaCrosseGateway einrichten |vorkonfiguriertes]] LaCrosseGateway vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
Perl Modul: &#039;&#039;LWP::UserAgent&#039;&#039; - Dieses wird für das Firmware Update per FHEM LaCrosseGateway Modul benötigt.&lt;br /&gt;
Auf einem Raspberry Pi kann die Installation wie folgt durchgeführt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;sudo apt-get install libwww-perl&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
alternativ auch mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;sudo cpan LWP::UserAgent&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FHEM Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Ursprünglich wurde für das LaCrosseGateway das FHEM-Modul 36_JeeLink.pm verwendet. Da es aber inzwischen erhebliche Unterschiede zwischen dem JeeLink-LaCrosse-Sketch und dem LaCrosseGateway gibt, existiert seit Mitte November 2016 ein für das LaCrosseGateway spezialisiertes und optimiertes FHEM-Modul, das 36_LaCrosseGateway.pm.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses sollte anstatt dem 36_JeeLink.pm vorzugsweise verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_LaCrosseGeateway.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_KeyValueProtocol.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_LaCrosse.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_PCA301.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_EC3000.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_EMT7110.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_Level.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;42_Nextion.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
==Device Definition==&lt;br /&gt;
===WLAN===&lt;br /&gt;
Die Definition sieht dann wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;myLaCrosseGateway&amp;gt; LaCrosseGateway &amp;lt;IP-Adresse&amp;gt;:81&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;myLaCrosseGateway&amp;gt;&#039;&#039; kann bei Bedarf angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;IP-Adresse&amp;gt;&#039;&#039; muss entsprechend angepasst werden. Anstatt der IP-Adresse kann auch der Hostname vom LaCrosseGateway verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define myLaCrosseGateway LaCrosseGateway 192.168.22.33:81&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;IP-Adresse ermitteln:&amp;lt;/u&amp;gt; Das LaCrosseGateway heist per default Einstellung &amp;quot;&#039;&#039;LaCrosseGateway&#039;&#039;&amp;quot;, per ping auf den Hostnamen &#039;&#039;LaCrosseGateway&#039;&#039; kann die &amp;lt;IP-Adresse&amp;gt; ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
Wenn man das LGW über USB betreiben will, dann möchte man üblicherweise kein WiFi.&lt;br /&gt;
Um das WiFi zu deaktivieren gibt es zwei Möglichkeiten:&amp;lt;br&amp;gt;&lt;br /&gt;
1.) Man kann mit einen 10k pullup auf 3.3V an MOSI == GPIO13 == D7 &amp;quot;jumpern&amp;quot;, dass man kein wifi will. Wenn voranden, wird WiFi sofort beim Start deaktiviert.&amp;lt;br&amp;gt;&lt;br /&gt;
2.) Man kann WiFi auf der Setup-Page des LGW deaktivieren.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb via USB sieht die Definition wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;myLaCrosseGateway&amp;gt; LaCrosseGateway &amp;lt;USB-Port&amp;gt;@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;myLaCrosseGateway&amp;gt;&#039;&#039; kann bei Bedarf angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;USB-Port&amp;gt;&#039;&#039; muss entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: &amp;lt;code&amp;gt;define myLaCrosseGateway LaCrosseGateway /dev/ttyUSB0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;/dev/ttyUSB0&#039;&#039; Falls bereits mehrere USB Geräte angeschlossen sind muss der USB Port angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sind mehrere USB Devices am FHEM Server (z.B. RPI, Cubietruck etc.) in Betrieb, dann ist die Zuordnung über den USB-Port nicht zuverlässig. Die Ports werden u.a. in der Reihenfolge vergeben, in der die Geräte angeschlossen werden. Zuverlässiger und eindeutiger ist die Zuordnung über die Serial-ID.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl zeigt die Serial-ID der angeschlossenen USB-Devices an: &lt;br /&gt;
&amp;lt;code&amp;gt;ls -l /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Ausgabe:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;lrwxrwxrwx 1 root root 13 Mai 14 10:37 usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 -&amp;gt; ../../ttyUSB1&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Mai 30 11:27 usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -&amp;gt; ../../ttyUSB2&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Apr 16 14:52 usb-Silicon_Labs_ELV_USB-Modul_UM2102_EVFSRFF8COEXIKOT-if00-port0 -&amp;gt; ../../ttyUSB0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In diesem Fall ist u.a. ein DEVKIT 1.0 mit der Serial-ID &#039;&#039;usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -&amp;gt; ../../ttyUSB2&#039;&#039; angeschlossen.&lt;br /&gt;
&lt;br /&gt;
Auf Basis dieser Informationen lässt sich folgende Definition erstellen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define myLaCrosseGateway LaCrosseGateway /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0@57600&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wichtig ist es, die Übertragungsrate von 57600 bit/s anzugeben.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man das LGW ohne WiFi betreibt, dann muss man natürlich auf die Annehmlichkeiten des Web-Frontends verzichten.&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Fall kann man die Konfiguration, die man über das Web-Frontend machen würde, über die serielle Schnittstelle machen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set myLaCrosseGateway raw &amp;quot;SETUP ...&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das ... sind die gewünschten Einstellungen. Es müssen nicht alle Einstellungen gesendet werden sondern nur die, die man setzen will.&amp;lt;br&amp;gt;&lt;br /&gt;
Es werden nur die Einstellungen gesetzt und im EEPROM gespeichert, es wird aber kein Reboot ausgelöst&amp;lt;br&amp;gt;&lt;br /&gt;
Einen Reboot kann man mit &amp;quot;set myLaCrosseGateway raw 8377e&amp;quot; auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
Mehrere Einstellungen können durch Semikolon getrennt angegeben werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;code&amp;gt;set myJeeLink213 raw &amp;quot;SETUP UseWiFi false; IO0 OLED mode=thp; IO1 OLED Off; CorrT -2.5; ISID 213&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann auf der seriellen Schnittstelle die aktuellen Einstellungen abrufen.&lt;br /&gt;
Das command ist 1g&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;set myLaCrosseGateway raw 1g&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Man bekommt dann so etwas zurück:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;SETUP ctSSID esesidee; ctPASS PasstWort; staticIP 192.168.31.211; staticMask 255.255.255.0; staticGW 192.168.31.1;&lt;br /&gt;
HostName LGW211; StartupDelay 1; ISID 0xD3; Altitude 220; CorrT 0; CorrH 0; DataPort1 81; DataPort2 82; SerialBridgePort 85; &lt;br /&gt;
SerialBridgeBaud 38400; UseMDNS true; IO0 OLED mode=s; IO1 OLED mode=thp; IO2 OLED On; IO3 OLED Off; oledStart 120; KVInterval 10; &lt;br /&gt;
KVIdentity 211; PCA301Plugs 036180=3,03A094=1,035FF1=6;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reconnect==&lt;br /&gt;
Falls das LaCrosseGateway nicht erreichbar ist (Kein Strom/Stromausfall, WLAN Verbingung unterbrochen etc.), bricht das LaCrosseGateway Device die Kommunikation ab. Über das entsprechende &#039;&#039;timeout&#039;&#039; Attribut kann das LaCrosseGateway device so konfigurert werden, dass es in regelmässigen Abständen erneut versucht eine Verbindung mit dem LaCrosseGateway herzustellen.&lt;br /&gt;
&lt;br /&gt;
Konfigurationsempfehlung für &#039;&#039;timeout&#039;&#039; = 120 Sekunden und &#039;&#039;checkInterval&#039;&#039; = 30 Sekunden:&lt;br /&gt;
&lt;br /&gt;
Der Wert kann in FHEM wie folgt gesetzt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway timeout 120,30&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;myLaCrosseGateway&#039;&#039;&#039; muss auf den Gerätenamen in FHEM angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Während das LaCrosseGateway eine WiFi-Verbindung aufbaut, benötigt das LaCrosseGateway-Modul je nach Konfiguration einige Zeit bis es einen neuen Connect auf den Datenport des LaCrosseGateway versucht. Das Finden der optimalen Werte erfordert etwas Geduld, es kann auch schon mal ein, zwei Minuten Dauern, bis die ersten Daten in FHEM übertragen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Erklärung der Timeout Werte:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
120,30 prüft alle 30 Sekunden, ob seit mindestens 120 Sekunden keine Daten mehr übermittelt wurden und falls dem so ist, macht es einen Reset auf der Schnittstelle, was die Verbindung zum LaCrosseGateway neu aufbaut. Das bedeutet, in so einem Fall ist die Verbindung nach spätestens 150 Sekunden wieder hergestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Attribut wird lediglich eine neue Verbindung aufgebaut, dabei wird das LaCrosseGateway nicht resetet.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Liste aller initCommands==&lt;br /&gt;
Eine aktuelle Liste der initCommands, die man von FHEM, Terminalprogramm oder Web-Frontend aus senden kann, sind auf dem Web-Frontend &amp;quot;Help&amp;quot;-Page&amp;quot; des LaCrosseGateways (ab V1.17) aufgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://IP-Adresse/setup http://IP-Adresse oder Hostname/help]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;n&amp;gt;a       set to 0 if the blue LED bothers&lt;br /&gt;
&amp;lt;n&amp;gt;c       use one of the possible data rates (for transmit on RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;d       set to 1 to see debug messages&lt;br /&gt;
&amp;lt;8266&amp;gt;e    Clear EEPROM&lt;br /&gt;
&amp;lt;n&amp;gt;f       initial frequency in kHz (5 kHz steps, 860480 ... 879515)&lt;br /&gt;
&amp;lt;n&amp;gt;g       get information (1g: get current settings)&lt;br /&gt;
&amp;lt;n&amp;gt;h       Altitude&lt;br /&gt;
&amp;lt;n,f,i&amp;gt;i   Init PCA for Radio #&amp;lt;n&amp;gt; to &amp;lt;m&amp;gt;MHz and &amp;lt;i&amp;gt;s Interval&lt;br /&gt;
&amp;lt;n&amp;gt;m       bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;M       bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #2)&lt;br /&gt;
&amp;lt;n&amp;gt;#&amp;lt;x&amp;gt;m   bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #x)&lt;br /&gt;
&amp;lt;n&amp;gt;o       set HF-parameter e.g. 1,4o for RFM69&lt;br /&gt;
&amp;lt;n&amp;gt;p       payload on the serial port (1: all, 2: only undecoded data)&lt;br /&gt;
&amp;lt;n&amp;gt;r       use one of the possible data rates (for RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;R       use one of the possible data rates (for RFM #2)&lt;br /&gt;
&amp;lt;n&amp;gt;#&amp;lt;x&amp;gt;r   use one of the possible data rates (for RFM #x)&lt;br /&gt;
&amp;lt;x,x,...&amp;gt;s Send to PCA301 (must be 10 byte)&lt;br /&gt;
&amp;lt;x,x,...&amp;gt;S Send to CustomSensor&lt;br /&gt;
&amp;lt;n&amp;gt;t       0=no toggle, else interval in seconds (for RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;T       0=no toggle, else interval in seconds (for RFM #2)&lt;br /&gt;
&amp;lt;n&amp;gt;#&amp;lt;x&amp;gt;t   0=no toggle, else interval in seconds (for RFM #x)&lt;br /&gt;
v          show version&lt;br /&gt;
&amp;lt;n&amp;gt;w       0=no wifi&lt;br /&gt;
&amp;lt;n&amp;gt;z       set to 1 to display analyzed frame data instead of the normal data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LaCrosseGateway zurücksetzen==&lt;br /&gt;
Das LaCrosseGateway kann auf die &amp;quot;Werkseinstellungen&amp;quot; zurückgesetzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch werden alle auf der Setup-Page gemachten und im EEPROM gespeicherten Einstellungen verworfen.&lt;br /&gt;
Der Befehl dazu lautet: &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;8266e&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Er kann mit einem Terminalprogramm, von FHEM aus mit &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set &amp;lt;myLaCrosseGateway&amp;gt; raw 8266e&amp;lt;/syntaxhighlight&amp;gt; oder von der Log-Page des LGW gesendet werden.&lt;br /&gt;
&lt;br /&gt;
Danach startet das LGW wieder als Access Point [[#LaCrosseGateway einrichten|initiale Konfiguration]] und die Konfiguration kann über die &amp;quot;Setup-Page&amp;quot; neu vorgenommen werden kann.&lt;br /&gt;
&lt;br /&gt;
==Sensoren/Aktoren anlegen==&lt;br /&gt;
&lt;br /&gt;
Voraussetzung: FHEM autocreat ist aktiv.&lt;br /&gt;
Die [http://fhem.de/commandref.html#autocreate FHEM autocreate Funktion] ist aktiv.&lt;br /&gt;
&lt;br /&gt;
Die erkannnten Sensoren und Aktoren werden automatisch erkannt und in FHEM angelegt, sobald Daten empfangen werden.&lt;br /&gt;
&lt;br /&gt;
Empfangene Sensoren werden nur hinzugefügt werden, wenn LaCrossePairForSec auf 120 Sekunden gesetzt wird.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von BMP180 / BME280==&lt;br /&gt;
Damit die Daten der o.g. Sensoren in FHEM zur Verfügung stehen, muss zunächst das FHEM-Device angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Das Anlegen kann automatisch erfolgen, dafür muss der folgende FHEM Befehl ausgeführt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann sollte von [http://fhem.de/commandref.html#autocreate FHEM autocreate Funktion] ein LaCrosse Device mit der [[#Sensor-ID | Sensor-ID]] (Default Wert: 0) angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das FHEM Device manuell angelegt werden:&lt;br /&gt;
Die &#039;&#039;&#039;&#039;&#039;ID&#039;&#039;&#039;&#039;&#039;, mit der das LGW die internen Sensoren sendet, entspricht der konfugurierten [[#Sensor-ID | Sensor-ID]] (Default Wert: 0)&lt;br /&gt;
Es verhält sich so, als ob es eine Wetterstation (wie z.B. WS 1600) wäre.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define &amp;lt;name&amp;gt; LaCrosse 00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Anchließend muss eine Höhenkorrektur (Grund: der Luftdruck wird immer bezogen auf NN angegeben, der Sensor liefert aber den Absolutdruck) mit dem command &#039;&#039;&#039;&#039;&#039;h&#039;&#039;&#039;&#039;&#039; in den initCommands vorgenommen werden, dies erfolgt mit dem FHEM Befehl:&lt;br /&gt;
&lt;br /&gt;
Beispiel: 220h legt 220m über NN fest.&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 220h&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Besser:&#039;&#039;&#039; Alternativ kann die Höhe über NN auch auf der Setup-Page des LGW gesetzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Das hat den Vorteil, dass sofort vom Start an der normalisierte Luftdruck an FHEM gesendet wird und nicht erst, wenn die initCommands von FHEM geschickt wurden.&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme Piezo Summer==&lt;br /&gt;
&lt;br /&gt;
Der Piezo Summer wird in FHEM über das LaCrosseGateway Modul angesteuert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiele:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
set myLaCrosseGateway raw 1,60b   -&amp;gt; beep ... beep ... beep                      60 Sekunden lang&lt;br /&gt;
set myLaCrosseGateway raw 2,300b  -&amp;gt; beep beep ... beep beep ... beep beep      300 Sekunden lang&lt;br /&gt;
set myLaCrosseGateway raw 3,120b  -&amp;gt; beep beep beep ... beep beep beep ...      120 Sekunden lang&lt;br /&gt;
set myLaCrosseGateway raw 0b      -&amp;gt; beep stoppen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von RFM69CW==&lt;br /&gt;
Mit dem LaCrosseGateway ist es möglich mehrere RFM69CW einzusetzten. Nachfolgend wird die Konfiguration des Senders/Empfängers erläutert.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Default Werte&amp;quot; (wenn keine Angaben definiert werden) für die data rate sind wie folgt definiert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
#1 (Erste)  =&amp;gt; 17241&lt;br /&gt;
#2 (Zweite) =&amp;gt; 9579&lt;br /&gt;
#3 (Dritte) =&amp;gt; 8842&lt;br /&gt;
#4 (Vierte) =&amp;gt; 20000&lt;br /&gt;
#5 (Fünfte) =&amp;gt; 17241&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Detailinformationen sind auch auf der LaCrosseGateway &amp;quot;Help&amp;quot;-Page zu finden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center&amp;quot;|&#039;&#039;&#039;&amp;lt;Datenrate&amp;gt;#&amp;lt;Radio-Nummer&amp;gt;&amp;lt;command&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;m t:&amp;lt;/code&amp;gt;    || &#039;&#039;Toggle-Steuerung&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r:&amp;lt;/code&amp;gt;    || &#039;&#039;Datarate&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;f:&amp;lt;/code&amp;gt;    || &#039;&#039;Frequenz&#039;&#039; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiele:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
!Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 0#1r v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| DataRate des ersten RFM setzen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 8842#3r v &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| DataRate des dritten RFM setzen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868300#2f v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Frequenz des zweiten RFM setzten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868295#3f v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Frequenz des dritten RFM setzten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 17241#1r 8842#2r v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zwei RFM69CW mit DataRate 17241 und 8842&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 3#1m 20#1t 8842#2r v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zwei RFM69CW mit 20 Sekunden DataRate 17241 toggle 9579 plus 8842 permanent&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 220h 868295#1f 868310#2f v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zwei RFMs Frequenz 868295 und 868310 sowie Höhe über NN&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868295#1f 3#1m 20#1t 2,868950,60i 8842#3r 220h 0a v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Drei RFMs Frequenz 868295 / PCA301 / WS1600 sowie Höhe über NN &amp;lt;br&amp;gt;Radio 1 auf 868295 MHz und Toggle 9K/17K mit 20 Sekunden&amp;lt;br&amp;gt;Radio 2 für PCA301 initialisiert&amp;lt;br&amp;gt;Radio 3 macht 8842 kbps für die WS 1600&amp;lt;br&amp;gt;Höhe 220m über NN&amp;lt;br&amp;gt;Activity LED aus&amp;lt;br&amp;gt;v am Ende ruft die neu gesetzen Daten vom LaCrosseGateway ab, damit sie in FHEM LaCrosseGateway Modul aktualisiert werden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Es ist wichtig ein &amp;quot;v&amp;quot; an das Ende eines initCommands anzuhängen. Damit wird veranlasst, dass das LaCrosseGateway seine neuen Einstellungen an FHEM zurückmeldet.&lt;br /&gt;
==Inbetriebnahme von PCA301==&lt;br /&gt;
PCA301 im LGW funtioniert ähnlich dem PCA301 Sketch, allerding mit einigen systembedingten Abweichungen.&lt;br /&gt;
&lt;br /&gt;
Per default ist PCA301 nicht aktiviert, es muss in den initCommands aktiviert werden. Dazu gibt es das command &amp;quot;&#039;&#039;&#039;&#039;&#039;i&#039;&#039;&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;RadioNr&amp;gt;,&amp;lt;Frequenz&amp;gt;,&amp;lt;Poll-Intervall&amp;gt;i&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Initialisierung kann auch erneut geschickt werden, um z.B. das Poll-Intervall zu ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Wichtig:&#039;&#039;&#039;&#039;&#039; Es darf nur &#039;&#039;&#039;&amp;quot;ein&amp;quot;&#039;&#039;&#039; Radio für PCA301 initialisiert sein, nicht mehrere. Das PCA301 initialisierte Radio ist dediziert für PCA301 zuständig, es kann nicht zwischen anderen Protokollen (z.B. LaCrosse) toggeln.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;Poll-Interval&#039;&#039; sollte nicht extrem heruntergesetzt (nicht unter eine Minute) werden, da PCA301 sonst LaCrosse verdrängt. PCA301 hat hörere Priorität, da es bei der Kommunikation&lt;br /&gt;
mit den Dosen keine Antworten überhören darf.&lt;br /&gt;
&lt;br /&gt;
Unter Umständen muss die Frequenz etwas angepasst werden, wenn das Radio und/oder die Dosen nicht genau auf 868950 liegen.&lt;br /&gt;
Das ist daran zu erkennen, dass entweder gar keine Antwort von den Dosen oder verzögerte Antwort ankommt.&lt;br /&gt;
Werte von 868960 oder 960970 haben in manchen Fällen Abhilfe gebracht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiele:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | &amp;lt;code&amp;gt;attr myLaCrosseGateway initCommands 2,868950,120i v&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initialisiert den zweiten RFM auf 868950 MHz und setzt das Poll-Intervall auf 120 Sekunden&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myLaCrosseGateway initCommands 1,868950,120i 3#2m 20#2t 220h 0a v&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initialisierung eines LaCrosseGateways mit zwei Radios für TX29, TX35, PCA301 und BMP180/BME280.&amp;lt;br&amp;gt;Das erste Radio macht PCA301 und das zweite toggelt 17241/9579 im 20 Sekunden Takt um TX29 und TX35 zu empfangen&amp;lt;br&amp;gt;der BMP180/BME280 liefert den Druck für 220m Meereshöhe&amp;lt;br&amp;gt;die LED ist deaktiviert&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ablauf:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nachdem PCA301 initialisiert ist, lauscht das LaCrosseGateway auf der entsprechenden Frequenz.&lt;br /&gt;
Sobald eine Dose empfangen wurde, wird sie in der Konfiguration (EEPROM) dauerhaft registriert und ab sofort gepollt.&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;Polling&#039;&#039; funtioniert so, dass für jede Dose geschaut wird, wann sie zuletzt empfangen wurde und wenn das länger als das konfigurierte Interval zurück liegt,&lt;br /&gt;
dann wird sie abgefragt. Wenn sonst etwas (Basisstation, anderes FHEM) die Dose abgefragt hat und das LaCrosseGateway die Antwort gehört hat, dann gilt das auch als&lt;br /&gt;
empfangen und es wird kein eigener Poll für die Dose ausgelöst. &#039;&#039;Das Zusammenspiel mit einer echten Basisstation konnte bisher nur grob simuliert werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;Pairing&#039;&#039; (also die Vergabe eines Kanals) funktioniert wie im PCA301-Sketch, button an der Dose &#039;&#039;&amp;quot;3 Sekunden&amp;quot;&#039;&#039; drücken, dann vergibt das LaCrosseGateway den nächsten freien Kanal.&lt;br /&gt;
Dosen, die bereits einen Kanal haben, können durch ein Schalten vor Ort, an das LaCrosseGateway angelernt werden. Das LaCrosseGateway erkennt sie und nimmt sie in die&lt;br /&gt;
Konfiguration auf. Falls die Dose bereits mit einem anderen Kanal bekannt war, wird der Kanal im LaCrosseGateway aktualisisert.&lt;br /&gt;
&lt;br /&gt;
Auf der Setup-Page im Web-Frontend (http://IP-Adresse oder Hostname/setup) des LaCrosseGateway kann die Liste der bekannten Dosen (ID=Kanal) eingesehen werden. Hinweis: Es sollten keine Änderungen in diesem Bereich vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn ein Kommando (Schalten, Daten abfragen, ...) an eine Dose gesendet wurde und keine Antwort kam, wird bereits im Sketch drei mal versucht, eine Antwort zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Das PCA301 Modul in FHEM funktioniert komplett wie bisher.&lt;br /&gt;
&lt;br /&gt;
Weiterführende Themen zum PCA301 sind im Wiki [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung]] und PCA301 FHEM Thread {{Link2Forum|Topic=11648|LinkText=JeeLink / PCA301 Thread}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Die Befehle, die der PCA301-Sketch kennt, gibt es im LaCrosseGateway nur teilweise:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Befehl (Beschreibung)!! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;quot;turn activity LED on or off&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;l &amp;quot;list known devices&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen, kann man nun im Web-Frontend sehen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;q &amp;quot;turn quiet mode on or off&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r &amp;quot;list recordings&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;s &amp;quot;send to plug&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;v &amp;quot;report version and configuration parameters&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;d, e, p &amp;quot;poll / turn a device on / off&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;h, +, -, # &amp;quot;modify and display RF12 Frequency register&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen, ersetzt durch das &amp;quot;i&amp;quot; command bzw. das bereits vorhandene &amp;quot;f&amp;quot; command&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von Energy Count 3000 (EC3000)==&lt;br /&gt;
Die EC3000 sendet auf 868.300 kHz mit 20.000 kbps. Dafür wurde eine neue data rate hinzugefügt.&lt;br /&gt;
Sie kann mit 3r oder 20000r gesetzt werden. Wenn diese data rate gesetzt wird, wird auch automatisch der RFM69 auf den Empfang von EC3000 uminitialisiert.&lt;br /&gt;
&lt;br /&gt;
EC3000 kann auch in einen data rate toggle mit einbezogen werden. Dazu gibt es nun das bit mit dem Wert 8 für 20.000 kbps&lt;br /&gt;
&lt;br /&gt;
Um EC3000 dediziert mit einem der drei RFMs zu empfangen muss man einfach die data rate des gewünschten RFM setzen. Beispiel initCommand:&lt;br /&gt;
20000#2r&lt;br /&gt;
&lt;br /&gt;
Um EC3000 in einen data rate toggle mit einzubeziehen muss im m command das 8-wertige bit gesetzt werden.&lt;br /&gt;
Wenn man z.B. mit dem zweiten Radio 17k Sensoren  (TX29...) und EC3000 empfangen soll (20 Sekunden toggle), wäre das initCommand:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 9#2m 20#2t v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von MCP23008==&lt;br /&gt;
Auf der LaCrosseGateway &amp;quot;config&amp;quot;-page kann für jeden der 8 IO Pins konfiguriert werden, ob es ein Input oder Output Pin ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Input&#039;&#039;&#039;: Eingang, wird per KVP an FHEM übermittelt. Einsatzzweck: z.B. Anschluß von Pushbuttons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output&#039;&#039;&#039;: Kann von FHEM aus gesetzt werden. Einsatzzweck: z.B. Anschluß von LEDs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel: &#039;&#039;Input =&amp;gt; Eingang, wird per KVP an FHEM übermittelt&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;OK VALUES LGPB 211 GP2=0,GP3=1,GP4=0,GP5=0,GP6=0,GP7=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel: &#039;&#039;Output =&amp;gt; Kann von FHEM aus gesetzt werden.&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;MCP GP0=1,GP1=0&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme Analogport==&lt;br /&gt;
Der Analogport A0 des ESP8266 wird als Reading im LaCrosseGatewayModul aufgeführt.&lt;br /&gt;
Um das zu aktivieren, muss man auf der Setup-Page des LGW die Option &amp;quot;Send analog values&amp;quot; ankreuzen.&lt;br /&gt;
Der Eingangsspannungsbereich von A0 ist 0V ... 1.0V, was zu einem Reading von 0 ... 1023 führt.&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von OLED-Display==&lt;br /&gt;
Es wird das 128x64 pixel 0.96&amp;quot; I2C Display mit dem SSD1306 controller und das 128x64 pixel 1.3&amp;quot; mit dem SH1106 controller unterstützt.&lt;br /&gt;
&lt;br /&gt;
Für die korrekte Darstellung auf dem 1.3&amp;quot; Display, muss die Checkbox 1.3&amp;quot; auf der Setup-Page aktiviert werden &lt;br /&gt;
&lt;br /&gt;
Hinweis: das 0.96&amp;quot; Display bekommt man auch in einer Varianten, die SPI unterstützt. Diese Variante kann nur nach einem Umbau verwendet werden. &lt;br /&gt;
&lt;br /&gt;
Der nachfolgende Funktionsumfang ist implementiert:&lt;br /&gt;
&lt;br /&gt;
*OLED ein- und ausschalten sowie das Senden von individuellen Texten über FHEM mithilfe des LaCrosseGateway-Moduls&lt;br /&gt;
*OLED Startverhalten konfigurierbar&lt;br /&gt;
*Übermittlung des Display Status im KVP&lt;br /&gt;
*Anzeige von Statusinformationen in der obersten Zeile mithilfe von Symbolen (siehe Abbildung - von links nach rechts)&lt;br /&gt;
**WiFI connect erfolgreich&lt;br /&gt;
**Ein FHEM hat sich auf einen DataPort connected&lt;br /&gt;
**Ein FHEM hat sich auf den Prozessor an der [[#Serial_transparent_bridge|uart bridge]] connected&lt;br /&gt;
**WiFi Signalstärke (dBm). Hinweis: -36 ist besser als -60&lt;br /&gt;
[[Datei:lgw_oled_statuszeile.png|400px|thumb|left|OLED Anzeige von Statusinformationen]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
*Darstellung von bis zu drei Texten und optional ein Symbol.&lt;br /&gt;
*Definition des Zeitintvervalls für das Umschalten zur nächsten Seite&lt;br /&gt;
*Zuweisung der Modes an die Ports des MCP23008 (Die Konfiguration erfolgt auf der &amp;quot;Setup&amp;quot;-Page)&lt;br /&gt;
*Fortschrittsanzeige beim Flashen eines an die serielle Schnittstelle des SC16IS750 angeschlossenen Arduinos (siehe SubProzessor und Serial transparent bridge)&lt;br /&gt;
&lt;br /&gt;
===OLED Start Modus===&lt;br /&gt;
Einstellungsmöglichkeit über die &amp;quot;Config&amp;quot;-Page wie sich das OLED nach einem Start verhalten soll.&lt;br /&gt;
Mögliche Optionen: on / off / Anzahl Sekunden, nach denen es ausgeht.&lt;br /&gt;
Zusätzlich kann der initiale Mode festgelegt werden (z.B. thp)&lt;br /&gt;
&lt;br /&gt;
===Modes===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Prefix !! Parameter !! Erläuterung &lt;br /&gt;
|-&lt;br /&gt;
| OLED mode= &lt;br /&gt;
| t&lt;br /&gt;
| Temperatur des internen Sensors&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| h&lt;br /&gt;
| Feuchte des internen Sensors&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| p&lt;br /&gt;
| Druck des internen Sensors&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| s&lt;br /&gt;
| Statuswerte des LGW&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| f&lt;br /&gt;
| von FHEM gesetzter Text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Mögliche Symbole===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Parameter !! Erläuterung !! OLED Darstellung&lt;br /&gt;
|-&lt;br /&gt;
| t&lt;br /&gt;
| Temperature&lt;br /&gt;
| [[Datei:lgw_sym_t.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| h&lt;br /&gt;
| Humidity&lt;br /&gt;
|[[Datei:lgw_sym_h.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| p&lt;br /&gt;
| Pressure&lt;br /&gt;
|[[Datei:lgw_sym_p.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| s&lt;br /&gt;
| System&lt;br /&gt;
|[[Datei:lgw_sym_s.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| i&lt;br /&gt;
| Info&lt;br /&gt;
|[[Datei:lgw_sym_i.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| w&lt;br /&gt;
| Warning&lt;br /&gt;
|[[Datei:lgw_sym_w.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| e&lt;br /&gt;
| Error&lt;br /&gt;
|[[Datei:lgw_sym_e.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Definition !! Erläuterung&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:30%&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED On&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Schaltet ein angeschlossenes Display ein &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED Off&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Schaltet ein angeschlossenes Display aus &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED interval=20&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Legt fest, dass (je nach mode) alle 20 Sekunden die nächste Seite angezeigt wird. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=ths&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte und Systemdaten an &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=thp&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte und Luftdruck an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=thps&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=f&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt ausschließlich den von FHEM festgeleget Text an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=s&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt ausschließlich die Systemdaten an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=Soll: 20.5,Ist: 19.2,,t&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt die übergebenen Texte an und links das Symbol für Temperatur&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=55%,,,h&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nur den Text &amp;quot;55%&amp;quot; und das Symbol für Feuchte an. Da es nur ein Text ist, wird er größer dargestellt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=Line 1,Line 2,Line 3&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt drei Texte aber kein Symbol an.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands &amp;quot;OLED mode=thps&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an. Der Mode wird immer geschickt, wenn FHEM sich neu auf das LGW connected.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme eines Nextion Displays==&lt;br /&gt;
&lt;br /&gt;
Mithilfe der Seriellen Schnittstelle [[#Soft_serial_bridge|(Soft serial bridge]]), kann ein Nextion Display in Betrieb genommen werden. Das Besondere dabei ist, dass das LGW zusätzlich seine Status Informationen (AP-Verbindungsstatus, RSSI ,IP ,Version ,FHEM Verbindungsstatus, etc.) an das Display schickt. &lt;br /&gt;
Die Anbindung an FHEM erfolgt Mithilfe des Nextion Moduls (42_Nextion.pm), welches per FHEM Update verteilt wird. &lt;br /&gt;
&lt;br /&gt;
Ein Diskussionsthread zum Thema „LaCrosseGateway mit Nextion Display“ findet man {{Link2Forum|Topic=63443|LinkText=hier}}. &lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
Vor der Inbetriebnahme in FHEM, müssen folgende Voraussetzungen erfüllt sein:&lt;br /&gt;
*Das Display ist wie [[#Nextion_Display|hier]] beschrieben an das LGW angeschlossen.&lt;br /&gt;
*Die [[#Soft_serial_bridge|Soft serial bridge]] auf der LGW Setup-page ist konfiguriert.&lt;br /&gt;
*Das LaCrosse Gateway Device ist wie [[#Device_Definition|hier]] beschrieben angelegt.&lt;br /&gt;
&lt;br /&gt;
===Funktionsumfang===&lt;br /&gt;
&lt;br /&gt;
Der nachfolgende Funktionsumfang ist implementiert:&lt;br /&gt;
&lt;br /&gt;
*OTA Firmware (.tft File) übertragung an das Display &lt;br /&gt;
*Automatische Anpassung der Baudrate auf dem Nextion&lt;br /&gt;
*Das LGW schickt (periodisch) Werte an folgende Controls:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Control!! Beschreibung/Anmerkung&lt;br /&gt;
|-&lt;br /&gt;
| LGW#temp.txt&lt;br /&gt;
| Nur wenn ein entsprechender on board sensor vorhanden ist.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#hum.txt&lt;br /&gt;
| Nur wenn ein entsprechender on board sensor vorhanden ist.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#pres.txt&lt;br /&gt;
| Nur wenn ein entsprechender on board sensor vorhanden ist.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#rssi.txt&lt;br /&gt;
| WLAN RSSI Signalstärke&lt;br /&gt;
|-&lt;br /&gt;
| LGW#ip.txt&lt;br /&gt;
| IP-Adresse des LGW&#039;s&lt;br /&gt;
|-&lt;br /&gt;
| LGW#fpm.txt&lt;br /&gt;
| Frames Per Minute&lt;br /&gt;
|-&lt;br /&gt;
| LGW#heap.txt&lt;br /&gt;
| Free Heap&lt;br /&gt;
|-&lt;br /&gt;
| LGW#up.txt&lt;br /&gt;
| Uptime&lt;br /&gt;
|-&lt;br /&gt;
| LGW#ver.txt&lt;br /&gt;
| Version&lt;br /&gt;
|-&lt;br /&gt;
| LGW#wifi (vis)&lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#fhem&lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#cpu1 &lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#cpu2&lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#main&lt;br /&gt;
| Sendet, nachdem es sich initialisiert hat, ein &amp;quot;page LGW#main&amp;quot; an das Nextion.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#info&lt;br /&gt;
| Sendet die Info an die LGW#prog page&lt;br /&gt;
|-&lt;br /&gt;
| LGW#ptext&lt;br /&gt;
| Sendet die Info an die LGW#prog page&lt;br /&gt;
|-&lt;br /&gt;
| LGW#pbar&lt;br /&gt;
| Sendet die Info an die LGW#prog page&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Fortschrittsanzeige beim flashen der Nextion Firmware&lt;br /&gt;
&lt;br /&gt;
===Device Definition Nextion Modul===&lt;br /&gt;
&lt;br /&gt;
Die Definition für die Nextion Bridge sieht dann wie folgt aus: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;nextion&amp;gt; Nextion &amp;lt;IP-Adresse&amp;gt;:&amp;lt;Port&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;nextion&amp;gt;&#039;&#039; kann bei Bedarf angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;IP-Adresse&amp;gt;&#039;&#039; muss entsprechend angepasst werden. Anstatt der IP-Adresse kann auch der Hostname vom LaCrosseGateway verwendet werden.&lt;br /&gt;
  &lt;br /&gt;
&#039;&#039;&amp;lt;Port&amp;gt;&#039;&#039; Ist der auf der Setup-page definierte Port &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define nextion Nextion 192.168.22.33:86&amp;lt;/syntaxhighlight&amp;gt; IP-Adresse ermitteln: Das LaCrosseGateway heist per default Einstellung &amp;quot;LaCrosseGateway&amp;quot;, per ping auf den Hostnamen LaCrosseGateway kann die &amp;lt;IP-Adresse&amp;gt; ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
===Firmware erstellen und flashen ===&lt;br /&gt;
Ein UI für das Nextion Display wird mit dem Nextion Editor erstellt. Mithilfe des Editors kann die entsprechende Firmware (tft Datei – siehe „File -&amp;gt; Open build folder“) kompiliert (Button: Compile) werden. &lt;br /&gt;
&lt;br /&gt;
Das LGW kann die Firmware (.tft Datei) zum Display übertragen. Dazu gibt es zwei Varianten:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;curl&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;curl --http1.0 -# -o ~output.txt -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@&amp;lt;tftFileName&amp;gt;; filename=nextion.tft&amp;quot; http://&amp;lt;LGW-IP&amp;gt;/ota/nextion&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;curl --http1.0 -# -o ~output.txt -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@D:\MyNextionFiles\lgw.tft; filename=nextion.tft&amp;quot; http://192.168.31.213/ota/nextion&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das LaCrosseGateway Modul in FHEM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set &amp;lt;myLaCrosseGateway&amp;gt; nextionUpload&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das Attribut &amp;quot;tftFile&amp;quot; gesetzt ist, wird die darin angegebene Datei hochgeladen, ansonsten wird versucht, das File „FHEM/firmware/nextion.tft“ hochzuladen.&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiel===&lt;br /&gt;
In {{Link2Forum|Topic=63443|LinkText=diesem FHEM Forum Thread}} wurde ein LGW Nextion UI erarbeitet (Stand 01.08.2017 {{Link2Forum|Topic=63443|Message=582453|LinkText=Version 0.7}}), um die Funktionsweise zu demonstrieren.&lt;br /&gt;
Das Nextion UI besteht aus folgenden Pages: &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Name !! Page !! Beispiel !! Hinweise/Funktion/Bechreibung !! Nextion Debug commands&lt;br /&gt;
|-&lt;br /&gt;
| 0 ||Boot || Boot || [[Datei:lgw_nextion_boot.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || Das ist die Startseite nach Einschalten des Nextion Displays. ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||Progress||LGW#prog ||[[Datei:lgw_nextion_prog.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;|| Auf dieser Seite wird der WiFi Verbindungsfortschritt angezeit. Alles Werte werden vom LGW befüllt. ||page LGW#prog&lt;br /&gt;
vis LGW#pbar,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#ptext,1&lt;br /&gt;
&lt;br /&gt;
LGW#pbar.val=50&lt;br /&gt;
&lt;br /&gt;
LGW#ptext.txt=&amp;quot;Connect WiFi (1)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 ||Main|| LGW#main ||  [[Datei:lgw_nextion_main.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; ||Dies ist die Haupseite, welche vom LGW aufgerufen wird, sobald der Bootvorgang abgeschlossen ist.&amp;lt;br&amp;gt;Hinweise zur Funktionsweise findet man {{Link2Forum|Topic=63443|Message=546896|LinkText=hier}}|| page LGW#main&lt;br /&gt;
vis LGW#wifi,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#fhem,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#cpu1,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#cpu2,1&lt;br /&gt;
&lt;br /&gt;
LGW#rssi.txt=&amp;quot;-68&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tTime.txt=&amp;quot;23:45&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tDate.txt=&amp;quot;01.08.2017&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iTemp,1&lt;br /&gt;
&lt;br /&gt;
LGW#temp.txt=&amp;quot;25.7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iHum,1&lt;br /&gt;
&lt;br /&gt;
LGW#hum.txt=&amp;quot;68%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iPres,1&lt;br /&gt;
&lt;br /&gt;
LGW#pres.txt=&amp;quot;1024hPa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iWind,1&lt;br /&gt;
&lt;br /&gt;
tout_ws.txt=&amp;quot;23km/h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iOutT,1&lt;br /&gt;
&lt;br /&gt;
tout_t.txt=&amp;quot;28°C&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||Info Page||  Info || [[Datei:lgw_nextion_info.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || Alle Informationen auf dieser Seite werden von LGW automatisch befüllt. || page Info&lt;br /&gt;
vis LGW#ip,1&lt;br /&gt;
&lt;br /&gt;
LGW#ip.txt=&amp;quot;192.168.222.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#fpm,1&lt;br /&gt;
&lt;br /&gt;
LGW#fpm.txt=&amp;quot;5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#heap,1&lt;br /&gt;
&lt;br /&gt;
LGW#heap.txt=&amp;quot;16280&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#ver,1&lt;br /&gt;
&lt;br /&gt;
LGW#ver.txt=&amp;quot;1.30&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#up,1&lt;br /&gt;
&lt;br /&gt;
LGW#up.txt=&amp;quot;1Tg.4Std.34Min.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Info Page 2 ||  Info2 ||  [[Datei:lgw_nextion_info2.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || tInfo50 und tInf51 sind für Nextion UI Version reserviert. tInfo60 bis tInfo91 sind nicht belegt und können verwendet werden, um z.B. die FHEM Verison anzuzeigen. || page Info2&lt;br /&gt;
tInfo60.txt=&amp;quot;tInfo60:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo61.txt=&amp;quot;tInfo61&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo70.txt=&amp;quot;tInfo70:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo71.txt=&amp;quot;tInfo71&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo80.txt=&amp;quot;tInfo80:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo81.txt=&amp;quot;tInfo81&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo90.txt=&amp;quot;tInfo90:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo91.txt=&amp;quot;tInfo91&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Settings || Settings || [[Datei:Lgw_nextion_Settings.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || Einstellungsmöglichkeit von Helligkeit (Wertebereich von 10% bis 100%) des Displays und des PowerOff Timeouts (Wertebereich: off und 1-120 Sek.)||page Settings&lt;br /&gt;
h1.val=25&lt;br /&gt;
&lt;br /&gt;
h0.val=60&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Control Center||CoCe||[[Datei:lgw_nextion_CoCe.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; ||Zum Schalten von Aktoren und Status anzeige.&amp;lt;br&amp;gt;Weiteren Hinweise zur Funktionsweise sind {{Link2Forum|Topic=63443|Message=576902|LinkText=hier}} zu finden. || page CoCe&lt;br /&gt;
lblT1.txt=&amp;quot;lbT1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS1.txt=&amp;quot;aus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT2.txt=&amp;quot;lbT2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS2.txt=&amp;quot;an&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT3.txt=&amp;quot;lbT4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS3.txt=&amp;quot;zu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT4.txt=&amp;quot;lbT3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS4.txt=&amp;quot;auf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT5.txt=&amp;quot;lbT5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS5.txt=&amp;quot;n.a.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Weather ||Weather||[[Datei:lgw_nextion_Weather.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;||Zur Anzeige einer Wettervorhersage. Diese Seite wird durch ein touch auf den &amp;quot;Temp-Wert&amp;quot; in der Main#Page aufgerufen. &amp;lt;br&amp;gt;Implementierungshinweise sind {{Link2Forum|Topic=63443|Message=582453|LinkText=hier}} zu finden. ||page Weather&lt;br /&gt;
p0.pic=12&lt;br /&gt;
&lt;br /&gt;
t0.txt=&amp;quot;Mo 01 Aug 2017\rmin:15 max:18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p1.pic=16&lt;br /&gt;
&lt;br /&gt;
t1.txt=&amp;quot;Di 02 Aug 2017\rmin:15 max:18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p2.pic=17&lt;br /&gt;
&lt;br /&gt;
t2.txt=&amp;quot;Mi 03 Aug 2017\rmin:15 max:18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p3.pic=12&lt;br /&gt;
&lt;br /&gt;
t3.txt=&amp;quot;Do 04 Aug 2017\rmin:25 max:28&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p4.pic=15&lt;br /&gt;
&lt;br /&gt;
t4.txt=&amp;quot;Fr 05 Aug 2017\rmin:28 max:32&amp;quot; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweis: Alle Contorls die mit dem Namen &amp;quot;LGW#&amp;quot; beginnen sind für das LGW reserviert und werden entsprechend vom Gateway befüllt.&lt;br /&gt;
&lt;br /&gt;
===Nextion Tipps &amp;amp; Tricks===&lt;br /&gt;
====Nextion Commandreferenz====&lt;br /&gt;
Sehr hilfreich ist die Nextion instruction Page, welche hier: https://www.itead.cc/wiki/Nextion_Instruction_Set zu finden ist.&lt;br /&gt;
&lt;br /&gt;
==Serial Transparent Bridge==&lt;br /&gt;
Das LGW kann optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen.&lt;br /&gt;
Dazu gibt es die settings &#039;&#039;&amp;quot;Serial bridge port&amp;quot;&#039;&#039; und &#039;&#039;&amp;quot;Serial bridge baud&amp;quot;&#039;&#039; auf der &amp;quot;Setup&amp;quot;-Page&amp;quot; (Web-Frontend) des LaCrosseGateways.&lt;br /&gt;
Das LaCrosseGateway überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt.&lt;br /&gt;
Damit kann z.B. ein NanoCUL an das LaCrosseGateway angeschlossen werden und in FHEM verwenden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Vorgehensweise:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Einen NanoCUL bauen, z.B. auf Basis eines Arduino Pro Mini, flashen und testweise in Betrieb nehmen. &lt;br /&gt;
*Den NanoCUL an die serielle Schnittstelle des SC16IS70 anschließen&lt;br /&gt;
*Port und baud rate auf der &amp;quot;Setup&amp;quot;-Page des LaCrosseGateways festlegen, z.B. Port 85 und 38400 baud&lt;br /&gt;
*CUL in FHEM definieren (Beispiel): &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define CULXYZ CUL &amp;lt;IP-Adresse&amp;gt;:85 0000&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;CULXYZ&amp;gt;&#039;&#039;&#039;&#039;&#039; Muss nach eigenen Bedürfnissen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;IP-Adresse&amp;gt;&#039;&#039;&#039;&#039;&#039; Muss entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Sollte das CUL-Device nicht erreichbar sein (Restart, Austausch im Falle eines Deffekts etc.), empfiehlt sich einen reconnect Mechnismus in FHEM zu implementieren.&lt;br /&gt;
&lt;br /&gt;
Dieser kann wie folgt aussehen: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define CULXYZ-Reconnector at +*00:00:30 {\&lt;br /&gt;
my $deviceName = &amp;quot;&amp;lt;CULXYZ&amp;gt;&amp;quot;;;\&lt;br /&gt;
my $version = CommandGet(&amp;quot;&amp;quot;, $deviceName . &amp;quot; version&amp;quot;);;\&lt;br /&gt;
my $gotAnswer = index($version, &#039;No answer&#039;) == -1;;\&lt;br /&gt;
\&lt;br /&gt;
if(!$gotAnswer) {\&lt;br /&gt;
  fhem(&amp;quot;set &amp;quot; . $deviceName . &amp;quot; reopen&amp;quot;);;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
}  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;CULXYZ&amp;gt;&#039;&#039;&#039;&#039;&#039; Muss nach eigenen Bedürfnissen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Vorgehen Firmware flashen mit LGW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein bereits in Betrieb genomene NanoCUL kann nach dem gleichen Vorgehen (siehe [[#SubProzessor|&amp;quot;SubProzessor - Vorgehen Firmware flashen&amp;quot;]]) wie ein SubProzessor geflasht werden.&lt;br /&gt;
&lt;br /&gt;
==Zugriff mit mehreren FHEM Instanzen==&lt;br /&gt;
&lt;br /&gt;
Bis zu drei FHEM Instanzen können auf das LaCrosseGateway gleichzeitig zugreifen.&lt;br /&gt;
Auf der &amp;quot;Setup&amp;quot;-Page des LaCrosseGateways können bis zu drei Ports (Data ports), pro Port eine FHEM Instanz, definiert werden (Reboot erforderlich).&lt;br /&gt;
Aus Performancegründen empfiehlt sich nur die benötigten Ports zu definieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweise:&#039;&#039;&#039;&#039;&#039; Die Portnummer 8266 wird für OTA Update verwendet, und 80 für die &amp;quot;Config&amp;quot;-page. Aus diesem Grund ist die Verwendung dieser ports nicht erlaubt.&lt;br /&gt;
&lt;br /&gt;
Wenn sich mehrere FHEM Instanzen ein LaCrosseGateway teilen, dann ist darauf zu achten, dass die eine gemeinsame/gleiche initCommand Konfiguration haben. Sollten die FHEM Instanzen unterschiedliche initCommands senden, gewinnt das (zufällig) letzte und legt es für alle anderen fest.&lt;br /&gt;
&lt;br /&gt;
=Nano LaCrosse Gateway=&lt;br /&gt;
Das nano LaCrosse Gateway verwendet die gleiche [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] wie das WiFi LaCrosse Gateway, der signifikante Unterschied ist die kompakte (portable) Bauform. Aufgrund der Bauform können jeodch nicht alle Bauteile verwendet werden.&lt;br /&gt;
Das Gateway eignet sich sehr gut als Entwicklungstick (dies ist der Ent­ste­hungs­grund) oder zum Empfangen und Steuern von LaCrosse basierten Sensoren/Aktoren an einem FHEM Server (RPI,Cubietruck, etc.).&lt;br /&gt;
&lt;br /&gt;
Der Betieb über WiFi, entsprechende Stromversorgung (per USB) vorausgesetzt, ist ebenfalls möglich.&lt;br /&gt;
&lt;br /&gt;
Weiterführende Informationen zum nano LaCrosse Gateway und Ideensammlung für eine Platine sind im {{Link2Forum|Topic=51329|LinkText=FHEM Forum}} zu finden.&lt;br /&gt;
&lt;br /&gt;
==Bauteile==&lt;br /&gt;
Folgende Bauteile werden benötigt:&lt;br /&gt;
*Gehäuse [http://www.elv.de/output/controller.aspx?cid=74&amp;amp;detail=10&amp;amp;detail2=36507 schwarz] oder [http://www.voelkner.de/products/164819/USB-Gehaeuse-USB-1kl-Transparent.html transparent]&lt;br /&gt;
*ESP-12E&lt;br /&gt;
*Auto-Flash-Reset-Schaltung&lt;br /&gt;
*[http://www.aliexpress.com/item/6Pin-USB-2-0-to-TTL-UART-Module-Serial-Converter-CP2102-STC-Replace-Ft232/32364013343.html?spm=2114.13010208.99999999.261.mWmpl5 CP2102 FTDI]&lt;br /&gt;
*RFM69CW&lt;br /&gt;
*Status-LED&lt;br /&gt;
&lt;br /&gt;
==Schaltung==&lt;br /&gt;
[[Datei:lgw_nano_Schaltplan.png|600px|thumb|left|Schaltplan NanoLGW]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Selbstbau==&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:lgw_nano_Selbstbau1.png|320px|thumb|left|Selbstbau nano LaCrosse Gateway 1]]&lt;br /&gt;
| [[Datei:lgw_nano_Selbstbau2.png|300px|thumb|left|Selbstbau nano LaCrosse Gateway 2]]&lt;br /&gt;
| [[Datei:lgw_nano_Selbstbau3.png|475px|thumb|left|Selbstbau nano LaCrosse Gateway 3]]&lt;br /&gt;
|}&lt;br /&gt;
==Platine==&lt;br /&gt;
===nano LaCrosse Gateway===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_bestueckt_oberseite.jpg|400px|thumb|left|nano LaCrosse Gateway Platine Oberseite]]&lt;br /&gt;
|[[Datei:Nanolgw_bestueckt_unterseite.jpg|400px|thumb|left|nano LaCrosse Gateway Platine Unterseite]]&lt;br /&gt;
|}&lt;br /&gt;
===USB2TTL===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_USB2TTL_1.jpg|400px|thumb|left|USB2TTL Platine Oberseite]]&lt;br /&gt;
|[[Datei:Nanolgw_USB2TTL_2.jpg|400px|thumb|left|USB2TTL Platine Unterseite]]&lt;br /&gt;
|}&lt;br /&gt;
===nano LaCrosse Gateway inkl. USB2TTL===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_oberseite_USB2TTL_1.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Oberseite]]&lt;br /&gt;
|[[Datei:Nanolgw_oberseite_USB2TTL_2.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Oberseite]]&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_unterseite_USB2TTL.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Unterseite]]&lt;br /&gt;
|[[Datei:Nanolgw_seitenansicht_USB2TTL.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Seitenansicht]]&lt;br /&gt;
|}&lt;br /&gt;
===nano LaCrosse Gateway fertig bestückt inkl. Gehäuse===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_USB2TTL_fertig_oberseite.jpg|400px|thumb|left|nano LGW fertig bestückt inkl. Gehäuse Oberseite]]&lt;br /&gt;
|[[Datei:nanolgw_USB2TTL_fertig_unterseite.jpg|400px|thumb|left|nano LGW fertig bestückt inkl. Gehäuse Unterseite]]&lt;br /&gt;
|}&lt;br /&gt;
===Platine bestücken (Hinweise und Tipps)===&lt;br /&gt;
*Die Beschriftung SJ4 und SJ3 ist auf dem USB2TTL Wandler vertauscht, dies beeinträchtigt aber die Funktion nicht.&lt;br /&gt;
*Beim nanoLGW hängt C1 etwas über dem FTDI232RL vom USB2TTL Wandler, daher braucht diese Platine noch eine &amp;quot;Schönheitskorrektur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Tipps &amp;amp; Tricks =&lt;br /&gt;
&lt;br /&gt;
==Löschen des kompletten Flash des ESP8266 mit dem esptool==&lt;br /&gt;
Aufgrund eines aktuell im espressif SDK vorhandenen Bugs, kann es passieren, dass das LaCrosseGateway nach dem Aufspielen der Firmware, mit einer Exception den Bootvorgang (nach &amp;quot;Start WIFI_STA&amp;quot;) abbricht und nicht mehr ordnungsgemäß starten kann. In diesem Fall hilft nur noch das Löschen des kompletten Speichers des ESP8266 und das erneute Aufspielen der Firmware.&lt;br /&gt;
&lt;br /&gt;
Mit dem nachfolgenden Befehl kann der Speicher des ESP8266 komplett gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Dabei werden alle Einstellungen unwiderruflich gelöscht&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;./esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 115200 -ca 0x00000 -cd nodemcu -ce&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;/dev/tty.SLAB_USBtoUART&amp;gt;&#039;&#039;&#039; Muss entsprechend angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
Diskussionsthread aus dem Forum:&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=43672|LinkText=LaCrosseGateway - LaCrosse, PCA301 und EC3000 über wifi mit ESP8266 ohne Arduino}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=45594|LinkText=Platine für LaCrosseGateway: Platinenbestellung}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=51329|LinkText=Platine für nanoLGW (LaCrosse Gateway): Layout}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=52921|LinkText=Display für LaCrosseGateway}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=63443|LinkText=LaCrosseGateway mit Nextion Display}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Wetterstationen]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=LaCrosseGateway_V1.x&amp;diff=27253</id>
		<title>LaCrosseGateway V1.x</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=LaCrosseGateway_V1.x&amp;diff=27253"/>
		<updated>2018-06-19T20:22:20Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Wiki-Seite beschreibt ausschließlich das LaCrosseGateway V1.x, das auf dem ESP8266 basiert.&amp;lt;br/&amp;gt;&lt;br /&gt;
Für das LaCrosseGateway32 das auf dem ESP32 basiert, wird es eine eigene Seite geben.{{Randnotiz|RNText=Dokumentationsstand Version 1.27}}&lt;br /&gt;
&lt;br /&gt;
Das LaCrosseGateway (hier und im Forum auch mit LGW abgekürzt) erfüllt den gleichen Zweck wie ein [[JeeLink|JeeLink USB-Stick]] und zwar das Empfangen, Abfragen und Steuern von funkbasierten LaCrosse Sensoren und Aktoren, die im 868 MHz FSK Sendeverfahren arbeiten (OOK-Sendeverfahren (433 Mhz) wird nicht unterstützt). Die Verarbeitung der Daten und Steuerung der Aktoren erfolgt mithilfe von FHEM, das als zentrale Steuereinheit dient. &lt;br /&gt;
Der signifikante Unterschied zu einem JeeLink USB-Stick ist der Betrieb über Wireless LAN ([https://de.wikipedia.org/wiki/Wi-Fi WiFi]). &lt;br /&gt;
Das Herzstück des LaCrosse-Gateways besteht aus einem ESP8266-12E/F. Das LaCrosseGateway ist aufgrund des hohen Stromverbrauchs nicht für den Akkubetrieb geeignet.&lt;br /&gt;
&lt;br /&gt;
Der Einsatz eines WiFi-LaCrosse-Gateways bietet folgende Vorteile:&lt;br /&gt;
*Kann an eine Stelle platziert werden, an der alle Sensoren optimal empfangen werden, dafür ist nur Strom (5V/1A USB Netzteil) und [https://de.wikipedia.org/wiki/Wi-Fi WiFi] Access Point erforderlich&lt;br /&gt;
*Im Minimalausbau nur zwei Bauteile NodeMCU DEVKIT 1.0 + RFM69 (siehe Bauteile) nötig&lt;br /&gt;
*Alternativ am USB-Port wie ein JeeLink verwendbar&lt;br /&gt;
*Einsatz von on board Sensoren / Aktoren (siehe [[#Unterstützte Sensoren und Aktoren | Unterstützte Sensoren und Aktoren]]) möglich&lt;br /&gt;
&lt;br /&gt;
Hinweis: Die Anbindung in FHEM kann zwar noch mit dem JeeLink-Modul erfolgen, aber es ist sinnvoll, auf das LaCrosseGateway-Modul (36_LaCrosseGateway.pm) umzustellen, da dieses eine bessere Unterstützung für die Funktionen des LGW bietet.&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
==Bauteile==&lt;br /&gt;
Für das WiFi-LaCrosse-Gateway werden folgende Bauteile verwendet:&lt;br /&gt;
*[Option 1] [http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family#esp-12-e_q ESP8266 ESP-12E Modul].&amp;lt;br /&amp;gt;Diese Variante eignet sich für Projekte für die eine kleine Bauform benötigt wird.&amp;lt;br /&amp;gt;Für die Inbetriebnahme, insbesondere für das Aufbringen der Firmware, muss das Modul an ein [[Medium:Lgw USB2Serial Adapter.jpg|USB2Serial-Adapter]], angeschlossen werden. Für diese Variante sind Lötkenntnisse erforderlich. &lt;br /&gt;
*[Option 2] [https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg NodeMCU DEVKIT 1.0 (oder 2.0)]ist die Inbetriebnahme einfacher, da alles für das Aufbringen der Firmware bereits vorhanden ist und kein Löten nötig ist.&amp;lt;br /&amp;gt;{{Link2Forum|Topic=45594|Message=430183|LinkText=Hinweis:}} Folgende Devkits werden nicht &amp;quot;offiziel&amp;quot; unterstützt, da ungetestet, können aber durchaus in bestimmten Fällen verwendet werden:&lt;br /&gt;
** V0.9 (da ungetestet, bekommt man aber kaum noch zu kaufen)&lt;br /&gt;
** V3.0 - passt nicht auf die Platine von PeMue, ist größer als das 2.0. Auf der Rückseite steht &amp;quot;Lolin&amp;quot;.&lt;br /&gt;
** Devkits mit einem CH340 USB converter (da ungetestet und teils falsche Bauform und von der USB-Anbindung her teils problematisch)&lt;br /&gt;
*[Option 3] Alternativ zu einem Devkit 1.0 kann auch ein [http://www.wemos.cc/Products/d1_mini.html &amp;quot;WeMOS D1 mini&amp;quot;] eingesetzt werden. Vorteil bei diesem Kit ist die kleine Bauform bei gleichem Funktionsumfang wie das DEVKIT 1.0.&lt;br /&gt;
*[Option 4] ESP8266-07 auf einem DEVKIT 1.0. für den Betrieb mit einer externen Wifi Antenne.&lt;br /&gt;
**&#039;&#039;Hinweis:&#039;&#039; Der ESP-07 hat einen 25Q80 1M flash Chip. Dieser ist für den Betrieb mit der LaCrosseGateway Firmware geeignet, für ein OTA-Update ist es jedoch zu wenig. Aus diesem Grund muss/kann dieser auf 4M flash umgebaut werden. Weitere Informationen und Details zum Umbau sind im {{Link2Forum|Topic=45594|Message=448307|LinkText=Forenthread (Gehäuse-Variante)}} beschrieben.&lt;br /&gt;
*[Optional] RFM69CW - Für das Senden und Emfangen funkbasierte LaCrosse Aktoren und Sensoren&lt;br /&gt;
*[Optional] On board Sensoren (siehe [[#Unterstützte Sensoren und Aktoren | Unterstützte Sensoren und Aktoren]])&lt;br /&gt;
*[Optional] SC16IS750 Zur Bereitstellung der seriellen Schnittstelle, da die GPIOs (GPIO1 / GPIO3) DEVKIT&#039;s V1.0 von FTDI verwendet werden und damit nicht genutzt werden können.&lt;br /&gt;
*[Optional] OLED-Display SSD1306 I2C zur Darstellung von Daten (Bootvorgang, on board Sensoren, Inhalte aus FHEM)&lt;br /&gt;
*[Optional] [[#MCP23008|MCP23008]] zur Bereitstellung (Konfigurierbar) von digitalen 8 Ein- Ausgängen oder Sonderfunktion (OLED)&lt;br /&gt;
*[Optional] Nextion Touch Display zur Darstellung von verschiedenen Informationen oder zum Schalten von Aktoren. &lt;br /&gt;
*Steckbrett (inkl. Kabel/Widerstände)/Lochrasterplatine (Lötkolben, Lötzinn, Widerstände etc.)) / [[#Platine|PeMue Platine]]&lt;br /&gt;
&lt;br /&gt;
==Schaltung==&lt;br /&gt;
===Variante: Devkit 1.0 Minimum===&lt;br /&gt;
[[Datei:lgw_Schaltplan_Devkit_minimum.png|400px|thumb|left|Variante: Devkit 1.0]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Variante: Devkit 1.0 Maximalausbau===&lt;br /&gt;
[[Datei:lgw_Schaltplan_Devkit_full.png|400px|thumb|left|Variante: FTDI]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Variante: Platine (PeMue)===&lt;br /&gt;
siehe hier: {{Link2Forum|Topic=45594|LinkText=Thread}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Siehe [[#Erweiterungsmöglichkeiten | Erweiterungsmöglichkeiten]].&lt;br /&gt;
&lt;br /&gt;
===MCP23008=== &lt;br /&gt;
I2C Adresse 0x27 -&amp;gt; A0,A1,A2 = 3.3V&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;             &lt;br /&gt;
               |-------\/-------|&lt;br /&gt;
    LGW D1     |1 SCL     VDD 18|  LGW 3.3V &lt;br /&gt;
    LGW D2     |2 SDA     GP7 17|  PB7   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |3 A2      GP6 16|  PB6   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |4 A1      GP5 15|  PB5   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |5 A0      GP4 14|  PB4   --/ --- GND  or Output&lt;br /&gt;
    LGW 3.3V   |6 RES     GP3 13|  PB3   --/ --- GND  or Output&lt;br /&gt;
               |7 NC      GP2 12|  PB2   --/ --- GND  or Output&lt;br /&gt;
               |8 INT     GP1 11|  PB1   --/ --- GND  or Output&lt;br /&gt;
    LGW GND    |9 VSS     GP0 10|  PB0   --/ --- GND  or Output&lt;br /&gt;
               |----------------|&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Nextion Display===&lt;br /&gt;
Angeschlossen wird das Display wie folgt:&lt;br /&gt;
GPIO0: TXD -&amp;gt; Nextion RXD&lt;br /&gt;
GPIO2: RXD -&amp;gt; Nextion TXD&lt;br /&gt;
&lt;br /&gt;
Das Display benötigt eine 5V Spannungsversorgung, diese kann vom VIN des DevKit&#039;s abgegriffen werden. Vom Betrieb mit 3.3V wird abgeraten.&lt;br /&gt;
Ein level shifter für RXD/TXD ist nicht nötig.&lt;br /&gt;
&lt;br /&gt;
==Aufbau auf einem Steckbrett==&lt;br /&gt;
[[Datei:lgw_Steckbrett.png|600px|thumb|left|LaCrosseGateway Aufbau auf einem Steckbrett]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Der Sender und Empfänger RFM12, der auf dem Steckbrett zu sehen ist, wird nicht mehr unterstützt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Platine==&lt;br /&gt;
PeMue (vielen Dank) hat {{Link2Forum|Topic=45594|LinkText=hier}} eine Platine (7,1cm x 5,0cm) für das LaCrosseGateway entworfen (Stand 05.2016).&lt;br /&gt;
&lt;br /&gt;
===Oberseite===&lt;br /&gt;
[[Datei:lgw_Platine_Oberseite.jpg|400px|thumb|left|LaCrosseGateway Platine Oberseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Unterseite===&lt;br /&gt;
[[Datei:lgw_Platine_Unterseite.jpg|400px|thumb|left|LaCrosseGateway Platine Unterseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Devkit 1.0 bestückt Oberseite===&lt;br /&gt;
[[Datei:Lgw_Platine_Devkit_oberseite.png|400px|thumb|left|LaCrosseGateway Platine Oberseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Devkit 1.0 bestückt Unterseite===&lt;br /&gt;
[[Datei:lgw_Platine_Devkit_unterseite.png|400px|thumb|left|LaCrosseGateway Platine Unterseite]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ESP8266-12E bestückt Oberseite===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_oberseite.png|400px|thumb|left|(1) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280 und DHT22]]&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_oberseite_2.jpg|490px|thumb|left|(2) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280]]&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_oberseite_2_inkl_GE.jpg.jpg|325px|thumb|left|(2) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280 inkl. Gehäuse]]&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Platine (Bild (1)) ist mit einem LM75 Sensor bestückt. Diese Bestückung macht zusammen mit einem BME280 keinen Sinn, es handelt sich hierbei um eine Entwicklungsplatine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===ESP8266-12E bestückt Unterseite===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_unterseite.png|400px|thumb|left|(1) LaCrosseGateway Platine Unterseite]]&lt;br /&gt;
| [[Datei:lgw_Platine_ESP-12E_unterseite_2.jpg|415px|thumb|left|(2) LaCrosseGateway Platine Unterseite mit 2 x RFM69CW, BME280]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Platine bestücken (Hinweise und Tipps)===&lt;br /&gt;
*Auf der Platine (Version 1.0) ist für das RFM69CW-Modul eine Markierung (zwei Quadrate) aufgedruckt, die den Chip und den Quarz symbolisieren. Wenn man den RFM69CW so drauflötet, wie abgebildet, ist er falsch rum drauf.&amp;lt;br /&amp;gt;Es muss darauf geachtet werden, wo auf dem RFM69CW die &amp;quot;Ant&amp;quot; Beschriftung steht, dieser Lötpunkt muss auf die Platine an den Punkt &amp;quot;1&amp;quot; ausgerichtet werden. Zur Sicherheit bitte den [[#Variante: Platine (PeMue)|Schaltplan]] konsultieren und die genaue Position ermitteln.&amp;lt;br&amp;gt;&#039;&#039;&#039;Für die Platine V1.1 wurde das korrigiert.&#039;&#039;&#039;&lt;br /&gt;
*Die Antennenlänge für das RFM69CW beträgt 82 mm. Dafür möglichst eindrähtigen Leiter (aus Kupfer) verwenden.&lt;br /&gt;
&lt;br /&gt;
==Erweiterungsmöglichkeiten==&lt;br /&gt;
Das LaCrosseGateway kann optional mit verschiedenen Komponenten erweitert werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Erweiterungen sind möglich:&lt;br /&gt;
*es kann ein eigener Prozessor (mit eigener Firmware) angeschlossen werden, der Daten empfängt und diese dem LGW übergibt.&lt;br /&gt;
*es kann z.B. ein NanoCUL angeschlossen werden, dessen serielle Schnittstelle transparent auf einem Port im Web bereitgestellt wird.&lt;br /&gt;
*es kann ein vierter und fünfter RFM69CW angeschlossen werden, diese können alles, was die bisherigen drei auch können.&lt;br /&gt;
*es kann ein aktiver Piezo Summer (Piezo Buzzer) angeschlossen (an GPIO7 des SC16IS750) werden, um von FHEM aus das LaCrosseGateway einen Alarm ausgeben zu lassen. Hinweis: Falls der Strom von 10mA, den die Ausgänge liefern, nicht reicht, ist noch eine Transistor-Schaltstufe vorzusehen.&lt;br /&gt;
&lt;br /&gt;
Alle diese Daten stellt das LaCrosseGateway per WiFi an FHEM zu, dort wird es von den entsprechenden Modulen (LaCrosseGateway, LaCrosse, PCA301, ...) weiterverarbeitet.&lt;br /&gt;
&lt;br /&gt;
Alle Komponenten werden automatisch erkannt, sofern angeschlossen.&lt;br /&gt;
Für die Realisierung der o.g Möglichkeiten wird ein [http://www.aliexpress.com/item/1x-Breakout-Board-for-SC16IS750-I2C-SPI-to-UART-IC/1327351219.html?spm=2114.30010308.3.38.HxdznQ&amp;amp;ws_ab_test=searchweb201556_9,searchweb201602_2_10034_507_10020_10001_10002_10017_10010_10005_10011_10006_10021_10003_10004_10022_10009_10008_10018_10019,searchweb201603_6&amp;amp;btsid=97b30f2b-e937-426b-8202-de585dd7ee97 SC16IS750] verwendet.&lt;br /&gt;
&lt;br /&gt;
Der SC16IS750 wird per I2C an das LaCrosseGateway angeschlossen und bietet eine serielle Schnittstelle und 8 Digital I/Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auf dieser Basis sind momentan folgende Erweiterungen möglich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===SubProzessor===&lt;br /&gt;
Der SubProzessor dient dazu, dass mit einem eigenen Sketch Daten erfasst werden können, ohne sich um die ganze Nummer, die das LGW macht (WiFi, Kommunikation mit FHEM, Frontend, OTA, ...), kümmern zu müssen.&lt;br /&gt;
Ferner ermöglicht es die Implementierung von eigenen Projekten, dabei werden die zeitkritischen Abläufe des LGWs nicht beeinträchtig.&lt;br /&gt;
&lt;br /&gt;
An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini)&lt;br /&gt;
Entweder ein 3.3V / 8MHz oder ein 5V / 16MHz, der aber dann auch mit 3.3V betrieben wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Alle LaCrosseGateway Komponenten laufen ausschließlich mit &#039;&#039;&#039;3.3V&#039;&#039;&#039;, aus diesem Grund dürfen keine &#039;&#039;&#039;5V&#039;&#039;&#039; Komponenten angeschlossen werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Firmware flashen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Firmware kann über das LGW auf den SubProzessor (Voraussetzung: Arduino hat einen bootloader) geflasht werden.&lt;br /&gt;
&lt;br /&gt;
Dazu wird sie auf das LGW hochgeladen (&amp;lt;nowiki&amp;gt;http://&amp;lt;LGW-IP&amp;gt;/ota/addon.hex&amp;lt;/nowiki&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Das LGW nimmt den Upload entgegen, wandelt das Intel-Hex in binary um und schickt es per STK500-Protokoll an den Arduino.&lt;br /&gt;
&lt;br /&gt;
Falls ein OLED angeschlossen ist, wird sogar ein progress angezeigt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorgehen Firmware flashen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Firmware kann z.B. mithilfe von &amp;quot;curl&amp;quot; mit dem nachfolgendem Befehl hochgeladen werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;curl --http1.0 -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@/myFolder/LGW-Addon.ino.hex; filename=addon.hex&amp;quot; http://192.168.31.211/ota/addon.hex&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; fielname=addon.hex im Beispiel darf nicht verändert werden, nur /myFolder/LGW-Addon.ino.hex und die IP-Adresse wird entsprechend angepasst.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Upload dauert etwas, danach sollte bei Erfolg vom LGW ein Protokoll zurückgeschickt bekommen, der wie folgt aussieht:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;Start receiving &#039;addon.hex&#039;&lt;br /&gt;
File: /addon.hex Size: 21417&lt;br /&gt;
Starting flash&lt;br /&gt;
Sending sync&lt;br /&gt;
Enter program mode&lt;br /&gt;
Binary size is:7608&lt;br /&gt;
Leave Program Mode&lt;br /&gt;
Flash finished&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem SubProzessor können die entsprechenden Daten auf zwei mögliche Arten am LGW übermittelt werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;KeyValueProtokoll (KVP):&#039;&#039;&#039;&lt;br /&gt;
Format:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;KV &amp;lt;Type&amp;gt; &amp;lt;Address&amp;gt; &amp;lt;Key&amp;gt;=&amp;lt;Value&amp;gt;,&amp;lt;Key&amp;gt;=&amp;lt;Value&amp;gt;,&amp;lt;Key&amp;gt;=&amp;lt;Value&amp;gt;, ...&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Beispiel:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;KV DHT 01 Temperature=21.5,Humidity=62&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das LGW übermittelt die Daten als KVP an FHEM und dort entsteht ein KVP Device, das die Daten darstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LaCrosse:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Format:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;LC &amp;lt;Address&amp;gt; T=&amp;lt;Temperature&amp;gt;,H=&amp;lt;Humidity&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;LC 9F T=21.5,H=62&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;LC 9F T=21.5&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Das LGW setzt die Werte in das LaCrosse Protokoll um (wie z.B. ein TX29DTH) und schickt sie an FHEM.&lt;br /&gt;
In FHEM entsteht ein LaCrosse Device (autocreate, LaCrossePairForSec ...), als ob es ein LaCrosse Sensor wäre.&lt;br /&gt;
&lt;br /&gt;
Das [https://forum.fhem.de/index.php?action=dlattach;topic=43672.0;attach=48914 LGW-Addon.ino] ist ein einfaches Beispiel, das diese Technik veranschaulicht.&lt;br /&gt;
Es bindet den geliebten DHT22 an und sendet ihn als LaCrosse-Sensor (über das LGW) an FHEM und es misst die Spannung und sendet sie zusammen mit der UpTime des SubProzessors als KVP&lt;br /&gt;
&lt;br /&gt;
Der umrandete Bereich [[#Addon Schaltung |Schaltung - &amp;quot;Example&amp;quot;]] &amp;quot;Example&amp;quot; ist das zu [https://forum.fhem.de/index.php?action=dlattach;topic=43672.0;attach=48914 LGW-Addon.ino] passende Beispiel.&lt;br /&gt;
&lt;br /&gt;
==Unterstützte Sensoren und Aktoren==&lt;br /&gt;
Alle Sensoren und Aktoren, die auch vom &amp;quot;LaCrosse Arduino&amp;quot; Sketch unterstützt werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
(siehe [[JeeLink#Unterst.C3.BCtzte_Sensoren_und_Aktoren_incl._Wetterstation_WS_1600JeeLink|vom JeeLink unterstützte LaCrosse Sensoren und Aktoren]])&lt;br /&gt;
&lt;br /&gt;
Zusätzlich zu LaCrosse werden auch die folgenden Geräte unterstützt:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung !! Datenrate !! Sonstiges !! Funktion !! Hinweise&lt;br /&gt;
|-&lt;br /&gt;
| PCA301 ||868950 kHz (868,970 und 868,990 ) 6.631 kbps || extern || Energiemess-Steckdose (Unterstützt werden bis zu 50 Dosen) || &lt;br /&gt;
|-&lt;br /&gt;
| EC3000 ||868.300 kHz mit 20.000 kbps|| extern || Energiemess-Steckdose (funktioniert nur mit RFM69, nicht mit RFM12) || &lt;br /&gt;
|-&lt;br /&gt;
| RFM69CW || || on board || Zum Empfangen und Senden von Sensor/Aktor Daten.|| Hinweise DHT22 beachten.&lt;br /&gt;
|-&lt;br /&gt;
| BME280 || || on board || Temperatur, Feuchte und Druck || Falls das verwendete Breakout bereits PullUp-Widerstände für SDA und SCL enthält, sind diese nicht mehr zusätzlich nötig.&lt;br /&gt;
|-&lt;br /&gt;
| BMP180 || || on board || Temperatur und Druck || Falls das verwendete Breakout bereits PullUp-Widerstände für SDA und SCL enthält, sind diese nicht mehr zusätzlich nötig.&lt;br /&gt;
|-&lt;br /&gt;
| LM75 || || on board|| Temperatur || &lt;br /&gt;
|-&lt;br /&gt;
| DHT22 || ||on board|| Temperatur und Feuchte. || Kann anstatt RFM69 Radio#3 eingesetzt werden.&lt;br /&gt;
|-&lt;br /&gt;
| SC16IS750 || I2C Adresse: 0x90 ||on board|| OI Erweiterung || &lt;br /&gt;
|-&lt;br /&gt;
| OLED SSD1306|| I2C Adresse: 0x3C || on board || OLED Display||&lt;br /&gt;
|-&lt;br /&gt;
| MCP23008|| I2C Adresse: 0x27 || on board || Input/Output Port Expander||&lt;br /&gt;
|-&lt;br /&gt;
| Piezo Summer |||| on board ||Piezo Buzzer||&lt;br /&gt;
|-&lt;br /&gt;
| Nextion Display ||(Max.) 57600 baud || on board ||Touch Display||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle direkt am LGW anschließbare Sensoren werden automatisch erkannt, wenn sie vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Sie werden in folgender Reihenfolge verwendet:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn ein BME280 vorhanden ist, wird dieser verwendet und sonst nichts, da man dann bereits Temperatur, Feuchte und Druck hat.&lt;br /&gt;
&lt;br /&gt;
Ist kein BME280 vorhanden, wird geschaut, ob ein BMP180 vorhanden ist. Falls ja, haben wir Druck und Temperatur.&lt;br /&gt;
&lt;br /&gt;
Dann wird geschaut, ob ein DHT22 vorhanden ist. Wenn ja, wird er zusätzlich verwendet, aber vom BMP180 dann nur noch der Druck.&lt;br /&gt;
&lt;br /&gt;
Temperatur und Feuchte vom DHT22, dass dieses Wertepaar von einem Sensor stammt.&lt;br /&gt;
&lt;br /&gt;
Wenn kein BMP180 und kein BME180 da ist, sondern nur ein DHT22, dann hat man Temperatur und Feuchte.&lt;br /&gt;
&lt;br /&gt;
Wenn nichts vorhanden ist (also keiner der bisher genannten Sensoren), wird, falls vorhanden, der LM75 verwendet.&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==Funktionsumfang==&lt;br /&gt;
*Access Point für die Konfiguration&lt;br /&gt;
*Konfiguration über WEB-Frontend (Erreichbar per &#039;&#039;&amp;lt;nowiki&amp;gt;http://IP-Adresse oder Hostname/setup&amp;lt;/nowiki&amp;gt;&#039;&#039; auf Port 80 )&lt;br /&gt;
**SSID und Password (Die Konfiguration wird im EEPROM gespeichert und bei zukünftigen Neustarts verwendet.)&lt;br /&gt;
**Statische IP-Adresse anstatt DHCP&lt;br /&gt;
**Hostname&lt;br /&gt;
*Vom LaCrosseGateway FHEM-Modul über IP-Adresse:Port oder Hostname:Port ansprechbar. Der Port ist konfigurierbar.&lt;br /&gt;
*Unterstützt bis zu 5 x RFM69CW (Keine Unterstützung für RFM12) &lt;br /&gt;
*On board und externe Sensoren und Aktoren ([[#Unterstützte Sensoren und Aktoren |Unterstützte Sensoren und Aktoren]])&lt;br /&gt;
*Betrieb nur per USB möglich, als ob es ein JeeLink wäre&lt;br /&gt;
*FHEM Anbindung&lt;br /&gt;
*Log im Web-Frontend&lt;br /&gt;
*Firmware OTA-Update (Firmware-Over-the-Air-Update per FHEM)&lt;br /&gt;
*Erweiterungsmöglichkeiten per SC16IS750 (Für Buzzer und für weitere zwei RFM69)&lt;br /&gt;
*SubProzessor (An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini))&lt;br /&gt;
*Serial bridge (Optional kann die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitgestellt werden)&lt;br /&gt;
*Software Serial Bridge - Stellt die Soft Serial Schnittstelle transparent auf einem TCP Port.&lt;br /&gt;
&lt;br /&gt;
==Sourcecode==&lt;br /&gt;
Der Quellcode des LaCrosse Gateways befindet sich [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/arduino/36_LaCrosseGateway.zip im FHEM SVN Repository (contrib)].&lt;br /&gt;
&lt;br /&gt;
==Firmware Download==&lt;br /&gt;
Die [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] befindet sich im [https://svn.fhem.de/trac/browser/trunk/fhem FHEM SVN Repository] und wird per FHEM Update verteilt. Neue Version der [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] wird im {{Link2Forum|Topic=43672|LinkText=FHEM Forum &amp;quot;LaCrosse Gateway&amp;quot;}} angekündigt und der Funktionsumfang bzw. die Änderungen beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nach einem FEHM-Update alternativ auch: &#039;&#039;&amp;lt;FHEM-Installations-Verzeichnis&amp;gt;/FHEM/firmware/JeeLink_LaCrosseGateway.bin&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Firmware aufspielen==&lt;br /&gt;
Wie bei einem JeeLink muss auch für das LaCrosseGateway die Firmware aufgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Das [https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg NodeMCU DEVKIT 1.0] hat eine CP2102 UART Bridge implementiert, dafür muss ein CP2102 Treiber installiert sein.&lt;br /&gt;
&lt;br /&gt;
Bei einem ESP8266-12E Modul kann die Firmware mithilfe eines Seriell-USB-Konverters aufgespielt werden.&lt;br /&gt;
&lt;br /&gt;
===Windows/Mac/Linux per &amp;quot;esptool&amp;quot;===&lt;br /&gt;
Verifiziert und getestet wurde dieses Vorgehen auf Windows (Windows 10), Mac (El Capitan):&lt;br /&gt;
&lt;br /&gt;
1) Das [https://github.com/igrr/esptool-ck/releases esptool 0.4.6] für die entsprechende Plattform herunterladen.&lt;br /&gt;
&lt;br /&gt;
2) Zum Aufspielen der Firmware, muss ein Befehl nach der folgenden Syntax ausgeführt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
esptool -vv -cp [Port] -cb 921600 -ca 0x00000 -cd nodemcu -cf [Pfad zur Firmware (bin-File)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[Port]&#039;&#039;&#039; und &#039;&#039;&#039;[Pfad zur Firmware (bin-File)]&#039;&#039;&#039; müssen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel (Mac/Linux):&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 921600 -ca 0x00000 -cd nodemcu -cf JeeLink_LaCrosseGateway.bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das esptool ist nicht sonderlich stabil. Es kommt vor, dass es manchmal den upload nicht startet oder nicht durchbekommt. In diesem Fall hilft es den Vorgang, auch mehrmals, zu wiederholen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Linux/Debian/Ubuntu &amp;quot;esptool v2.1&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Installieren:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get esptool&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel mit neuer Syntax bei esptool v2.1:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; sudo esptool --port /dev/ttyUSB0 write_flash 0x00000 JeeLink_LaCrosseGateway.bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows per &amp;quot;nodemcu-flasher&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
1) [https://github.com/nodemcu/nodemcu-flasher/raw/master/Win32/Release/ESP8266Flasher.exe Espressif Flashtool] downloaden und entpacken:&lt;br /&gt;
&lt;br /&gt;
2) [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] downloaden&lt;br /&gt;
&lt;br /&gt;
3) FlashTool starten und wie folgt einstellen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:nodemcu-flasher_1.png|450px|thumb|left|Firmware auswählen]]&lt;br /&gt;
| [[Datei:nodemcu-flasher_2.png|450px|thumb|left|Flash Parameter (Advanced Tab) wie abgebildet einstellen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
4) COM-Port auswählen und den Flashvorgang starten (Button: &#039;&#039;&#039;Flash(F)&#039;&#039;&#039;) ...&lt;br /&gt;
[[Datei:nodemcu-flasher_3.png|450px|thumb|left|COM Port auswählen und das &amp;quot;Flashen&amp;quot; initiieren]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Flashen sollte über die serielle Ausgabe des ESP der Start und das Öffen des AccessPoints zu sehen sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Geschwindigkeit von 921600 baud ist nicht auf jedem Rechner (besonders auf virtualisierten Systemen) machbar. In diesem Fall die Baudrate auf 57600 reduzieren.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Funktionsweise==&lt;br /&gt;
Während des Startvorgangs versucht sich das LaCrosseGateway in einem WLAN anzumelden. Dazu muss es eine SSID und das entsprechende Passwort kennen.&lt;br /&gt;
&lt;br /&gt;
Beim ersten Start (nach dem initialen Aufspielen der Firmware) sind diese Informationen noch unbekannt. Aus diesem Grund wird folgende Strategie verfolgt:&lt;br /&gt;
&lt;br /&gt;
Wenn es sich in keinem WLAN anmelden kann, dann öffnet es einen Access Point mit der SSID &amp;quot;LaCrosseGateway_&#039;&#039;&#039;xxxxxx&#039;&#039;&#039;&amp;quot;, wobei &#039;&#039;&#039;xxxxxx&#039;&#039;&#039; die eindeutige Chip-ID des ESP8266 ist.&lt;br /&gt;
&lt;br /&gt;
Der Access Point wird aus Sicherheitsgründen nach 15 Minuten wieder geschlossen.&lt;br /&gt;
Innerhalb dieser 15 Minuten kann man sich mit dem Access Point verbinden. Der Access Point vergibt (per DHCP) IP-Adressen aus dem Netzwerk 192.168.222.0. Anschließend kann über die LaCrosseGateway Konfigurationsseite [http://192.168.222.1/setup http://192.168.222.1/setup] die initiale Konfiguration vorgenommen werden.&lt;br /&gt;
Die Konfiguration wird im EEPROM gespeichert und bei zukünftigen Neustarts verwendet.&lt;br /&gt;
Die Konfigurationsseite ist auch im &amp;quot;Normalbetrieb&amp;quot; (ohne Access Point) über die Adresse http://&#039;&#039;seine aktuelle IP-Adresse&#039;&#039;/setup erreichbar.&lt;br /&gt;
&lt;br /&gt;
Wenn sich das LaCrosseGateway an dem konfigurierten WLAN anmelden konnte (es wartet max. 30 Sekunden auf einen connect) und von diesem per DHCP eine IP-Adresse erhalten hat, dann stellt es auf dieser Adresse den Port 81 zur Verfügung, über den in FHEM das LaCrosseGateway Modul senden und empfangen kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optische Darstellung der Initialisierung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Beim Start und der Initialisierung wird mit der Board-eigenen LED signalisieren, was gerade passiert:&lt;br /&gt;
*5 schnelle blinks direkt nach dem Start, als Zeichen, dass ein Reset stattgefunden hat&lt;br /&gt;
*Blinken im Sekundentakt, während versucht wird, sich mit einem WLAN zu verbinden.&lt;br /&gt;
*LED aus, wenn der Connect zu einem WLAN geklappt hat und dann vereinzeltes Blinken, wenn Daten an FHEM übermittelt werden&lt;br /&gt;
&lt;br /&gt;
== LaCrosseGateway einrichten ==&lt;br /&gt;
Für die Ersteinrichtung des LaCrosseGateways werden die SSID und das Passwort des WLAN-Routers benötigt. Ferner wird empfohlen auf dem WLAN-Router bzw. dem DHCP-Server eine IP-Adresse für das LaCrosseGateway zu reservieren. Für die Reservierung wird die MAC-Adresse des LaCrosseGateways benötigt, diese kann über die &amp;quot;Home&amp;quot;-Page des LaCrosseGateways ermittelt, alternativ von dem [[#Windows per &amp;quot;nodemcu-flasher&amp;quot; |NODEMCU Firmware Programmer]] (&#039;&#039;Reiter &amp;quot;Operation -&amp;gt; &amp;quot;STA MAC&amp;quot;&#039;&#039;) entnommen werden. &lt;br /&gt;
&lt;br /&gt;
Sofern diese Vorbereitungen getroffen wurden und alle Informationen vorliegen, kann das LaCrosseGateway eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;u&amp;gt;Für die Konfiguration sind folgende Schritte nötig:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Mit dem LaCrosseGateway Access Point &amp;quot;LaCrosseGateway_xxxxxx&amp;quot; verbinden (siehe [[#Funktionsweise |Beschreibung Funktionsweise]])&lt;br /&gt;
*Mithilfe eines Browsers die [http://192.168.222.1/setup LaCrosseGateway &amp;quot;Setup&amp;quot;-Page] öffnen&lt;br /&gt;
*SSID und das Password eintragen. Man kann zwei SSID/Passwort-Kombinationen mit jeweils einem Timeout konfigurieren. 120 bedeutet z.B. dass das LGW 120 Sekunden lang versucht, die SSID zu erreichen. Falls die erste SSID nach &amp;quot;Timeout&amp;quot; Sekunden nicht erreicht wurde, wird Timeout Sekunden lang versucht, die zweite SSID zu connecten.&lt;br /&gt;
*&#039;&#039;[Empfohlen]&#039;&#039; Das Frontend Passwort festlegen&lt;br /&gt;
*&#039;&#039;[Optional]&#039;&#039; Falls kein DHCP-Server zur Verfügung steht bzw. keine Reservierung erwünscht ist, dann muss die IP-Adresse / Netmask (Optional auch Gateway) eingetragen werden&lt;br /&gt;
*&#039;&#039;[Empfohlen]&#039;&#039; Hostnamen festlegen bzw. anpassen&lt;br /&gt;
*Alle Angaben mit dem Button &amp;quot;save and restart&amp;quot; bestätigen. Dabei werden die vorgenommen Einstellungen im EEPROM gespeichert und ein Neustart des LaCrosseGateways initiiert.&lt;br /&gt;
&lt;br /&gt;
Nach dem Neustart verbindet sich das LaCrosseGateway mit dem WLAN-Router. &lt;br /&gt;
&lt;br /&gt;
Anschließend kann mit der [[#Hinweise zum Betrieb mit FHEM |Inbetriebnahme in FHEM]] fortgefahren werden.&lt;br /&gt;
&lt;br /&gt;
==Firmware aktualisieren==&lt;br /&gt;
&lt;br /&gt;
Nachfolgend werden, neben der unter dem Punkt [[#Firmware aufspielen |Firmware aufspielen]] beschriebenen Möglichkeiten, weitere Möglichkeiten zur Aktualisierung der LaCrosseGateway [[LaCrosseGateway#Firmware Download|Firmware]] aufgezeigt.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Die Einstellungen des LaCrosseGateway werden dabei nicht gelöscht.&lt;br /&gt;
&lt;br /&gt;
=== Per FHEM (OTA-Update)===&lt;br /&gt;
Voraussetzungen:&lt;br /&gt;
&lt;br /&gt;
*Das LGW muss auf der IP-Adresse, die im LaCrosseGateway Modul definiert ist, erreichbar sein&lt;br /&gt;
*Es wird kein avrdude benötigt&lt;br /&gt;
*Das Attribut &amp;quot;flashCommand&amp;quot; spielt keine Rolle&lt;br /&gt;
&lt;br /&gt;
Die LaCrosseGateway Firmware kann von LaCrosseGateway Device (LaCrosseGateway Modul) aus mit &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway flash&amp;lt;/syntaxhighlight&amp;gt; aktualisiert werden.&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;myLaCrosseGateway&#039;&#039;&#039; muss bei Bedarf auf den Gerätenamen in FHEM angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das Update dauert ca. 30 Sekunden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Per FHEM (USB)===&lt;br /&gt;
Voraussetzungen:&lt;br /&gt;
Auf dem FHEM-Server muss Python und pyserial installiert sein. Die Installation kann z.B. so erfolgen:&lt;br /&gt;
*apt-get install python&lt;br /&gt;
*wget https://bootstrap.pypa.io/get-pip.py&lt;br /&gt;
*python get-pip.py&lt;br /&gt;
*pip install pyserial&lt;br /&gt;
&lt;br /&gt;
Das Attribut &amp;quot;mode&amp;quot; muss auf USB gesetzt sein: attr myLaCrosseGateway mode USB&lt;br /&gt;
&lt;br /&gt;
Der flash-Vorgang wird gestartet mit: set myLaCrosseGateway flash&lt;br /&gt;
&lt;br /&gt;
=== Per CURL ===&lt;br /&gt;
Voraussetzungen:&lt;br /&gt;
*[https://curl.haxx.se/download.html curl-Tool] installiert &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;curl --http1.0 -# -o ~output.txt -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@.\JeeLink_LaCrosseGateway.bin; filename=firmware.bin&amp;quot; http://192.168.31.211/ota/firmware.bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Firmwaredateiname (file=)&#039;&#039;&#039; und die &#039;&#039;&#039;IP-Adresse&#039;&#039;&#039; muss entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Per WEB OTA-Update (deprecated)===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;deprecated&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==LaCrosseGateway Web-Frontend==&lt;br /&gt;
===Staus-Wert RSSI===&lt;br /&gt;
Die WiFi Signalstärke (dBm) (-36 ist besser als -60)&lt;br /&gt;
&lt;br /&gt;
===Staus-Wert FramesPerMinute===&lt;br /&gt;
Dieser gibt an, wie viele frames von Sensoren in der letzten Minute erfolgreich empfangen, dekodiert und verarbeitet wurden.&lt;br /&gt;
Es eignet sich zur Überwachung, wenn weniger als ein Grenzwert empfangen wurde, dann kann ein Alarm (Benachrichtigung, Restart etc.) ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
===Staus-Wert ReceivedFrames===&lt;br /&gt;
Dieser Wert gibt an, wie viele seit dem Start des LGW empfangen wurden.&lt;br /&gt;
&lt;br /&gt;
===WiFi &amp;quot;Startup-delay&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Mit diesen Konfigurationsprameter kann eine Verzögerung (in Sekunden) definiert werden, bis das LGW nach einen Neustart einen ersten Verbindungsversuch zum WiFi Access Point (Router: Fritzbox etc.) startet.&lt;br /&gt;
&lt;br /&gt;
Eine Anpassung kann für den folgenden Fall sinnvoll sein:&lt;br /&gt;
&lt;br /&gt;
Nach einem Stromausfall benötigt ein WiFi Access Point (Router: Fritzbox etc.) in den meisten Fällen länger zum Starten als das LGW. In der default Einstellung führt das dazu, dass der LGW nach dem Starten versucht 30 Sekunden lang eine Verbindung zum AP herzustellen. Wenn keine Verbindung innerhalb dieser Zeit zustande kommt, dann gibt das LGW auf und macht seinen eigenen AP auf. Mit einer entsprechenden Verzögerung (Dauer bis der Router gestartet ist und der WiFi-AP zur Verfügung steht) kann sichergestellt werden, dass der AP gestartet ist und sich das LGW mit dem AP verbinden kann.&lt;br /&gt;
&lt;br /&gt;
===Internal Sensors &amp;quot;Sensor-ID&amp;quot;===&lt;br /&gt;
Bei Einsatz von mehr als einem LaCrosseGateway, muss die LaCrosse-ID, mit der die internen Sensoren des Gateways übermittelt werden, angepasst werden. &lt;br /&gt;
Hierbei ist darauf zu achten, dass die LaCrosse-ID nur einmal auf einer FHEM Instanz vorkommen darf. Die ID kann entweder Dezimal (211) oder Hex (0xD3) angegeben werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Detailinformationen:&#039;&#039;&#039;&#039;&#039; Wenn ein LGW interne Sensoren hat (BME280, BMP180, DHT22, ...) dann sendet es die Daten des Sensors so, als ob es eine Wetterstation wäre (WS 1600 Format) an das LGW. Bisher hat es dafür die Sensor-ID 0 verwendet. Wenn man mehrere LGWs an ein FHEM angebunden hat, dann mischen sich deren Sensor-Daten auf dem LaCrosse device mit der ID 0. Um das zu vermeiden, kann man nun konfigurieren, mit welcher Sensor-ID die internen Sensoren gesendet werden sollen und die beiden LGWs unterschiedliche konfigurieren.&lt;br /&gt;
&lt;br /&gt;
Die Anpassung der LaCrosse-ID hat keinerlei Einfluss auf die Daten, die von den Radios empfangen werden.&lt;br /&gt;
&lt;br /&gt;
===Internal Sensors &amp;quot;Altitude&amp;quot;===&lt;br /&gt;
Mit diesen Parameter kann die Höhe über NN konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
===Internal Sensors &amp;quot;Temperature-/Humidity-correction&amp;quot;===&lt;br /&gt;
Für Temperatur und Feuchte kann ein Korrekturwert angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Der Wert kann entweder ein Offset oder prozentual sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiele:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Korrekturwert !! Gemessen !! Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| -5 &lt;br /&gt;
| 20°C&lt;br /&gt;
| 15°C&lt;br /&gt;
|-&lt;br /&gt;
| +3&lt;br /&gt;
| 20°C&lt;br /&gt;
| 23°C&lt;br /&gt;
|-&lt;br /&gt;
| -10%&lt;br /&gt;
| 20°C&lt;br /&gt;
| 18°C&lt;br /&gt;
|-&lt;br /&gt;
| +20%&lt;br /&gt;
| 20°C&lt;br /&gt;
| 24°C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SC16IS750-Clone===&lt;br /&gt;
Wenn aktiviert, wird die I2C clock auf 100 kHz runtergenommen und&lt;br /&gt;
es wird an einigen Stellen etwas auf die Bremse getreten, dass ein SC16IS70-Clone, der langsamer&lt;br /&gt;
als echte Hardware ist, mitkommt.&lt;br /&gt;
Sollte man ohne zwingenden Grund nicht aktivieren.&lt;br /&gt;
&lt;br /&gt;
===Use MDNS=== &lt;br /&gt;
Legt fest, ob das LGW seine IP-Adresse per MDNS bekannt gibt. Dies ist nötig, wenn man einen Mac hat oder bei Windows einen Bonjour-Service laufen hat.&lt;br /&gt;
Dies ist beim Entwickeln sinnvoll, kann üblicherweise ausgeschaltet bleiben.&lt;br /&gt;
&lt;br /&gt;
===MCP23008=== &lt;br /&gt;
Konfigurationsmöglichkeit für die 8 IO Pins (siehe auch [[#Inbetriebnahme_von_MCP23008|Inbetriebnahme von MCP23008]]).&lt;br /&gt;
&lt;br /&gt;
===Serial bridge port und bridge baud===&lt;br /&gt;
Das LGW kann nun optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen.&lt;br /&gt;
Dazu gibt es die &amp;quot;Serial bridge port&amp;quot; und &amp;quot;Serial bridge baud&amp;quot; auf der &amp;quot;config&amp;quot;-Page des LGWs.&lt;br /&gt;
Das LGW überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
===Soft Serial Bridge===&lt;br /&gt;
Das LGW kann optional eine Soft serial bridge (Zuverlässig nur mit bis zu 57600 baud) transparent auf einem TCP Port bereitstellen.&lt;br /&gt;
Folgende Parameter können auf der LGW Setup-Page angepasst/konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Parameter !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Port&lt;br /&gt;
| Der Port, auf dem es angesprochen werden kann&lt;br /&gt;
|-&lt;br /&gt;
| Baud&lt;br /&gt;
| Die Baudrate für die Kommunikation&lt;br /&gt;
|-&lt;br /&gt;
| Nextion display&lt;br /&gt;
| Für den Betrieb eines Nextion Display muss diese Option aktiviert sein.&lt;br /&gt;
|-&lt;br /&gt;
| Add units&lt;br /&gt;
| Fügt an die Werte (Temp,Hum,Pres), die das LGW an das Display schickt, Einheiten an.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mithilfe des Soft serial bridge können verschiedene Geräte (nanoCUL, Nextion Display, etc.), welche per seriellen Schnitstelle kommunizieren können, in Betrieb genommen werden.&lt;br /&gt;
&lt;br /&gt;
===Statuswerte abrufen===&lt;br /&gt;
Mit http://&amp;lt;IP-des-LGW&amp;gt;/state können die Statuswerte, die das LGW-Frontend anzeigt, als XML zur Weiterverarbeitung abgerufen werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;LGW&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;UpTimeSeconds&amp;quot; Value=&amp;quot;107086&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;UpTimeText&amp;quot; Value=&amp;quot;1Tg. 5Std. 44Min. 46Sek. &amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;WIFI&amp;quot; Value=&amp;quot;NeverTellThem&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;MacAddress&amp;quot; Value=&amp;quot;18:FE:34:9A:6D:48&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;ChipID&amp;quot; Value=&amp;quot;10120520&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;ReceivedFrames&amp;quot; Value=&amp;quot;93593&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Info Key=&amp;quot;FramesPerMinute&amp;quot; Value=&amp;quot;52&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/LGW&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Funktionsweise Log===&lt;br /&gt;
Das Log ist als Hilfsmittel bei der Fehlersuche gedacht z.B. um bei PCA301 zu verfolgen, wann wer was wie frägt und antwortet oder um zu schauen, ob irgend welche Sensoren überhaupt empfangen werden und die Daten an FHEM geliefert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:lgw_LogPage.png|600px|thumb|left|LaCrosseGateway Log ebfrontend]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Mit &amp;quot;Command&amp;quot; kann man Befehle an das LGW senden. Sie entsprechen dem, was man mit &amp;quot;set myLaCrosseGateway raw ...&amp;quot; aus FHEM schicken kann.&lt;br /&gt;
Die obere Liste enthält die Daten, die an FHEM übermittelt werden (bzw. würden, wenn sich ein FHEM auf das LGW verbunden hat)&lt;br /&gt;
Die untere Liste enthält debug-Informationen u.a. wird hier der letzte Systemstart aufgezeichnet.&lt;br /&gt;
Die verwendete SDK-Version und der letzte Reset-Grund werden ebenfalls ausgegeben&lt;br /&gt;
&lt;br /&gt;
Das Log kann per HTTP abgerufen werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;http://&amp;lt;LGW-IP&amp;gt;/getLogData&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;http://192.168.31.211/getLogData&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Ergebnis sieht wie folgt aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;DATA:OK 22 117 196 0 58 226 102 0 58 191 86 0 0 40 172 0 105 1 101 3 0 [75 C4 E2 66 00 00 BF 56 00 00 00 02 3B FC DC 00 69 01 65 4A A4 C4 F9 F2 4F 11 A4 F6 7C 03 A0 00 00 00 00 03 A0 38 09 21 27]&lt;br /&gt;
DATA:OK 9 11 130 4 173 125 [92 D5 97 7D 75]&lt;br /&gt;
DATA:OK EMT7110 84 81 8 207 0 36 0 1 1 199 1 [25 6A 54 51 40 02 00 24 C3 41 C7 9B]&lt;br /&gt;
SYS: AddOn: KV ADDON 01 Voltage=3.33,UpTime=4921&lt;br /&gt;
DATA:OK VALUES ADDON 01 Voltage=3.33,UpTime=4921&lt;br /&gt;
DATA:OK 9 38 1 4 67 65 [99 84 91 41 07]&lt;br /&gt;
DATA:OK 22 126 67 0 65 236 34 0 65 231 116 0 0 32 103 0 48 0 134 1 0 [7E 43 EC 22 00 00 E7 74 00 00 00 01 C7 AC D7 00 30 00 86 00 57 E4 69 1E 46 8E D4 68 C7 04 10 00 00 00 00 04 10 18 0A DC F7]&lt;br /&gt;
DATA:OK 9 36 1 4 128 61 [99 05 52 3D 96]&lt;br /&gt;
DATA:OK WS 0 4 4 185 255 255 255 255 255 255 255 255 255 0 3 252&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;DATA:&#039;&#039;&#039;&#039;&#039; für die obere Liste&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;SYS: &#039;&#039;&#039;&#039;&#039; für die untere Liste&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei jedem Aufruf werden die seit dem letzten Abruf neu aufgelaufenen Logeinträge geliefert.&lt;br /&gt;
Intern werden maximal 40 Einträge gepuffert (aber kein Ringpuffer, weil die ersten 40 mit dem Bootlog erhalten bleiben müssen)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039;&#039;&#039; Aus Performance- und Stabilitätsgründen sollten die Daten nicht zu häufig und nicht von zwei Instanzen gleichzeitig abgerufen werden.&lt;br /&gt;
&lt;br /&gt;
=Hinweise zum Betrieb mit FHEM=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voraussetzungen==&lt;br /&gt;
Es wird ein [[#LaCrosseGateway einrichten |vorkonfiguriertes]] LaCrosseGateway vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
Perl Modul: &#039;&#039;LWP::UserAgent&#039;&#039; - Dieses wird für das Firmware Update per FHEM LaCrosseGateway Modul benötigt.&lt;br /&gt;
Auf einem Raspberry Pi kann die Installation wie folgt durchgeführt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;sudo apt-get install libwww-perl&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
alternativ auch mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;sudo cpan LWP::UserAgent&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FHEM Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Ursprünglich wurde für das LaCrosseGateway das FHEM-Modul 36_JeeLink.pm verwendet. Da es aber inzwischen erhebliche Unterschiede zwischen dem JeeLink-LaCrosse-Sketch und dem LaCrosseGateway gibt, existiert seit Mitte November 2016 ein für das LaCrosseGateway spezialisiertes und optimiertes FHEM-Modul, das 36_LaCrosseGateway.pm.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses sollte anstatt dem 36_JeeLink.pm vorzugsweise verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_LaCrosseGeateway.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_KeyValueProtocol.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_LaCrosse.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_PCA301.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_EC3000.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_EMT7110.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;36_Level.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;42_Nextion.pm&#039;&#039; (wird per FHEM Update verteilt)&lt;br /&gt;
&lt;br /&gt;
==Device Definition==&lt;br /&gt;
===WLAN===&lt;br /&gt;
Die Definition sieht dann wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;myLaCrosseGateway&amp;gt; LaCrosseGateway &amp;lt;IP-Adresse&amp;gt;:81&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;myLaCrosseGateway&amp;gt;&#039;&#039; kann bei Bedarf angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;IP-Adresse&amp;gt;&#039;&#039; muss entsprechend angepasst werden. Anstatt der IP-Adresse kann auch der Hostname vom LaCrosseGateway verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define myLaCrosseGateway LaCrosseGateway 192.168.22.33:81&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;IP-Adresse ermitteln:&amp;lt;/u&amp;gt; Das LaCrosseGateway heist per default Einstellung &amp;quot;&#039;&#039;LaCrosseGateway&#039;&#039;&amp;quot;, per ping auf den Hostnamen &#039;&#039;LaCrosseGateway&#039;&#039; kann die &amp;lt;IP-Adresse&amp;gt; ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
===USB===&lt;br /&gt;
Wenn man das LGW über USB betreiben will, dann möchte man üblicherweise kein WiFi.&lt;br /&gt;
Um das WiFi zu deaktivieren gibt es zwei Möglichkeiten:&amp;lt;br&amp;gt;&lt;br /&gt;
1.) Man kann mit einen 10k pullup auf 3.3V an MOSI == GPIO13 == D7 &amp;quot;jumpern&amp;quot;, dass man kein wifi will. Wenn voranden, wird WiFi sofort beim Start deaktiviert.&amp;lt;br&amp;gt;&lt;br /&gt;
2.) Man kann WiFi auf der Setup-Page des LGW deaktivieren.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb via USB sieht die Definition wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;myLaCrosseGateway&amp;gt; LaCrosseGateway &amp;lt;USB-Port&amp;gt;@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;myLaCrosseGateway&amp;gt;&#039;&#039; kann bei Bedarf angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;USB-Port&amp;gt;&#039;&#039; muss entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: &amp;lt;code&amp;gt;define myLaCrosseGateway LaCrosseGateway /dev/ttyUSB0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;/dev/ttyUSB0&#039;&#039; Falls bereits mehrere USB Geräte angeschlossen sind muss der USB Port angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sind mehrere USB Devices am FHEM Server (z.B. RPI, Cubietruck etc.) in Betrieb, dann ist die Zuordnung über den USB-Port nicht zuverlässig. Die Ports werden u.a. in der Reihenfolge vergeben, in der die Geräte angeschlossen werden. Zuverlässiger und eindeutiger ist die Zuordnung über die Serial-ID.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl zeigt die Serial-ID der angeschlossenen USB-Devices an: &lt;br /&gt;
&amp;lt;code&amp;gt;ls -l /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Ausgabe:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;lrwxrwxrwx 1 root root 13 Mai 14 10:37 usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 -&amp;gt; ../../ttyUSB1&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Mai 30 11:27 usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -&amp;gt; ../../ttyUSB2&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Apr 16 14:52 usb-Silicon_Labs_ELV_USB-Modul_UM2102_EVFSRFF8COEXIKOT-if00-port0 -&amp;gt; ../../ttyUSB0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In diesem Fall ist u.a. ein DEVKIT 1.0 mit der Serial-ID &#039;&#039;usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -&amp;gt; ../../ttyUSB2&#039;&#039; angeschlossen.&lt;br /&gt;
&lt;br /&gt;
Auf Basis dieser Informationen lässt sich folgende Definition erstellen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define myLaCrosseGateway LaCrosseGateway /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0@57600&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wichtig ist es, die Übertragungsrate von 57600 bit/s anzugeben.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man das LGW ohne WiFi betreibt, dann muss man natürlich auf die Annehmlichkeiten des Web-Frontends verzichten.&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Fall kann man die Konfiguration, die man über das Web-Frontend machen würde, über die serielle Schnittstelle machen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set myLaCrosseGateway raw &amp;quot;SETUP ...&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das ... sind die gewünschten Einstellungen. Es müssen nicht alle Einstellungen gesendet werden sondern nur die, die man setzen will.&amp;lt;br&amp;gt;&lt;br /&gt;
Es werden nur die Einstellungen gesetzt und im EEPROM gespeichert, es wird aber kein Reboot ausgelöst&amp;lt;br&amp;gt;&lt;br /&gt;
Einen Reboot kann man mit &amp;quot;set myLaCrosseGateway raw 8377e&amp;quot; auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
Mehrere Einstellungen können durch Semikolon getrennt angegeben werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;code&amp;gt;set myJeeLink213 raw &amp;quot;SETUP UseWiFi false; IO0 OLED mode=thp; IO1 OLED Off; CorrT -2.5; ISID 213&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann auf der seriellen Schnittstelle die aktuellen Einstellungen abrufen.&lt;br /&gt;
Das command ist 1g&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;set myLaCrosseGateway raw 1g&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Man bekommt dann so etwas zurück:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;SETUP ctSSID esesidee; ctPASS PasstWort; staticIP 192.168.31.211; staticMask 255.255.255.0; staticGW 192.168.31.1;&lt;br /&gt;
HostName LGW211; StartupDelay 1; ISID 0xD3; Altitude 220; CorrT 0; CorrH 0; DataPort1 81; DataPort2 82; SerialBridgePort 85; &lt;br /&gt;
SerialBridgeBaud 38400; UseMDNS true; IO0 OLED mode=s; IO1 OLED mode=thp; IO2 OLED On; IO3 OLED Off; oledStart 120; KVInterval 10; &lt;br /&gt;
KVIdentity 211; PCA301Plugs 036180=3,03A094=1,035FF1=6;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reconnect==&lt;br /&gt;
Falls das LaCrosseGateway nicht erreichbar ist (Kein Strom/Stromausfall, WLAN Verbingung unterbrochen etc.), bricht das LaCrosseGateway Device die Kommunikation ab. Über das entsprechende &#039;&#039;timeout&#039;&#039; Attribut kann das LaCrosseGateway device so konfigurert werden, dass es in regelmässigen Abständen erneut versucht eine Verbindung mit dem LaCrosseGateway herzustellen.&lt;br /&gt;
&lt;br /&gt;
Konfigurationsempfehlung für &#039;&#039;timeout&#039;&#039; = 120 Sekunden und &#039;&#039;checkInterval&#039;&#039; = 30 Sekunden:&lt;br /&gt;
&lt;br /&gt;
Der Wert kann in FHEM wie folgt gesetzt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway timeout 120,30&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;myLaCrosseGateway&#039;&#039;&#039; muss auf den Gerätenamen in FHEM angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Während das LaCrosseGateway eine WiFi-Verbindung aufbaut, benötigt das LaCrosseGateway-Modul je nach Konfiguration einige Zeit bis es einen neuen Connect auf den Datenport des LaCrosseGateway versucht. Das Finden der optimalen Werte erfordert etwas Geduld, es kann auch schon mal ein, zwei Minuten Dauern, bis die ersten Daten in FHEM übertragen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Erklärung der Timeout Werte:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
120,30 prüft alle 30 Sekunden, ob seit mindestens 120 Sekunden keine Daten mehr übermittelt wurden und falls dem so ist, macht es einen Reset auf der Schnittstelle, was die Verbindung zum LaCrosseGateway neu aufbaut. Das bedeutet, in so einem Fall ist die Verbindung nach spätestens 150 Sekunden wieder hergestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Attribut wird lediglich eine neue Verbindung aufgebaut, dabei wird das LaCrosseGateway nicht resetet.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Liste aller initCommands==&lt;br /&gt;
Eine aktuelle Liste der initCommands, die man von FHEM, Terminalprogramm oder Web-Frontend aus senden kann, sind auf dem Web-Frontend &amp;quot;Help&amp;quot;-Page&amp;quot; des LaCrosseGateways (ab V1.17) aufgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://IP-Adresse/setup http://IP-Adresse oder Hostname/help]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;n&amp;gt;a       set to 0 if the blue LED bothers&lt;br /&gt;
&amp;lt;n&amp;gt;c       use one of the possible data rates (for transmit on RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;d       set to 1 to see debug messages&lt;br /&gt;
&amp;lt;8266&amp;gt;e    Clear EEPROM&lt;br /&gt;
&amp;lt;n&amp;gt;f       initial frequency in kHz (5 kHz steps, 860480 ... 879515)&lt;br /&gt;
&amp;lt;n&amp;gt;g       get information (1g: get current settings)&lt;br /&gt;
&amp;lt;n&amp;gt;h       Altitude&lt;br /&gt;
&amp;lt;n,f,i&amp;gt;i   Init PCA for Radio #&amp;lt;n&amp;gt; to &amp;lt;m&amp;gt;MHz and &amp;lt;i&amp;gt;s Interval&lt;br /&gt;
&amp;lt;n&amp;gt;m       bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;M       bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #2)&lt;br /&gt;
&amp;lt;n&amp;gt;#&amp;lt;x&amp;gt;m   bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #x)&lt;br /&gt;
&amp;lt;n&amp;gt;o       set HF-parameter e.g. 50305o for RFM12 or 1,4o for RFM69&lt;br /&gt;
&amp;lt;n&amp;gt;p       payload on the serial port (1: all, 2: only undecoded data)&lt;br /&gt;
&amp;lt;n&amp;gt;r       use one of the possible data rates (for RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;R       use one of the possible data rates (for RFM #2)&lt;br /&gt;
&amp;lt;n&amp;gt;#&amp;lt;x&amp;gt;r   use one of the possible data rates (for RFM #x)&lt;br /&gt;
&amp;lt;x,x,...&amp;gt;s Send to PCA301 (must be 10 byte)&lt;br /&gt;
&amp;lt;x,x,...&amp;gt;S Send to CustomSensor&lt;br /&gt;
&amp;lt;n&amp;gt;t       0=no toggle, else interval in seconds (for RFM #1)&lt;br /&gt;
&amp;lt;n&amp;gt;T       0=no toggle, else interval in seconds (for RFM #2)&lt;br /&gt;
&amp;lt;n&amp;gt;#&amp;lt;x&amp;gt;t   0=no toggle, else interval in seconds (for RFM #x)&lt;br /&gt;
v          show version&lt;br /&gt;
&amp;lt;n&amp;gt;w       0=no wifi&lt;br /&gt;
&amp;lt;n&amp;gt;z       set to 1 to display analyzed frame data instead of the normal data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LaCrosseGateway zurücksetzen==&lt;br /&gt;
Das LaCrosseGateway kann auf die &amp;quot;Werkseinstellungen&amp;quot; zurückgesetzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch werden alle auf der Setup-Page gemachten und im EEPROM gespeicherten Einstellungen verworfen.&lt;br /&gt;
Der Befehl dazu lautet: &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;8266e&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Er kann mit einem Terminalprogramm, von FHEM aus mit &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set &amp;lt;myLaCrosseGateway&amp;gt; raw 8266e&amp;lt;/syntaxhighlight&amp;gt; oder von der Log-Page des LGW gesendet werden.&lt;br /&gt;
&lt;br /&gt;
Danach startet das LGW wieder als Access Point [[#LaCrosseGateway einrichten|initiale Konfiguration]] und die Konfiguration kann über die &amp;quot;Setup-Page&amp;quot; neu vorgenommen werden kann.&lt;br /&gt;
&lt;br /&gt;
==Sensoren/Aktoren anlegen==&lt;br /&gt;
&lt;br /&gt;
Voraussetzung: FHEM autocreat ist aktiv.&lt;br /&gt;
Die [http://fhem.de/commandref.html#autocreate FHEM autocreate Funktion] ist aktiv.&lt;br /&gt;
&lt;br /&gt;
Die erkannnten Sensoren und Aktoren werden automatisch erkannt und in FHEM angelegt, sobald Daten empfangen werden.&lt;br /&gt;
&lt;br /&gt;
Empfangene Sensoren werden nur hinzugefügt werden, wenn LaCrossePairForSec auf 120 Sekunden gesetzt wird.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von BMP180 / BME280==&lt;br /&gt;
Damit die Daten der o.g. Sensoren in FHEM zur Verfügung stehen, muss zunächst das FHEM-Device angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Das Anlegen kann automatisch erfolgen, dafür muss der folgende FHEM Befehl ausgeführt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann sollte von [http://fhem.de/commandref.html#autocreate FHEM autocreate Funktion] ein LaCrosse Device mit der [[#Sensor-ID | Sensor-ID]] (Default Wert: 0) angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das FHEM Device manuell angelegt werden:&lt;br /&gt;
Die &#039;&#039;&#039;&#039;&#039;ID&#039;&#039;&#039;&#039;&#039;, mit der das LGW die internen Sensoren sendet, entspricht der konfugurierten [[#Sensor-ID | Sensor-ID]] (Default Wert: 0)&lt;br /&gt;
Es verhält sich so, als ob es eine Wetterstation (wie z.B. WS 1600) wäre.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define &amp;lt;name&amp;gt; LaCrosse 00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Anchließend muss eine Höhenkorrektur (Grund: der Luftdruck wird immer bezogen auf NN angegeben, der Sensor liefert aber den Absolutdruck) mit dem command &#039;&#039;&#039;&#039;&#039;h&#039;&#039;&#039;&#039;&#039; in den initCommands vorgenommen werden, dies erfolgt mit dem FHEM Befehl:&lt;br /&gt;
&lt;br /&gt;
Beispiel: 220h legt 220m über NN fest.&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 220h&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Besser:&#039;&#039;&#039; Alternativ kann die Höhe über NN auch auf der Setup-Page des LGW gesetzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Das hat den Vorteil, dass sofort vom Start an der normalisierte Luftdruck an FHEM gesendet wird und nicht erst, wenn die initCommands von FHEM geschickt wurden.&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme Piezo Summer==&lt;br /&gt;
&lt;br /&gt;
Der Piezo Summer wird in FHEM über das LaCrosseGateway Modul angesteuert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiele:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
set myLaCrosseGateway raw 1,60b   -&amp;gt; beep ... beep ... beep                      60 Sekunden lang&lt;br /&gt;
set myLaCrosseGateway raw 2,300b  -&amp;gt; beep beep ... beep beep ... beep beep      300 Sekunden lang&lt;br /&gt;
set myLaCrosseGateway raw 3,120b  -&amp;gt; beep beep beep ... beep beep beep ...      120 Sekunden lang&lt;br /&gt;
set myLaCrosseGateway raw 0b      -&amp;gt; beep stoppen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von RFM69CW==&lt;br /&gt;
Mit dem LaCrosseGateway ist es möglich mehrere RFM69CW einzusetzten. Nachfolgend wird die Konfiguration des Senders/Empfängers erläutert.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Default Werte&amp;quot; (wenn keine Angaben definiert werden) für die data rate sind wie folgt definiert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
#1 (Erste)  =&amp;gt; 17241&lt;br /&gt;
#2 (Zweite) =&amp;gt; 9579&lt;br /&gt;
#3 (Dritte) =&amp;gt; 8842&lt;br /&gt;
#4 (Vierte) =&amp;gt; 20000&lt;br /&gt;
#5 (Fünfte) =&amp;gt; 17241&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Detailinformationen sind auch auf der LaCrosseGateway &amp;quot;Help&amp;quot;-Page zu finden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center&amp;quot;|&#039;&#039;&#039;&amp;lt;Datenrate&amp;gt;#&amp;lt;Radio-Nummer&amp;gt;&amp;lt;command&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;m t:&amp;lt;/code&amp;gt;    || &#039;&#039;Toggle-Steuerung&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r:&amp;lt;/code&amp;gt;    || &#039;&#039;Datarate&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;f:&amp;lt;/code&amp;gt;    || &#039;&#039;Frequenz&#039;&#039; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiele:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
!Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 0#1r v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| DataRate des ersten RFM setzen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 8842#3r v &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| DataRate des dritten RFM setzen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868300#2f v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Frequenz des zweiten RFM setzten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868295#3f v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Frequenz des dritten RFM setzten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 17241#1r 8842#2r v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zwei RFM69CW mit DataRate 17241 und 8842&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 3#1m 20#1t 8842#2r v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zwei RFM69CW mit 20 Sekunden DataRate 17241 toggle 9579 plus 8842 permanent&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 220h 868295#1f 868310#2f v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zwei RFMs Frequenz 868295 und 868310 sowie Höhe über NN&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868295#1f 3#1m 20#1t 2,868950,60i 8842#3r 220h 0a v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Drei RFMs Frequenz 868295 / PCA301 / WS1600 sowie Höhe über NN &amp;lt;br&amp;gt;Radio 1 auf 868295 MHz und Toggle 9K/17K mit 20 Sekunden&amp;lt;br&amp;gt;Radio 2 für PCA301 initialisiert&amp;lt;br&amp;gt;Radio 3 macht 8842 kbps für die WS 1600&amp;lt;br&amp;gt;Höhe 220m über NN&amp;lt;br&amp;gt;Activity LED aus&amp;lt;br&amp;gt;v am Ende ruft die neu gesetzen Daten vom LaCrosseGateway ab, damit sie in FHEM LaCrosseGateway Modul aktualisiert werden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Es ist wichtig ein &amp;quot;v&amp;quot; an das Ende eines initCommands anzuhängen. Damit wird veranlasst, dass das LaCrosseGateway seine neuen Einstellungen an FHEM zurückmeldet.&lt;br /&gt;
==Inbetriebnahme von PCA301==&lt;br /&gt;
PCA301 im LGW funtioniert ähnlich dem PCA301 Sketch, allerding mit einigen systembedingten Abweichungen.&lt;br /&gt;
&lt;br /&gt;
Per default ist PCA301 nicht aktiviert, es muss in den initCommands aktiviert werden. Dazu gibt es das command &amp;quot;&#039;&#039;&#039;&#039;&#039;i&#039;&#039;&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;RadioNr&amp;gt;,&amp;lt;Frequenz&amp;gt;,&amp;lt;Poll-Intervall&amp;gt;i&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Initialisierung kann auch erneut geschickt werden, um z.B. das Poll-Intervall zu ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Wichtig:&#039;&#039;&#039;&#039;&#039; Es darf nur &#039;&#039;&#039;&amp;quot;ein&amp;quot;&#039;&#039;&#039; Radio für PCA301 initialisiert sein, nicht mehrere. Das PCA301 initialisierte Radio ist dediziert für PCA301 zuständig, es kann nicht zwischen anderen Protokollen (z.B. LaCrosse) toggeln.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;Poll-Interval&#039;&#039; sollte nicht extrem heruntergesetzt (nicht unter eine Minute) werden, da PCA301 sonst LaCrosse verdrängt. PCA301 hat hörere Priorität, da es bei der Kommunikation&lt;br /&gt;
mit den Dosen keine Antworten überhören darf.&lt;br /&gt;
&lt;br /&gt;
Unter Umständen muss die Frequenz etwas angepasst werden, wenn das Radio und/oder die Dosen nicht genau auf 868950 liegen.&lt;br /&gt;
Das ist daran zu erkennen, dass entweder gar keine Antwort von den Dosen oder verzögerte Antwort ankommt.&lt;br /&gt;
Werte von 868960 oder 960970 haben in manchen Fällen Abhilfe gebracht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiele:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | &amp;lt;code&amp;gt;attr myLaCrosseGateway initCommands 2,868950,120i v&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initialisiert den zweiten RFM auf 868950 MHz und setzt das Poll-Intervall auf 120 Sekunden&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myLaCrosseGateway initCommands 1,868950,120i 3#2m 20#2t 220h 0a v&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initialisierung eines LaCrosseGateways mit zwei Radios für TX29, TX35, PCA301 und BMP180/BME280.&amp;lt;br&amp;gt;Das erste Radio macht PCA301 und das zweite toggelt 17241/9579 im 20 Sekunden Takt um TX29 und TX35 zu empfangen&amp;lt;br&amp;gt;der BMP180/BME280 liefert den Druck für 220m Meereshöhe&amp;lt;br&amp;gt;die LED ist deaktiviert&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ablauf:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nachdem PCA301 initialisiert ist, lauscht das LaCrosseGateway auf der entsprechenden Frequenz.&lt;br /&gt;
Sobald eine Dose empfangen wurde, wird sie in der Konfiguration (EEPROM) dauerhaft registriert und ab sofort gepollt.&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;Polling&#039;&#039; funtioniert so, dass für jede Dose geschaut wird, wann sie zuletzt empfangen wurde und wenn das länger als das konfigurierte Interval zurück liegt,&lt;br /&gt;
dann wird sie abgefragt. Wenn sonst etwas (Basisstation, anderes FHEM) die Dose abgefragt hat und das LaCrosseGateway die Antwort gehört hat, dann gilt das auch als&lt;br /&gt;
empfangen und es wird kein eigener Poll für die Dose ausgelöst. &#039;&#039;Das Zusammenspiel mit einer echten Basisstation konnte bisher nur grob simuliert werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;Pairing&#039;&#039; (also die Vergabe eines Kanals) funktioniert wie im PCA301-Sketch, button an der Dose &#039;&#039;&amp;quot;3 Sekunden&amp;quot;&#039;&#039; drücken, dann vergibt das LaCrosseGateway den nächsten freien Kanal.&lt;br /&gt;
Dosen, die bereits einen Kanal haben, können durch ein Schalten vor Ort, an das LaCrosseGateway angelernt werden. Das LaCrosseGateway erkennt sie und nimmt sie in die&lt;br /&gt;
Konfiguration auf. Falls die Dose bereits mit einem anderen Kanal bekannt war, wird der Kanal im LaCrosseGateway aktualisisert.&lt;br /&gt;
&lt;br /&gt;
Auf der Setup-Page im Web-Frontend (http://IP-Adresse oder Hostname/setup) des LaCrosseGateway kann die Liste der bekannten Dosen (ID=Kanal) eingesehen werden. Hinweis: Es sollten keine Änderungen in diesem Bereich vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn ein Kommando (Schalten, Daten abfragen, ...) an eine Dose gesendet wurde und keine Antwort kam, wird bereits im Sketch drei mal versucht, eine Antwort zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Das PCA301 Modul in FHEM funktioniert komplett wie bisher.&lt;br /&gt;
&lt;br /&gt;
Weiterführende Themen zum PCA301 sind im Wiki [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung]] und PCA301 FHEM Thread {{Link2Forum|Topic=11648|LinkText=JeeLink / PCA301 Thread}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Die Befehle, die der PCA301-Sketch kennt, gibt es im LaCrosseGateway nur teilweise:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Befehl (Beschreibung)!! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;quot;turn activity LED on or off&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;l &amp;quot;list known devices&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen, kann man nun im Web-Frontend sehen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;q &amp;quot;turn quiet mode on or off&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r &amp;quot;list recordings&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;s &amp;quot;send to plug&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;v &amp;quot;report version and configuration parameters&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| wie bisher&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;d, e, p &amp;quot;poll / turn a device on / off&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;h, +, -, # &amp;quot;modify and display RF12 Frequency register&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| entfallen, ersetzt durch das &amp;quot;i&amp;quot; command bzw. das bereits vorhandene &amp;quot;f&amp;quot; command&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von Energy Count 3000 (EC3000)==&lt;br /&gt;
Die EC3000 sendet auf 868.300 kHz mit 20.000 kbps. Dafür wurde eine neue data rate hinzugefügt.&lt;br /&gt;
Sie kann mit 3r oder 20000r gesetzt werden. Wenn diese data rate gesetzt wird, wird auch automatisch der RFM69 auf den Empfang von EC3000 uminitialisiert.&lt;br /&gt;
&lt;br /&gt;
EC3000 kann auch in einen data rate toggle mit einbezogen werden. Dazu gibt es nun das bit mit dem Wert 8 für 20.000 kbps&lt;br /&gt;
&lt;br /&gt;
Um EC3000 dediziert mit einem der drei RFMs zu empfangen muss man einfach die data rate des gewünschten RFM setzen. Beispiel initCommand:&lt;br /&gt;
20000#2r&lt;br /&gt;
&lt;br /&gt;
Um EC3000 in einen data rate toggle mit einzubeziehen muss im m command das 8-wertige bit gesetzt werden.&lt;br /&gt;
Wenn man z.B. mit dem zweiten Radio 17k Sensoren  (TX29...) und EC3000 empfangen soll (20 Sekunden toggle), wäre das initCommand:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 9#2m 20#2t v&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von MCP23008==&lt;br /&gt;
Auf der LaCrosseGateway &amp;quot;config&amp;quot;-page kann für jeden der 8 IO Pins konfiguriert werden, ob es ein Input oder Output Pin ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Input&#039;&#039;&#039;: Eingang, wird per KVP an FHEM übermittelt. Einsatzzweck: z.B. Anschluß von Pushbuttons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output&#039;&#039;&#039;: Kann von FHEM aus gesetzt werden. Einsatzzweck: z.B. Anschluß von LEDs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel: &#039;&#039;Input =&amp;gt; Eingang, wird per KVP an FHEM übermittelt&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;OK VALUES LGPB 211 GP2=0,GP3=1,GP4=0,GP5=0,GP6=0,GP7=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel: &#039;&#039;Output =&amp;gt; Kann von FHEM aus gesetzt werden.&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;MCP GP0=1,GP1=0&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme Analogport==&lt;br /&gt;
Der Analogport A0 des ESP8266 wird als Reading im LaCrosseGatewayModul aufgeführt.&lt;br /&gt;
Um das zu aktivieren, muss man auf der Setup-Page des LGW die Option &amp;quot;Send analog values&amp;quot; ankreuzen.&lt;br /&gt;
Der Eingangsspannungsbereich von A0 ist 0V ... 1.0V, was zu einem Reading von 0 ... 1023 führt.&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme von OLED-Display==&lt;br /&gt;
Es wird das 128x64 pixel 0.96&amp;quot; I2C Display mit dem SSD1306 controller und das 128x64 pixel 1.3&amp;quot; mit dem SH1106 controller unterstützt.&lt;br /&gt;
&lt;br /&gt;
Für die korrekte Darstellung auf dem 1.3&amp;quot; Display, muss die Checkbox 1.3&amp;quot; auf der Setup-Page aktiviert werden &lt;br /&gt;
&lt;br /&gt;
Hinweis: das 0.96&amp;quot; Display bekommt man auch in einer Varianten, die SPI unterstützt. Diese Variante kann nur nach einem Umbau verwendet werden. &lt;br /&gt;
&lt;br /&gt;
Der nachfolgende Funktionsumfang ist implementiert:&lt;br /&gt;
&lt;br /&gt;
*OLED ein- und ausschalten sowie das Senden von individuellen Texten über FHEM mithilfe des LaCrosseGateway-Moduls&lt;br /&gt;
*OLED Startverhalten konfigurierbar&lt;br /&gt;
*Übermittlung des Display Status im KVP&lt;br /&gt;
*Anzeige von Statusinformationen in der obersten Zeile mithilfe von Symbolen (siehe Abbildung - von links nach rechts)&lt;br /&gt;
**WiFI connect erfolgreich&lt;br /&gt;
**Ein FHEM hat sich auf einen DataPort connected&lt;br /&gt;
**Ein FHEM hat sich auf den Prozessor an der [[#Serial_transparent_bridge|uart bridge]] connected&lt;br /&gt;
**WiFi Signalstärke (dBm). Hinweis: -36 ist besser als -60&lt;br /&gt;
[[Datei:lgw_oled_statuszeile.png|400px|thumb|left|OLED Anzeige von Statusinformationen]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
*Darstellung von bis zu drei Texten und optional ein Symbol.&lt;br /&gt;
*Definition des Zeitintvervalls für das Umschalten zur nächsten Seite&lt;br /&gt;
*Zuweisung der Modes an die Ports des MCP23008 (Die Konfiguration erfolgt auf der &amp;quot;Setup&amp;quot;-Page)&lt;br /&gt;
*Fortschrittsanzeige beim Flashen eines an die serielle Schnittstelle des SC16IS750 angeschlossenen Arduinos (siehe SubProzessor und Serial transparent bridge)&lt;br /&gt;
&lt;br /&gt;
===OLED Start Modus===&lt;br /&gt;
Einstellungsmöglichkeit über die &amp;quot;Config&amp;quot;-Page wie sich das OLED nach einem Start verhalten soll.&lt;br /&gt;
Mögliche Optionen: on / off / Anzahl Sekunden, nach denen es ausgeht.&lt;br /&gt;
Zusätzlich kann der initiale Mode festgelegt werden (z.B. thp)&lt;br /&gt;
&lt;br /&gt;
===Modes===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Prefix !! Parameter !! Erläuterung &lt;br /&gt;
|-&lt;br /&gt;
| OLED mode= &lt;br /&gt;
| t&lt;br /&gt;
| Temperatur des internen Sensors&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| h&lt;br /&gt;
| Feuchte des internen Sensors&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| p&lt;br /&gt;
| Druck des internen Sensors&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| s&lt;br /&gt;
| Statuswerte des LGW&lt;br /&gt;
|-&lt;br /&gt;
| OLED mode=&lt;br /&gt;
| f&lt;br /&gt;
| von FHEM gesetzter Text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Mögliche Symbole===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Parameter !! Erläuterung !! OLED Darstellung&lt;br /&gt;
|-&lt;br /&gt;
| t&lt;br /&gt;
| Temperature&lt;br /&gt;
| [[Datei:lgw_sym_t.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| h&lt;br /&gt;
| Humidity&lt;br /&gt;
|[[Datei:lgw_sym_h.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| p&lt;br /&gt;
| Pressure&lt;br /&gt;
|[[Datei:lgw_sym_p.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| s&lt;br /&gt;
| System&lt;br /&gt;
|[[Datei:lgw_sym_s.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| i&lt;br /&gt;
| Info&lt;br /&gt;
|[[Datei:lgw_sym_i.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| w&lt;br /&gt;
| Warning&lt;br /&gt;
|[[Datei:lgw_sym_w.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| e&lt;br /&gt;
| Error&lt;br /&gt;
|[[Datei:lgw_sym_e.jpg|150px|thumb|left|]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Definition !! Erläuterung&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:30%&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED On&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Schaltet ein angeschlossenes Display ein &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED Off&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Schaltet ein angeschlossenes Display aus &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED interval=20&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Legt fest, dass (je nach mode) alle 20 Sekunden die nächste Seite angezeigt wird. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=ths&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte und Systemdaten an &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=thp&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte und Luftdruck an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=thps&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=f&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt ausschließlich den von FHEM festgeleget Text an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=s&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt ausschließlich die Systemdaten an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=Soll: 20.5,Ist: 19.2,,t&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt die übergebenen Texte an und links das Symbol für Temperatur&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=55%,,,h&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nur den Text &amp;quot;55%&amp;quot; und das Symbol für Feuchte an. Da es nur ein Text ist, wird er größer dargestellt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=Line 1,Line 2,Line 3&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt drei Texte aber kein Symbol an.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands &amp;quot;OLED mode=thps&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an. Der Mode wird immer geschickt, wenn FHEM sich neu auf das LGW connected.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Inbetriebnahme eines Nextion Displays==&lt;br /&gt;
&lt;br /&gt;
Mithilfe der Seriellen Schnittstelle [[#Soft_serial_bridge|(Soft serial bridge]]), kann ein Nextion Display in Betrieb genommen werden. Das Besondere dabei ist, dass das LGW zusätzlich seine Status Informationen (AP-Verbindungsstatus, RSSI ,IP ,Version ,FHEM Verbindungsstatus, etc.) an das Display schickt. &lt;br /&gt;
Die Anbindung an FHEM erfolgt Mithilfe des Nextion Moduls (42_Nextion.pm), welches per FHEM Update verteilt wird. &lt;br /&gt;
&lt;br /&gt;
Ein Diskussionsthread zum Thema „LaCrosseGateway mit Nextion Display“ findet man {{Link2Forum|Topic=63443|LinkText=hier}}. &lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
Vor der Inbetriebnahme in FHEM, müssen folgende Voraussetzungen erfüllt sein:&lt;br /&gt;
*Das Display ist wie [[#Nextion_Display|hier]] beschrieben an das LGW angeschlossen.&lt;br /&gt;
*Die [[#Soft_serial_bridge|Soft serial bridge]] auf der LGW Setup-page ist konfiguriert.&lt;br /&gt;
*Das LaCrosse Gateway Device ist wie [[#Device_Definition|hier]] beschrieben angelegt.&lt;br /&gt;
&lt;br /&gt;
===Funktionsumfang===&lt;br /&gt;
&lt;br /&gt;
Der nachfolgende Funktionsumfang ist implementiert:&lt;br /&gt;
&lt;br /&gt;
*OTA Firmware (.tft File) übertragung an das Display &lt;br /&gt;
*Automatische Anpassung der Baudrate auf dem Nextion&lt;br /&gt;
*Das LGW schickt (periodisch) Werte an folgende Controls:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
! Control!! Beschreibung/Anmerkung&lt;br /&gt;
|-&lt;br /&gt;
| LGW#temp.txt&lt;br /&gt;
| Nur wenn ein entsprechender on board sensor vorhanden ist.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#hum.txt&lt;br /&gt;
| Nur wenn ein entsprechender on board sensor vorhanden ist.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#pres.txt&lt;br /&gt;
| Nur wenn ein entsprechender on board sensor vorhanden ist.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#rssi.txt&lt;br /&gt;
| WLAN RSSI Signalstärke&lt;br /&gt;
|-&lt;br /&gt;
| LGW#ip.txt&lt;br /&gt;
| IP-Adresse des LGW&#039;s&lt;br /&gt;
|-&lt;br /&gt;
| LGW#fpm.txt&lt;br /&gt;
| Frames Per Minute&lt;br /&gt;
|-&lt;br /&gt;
| LGW#heap.txt&lt;br /&gt;
| Free Heap&lt;br /&gt;
|-&lt;br /&gt;
| LGW#up.txt&lt;br /&gt;
| Uptime&lt;br /&gt;
|-&lt;br /&gt;
| LGW#ver.txt&lt;br /&gt;
| Version&lt;br /&gt;
|-&lt;br /&gt;
| LGW#wifi (vis)&lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#fhem&lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#cpu1 &lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#cpu2&lt;br /&gt;
| Setzt die visibility&lt;br /&gt;
|-&lt;br /&gt;
| LGW#main&lt;br /&gt;
| Sendet, nachdem es sich initialisiert hat, ein &amp;quot;page LGW#main&amp;quot; an das Nextion.&lt;br /&gt;
|-&lt;br /&gt;
| LGW#info&lt;br /&gt;
| Sendet die Info an die LGW#prog page&lt;br /&gt;
|-&lt;br /&gt;
| LGW#ptext&lt;br /&gt;
| Sendet die Info an die LGW#prog page&lt;br /&gt;
|-&lt;br /&gt;
| LGW#pbar&lt;br /&gt;
| Sendet die Info an die LGW#prog page&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Fortschrittsanzeige beim flashen der Nextion Firmware&lt;br /&gt;
&lt;br /&gt;
===Device Definition Nextion Modul===&lt;br /&gt;
&lt;br /&gt;
Die Definition für die Nextion Bridge sieht dann wie folgt aus: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;nextion&amp;gt; Nextion &amp;lt;IP-Adresse&amp;gt;:&amp;lt;Port&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;nextion&amp;gt;&#039;&#039; kann bei Bedarf angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;IP-Adresse&amp;gt;&#039;&#039; muss entsprechend angepasst werden. Anstatt der IP-Adresse kann auch der Hostname vom LaCrosseGateway verwendet werden.&lt;br /&gt;
  &lt;br /&gt;
&#039;&#039;&amp;lt;Port&amp;gt;&#039;&#039; Ist der auf der Setup-page definierte Port &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define nextion Nextion 192.168.22.33:86&amp;lt;/syntaxhighlight&amp;gt; IP-Adresse ermitteln: Das LaCrosseGateway heist per default Einstellung &amp;quot;LaCrosseGateway&amp;quot;, per ping auf den Hostnamen LaCrosseGateway kann die &amp;lt;IP-Adresse&amp;gt; ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
===Firmware erstellen und flashen ===&lt;br /&gt;
Ein UI für das Nextion Display wird mit dem Nextion Editor erstellt. Mithilfe des Editors kann die entsprechende Firmware (tft Datei – siehe „File -&amp;gt; Open build folder“) kompiliert (Button: Compile) werden. &lt;br /&gt;
&lt;br /&gt;
Das LGW kann die Firmware (.tft Datei) zum Display übertragen. Dazu gibt es zwei Varianten:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;curl&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;curl --http1.0 -# -o ~output.txt -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@&amp;lt;tftFileName&amp;gt;; filename=nextion.tft&amp;quot; http://&amp;lt;LGW-IP&amp;gt;/ota/nextion&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;curl --http1.0 -# -o ~output.txt -H &amp;quot;Content_Type:multipart/form-data&amp;quot; -F &amp;quot;file=@D:\MyNextionFiles\lgw.tft; filename=nextion.tft&amp;quot; http://192.168.31.213/ota/nextion&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das LaCrosseGateway Modul in FHEM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Syntax lautet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;set &amp;lt;myLaCrosseGateway&amp;gt; nextionUpload&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das Attribut &amp;quot;tftFile&amp;quot; gesetzt ist, wird die darin angegebene Datei hochgeladen, ansonsten wird versucht, das File „FHEM/firmware/nextion.tft“ hochzuladen.&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiel===&lt;br /&gt;
In {{Link2Forum|Topic=63443|LinkText=diesem FHEM Forum Thread}} wurde ein LGW Nextion UI erarbeitet (Stand 01.08.2017 {{Link2Forum|Topic=63443|Message=582453|LinkText=Version 0.7}}), um die Funktionsweise zu demonstrieren.&lt;br /&gt;
Das Nextion UI besteht aus folgenden Pages: &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Name !! Page !! Beispiel !! Hinweise/Funktion/Bechreibung !! Nextion Debug commands&lt;br /&gt;
|-&lt;br /&gt;
| 0 ||Boot || Boot || [[Datei:lgw_nextion_boot.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || Das ist die Startseite nach Einschalten des Nextion Displays. ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||Progress||LGW#prog ||[[Datei:lgw_nextion_prog.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;|| Auf dieser Seite wird der WiFi Verbindungsfortschritt angezeit. Alles Werte werden vom LGW befüllt. ||page LGW#prog&lt;br /&gt;
vis LGW#pbar,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#ptext,1&lt;br /&gt;
&lt;br /&gt;
LGW#pbar.val=50&lt;br /&gt;
&lt;br /&gt;
LGW#ptext.txt=&amp;quot;Connect WiFi (1)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 ||Main|| LGW#main ||  [[Datei:lgw_nextion_main.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; ||Dies ist die Haupseite, welche vom LGW aufgerufen wird, sobald der Bootvorgang abgeschlossen ist.&amp;lt;br&amp;gt;Hinweise zur Funktionsweise findet man {{Link2Forum|Topic=63443|Message=546896|LinkText=hier}}|| page LGW#main&lt;br /&gt;
vis LGW#wifi,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#fhem,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#cpu1,1&lt;br /&gt;
&lt;br /&gt;
vis LGW#cpu2,1&lt;br /&gt;
&lt;br /&gt;
LGW#rssi.txt=&amp;quot;-68&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tTime.txt=&amp;quot;23:45&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tDate.txt=&amp;quot;01.08.2017&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iTemp,1&lt;br /&gt;
&lt;br /&gt;
LGW#temp.txt=&amp;quot;25.7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iHum,1&lt;br /&gt;
&lt;br /&gt;
LGW#hum.txt=&amp;quot;68%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iPres,1&lt;br /&gt;
&lt;br /&gt;
LGW#pres.txt=&amp;quot;1024hPa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iWind,1&lt;br /&gt;
&lt;br /&gt;
tout_ws.txt=&amp;quot;23km/h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis iOutT,1&lt;br /&gt;
&lt;br /&gt;
tout_t.txt=&amp;quot;28°C&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||Info Page||  Info || [[Datei:lgw_nextion_info.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || Alle Informationen auf dieser Seite werden von LGW automatisch befüllt. || page Info&lt;br /&gt;
vis LGW#ip,1&lt;br /&gt;
&lt;br /&gt;
LGW#ip.txt=&amp;quot;192.168.222.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#fpm,1&lt;br /&gt;
&lt;br /&gt;
LGW#fpm.txt=&amp;quot;5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#heap,1&lt;br /&gt;
&lt;br /&gt;
LGW#heap.txt=&amp;quot;16280&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#ver,1&lt;br /&gt;
&lt;br /&gt;
LGW#ver.txt=&amp;quot;1.30&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vis LGW#up,1&lt;br /&gt;
&lt;br /&gt;
LGW#up.txt=&amp;quot;1Tg.4Std.34Min.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Info Page 2 ||  Info2 ||  [[Datei:lgw_nextion_info2.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || tInfo50 und tInf51 sind für Nextion UI Version reserviert. tInfo60 bis tInfo91 sind nicht belegt und können verwendet werden, um z.B. die FHEM Verison anzuzeigen. || page Info2&lt;br /&gt;
tInfo60.txt=&amp;quot;tInfo60:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo61.txt=&amp;quot;tInfo61&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo70.txt=&amp;quot;tInfo70:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo71.txt=&amp;quot;tInfo71&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo80.txt=&amp;quot;tInfo80:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo81.txt=&amp;quot;tInfo81&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo90.txt=&amp;quot;tInfo90:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tInfo91.txt=&amp;quot;tInfo91&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Settings || Settings || [[Datei:Lgw_nextion_Settings.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; || Einstellungsmöglichkeit von Helligkeit (Wertebereich von 10% bis 100%) des Displays und des PowerOff Timeouts (Wertebereich: off und 1-120 Sek.)||page Settings&lt;br /&gt;
h1.val=25&lt;br /&gt;
&lt;br /&gt;
h0.val=60&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Control Center||CoCe||[[Datei:lgw_nextion_CoCe.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; ||Zum Schalten von Aktoren und Status anzeige.&amp;lt;br&amp;gt;Weiteren Hinweise zur Funktionsweise sind {{Link2Forum|Topic=63443|Message=576902|LinkText=hier}} zu finden. || page CoCe&lt;br /&gt;
lblT1.txt=&amp;quot;lbT1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS1.txt=&amp;quot;aus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT2.txt=&amp;quot;lbT2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS2.txt=&amp;quot;an&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT3.txt=&amp;quot;lbT4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS3.txt=&amp;quot;zu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT4.txt=&amp;quot;lbT3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS4.txt=&amp;quot;auf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblT5.txt=&amp;quot;lbT5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lblS5.txt=&amp;quot;n.a.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Weather ||Weather||[[Datei:lgw_nextion_Weather.png|200px|thumb|left|]]&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;||Zur Anzeige einer Wettervorhersage. Diese Seite wird durch ein touch auf den &amp;quot;Temp-Wert&amp;quot; in der Main#Page aufgerufen. &amp;lt;br&amp;gt;Implementierungshinweise sind {{Link2Forum|Topic=63443|Message=582453|LinkText=hier}} zu finden. ||page Weather&lt;br /&gt;
p0.pic=12&lt;br /&gt;
&lt;br /&gt;
t0.txt=&amp;quot;Mo 01 Aug 2017\rmin:15 max:18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p1.pic=16&lt;br /&gt;
&lt;br /&gt;
t1.txt=&amp;quot;Di 02 Aug 2017\rmin:15 max:18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p2.pic=17&lt;br /&gt;
&lt;br /&gt;
t2.txt=&amp;quot;Mi 03 Aug 2017\rmin:15 max:18&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p3.pic=12&lt;br /&gt;
&lt;br /&gt;
t3.txt=&amp;quot;Do 04 Aug 2017\rmin:25 max:28&amp;quot;&lt;br /&gt;
&lt;br /&gt;
p4.pic=15&lt;br /&gt;
&lt;br /&gt;
t4.txt=&amp;quot;Fr 05 Aug 2017\rmin:28 max:32&amp;quot; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweis: Alle Contorls die mit dem Namen &amp;quot;LGW#&amp;quot; beginnen sind für das LGW reserviert und werden entsprechend vom Gateway befüllt.&lt;br /&gt;
&lt;br /&gt;
===Nextion Tipps &amp;amp; Tricks===&lt;br /&gt;
====Nextion Commandreferenz====&lt;br /&gt;
Sehr hilfreich ist die Nextion instruction Page, welche hier: https://www.itead.cc/wiki/Nextion_Instruction_Set zu finden ist.&lt;br /&gt;
&lt;br /&gt;
==Serial Transparent Bridge==&lt;br /&gt;
Das LGW kann optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen.&lt;br /&gt;
Dazu gibt es die settings &#039;&#039;&amp;quot;Serial bridge port&amp;quot;&#039;&#039; und &#039;&#039;&amp;quot;Serial bridge baud&amp;quot;&#039;&#039; auf der &amp;quot;Setup&amp;quot;-Page&amp;quot; (Web-Frontend) des LaCrosseGateways.&lt;br /&gt;
Das LaCrosseGateway überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt.&lt;br /&gt;
Damit kann z.B. ein NanoCUL an das LaCrosseGateway angeschlossen werden und in FHEM verwenden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Vorgehensweise:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*Einen NanoCUL bauen, z.B. auf Basis eines Arduino Pro Mini, flashen und testweise in Betrieb nehmen. &lt;br /&gt;
*Den NanoCUL an die serielle Schnittstelle des SC16IS70 anschließen&lt;br /&gt;
*Port und baud rate auf der &amp;quot;Setup&amp;quot;-Page des LaCrosseGateways festlegen, z.B. Port 85 und 38400 baud&lt;br /&gt;
*CUL in FHEM definieren (Beispiel): &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define CULXYZ CUL &amp;lt;IP-Adresse&amp;gt;:85 0000&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;CULXYZ&amp;gt;&#039;&#039;&#039;&#039;&#039; Muss nach eigenen Bedürfnissen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;IP-Adresse&amp;gt;&#039;&#039;&#039;&#039;&#039; Muss entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Sollte das CUL-Device nicht erreichbar sein (Restart, Austausch im Falle eines Deffekts etc.), empfiehlt sich einen reconnect Mechnismus in FHEM zu implementieren.&lt;br /&gt;
&lt;br /&gt;
Dieser kann wie folgt aussehen: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;define CULXYZ-Reconnector at +*00:00:30 {\&lt;br /&gt;
my $deviceName = &amp;quot;&amp;lt;CULXYZ&amp;gt;&amp;quot;;;\&lt;br /&gt;
my $version = CommandGet(&amp;quot;&amp;quot;, $deviceName . &amp;quot; version&amp;quot;);;\&lt;br /&gt;
my $gotAnswer = index($version, &#039;No answer&#039;) == -1;;\&lt;br /&gt;
\&lt;br /&gt;
if(!$gotAnswer) {\&lt;br /&gt;
  fhem(&amp;quot;set &amp;quot; . $deviceName . &amp;quot; reopen&amp;quot;);;\&lt;br /&gt;
}\&lt;br /&gt;
\&lt;br /&gt;
}  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;CULXYZ&amp;gt;&#039;&#039;&#039;&#039;&#039; Muss nach eigenen Bedürfnissen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Vorgehen Firmware flashen mit LGW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein bereits in Betrieb genomene NanoCUL kann nach dem gleichen Vorgehen (siehe [[#SubProzessor|&amp;quot;SubProzessor - Vorgehen Firmware flashen&amp;quot;]]) wie ein SubProzessor geflasht werden.&lt;br /&gt;
&lt;br /&gt;
==Zugriff mit mehreren FHEM Instanzen==&lt;br /&gt;
&lt;br /&gt;
Bis zu drei FHEM Instanzen können auf das LaCrosseGateway gleichzeitig zugreifen.&lt;br /&gt;
Auf der &amp;quot;Setup&amp;quot;-Page des LaCrosseGateways können bis zu drei Ports (Data ports), pro Port eine FHEM Instanz, definiert werden (Reboot erforderlich).&lt;br /&gt;
Aus Performancegründen empfiehlt sich nur die benötigten Ports zu definieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweise:&#039;&#039;&#039;&#039;&#039; Die Portnummer 8266 wird für OTA Update verwendet, und 80 für die &amp;quot;Config&amp;quot;-page. Aus diesem Grund ist die Verwendung dieser ports nicht erlaubt.&lt;br /&gt;
&lt;br /&gt;
Wenn sich mehrere FHEM Instanzen ein LaCrosseGateway teilen, dann ist darauf zu achten, dass die eine gemeinsame/gleiche initCommand Konfiguration haben. Sollten die FHEM Instanzen unterschiedliche initCommands senden, gewinnt das (zufällig) letzte und legt es für alle anderen fest.&lt;br /&gt;
&lt;br /&gt;
=Nano LaCrosse Gateway=&lt;br /&gt;
Das nano LaCrosse Gateway verwendet die gleiche [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] wie das WiFi LaCrosse Gateway, der signifikante Unterschied ist die kompakte (portable) Bauform. Aufgrund der Bauform können jeodch nicht alle Bauteile verwendet werden.&lt;br /&gt;
Das Gateway eignet sich sehr gut als Entwicklungstick (dies ist der Ent­ste­hungs­grund) oder zum Empfangen und Steuern von LaCrosse basierten Sensoren/Aktoren an einem FHEM Server (RPI,Cubietruck, etc.).&lt;br /&gt;
&lt;br /&gt;
Der Betieb über WiFi, entsprechende Stromversorgung (per USB) vorausgesetzt, ist ebenfalls möglich.&lt;br /&gt;
&lt;br /&gt;
Weiterführende Informationen zum nano LaCrosse Gateway und Ideensammlung für eine Platine sind im {{Link2Forum|Topic=51329|LinkText=FHEM Forum}} zu finden.&lt;br /&gt;
&lt;br /&gt;
==Bauteile==&lt;br /&gt;
Folgende Bauteile werden benötigt:&lt;br /&gt;
*Gehäuse [http://www.elv.de/output/controller.aspx?cid=74&amp;amp;detail=10&amp;amp;detail2=36507 schwarz] oder [http://www.voelkner.de/products/164819/USB-Gehaeuse-USB-1kl-Transparent.html transparent]&lt;br /&gt;
*ESP-12E&lt;br /&gt;
*Auto-Flash-Reset-Schaltung&lt;br /&gt;
*[http://www.aliexpress.com/item/6Pin-USB-2-0-to-TTL-UART-Module-Serial-Converter-CP2102-STC-Replace-Ft232/32364013343.html?spm=2114.13010208.99999999.261.mWmpl5 CP2102 FTDI]&lt;br /&gt;
*RFM69CW&lt;br /&gt;
*Status-LED&lt;br /&gt;
&lt;br /&gt;
==Schaltung==&lt;br /&gt;
[[Datei:lgw_nano_Schaltplan.png|600px|thumb|left|Schaltplan NanoLGW]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Selbstbau==&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:lgw_nano_Selbstbau1.png|320px|thumb|left|Selbstbau nano LaCrosse Gateway 1]]&lt;br /&gt;
| [[Datei:lgw_nano_Selbstbau2.png|300px|thumb|left|Selbstbau nano LaCrosse Gateway 2]]&lt;br /&gt;
| [[Datei:lgw_nano_Selbstbau3.png|475px|thumb|left|Selbstbau nano LaCrosse Gateway 3]]&lt;br /&gt;
|}&lt;br /&gt;
==Platine==&lt;br /&gt;
===nano LaCrosse Gateway===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_bestueckt_oberseite.jpg|400px|thumb|left|nano LaCrosse Gateway Platine Oberseite]]&lt;br /&gt;
|[[Datei:Nanolgw_bestueckt_unterseite.jpg|400px|thumb|left|nano LaCrosse Gateway Platine Unterseite]]&lt;br /&gt;
|}&lt;br /&gt;
===USB2TTL===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_USB2TTL_1.jpg|400px|thumb|left|USB2TTL Platine Oberseite]]&lt;br /&gt;
|[[Datei:Nanolgw_USB2TTL_2.jpg|400px|thumb|left|USB2TTL Platine Unterseite]]&lt;br /&gt;
|}&lt;br /&gt;
===nano LaCrosse Gateway inkl. USB2TTL===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_oberseite_USB2TTL_1.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Oberseite]]&lt;br /&gt;
|[[Datei:Nanolgw_oberseite_USB2TTL_2.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Oberseite]]&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_unterseite_USB2TTL.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Unterseite]]&lt;br /&gt;
|[[Datei:Nanolgw_seitenansicht_USB2TTL.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Seitenansicht]]&lt;br /&gt;
|}&lt;br /&gt;
===nano LaCrosse Gateway fertig bestückt inkl. Gehäuse===&lt;br /&gt;
{| class=&amp;quot;galleryTable noFloat&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:Nanolgw_USB2TTL_fertig_oberseite.jpg|400px|thumb|left|nano LGW fertig bestückt inkl. Gehäuse Oberseite]]&lt;br /&gt;
|[[Datei:nanolgw_USB2TTL_fertig_unterseite.jpg|400px|thumb|left|nano LGW fertig bestückt inkl. Gehäuse Unterseite]]&lt;br /&gt;
|}&lt;br /&gt;
===Platine bestücken (Hinweise und Tipps)===&lt;br /&gt;
*Die Beschriftung SJ4 und SJ3 ist auf dem USB2TTL Wandler vertauscht, dies beeinträchtigt aber die Funktion nicht.&lt;br /&gt;
*Beim nanoLGW hängt C1 etwas über dem FTDI232RL vom USB2TTL Wandler, daher braucht diese Platine noch eine &amp;quot;Schönheitskorrektur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Tipps &amp;amp; Tricks =&lt;br /&gt;
&lt;br /&gt;
==Löschen des kompletten Flash des ESP8266 mit dem esptool==&lt;br /&gt;
Aufgrund eines aktuell im espressif SDK vorhandenen Bugs, kann es passieren, dass das LaCrosseGateway nach dem Aufspielen der Firmware, mit einer Exception den Bootvorgang (nach &amp;quot;Start WIFI_STA&amp;quot;) abbricht und nicht mehr ordnungsgemäß starten kann. In diesem Fall hilft nur noch das Löschen des kompletten Speichers des ESP8266 und das erneute Aufspielen der Firmware.&lt;br /&gt;
&lt;br /&gt;
Mit dem nachfolgenden Befehl kann der Speicher des ESP8266 komplett gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Dabei werden alle Einstellungen unwiderruflich gelöscht&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;./esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 115200 -ca 0x00000 -cd nodemcu -ce&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;/dev/tty.SLAB_USBtoUART&amp;gt;&#039;&#039;&#039; Muss entsprechend angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
Diskussionsthread aus dem Forum:&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=43672|LinkText=LaCrosseGateway - LaCrosse, PCA301 und EC3000 über wifi mit ESP8266 ohne Arduino}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=45594|LinkText=Platine für LaCrosseGateway: Platinenbestellung}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=51329|LinkText=Platine für nanoLGW (LaCrosse Gateway): Layout}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=52921|LinkText=Display für LaCrosseGateway}}&lt;br /&gt;
&lt;br /&gt;
{{Link2Forum|Topic=63443|LinkText=LaCrosseGateway mit Nextion Display}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Wetterstationen]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Event-min-interval&amp;diff=23469</id>
		<title>Event-min-interval</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Event-min-interval&amp;diff=23469"/>
		<updated>2017-12-07T10:36:33Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Wechselwirkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:event-min-interval}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Infobox Attribut sinnvoll? --&amp;gt;&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
Mit dem Attribut [[event-min-interval]] kann für Readings eines Gerätes festgelegt werden, dass nach einer bestimmten Zeit ein Event, auch ohne Wertänderung ausgelöst wird. &lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;event-min-interval&#039;&#039; Attribut wird in der folgenden Weise spezifiziert:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;device&amp;gt; event-min-interval reading1:minInterval1[,reading2:minInterval2,...]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reading Name oder reguläre Ausdrücke&lt;br /&gt;
* minIntervall in Sekunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wechselwirkungen == &lt;br /&gt;
&lt;br /&gt;
Dieses Attribut steht in Wechselwirkung mit den Attributen [[event-on-change-reading]] und [[event-on-update-reading]], bitte also unbedingt auch deren Beschreibung berücksichtigen!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Wechselwirkiungen&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;event-on-update-reading&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;event-on-change-reading&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;event-min-interval&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Wirkung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|.*&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Bei event-on-change-reading kann zusätzlich noch ein Threshold gesetzt werden um die Anzahl der Events zu redizieren. Z.B. bei Temperaturwerten sinnvoll:&amp;lt;br&amp;gt;&lt;br /&gt;
event-on-change-reading Temp.*:0.5 ,.*&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Alle Readings, die mit Temp beginnen erzeugen nur ein event wenn die Änderung &amp;gt;0.5 Grad ist. Alle anderen Readings erzeugen bei jeder Änderung ein Event.&amp;lt;br&amp;gt;&lt;br /&gt;
|.*:3600&lt;br /&gt;
|Durch die Regex &amp;quot;.*&amp;quot; gilt für alle Readings: &lt;br /&gt;
Ein Event wird &#039;&#039;&#039;sofort&#039;&#039;&#039; ausgelöst wenn sich der Reading Wert ändert,&amp;lt;br&amp;gt;&lt;br /&gt;
ODER wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist&amp;lt;br&amp;gt;&lt;br /&gt;
UND das Reading &#039;&#039;&#039;aktuaisiert&#039;&#039;&#039; wird.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wird ein Reading nicht aktualisiert (mit dem gleichen Wert) gibt es nach Ablauf der Zeit auch kein Event.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiel:&amp;lt;br&amp;gt;&lt;br /&gt;
Ein Raspberry Pi GPIO besitzt ein Attribut poll_interval, dieses wird z.B. auf 10 Minuten gesetzt.&amp;lt;br&amp;gt;&lt;br /&gt;
Dann werden die Readings alle 10 Minuten aktualisiert. Bei konstantem Wert wird nach 1 Stunde und maximal 10 Minuten ein Event gesendet.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|.*&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|.*:3600&lt;br /&gt;
|TODO&lt;br /&gt;
|-&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|.*:3600&lt;br /&gt;
|Durch die Regex &amp;quot;.*&amp;quot; gilt für alle Readings:&lt;br /&gt;
Ein Event wird sofort ausgelöst wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist&lt;br /&gt;
EGAL ob das Reading aktualisiert wird oder gleich bleibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Temperatursensor sendet Temperatur-Werte, es wird ein Event erzeugt wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist&lt;br /&gt;
EGAL ob die Temperatur sich verändert hat oder nicht.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Um alle Readings eines Gerätes bei Aktualisierungen zu protokollieren, sollte das Attribut folgendermaßen gesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;device&amp;gt; event-min-interval .*:3600&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
*[[event-on-update-reading]]&lt;br /&gt;
*[[event-on-change-reading]]&lt;br /&gt;
*[[event-min-interval]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Attribut (allgemeingültig)]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Event-min-interval&amp;diff=23468</id>
		<title>Event-min-interval</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Event-min-interval&amp;diff=23468"/>
		<updated>2017-12-07T10:34:31Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Wechselwirkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:event-min-interval}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Infobox Attribut sinnvoll? --&amp;gt;&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
Mit dem Attribut [[event-min-interval]] kann für Readings eines Gerätes festgelegt werden, dass nach einer bestimmten Zeit ein Event, auch ohne Wertänderung ausgelöst wird. &lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;event-min-interval&#039;&#039; Attribut wird in der folgenden Weise spezifiziert:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;device&amp;gt; event-min-interval reading1:minInterval1[,reading2:minInterval2,...]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reading Name oder reguläre Ausdrücke&lt;br /&gt;
* minIntervall in Sekunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wechselwirkungen == &lt;br /&gt;
&lt;br /&gt;
Dieses Attribut steht in Wechselwirkung mit den Attributen [[event-on-change-reading]] und [[event-on-update-reading]], bitte also unbedingt auch deren Beschreibung berücksichtigen!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Wechselwirkiungen&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;event-on-update-reading&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;event-on-change-reading&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;event-min-interval&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Wirkung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|.*&lt;br /&gt;
|.*:3600&lt;br /&gt;
|Durch die Regex &amp;quot;.*&amp;quot; gilt für alle Readings: &lt;br /&gt;
Ein Event wird &#039;&#039;&#039;sofort&#039;&#039;&#039; ausgelöst wenn sich der Reading Wert ändert,&amp;lt;br&amp;gt;&lt;br /&gt;
ODER wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist&amp;lt;br&amp;gt;&lt;br /&gt;
UND das Reading &#039;&#039;&#039;aktuaisiert&#039;&#039;&#039; wird.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wird ein Reading nicht aktualisiert (mit dem gleichen Wert) gibt es nach Ablauf der Zeit auch kein Event.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiel:&amp;lt;br&amp;gt;&lt;br /&gt;
Ein Raspberry Pi GPIO besitzt ein Attribut poll_interval, dieses wird z.B. auf 10 Minuten gesetzt.&amp;lt;br&amp;gt;&lt;br /&gt;
Dann werden die Readings alle 10 Minuten aktualisiert. Bei konstantem Wert wird nach 1 Stunde und maximal 10 Minuten ein Event gesendet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Bei event-on-change-reading kann zusätzlich noch ein Threshold gesetzt werden um die Anzahl der Events zu redizieren. Z.B. bei Temperaturwerten sinnvoll:&amp;lt;br&amp;gt;&lt;br /&gt;
event-on-change-reading Temp.*:0.5 ,.*&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Alle Readings, die mit Temp beginnen erzeugen nur ein event wenn die Änderung &amp;gt;0.5 Grad ist. Alle anderen Readings erzeugen bei jeder Änderung ein Event.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|.*&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|.*:3600&lt;br /&gt;
|TODO&lt;br /&gt;
|-&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|.*:3600&lt;br /&gt;
|Durch die Regex &amp;quot;.*&amp;quot; gilt für alle Readings:&lt;br /&gt;
Ein Event wird sofort ausgelöst wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist&lt;br /&gt;
EGAL ob das Reading aktualisiert wird oder gleich bleibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Temperatursensor sendet Temperatur-Werte, es wird ein Event erzeugt wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist&lt;br /&gt;
EGAL ob die Temperatur sich verändert hat oder nicht.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Um alle Readings eines Gerätes bei Aktualisierungen zu protokollieren, sollte das Attribut folgendermaßen gesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;device&amp;gt; event-min-interval .*:3600&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
*[[event-on-update-reading]]&lt;br /&gt;
*[[event-on-change-reading]]&lt;br /&gt;
*[[event-min-interval]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Attribut (allgemeingültig)]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Event-min-interval&amp;diff=23178</id>
		<title>Event-min-interval</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Event-min-interval&amp;diff=23178"/>
		<updated>2017-11-04T17:54:17Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Wechselwirkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:event-min-interval}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Infobox Attribut sinnvoll? --&amp;gt;&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
Mit dem Attribut [[event-min-interval]] kann für Readings eines Gerätes festgelegt werden, dass nach einer bestimmten Zeit ein Event, auch ohne Wertänderung ausgelöst wird. &lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;event-min-interval&#039;&#039; Attribut wird in der folgenden Weise spezifiziert:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;device&amp;gt; event-min-interval reading1:minInterval1[,reading2:minInterval2,...]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reading Name oder reguläre Ausdrücke&lt;br /&gt;
* minIntervall in Sekunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wechselwirkungen == &lt;br /&gt;
&lt;br /&gt;
Dieses Attribut steht in Wechselwirkung mit den Attributen [[event-on-change-reading]] und [[event-on-update-reading]], bitte also unbedingt auch deren Beschreibung berücksichtigen!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Wechselwirkiungen&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;event-on-update-reading&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;event-on-change-reading&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;event-min-interval&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Wirkung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|.*&lt;br /&gt;
|.*:3600&lt;br /&gt;
|Durch die Regex &amp;quot;.*&amp;quot; gilt für alle Readings: &lt;br /&gt;
Ein Event wird &#039;&#039;&#039;sofort&#039;&#039;&#039; ausgelöst wenn sich der Reading Wert ändert,&amp;lt;br&amp;gt;&lt;br /&gt;
ODER wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist&amp;lt;br&amp;gt;&lt;br /&gt;
UND das Reading &#039;&#039;&#039;aktuaisiert&#039;&#039;&#039; wird.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wird ein Reading nicht aktualisiert (mit dem gleichen Wert) gibt es nach Ablauf der Zeit auch kein Event.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiel:&amp;lt;br&amp;gt;&lt;br /&gt;
Ein Raspberry Pi GPIO besitzt ein Attribut poll_interval, dieses wird z.B. auf 10 Minuten gesetzt.&amp;lt;br&amp;gt;&lt;br /&gt;
Dann werden die Readings alle 10 Minuten aktualisiert. Bei konstantem Wert wird nach 1 Stunde und maximal 10 Minuten ein Event gesendet.&lt;br /&gt;
|-&lt;br /&gt;
|.*&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|.*:3600&lt;br /&gt;
|TODO&lt;br /&gt;
|-&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|.*:3600&lt;br /&gt;
|TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Um alle Readings eines Gerätes bei Aktualisierungen zu protokollieren, sollte das Attribut folgendermaßen gesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;device&amp;gt; event-min-interval .*:3600&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
*[[event-on-update-reading]]&lt;br /&gt;
*[[event-on-change-reading]]&lt;br /&gt;
*[[event-min-interval]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Attribut (allgemeingültig)]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Event-min-interval&amp;diff=23177</id>
		<title>Event-min-interval</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Event-min-interval&amp;diff=23177"/>
		<updated>2017-11-04T17:51:22Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: Die Seite wurde neu angelegt: „{{SEITENTITEL:event-min-interval}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt; &amp;lt;!-- Infobox Attribut sinnvoll? --&amp;gt; == Syntax ==  Mit dem A…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:event-min-interval}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Infobox Attribut sinnvoll? --&amp;gt;&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
Mit dem Attribut [[event-min-interval]] kann für Readings eines Gerätes festgelegt werden, dass nach einer bestimmten Zeit ein Event, auch ohne Wertänderung ausgelöst wird. &lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;event-min-interval&#039;&#039; Attribut wird in der folgenden Weise spezifiziert:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;device&amp;gt; event-min-interval reading1:minInterval1[,reading2:minInterval2,...]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reading Name oder reguläre Ausdrücke&lt;br /&gt;
* minIntervall in Sekunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wechselwirkungen == &lt;br /&gt;
&lt;br /&gt;
Dieses Attribut steht in Wechselwirkung mit den Attributen [[event-on-change-reading]] und [[event-on-update-reading]], bitte also unbedingt auch deren Beschreibung berücksichtigen!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Wechselwirkiungen&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;event-on-update-reading&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;event-on-change-reading&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;event-min-interval&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Wirkung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|nicht gesetzt&lt;br /&gt;
|.*&lt;br /&gt;
|.*:3600&lt;br /&gt;
|Durch die Regex &amp;quot;.*&amp;quot; gilt für alle Readings: &lt;br /&gt;
Ein Event wird &#039;&#039;&#039;sofort&#039;&#039;&#039; ausgelöst wenn sich der Reading Wert ändert,&amp;lt;br&amp;gt;&lt;br /&gt;
ODER wenn mindestens 3600 Sekunden (1h) seit dem letzten Event vergangen ist&amp;lt;br&amp;gt;&lt;br /&gt;
UND das Reading &#039;&#039;&#039;aktuaisiert&#039;&#039;&#039; wird.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wird ein Reading nicht aktualisiert (mit dem gleichen Wert) gibt es nach Ablauf der Zeit auch kein Event.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiel:&amp;lt;br&amp;gt;&lt;br /&gt;
Ein Raspberry Pi GPIO besitzt ein Attribut poll_interval, dieses wird z.B. auf 10 Minuten gesetzt.&amp;lt;br&amp;gt;&lt;br /&gt;
Dann werden die Readings alle 10 Minuten aktualisiert. Bei konstantem Wert wird nach 1 Stunde und maximal 10 Minuten ein Event gesendet.&lt;br /&gt;
|-&lt;br /&gt;
|1 TODO&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Um alle Readings eines Gerätes bei Aktualisierungen zu protokollieren, sollte das Attribut folgendermaßen gesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;device&amp;gt; event-min-interval .*:3600&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
*[[event-on-update-reading]]&lt;br /&gt;
*[[event-on-change-reading]]&lt;br /&gt;
*[[event-min-interval]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Attribut (allgemeingültig)]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=LogProxy&amp;diff=23157</id>
		<title>LogProxy</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=LogProxy&amp;diff=23157"/>
		<updated>2017-11-01T11:50:50Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Vorbereitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:logProxy}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=manipulieren und ergänzen von Plotdaten&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=logProxy&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=[http://fhem.de/commandref.html#logProxy 98_logProxy.pm]&lt;br /&gt;
|ModOwner=Andre ([http://forum.fhem.de/index.php?action=profile;u=430 Forum] / [[Benutzer Diskussion:justme|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das Hilfsmodul [[logProxy]] bietet die Möglichkeit, die Daten, die in einem SVG-Plot dargestellt werden, auf die folgenden Arten zu ergänzen und zu manipulieren:&lt;br /&gt;
* horizontale und vertikale Linien an festen Positionen hinzufügen&lt;br /&gt;
* Linien an dynamischen und von anderen Plots abhängigen Positionen hinzufügen (über die SVG specials min, max, mindate, maxdate, avg, currdate und currval)&lt;br /&gt;
* plotten von dynamisch berechneten Kurven wie die Wochenprofile von [[Heating Control]] und WeekdayTimer Devices sowie HomeMatic und Max Thermostaten&lt;br /&gt;
* mischen von Plots aus unterschiedlichen Quellen ([[DbLog]] und/oder mehrere FileLog Devices)&lt;br /&gt;
* horizontales Verschieben von Plots zueinander, um die Daten aus den Average oder Statistic Modulen auf den richtigen Tag, Woche oder Monat zu schieben&lt;br /&gt;
* Auffüllen am Anfang und Ende des Plots, um den Plotabriss zu vermeiden ohne zusätzliche Daten zu loggen.&lt;br /&gt;
* Polar-/&#039;Spinnennetz&#039;-Darstellung&lt;br /&gt;
&lt;br /&gt;
Alle Funktionen, die logProxy bereitstellt, werden im .gplot file über #logProxy Zeilen konfiguriert. Zusätzlich muss natürlich genau wie für die #FileLog bzw. #DbLog Zeilen jeweils eine eigene Plot-Zeile vorhanden sein.&lt;br /&gt;
 &lt;br /&gt;
Der Plot-Editor wird (hoffentlich) so gut es geht unterstützt. Leider sind die Dropdown Listen nicht dynamisch abhängig von einem anderen Feld konfigurierbar.&lt;br /&gt;
&lt;br /&gt;
Das Modul ist seit dem 16.11.2014 eingecheckt und wir im regulären Update verteilt.&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
* Anlegen eines logProxy devices:&lt;br /&gt;
:&amp;lt;code&amp;gt;define lp logProxy&amp;lt;/code&amp;gt;&lt;br /&gt;
* Wenn Daten zu einem bestehenden Plot hinzugefügt werden sollen muss&lt;br /&gt;
** das SVG device vom jeweiligen DbLog oder FileLog device auf das logProxy device umgestellt werden&lt;br /&gt;
** im .gplot file die &amp;lt;code&amp;gt;#FileLog&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;#DbLog&amp;lt;/code&amp;gt; Zeilen in &amp;lt;code&amp;gt;#logProxy&amp;lt;/code&amp;gt; geändert&lt;br /&gt;
** und an den Anfang der column_spec zusätzlich &amp;lt;code&amp;gt;FileLog:&amp;lt;logDevice&amp;gt;: bzw. DbLog:&amp;lt;logDevice&amp;gt;:&amp;lt;/code&amp;gt; eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;define SVG_PCA301 SVG &#039;&#039;&#039;FileLog_PCA301_076035&#039;&#039;&#039;:myGplotFile:CURRENT&amp;lt;/code&amp;gt;&lt;br /&gt;
wird dann:&lt;br /&gt;
:&amp;lt;code&amp;gt;define SVG_PCA301 SVG &#039;&#039;&#039;lp&#039;&#039;&#039;:myGplotFile:CURRENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und aus:&lt;br /&gt;
 #DbLog myDevice:myReading&lt;br /&gt;
 #FileLog 4:PCA301_076035.power::&lt;br /&gt;
 #FileLog 4:&amp;lt;SPEC1&amp;gt;.consumption::&lt;br /&gt;
&lt;br /&gt;
wird:&lt;br /&gt;
 &#039;&#039;&#039;#logProxy&#039;&#039;&#039; DbLog:&#039;&#039;&#039;myDb:&#039;&#039;&#039;myDevice:myReading&lt;br /&gt;
 &#039;&#039;&#039;#logProxy&#039;&#039;&#039; FileLog:&#039;&#039;&#039;FileLog_PCA301_076035:&#039;&#039;&#039;4:PCA301_076035.power::&lt;br /&gt;
 &#039;&#039;&#039;#logProxy&#039;&#039;&#039; FileLog:&#039;&#039;&#039;FileLog_&amp;lt;SPEC1&amp;gt;:&#039;&#039;&#039;4:&amp;lt;SPEC1&amp;gt;.consumption::&lt;br /&gt;
&lt;br /&gt;
Inzwischen ist es möglich statt der #FileLog, #DbLog und #logProxy Schlüsselworte den fhem Devicenamen des logDevice zu verwenden. Hiermit lassen sich auch unterschiedliche Log-Devices mischen und es ist nicht mehr nötig alle column_spec Zeilen umzustellen.&lt;br /&gt;
&lt;br /&gt;
== column_spec ==&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=In diesen Zeilen darf es nur direkt nach &amp;lt;code&amp;gt;#logProxy&amp;lt;/code&amp;gt; ein Leerzeichen geben. Im Rest der Zeile nicht mehr.}}&lt;br /&gt;
In einer solchen #logProxy Zeile kann dann Folgendes stehen:&lt;br /&gt;
* &amp;lt;code&amp;gt;FileLog:&amp;lt;log device&amp;gt;[,&amp;lt;options&amp;gt;]:&amp;lt;(alte) FileLog column_spec&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Plot mit Daten aus dem FileLog &amp;lt;log device&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;DbLog:&amp;lt;log device&amp;gt;,[&amp;lt;options&amp;gt;]:&amp;lt;(alte) DbLog column_spec&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Plot mit Daten aus dem DbLog &amp;lt;log device&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ConstX:&amp;lt;zeit&amp;gt;,&amp;lt;y&amp;gt;[,&amp;lt;y2&amp;gt;]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Vertikale Linie zwischen &amp;lt;y&amp;gt; und &amp;lt;y2&amp;gt; am Zeitpunkt &amp;lt;zeit&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ConstY:&amp;lt;y&amp;gt;[,&amp;lt;von&amp;gt;[,&amp;lt;bis&amp;gt;]]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Horizontale Line bei &amp;lt;y&amp;gt;, optional nur zwischen &amp;lt;von&amp;gt; und &amp;lt;bis&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;Func:myFunc(...)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;über myFunc() dynamisch erzeugter Plot&lt;br /&gt;
* &amp;lt;code&amp;gt;Polar:[polarOptions]:&amp;lt;values&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Plottet das &amp;lt;code&amp;gt;values&amp;lt;/code&amp;gt;-Array in einem &#039;Spinnennetz&#039;-Diagramm. numerische Arrays werden als zu plottende Werte betrachtet und String Arrays als Achsenbeschriftung.&lt;br /&gt;
&lt;br /&gt;
Für ConstX, ConstY und Func wird alles nach dem ersten &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; als Perl-Ausdruck mit eval ausgewertet. Es dürfen keine weiteren : in diesen Zeilen vorhanden sein. Für Polar wird alles nach dem zweiten &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; als Perl-Ausdruck mit eval ausgewertet.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Mögliche &amp;lt;options&amp;gt; ===&lt;br /&gt;
Eine oder mehrere der folgenden Optionen sind durch Komma getrennt möglich:&lt;br /&gt;
* &amp;lt;code&amp;gt;predict[=&amp;lt;wert&amp;gt;]&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Verlängert den letzten Wert eines Plots bis zum Ende des Plots oder um &amp;lt;wert&amp;gt; Sekunden aber maximal bis zum aktuellen Zeitpunkt.&lt;br /&gt;
* &amp;lt;code&amp;gt;offset=&amp;lt;wert&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Verschiebt den Plot um &amp;lt;wert&amp;gt; Sekunden (oder um &amp;lt;wert&amp;gt; Monate wenn &amp;lt;wert&amp;gt; mit einem m endet)&lt;br /&gt;
* &amp;lt;code&amp;gt;extend=&amp;lt;wert&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Erweitert den aus dem log device abgefragten Bereich am Anfang und am Ende um &amp;lt;wert&amp;gt; Sekunden (oder um &amp;lt;wert&amp;gt; Monate wenn &amp;lt;wert&amp;gt; mit einem m endet)&amp;lt;br&amp;gt;Damit kann ein Abriss des Plots am Anfang und Ende verhindert werden. Aktiviert automatisch auch &amp;lt;code&amp;gt;clip&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;interpolate&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Aktiviert die Interpolation zwischen dem ersten/letzen Wert innerhalb des Plots und dem zugehörigen Wert im &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt; Bereich um die Werte für den Rand des Plots zu bestimmen. Sinnvoll für Plot-Type &amp;lt;code&amp;gt;lines&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;clip&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Beschneidet die Plotdaten auf den zum Plotten ausgewählten Bereich. Nur in Verbindung mit &amp;lt;code&amp;gt;offset=&amp;lt;wert&amp;gt;&amp;lt;/code&amp;gt; und/oder &amp;lt;code&amp;gt;extend=&amp;lt;wert&amp;gt;&amp;lt;/code&amp;gt; sinnvoll.&lt;br /&gt;
* &amp;lt;code&amp;gt;postFn=&#039;&amp;lt;myPostFn&amp;gt;&#039;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;optionale postprocessing Funktion.&lt;br /&gt;
* &amp;lt;code&amp;gt;scale2reading=&amp;lt;\%hash&amp;gt;&amp;lt;/code&amp;gt;Ermöglicht es das Reading abhängig vom aktuellen zoom Faktor zu ändern.&lt;br /&gt;
&lt;br /&gt;
====Die optionale Postprocessing Funktion====&lt;br /&gt;
Nachdem für eine Kurve alle Verarbeitungsschritte erfolgt sind wird &amp;lt;code&amp;gt;myPostFn($devspec,$data)&amp;lt;/code&amp;gt; aufgerufen. Hierbei ist &amp;lt;code&amp;gt;$devspec&amp;lt;/code&amp;gt; die zugehörige Zeile aus dem gplot-File und $data ein Array, das alle Datenpunkte dieser Kurve enthält. Jeder Datenpunkt ist ein Triplet aus Zeitpunkt in Sekunden, Wert an diesem Punkt und Zeitpunkt als String. Die postFn muss ein Array in gleichem Format zurückliefern, wobei die dritte Komponente jedes Punktes optional ist und nicht weiter ausgewertet wird. Das zurückgegebene Array muss nicht die gleiche Anzahl an Punkten enthalten wie das ursprüngliche.&lt;br /&gt;
&lt;br /&gt;
====scale2reading====&lt;br /&gt;
Mit der scale2reading Option ist es möglich den für einen Plot verwendete Readingnamen abhängig von aktuellen Zoomfaktor zu überschreiben. Hierzu wird die aktuelle Auflösung als Key für ein Lookup im angegeben Hash verwendet. Das Ergebnis wird dann als neuer Readingname verwendet. Die möglichen keys sind: year, month, week, day, qday, hour.&lt;br /&gt;
 &lt;br /&gt;
Im folgenden Beispiel wird in der jahres und monats Zoomstufe das reading &amp;lt;code&amp;gt;temperature_avg_day&amp;lt;/code&amp;gt; (aus dem average modul) verwendet statt des &amp;lt;code&amp;gt;temperature&amp;lt;/code&amp;gt; readings das in allen anderen Zoomstufe verwendet wird.&lt;br /&gt;
 #logProxy DbLog:dbLog,scale2reading={year=&amp;gt;&#039;temperature_avg_day&#039;,month=&amp;gt;&#039;temperature_avg_day&#039;}:s300ht_1:temperature::&lt;br /&gt;
&lt;br /&gt;
=== Mögliche &amp;lt;polarOptions&amp;gt; ===&lt;br /&gt;
Eine oder mehrere der folgenden Optionen sind durch Komma getrennt möglich:&lt;br /&gt;
* &amp;lt;code&amp;gt;axis&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Axen zeichnen&lt;br /&gt;
* &amp;lt;code&amp;gt;noaxis&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Axen unterdrücken&lt;br /&gt;
* &amp;lt;code&amp;gt;range=&amp;lt;wert&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;TODO&lt;br /&gt;
* &amp;lt;code&amp;gt;segments=&amp;lt;wert&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Die Anzahl der Segmente die der plot haben soll&lt;br /&gt;
&lt;br /&gt;
Achsen werden automatisch aktiviert, wenn das &amp;lt;code&amp;gt;values&amp;lt;/code&amp;gt;-Array Text enthält oder die Anzahl der &amp;lt;code&amp;gt;segment&amp;lt;/code&amp;gt;e angegeben ist und keine &amp;lt;code&amp;gt;values&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Eigene Funktionen ===&lt;br /&gt;
Im Aufruf eigener Funktionen, die Daten zum Plotten liefern, kann auf &amp;lt;code&amp;gt;$from&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;$to&amp;lt;/code&amp;gt; (jeweils ein String mit dem Start- bzw. End-Zeitpunkt) zugegriffen werden. Die Funktion selber muss vier Werte zurückliefern:&lt;br /&gt;
* Die eigentlichen Punkte des Plots als String mit durch \n getrennten Elemente der Form&lt;br /&gt;
 yyyy-mm-dd_hh:mm:ss &amp;lt;wert&amp;gt;&lt;br /&gt;
* die &amp;lt;code&amp;gt;min&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;max&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;currval&amp;lt;/code&amp;gt; werte (optional)&lt;br /&gt;
 &lt;br /&gt;
Ein Beispiel für eine solche Funktion ist logProxy_WeekProfile2Plot, mit dem das Temperaturprofil von Heating_Control und WeekdayTimer devices sowie von [[HomeMatic]] und MAX Thermostaten geplottet werden kann.&lt;br /&gt;
&lt;br /&gt;
Wenn der erste Paramter der Name eines passenden Devices ist, wird mit logProxy_Heating_Controll2WeekProfile, logProxy_HM2WeekProfile bzw. logProxy_MAX2WeekProfile aus den internen Daten bzw. Readings ein Wochenprofil erzeugt und dieses dann geplottet. Alternativ kann statt eines Devicenamen auch direkt das aufbereitete Wochenprofil als Hash der Form &amp;lt;code&amp;gt;{$wday}{$time}{$value}&amp;lt;/code&amp;gt; (bei dem ein &amp;lt;code&amp;gt;$wday&amp;lt;/code&amp;gt; von 0 Sonntag entspricht) übergeben werden.&lt;br /&gt;
&lt;br /&gt;
logProxy_WeekProfile2Plot hat noch einen vierten, optionalen, Paramter. Hier kann ein regulärer Ausdruck (Regex) angegeben werden, um aus dem Heating_Control oder WeekdayTimer Schaltwert den zu plottenden Wert zu extrahieren, z.B. so:&lt;br /&gt;
:&amp;lt;code&amp;gt;logProxy_WeekProfile2Plot(&amp;quot;myHeatingControl&amp;quot;,$from,$to,&amp;quot;(\\d*)\$&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hilfen zum Manipulieren von Zeitpunkten ===&lt;br /&gt;
* &amp;lt;code&amp;gt;SVG_time_to_sec($time)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Wandelt den String &amp;lt;code&amp;gt;$time&amp;lt;/code&amp;gt; im format yyyy-mm-dd_hh:mm:ss in Sekunden um.&lt;br /&gt;
* &amp;lt;code&amp;gt;logProxy_shiftTime($time,$offset)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Verschiebt den Zeitpunkt &amp;lt;code&amp;gt;$time&amp;lt;/code&amp;gt; (als String) um &amp;lt;code&amp;gt;$offset&amp;lt;/code&amp;gt; Sekunden (oder um &amp;lt;code&amp;gt;$offset&amp;lt;/code&amp;gt; Monate wenn &amp;lt;code&amp;gt;$offset&amp;lt;/code&amp;gt; mit einem m endet).&lt;br /&gt;
* &amp;lt;code&amp;gt;logProxy_Range2Zoom($seconds)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Direkt verwendbare Beispielfunktionen ===&lt;br /&gt;
* &amp;lt;code&amp;gt;logProxy_WeekProfile2Plot($device, $from, $to [,$regex])&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;logProxy_Func2Plot($from, $to, $func [,$step])&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;logProxy_xy2Plot(\@xyPoints)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;logProxy_xyFile2Plot($file,$column,$regex)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;logProxy_values2Plot(\@xyPoints)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== X-Achse bei y=0 einblenden ===&lt;br /&gt;
Für Plots mit negativen Temperaturen oder Energieerzeugung/-verbrauchs Plots:&lt;br /&gt;
  #logProxy DbLog:dbLog:s300ht:temperature::&lt;br /&gt;
  #logProxy ConstY:0&lt;br /&gt;
 &lt;br /&gt;
  plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;temp&#039; ls l1 lw 1 with steps,\&lt;br /&gt;
       &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 ls l5 lw 1 with lines,\&lt;br /&gt;
&lt;br /&gt;
[[Datei:h-line.png]]&lt;br /&gt;
&lt;br /&gt;
=== Horizontale Linie an einer dynamisch berechneten Position einblenden ===&lt;br /&gt;
  #logProxy ConstY:myFunc(123)&lt;br /&gt;
&lt;br /&gt;
=== Horizontale Line auf y-position des Durchschnittswertes eines anderen Plots einblenden ===&lt;br /&gt;
  #logProxy DbLog:dbLog:s300ht:temperature::&lt;br /&gt;
  #logProxy ConstY:$data{avg1}&lt;br /&gt;
 &lt;br /&gt;
  plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;temp&#039; ls l1 lw 1 with steps,\&lt;br /&gt;
       &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;avg&#039; ls l3 lw 1 with lines,\&lt;br /&gt;
&lt;br /&gt;
[[Datei:h-line2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Min- und Max- Position eines Plots hervorheben ===&lt;br /&gt;
 #logProxy DbLog:dbLog:s300ht_1:temperature::&lt;br /&gt;
 #logProxy ConstY:$data{avg1}&lt;br /&gt;
 #logProxy ConstX:$data{mindate1},$data{min1}&lt;br /&gt;
 #logProxy ConstX:$data{maxdate1},$data{max1}&lt;br /&gt;
 #logProxy ConstX:$data{mindate1},$data{min1},$data{avg1} &lt;br /&gt;
 #logProxy ConstX:$data{maxdate1},$data{max1},$data{avg1} &lt;br /&gt;
  &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;temp&#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;avg&#039; ls l5 lw 1 with lines,\&lt;br /&gt;
      &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 ls l0 lw 1 with points,\&lt;br /&gt;
      &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 ls l0 lw 1 with points,\&lt;br /&gt;
      &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 ls l0 lw 1 with lines,\&lt;br /&gt;
      &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 ls l0 lw 1 with lines,\&lt;br /&gt;
&lt;br /&gt;
[[Datei:min-max.png]]&lt;br /&gt;
&lt;br /&gt;
=== Punkt ans Ende des geplottenden Bereiches eines anderen Plots setzen ===&lt;br /&gt;
  #logProxy DbLog:dbLog:s300ht:temperature::&lt;br /&gt;
  #logProxy ConstX:logProxy_shiftTime($data{currdate1},0),$data{currval1}+0.00001&lt;br /&gt;
 &lt;br /&gt;
  plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;temp&#039; ls l1 lw 1 with steps,\&lt;br /&gt;
       &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 ls l0 lw 1 with points,\&lt;br /&gt;
&lt;br /&gt;
[[Datei:end-dot.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Vertikale Line zwischen Min- und Max Wert eines anderen Plots 60 Minuten nach Plotanfang zeichnen ===&lt;br /&gt;
  #logProxy DbLog:dbLog:s300ht:temperature::&lt;br /&gt;
  #logProxy ConstX:logProxy_shiftTime($from,60*60),$data{min1},$data{max1}&lt;br /&gt;
  #logProxy ConstX:logProxy_shiftTime($from,60*60),$data{min1},$data{max1}&lt;br /&gt;
 &lt;br /&gt;
  plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;temp&#039; ls l1 lw 1 with steps,\&lt;br /&gt;
       &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;minmax&#039; ls l0 lw 1 with lines,\&lt;br /&gt;
       &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 ls l0 lw 1 with points,\&lt;br /&gt;
&lt;br /&gt;
[[Datei:min-max2.png]]&lt;br /&gt;
&lt;br /&gt;
===Plotten von dynamisch erzeugten Werten aus einer eigenen Funktion===&lt;br /&gt;
  #logProxy Func:myFunc($from,$to)&lt;br /&gt;
 &lt;br /&gt;
  plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;avg&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
&lt;br /&gt;
=== Plotten eines Weekday_Timer Wochenprofils ===&lt;br /&gt;
  #logProxy Func:logProxy_WeekProfile2Plot(&amp;quot;myHeatingTimer&amp;quot;,$from,$to)&lt;br /&gt;
 &lt;br /&gt;
  plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;profile&#039; ls l2 lw 1 with steps,\&lt;br /&gt;
&lt;br /&gt;
[[Datei:weekprofile.png]]&lt;br /&gt;
&lt;br /&gt;
=== Verschieben der avg_day Werte aus dem average Modul um -24 Stunden, um sie auf den richtigen Tag zu bekommen ===&lt;br /&gt;
 &lt;br /&gt;
  #logProxy DbLog:dbLog:s300ht_1:temperature::&lt;br /&gt;
  #logProxy DbLog:dbLog:s300ht_1:temperature_avg_day::&lt;br /&gt;
  #logProxy DbLog:dbLog,offset=-60*60*24:s300ht_1:temperature_avg_day::&lt;br /&gt;
  #logProxy ConstY:$data{avg1}&lt;br /&gt;
 &lt;br /&gt;
  plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;temp&#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;avg_day&#039; ls l4 lw 1 with steps,\&lt;br /&gt;
       &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;avg_day_shifted&#039; ls l0 lw 1 with steps,\&lt;br /&gt;
       &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;avg&#039; ls l5 lw 1 with lines,\&lt;br /&gt;
&lt;br /&gt;
[[Datei:logProxy-offset.png]]&lt;br /&gt;
&lt;br /&gt;
Der Effekt ist auf dem Screenshot am besten 21. März zu sehen. Ohne die Verschiebung wäre der Wert für den 21. erst am 22. zu sehen (dunkel rot), mit Verschiebung ist er korrekt am 21. zu sehen (hell rot).&lt;br /&gt;
&lt;br /&gt;
=== Mischen von Daten aus mehreren Quellen ===&lt;br /&gt;
Hier zwei FileLogs mit je zwei readings über plotfunction konfiguriert, ein reading aus einem DbLog und ein dynamisch erzeugtes Wochenprofil direkt aus einem HM Thermostaten:&lt;br /&gt;
&lt;br /&gt;
  #logProxy FileLog:FileLog_&amp;lt;SPEC1&amp;gt;:4:&amp;lt;SPEC1&amp;gt;.consumption::&lt;br /&gt;
  #logProxy FileLog:FileLog_&amp;lt;SPEC1&amp;gt;:4:&amp;lt;SPEC1&amp;gt;.power::&lt;br /&gt;
  #logProxy FileLog:FileLog_&amp;lt;SPEC2&amp;gt;:4:&amp;lt;SPEC2&amp;gt;.consumption::&lt;br /&gt;
  #logProxy FileLog:FileLog_&amp;lt;SPEC2&amp;gt;:4:&amp;lt;SPEC2&amp;gt;.power::&lt;br /&gt;
  #logProxy DbLog:dbLog:s300ht:temperature::&lt;br /&gt;
  #logProxy Func:logProxy_WeekProfile2Plot(&amp;quot;myTcClimate&amp;quot;,$from,$to)&lt;br /&gt;
&lt;br /&gt;
=== Darstellung des aktuell aufgelaufenen Wertes, zusätzlich zu historischen Monats- oder Wochendaten aus einem Log ===&lt;br /&gt;
Die zugrunde liegende Idee hierbei ist, zusätzlich zu den geloggten historischen Werten den bis jetzt für den aktuellen Zeitraum aufgelaufenen Wert, der noch nicht geloggt ist, direkt aus dem entsprechenden Reading zu holen und ebenfalls zu plotten.&lt;br /&gt;
&lt;br /&gt;
Hierzu wird in einer sub ähnlich der folgenden geprüft, ob der Timestamp des entsprechen Readings innerhalb des gerade dargestellten Bereiches liegt und dieses dann zum Plotten zurückgegeben:&lt;br /&gt;
 sub&lt;br /&gt;
 current2Plot($$$$)&lt;br /&gt;
 {&lt;br /&gt;
   my($from,$to,$device,$reading) = @_;&lt;br /&gt;
   my $fromsec = SVG_time_to_sec($from);&lt;br /&gt;
   my $tosec   = SVG_time_to_sec($to);&lt;br /&gt;
 &lt;br /&gt;
   my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
   my $rt = ReadingsTimestamp( $device, $reading, undef );&lt;br /&gt;
   return $ret if( !$rt );&lt;br /&gt;
 &lt;br /&gt;
   my $sec = time_str2num($rt);&lt;br /&gt;
   return $ret if ( $sec &amp;lt; $fromsec || $sec &amp;gt; $tosec );&lt;br /&gt;
 &lt;br /&gt;
   my $val = ReadingsVal( $device, $reading, undef );&lt;br /&gt;
 &lt;br /&gt;
   my @t = localtime($sec);&lt;br /&gt;
   my $timestamp = sprintf(&amp;quot;%04d-%02d-%02d_%02d:%02d:%02d&amp;quot;, $t[5]+1900, $t[4]+1, $t[3], $t[2], $t[1], $t[0]);&lt;br /&gt;
 &lt;br /&gt;
   $ret .= &amp;quot;$timestamp $val\n&amp;quot;;&lt;br /&gt;
   $ret .= &amp;quot;#plotCurrent: $device:$reading\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
   return $ret;&lt;br /&gt;
 }&lt;br /&gt;
Je nach Zoomfaktor und Intervall der Darstellung muss das Ganze eventuell angepasst werden, indem nur mit Tages-Genauigkeit verglichen und angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich zur #logProxy Zeile, die die historischen Daten plottet, wird jetzt noch eine Zeile für den aktuellen Wert und die zugehörige Plot-Anweisung ins gplot File eingebaut:&lt;br /&gt;
 #logProxy Func:current2Plot($from,$to,&amp;quot;meinDevice&amp;quot;,&amp;quot;meinReading&amp;quot;)&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Aktuell&#039; ls l0fill lw 0.5 with bars&lt;br /&gt;
&lt;br /&gt;
=== Erweitern des zu plottenden Bereichs um ausserhalb liegende Anfangs- und Endwerte ===&lt;br /&gt;
 #logProxy DbLog:dbLog:s300ht_1:temperature::              &lt;br /&gt;
 #logProxy DbLog:dbLog:s300ht_1:temperature_avg_day::   &lt;br /&gt;
 #logProxy DbLog:dbLog,offset=-60*60*24,extend=60*60*24:s300ht_1:temperature_avg_day::&lt;br /&gt;
 #logProxy ConstY:$data{avg1}                              &lt;br /&gt;
                                                           &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;temp&#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;avg_day&#039; ls l4 lw 1 with steps,\&lt;br /&gt;
      &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;avg_day_shifted&#039; ls l0 lw 1 with steps,\&lt;br /&gt;
      &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;avg&#039; ls l5 lw 1 with lines,\&lt;br /&gt;
&lt;br /&gt;
vorher:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:logProxy-extend.png]]&lt;br /&gt;
&lt;br /&gt;
nachher:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:logProxy-extend2.png]]&lt;br /&gt;
&lt;br /&gt;
Auf dem unteren Bild ist vor allem links noch zu sehen, dass die mit &amp;quot;extend&amp;quot; erweiterte Kurve aus dem Plotbereich hinausläuft. Das ist in der aktuellen Version behoben.&lt;br /&gt;
&lt;br /&gt;
=== Sonnenauf- und -untergangszeiten plotten ===&lt;br /&gt;
logProxy_Func2Plot() ist eine Funktion, die eine beliebige übergebene Funktion jeweils für unterschiedliche Zeitpunkte auswertet, um die zu plottenden Daten zu bestimmen. Das &#039;Zeitraster&#039;, in dem die Werte bestimmt werden, ist konfigurierbar und dynamisch von der aktuellen Zoomstufe abhängig. Der Default für Jahres- und Monatsplots sind tägliche, für Wochen- und Tagesplots stündliche, usw. Aufrufe.&lt;br /&gt;
&lt;br /&gt;
Anbei ein Beispiel, das auf dieser Basis die Idee zum Plotten von Sonnenauf- und -untergangzeiten, die {{Link2Forum|Topic=23912|Message=171292|LinkText=im Forum}} vorgestellt wurde, durch &#039;live&#039; berechnete (statt täglich geloggte) Daten umsetzt. Voraussetzung ist dabei, dass der Standort des Systems entsprechend für das Modul [[SUNRISE_EL]] vorgegeben wurde.&lt;br /&gt;
&lt;br /&gt;
 set yrange [4:10]&lt;br /&gt;
 set y2range [16:23]&lt;br /&gt;
  &lt;br /&gt;
 #logProxy Func:logProxy_Func2Plot($from,$to,&#039;{logProxy_hms2dec(sunrise_abs_dat($sec))}&#039;)&lt;br /&gt;
 #logProxy Func:logProxy_Func2Plot($from,$to,&#039;{logProxy_hms2dec(sunset_abs_dat($sec))}&#039;)&lt;br /&gt;
 #logProxy ConstX:TimeNow(),4,10  &lt;br /&gt;
                                                              &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Sonnenaufgang&#039; ls l2 lw 1 with steps,\&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Somnnenuntergang&#039; ls l0 lw 1 with steps,&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title notitle ls l5 lw 1 with steps,\&lt;br /&gt;
&lt;br /&gt;
Das komplette Beispiel ist Teil der fhem.cfg.demo. &lt;br /&gt;
&lt;br /&gt;
[[Datei:logProxy-sun.png]]&lt;br /&gt;
&lt;br /&gt;
Um zusätzlich die anzahl der Tagesstunden zu plotten:&lt;br /&gt;
 set y3label &amp;quot;Tagesstunden&amp;quot;&lt;br /&gt;
 set y3range [8:19]&lt;br /&gt;
  &lt;br /&gt;
 #logProxy Fund:logProxy_Func2Plot($from,$to,&#039;{logProxy_hms2dec(sunset_abs_dat($sec))-logProxy_hms2dec(sunrise_abs_dat($sec))}&#039;)&lt;br /&gt;
  &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title notitle ls l5 lw 1 with steps,\&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus muss über das Attribut nrAxis die Axenanzahl vorgegeben werden z.B. {{Link2Forum|Topic=13617|Message=119160|LinkText=1,2}}.&lt;br /&gt;
&lt;br /&gt;
[[Datei:logProxy-sun2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Tagesstunden in einem Plot farblich hinterlegen ===&lt;br /&gt;
Mit den folgenden Zeilen lassen sich in jedem Plot die jeweiligen Tagesstunden farblich hinterlegen.&lt;br /&gt;
&lt;br /&gt;
  set y3range [0:1]  &lt;br /&gt;
  &lt;br /&gt;
  #logProxy Func:logProxy_Func2Plot($from,$to,&#039;{logProxy_isDay($sec)}&#039;,{week=&amp;gt;60*30,day=&amp;gt;60*10,qday=&amp;gt;60})&lt;br /&gt;
  &lt;br /&gt;
  &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title notitle ls l4fill lw 1 with fsteps,\ &lt;br /&gt;
&lt;br /&gt;
[[Datei:logProxy-sun3.png]]&lt;br /&gt;
&lt;br /&gt;
=== Einfügen von Zonen ===&lt;br /&gt;
Mit der Hilfsfunktion logProxy_values2Plot lässt sich direkt ein Array aus datum,y-Korrdinatenpaaren als Quelle für die Punkte eines Plots verwenden. Hiermit können auch gefüllte Flächen dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#logProxy Func:logProxy_Func2Plot($from,$to,&#039;{logProxy_hms2dec(sunrise_abs_dat($sec))}&#039;)&lt;br /&gt;
#logProxy Func:logProxy_Func2Plot($from,$to,&#039;{logProxy_hms2dec(sunset_abs_dat($sec))}&#039;)&lt;br /&gt;
#logProxy Func:logProxy_values2Plot([[$from,19],[$to,19],[$to,21],[$from,21]])&lt;br /&gt;
                                                       &lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Sonnenaufgang&#039; ls l2 lw 1 with steps,\&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Sonnenuntergang&#039; ls l0 lw 1 with steps,\&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Box&#039; ls l1fill lw 1 with lines,\&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:logProxy-values.png]]&lt;br /&gt;
&lt;br /&gt;
=== Daten aus x,y-Koordinatenpaaren plotten ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das Umschalten vom Zeitpunkt/Wert Modus auf den X/Y Modus ist an das Vorhandensein der xrange-Anweisung im gplot File geknüpft.}}&lt;br /&gt;
Mit der Hilfsfunktion logProxy_xy2Plot lässt sich direkt ein Array aus x,y-Korrdinatenpaaren als Quelle für die Punkte eines Plots verwenden. In folgendem Beispiel sind alle Daten fest im Plotfile angegeben. Normalerweise würde zumindest der eigentliche Datenpunkt aus den Temperatur- und Feuchte-Readings eines FHEM-Device kommen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set xrange [12:28]&lt;br /&gt;
set yrange [0:100]&lt;br /&gt;
&lt;br /&gt;
#lp Func:logProxy_xy2Plot([[18,40],[24,33],[22,65],[17,75],[18,40]])&lt;br /&gt;
#lp Func:logProxy_xy2Plot([[19,20],[25,18],[27,32],[24,60],[21,80],[17,85],[16,75],[17,35],[19,20]])&lt;br /&gt;
#lp Func:logProxy_xy2Plot([[22,40]])&lt;br /&gt;
                                 &lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Behaglich&#039; ls l1fill lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Noch Behaglich&#039; ls l5 lw 1 with lines&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Wert&#039; ls l0 lw 1 with points&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:logProxy-xy.png]]&lt;br /&gt;
&lt;br /&gt;
Die Koordinaten der beiden Polygone sind aus einer Grafik auf der Seite [http://www.raumluft.org/gesunde-raumluft/raumklima-behaglichkeit raumluft.org] nur grob abgelesen und nur beispielhaft zu verstehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== x,y Daten aus einem File plotten ===&lt;br /&gt;
Daten aus einem File der Form&lt;br /&gt;
 timestamp device reading: X,Y&lt;br /&gt;
d.h.&lt;br /&gt;
 2017-01-20_18:14:12 ade V_INST: 0.01847,47338.99&lt;br /&gt;
&lt;br /&gt;
lassen sich mit der &amp;lt;code&amp;gt;logProxy_xyFile2Plot&amp;lt;/code&amp;gt; Funktion zum plotten aufbereiten. (Idee:  {{Link2Forum|Topic=65303|Message=566323|LinkText=Forum}})&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#adeinst.logproxy Func:logProxy_xyFile2Plot(&amp;quot;/path-to/adeinst.log&amp;quot;,4,&amp;quot;V_INST:&amp;quot;)&lt;br /&gt;
#adeinst.logproxy Func:logProxy_xyFile2Plot(&amp;quot;/path-to/adeinst.log&amp;quot;,4,&amp;quot;IA_INST:&amp;quot;)&lt;br /&gt;
#adeinst.logproxy Func:logProxy_xyFile2Plot(&amp;quot;/path-to/adeinst.log&amp;quot;,4,&amp;quot;IB_INST:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;V&#039; ls l0 lw 1 with lines, \&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;IA&#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;IB&#039; ls l2 lw 1 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:logProxy-xy2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Plotten in Polar-Koordinaten, Spinnennetz Darstellung ===&lt;br /&gt;
Das Plot-Fenster quadratisch machen:&lt;br /&gt;
 attr &amp;lt;mySVG&amp;gt; plotsize 340,400&lt;br /&gt;
&lt;br /&gt;
Die automatische Achsenbschriftung ausschalten, das Kooardinatensystem auf X/Y-Achsen schalten und die zu plottenden Daten jeweils in einem Perl Array bereitstellen. In diesem Beispiel die &amp;quot;temperature&amp;quot; und &amp;quot;desiredTemperature&amp;quot; Werte aller MAX-Devices. &lt;br /&gt;
 set xtics ()&lt;br /&gt;
 set ytics ()&lt;br /&gt;
 set y2tics ()&lt;br /&gt;
 &lt;br /&gt;
 set xrange [-40:40]&lt;br /&gt;
 set yrange [-40:40]&lt;br /&gt;
&lt;br /&gt;
 #logProxy Polar::[map{ReadingsVal($_,&amp;quot;temperature&amp;quot;,0)}devspec2array(&amp;quot;MAX.*&amp;quot;)]&lt;br /&gt;
 #logProxy Polar::[map{ReadingsVal($_,&amp;quot;desiredTemperature&amp;quot;,0)}devspec2array(&amp;quot;MAX.*&amp;quot;)]&lt;br /&gt;
 #logProxy Polar::[map{ReadingsVal($_,&amp;quot;temperature&amp;quot;,0)}devspec2array(&amp;quot;MAX.*&amp;quot;)]&lt;br /&gt;
 #logProxy Polar::[devspec2array(&amp;quot;MAX.*&amp;quot;)]&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Ist&#039; ls l0 lw 1 with lines,\&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Soll&#039; ls l1fill lw 1 with lines,\&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 notitle ls l0 lw 1 with points,\&lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 notitle  ls l2 lw 1 with lines,\&lt;br /&gt;
&lt;br /&gt;
Um statt den Device-Namen den Device-Alias zu verwenden, kann die vierte logProxy Zeile durch die folgende ersetzt werden&lt;br /&gt;
 #logProxy Polar::[map{AttrVal($_,&amp;quot;alias&amp;quot;,$_)}devspec2array(&amp;quot;MAX.*&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
Ein komplette Beispiel ist Teil der fhem.cfg.demo. &lt;br /&gt;
&lt;br /&gt;
Um den Plot für HomeMatic Thermostate zu verwenden, sind die Reading-Namen &amp;lt;code&amp;gt;temperature&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;desiredTemperature&amp;lt;/code&amp;gt; jeweils durch &amp;lt;code&amp;gt;measured-temp&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;desired-temp&amp;lt;/code&amp;gt; zu ersetzen und der reguläre Ausdruck zum Finden der Devices entsprechend anzupassen. Je nach Installation zum Beispiel auf &amp;lt;code&amp;gt;.*Climate&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Für ein paar Devices und für ein paar mehr:&lt;br /&gt;
&lt;br /&gt;
[[Datei:logProxy-polar1.png]] [[Datei:logProxy-polar2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Plot Daten mit postFn verändern ===&lt;br /&gt;
Das folgende (nicht sehr sinnvolle) Beispiel verschiebt alle Werte einer Kurve um 10 nach oben. &lt;br /&gt;
&lt;br /&gt;
Eine sinnvollere Anwendung wäre es z.B., Ausreißer zu filtern, Mittelwerte über einzelne Intervalle zu berechnen&lt;br /&gt;
&lt;br /&gt;
 sub    &lt;br /&gt;
 myPostFn($$)&lt;br /&gt;
 {      &lt;br /&gt;
   my($devspec,$array) = @_; &lt;br /&gt;
       &lt;br /&gt;
   foreach my $point ( @{$array} ) { &lt;br /&gt;
     $point-&amp;gt;[1] += 10;&lt;br /&gt;
   }    &lt;br /&gt;
 &lt;br /&gt;
   return $array;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 #logProxy DbLog:dbLog,postFn=&#039;myPostFn&#039;:s300ht_1:temperature::&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22985</id>
		<title>DLCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22985"/>
		<updated>2017-10-20T15:16:46Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Beziehung zu anderen Modulen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Daten sammeln und formatiert auf LCD ausgeben&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModCmdRef= ---- noch nicht Teil von FHEM ----&lt;br /&gt;
|ModForumArea=Codeschnipsel&lt;br /&gt;
|ModTechName=39_DLCD.pm&lt;br /&gt;
|ModOwner=epsrw1 ([http://forum.fhem.de/index.php?action=profile;u=6340 Forum] / [[Benutzer Diskussion:Epsrw1|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das [[DLCD]]-Modul bietet eine einfache Möglichkeit, Daten zu sammeln und für die Anzeige auf einem seriellen LCD aufzubereiten.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Diese Wiki-Seite beschreibt den Versionsstand 2.0 des DLCD-Moduls.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thread im {{Link2Forum|Topic=24519|LinkText=Fhem-Forum}} mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
[[Datei:dok39_DLCD.jpg|mini|Funktionsweise]]&lt;br /&gt;
&lt;br /&gt;
DLCD bietet als kleines Helferlein die Möglichkeit, Textzeilen eines LCD Displays als Readings vorzubereiten und mit Daten frei konfigurierbarer Readings zu befüllen.&lt;br /&gt;
DLCD baut z.B. auf einer Instanz des Moduls [[I2C_LCD]] auf.&lt;br /&gt;
&lt;br /&gt;
Jede Zeile wird als Attr vordefiniert, und mit Platzhaltern (z.B.: %1%) für die einzutragenden Werte versehen.&lt;br /&gt;
&lt;br /&gt;
Die Liste aller einzulesenden Devices:Readings wird in einem attr eingestellt. Das Modul prüft dann regelmäßig (attr: poll interval) die Daten der Fhem-Devices &lt;br /&gt;
und aktualisiert dann die Anzeige sobald sich einer der Werte geändert hat.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich können Zahlen einfach über attr formatiert werden (Kommastellen, Rundung, Anzeige von + und - Zeichen).&lt;br /&gt;
&lt;br /&gt;
Eine Reihe von Platzhaltern ermöglicht das Einsetzen von Datum und Zeit-Werten in die Ausgabezeilen (zB Minute einzeln, Wochentag, Datum, ....)&lt;br /&gt;
&lt;br /&gt;
Die über attr einschaltbare Rollierfunktion verschiebt die Zeilen bei jedem Update um eine Ziffer nach oben. So läßt sich zB eine wechselanzeige auf einem einzeiligen Display realisieren.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Ausgabe auf das LCD erfolgt jeweils immer dann wenn eine Änderung der Daten festgestellt wird, auf beliebiges konfigurierbares Device. Zum beispiel I2C LCD über FHEM, oder auch über shell-command für nicht von FHEM unterstützte displays.&lt;br /&gt;
&lt;br /&gt;
Manche Displays können Leerzeichen oder Umlaute nicht richtig wiedergeben. Daher kann DLCD über attr eingestellte Ersetzungen vornehmen, bevor die Daten an das LCD-device übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Um die Einrichtung zu erleichtern, kann man mit dem attr dlcdDebugOutput die jeweils an das Device abgesetzten Befehle als &#039;&#039;reading&#039;&#039; ausgeben lassen. &lt;br /&gt;
&lt;br /&gt;
Mit stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4 kann man sich ein Abbild des Displayinhaltes im Web-frontend anzeigen lassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:dlcd_stateformat.png|mini|Frontend-Beispiel]]&lt;br /&gt;
&lt;br /&gt;
== Define ==&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; DLCD &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In der Basisversion wurde Number::Format von cpan benötigt. Dies ist ab v. 1.1. nicht mehr der Fall.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
Alle Attribute sind auch in fhem durch das Kommando get attrHelp &amp;lt;varname&amp;gt; erklärt, für&#039;s &amp;quot;schnelle Nachschauen zwischendurch&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* dlcdRows -&amp;gt; Anzahl Datenzeilen (kann mehr als am Display sein mit eingeschaltetem Scrolling)&lt;br /&gt;
* dlcdCols -&amp;gt; Anzahl Spalten des LC-Displays&lt;br /&gt;
* dlcdPollInterval -&amp;gt; Zeitintervall, nach dem FHEM versucht, die Daten zu aktualisieren&lt;br /&gt;
* dlcdLine1 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %1% text: %2%&lt;br /&gt;
* dlcdLine2 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %3% text: %4%&lt;br /&gt;
* dlcdLine3 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %5% text: %6%&lt;br /&gt;
* dlcdLine4 -&amp;gt; Formatvorlage für LCD-Zeile Text: %7% text: %8%&lt;br /&gt;
* dlcdLine5 -&amp;gt; Formatvorlage für LCD-Zeile Text: %11% text: %12%&lt;br /&gt;
* dlcdVal1 -&amp;gt; Quelle für den Wert %1% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal2 -&amp;gt; Quelle für den Wert %2% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal3 -&amp;gt; Quelle für den Wert %3% im Format: FhemDev:reading&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20 -&amp;gt; Quelle für den Wert %12% im Format: FhemDev:reading&lt;br /&gt;
&lt;br /&gt;
* dlcdTriggerCmd -&amp;gt; Fhem-Befehl zum Schreiben einer LCD-Zeile, z.B.: &amp;lt;code&amp;gt;set lcd_wand writeXY 0,%L%,20,1 %T%&amp;lt;/code&amp;gt;&lt;br /&gt;
* dlcdVal1formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal2formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal3formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
dlcdVal .. formatnum setzen die Anzahl Dezimalstellen fest, sowie ob ein + bzw. - Zeichen vorangestellt wird. Es funktioniert wie folgt:&lt;br /&gt;
&lt;br /&gt;
erste Ziffer: Gesamtzahl Ziffern in der Ausgabe.&lt;br /&gt;
zweite Ziffer: Anzahl fester Dezimalstellen&lt;br /&gt;
optional: +- an dritter Stelle&lt;br /&gt;
&lt;br /&gt;
Beispiele: &lt;br /&gt;
2+1 -&amp;gt; 1.1 9.0 0.4&lt;br /&gt;
4+2+- -&amp;gt; -12.34 +10.50&lt;br /&gt;
4+0+- -&amp;gt; -0012 +0010&lt;br /&gt;
&lt;br /&gt;
Die möglichen Optionen sind in einer Liste fest vorgegeben, um Fehleinstellungen zu vermeiden. Über manuellen Eintrag in der fhem-config können Eigenkreationen eingestellt werden, die nicht in der Liste enthalten sind (zB. 10+2+-).&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
* dlcdVal1formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal2formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal3formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
&lt;br /&gt;
* dlcdBlankspaceReplace -&amp;gt; Leerzeichen wird im dlcdTriggerCmd durch diesen attr-Wert ersetzt. z.B.: \\x20 oder \\x{10}&lt;br /&gt;
* dlcdReplaceRegex -&amp;gt; beliebige ersetzung von zeichen, kommagetrennte paare mit = zeichen, zB.: ä=\\xE1,ö=\\xEF,ü=\\xF5,Ä=\\xE1,Ö=\\xEF,Ü=\\xF5,ß=\\xE2,°=\\x{DF}, Unicode-Beispiel: \N{U+code}, zB \N{U+0041}und  \N{U+41} werden zu A und A&lt;br /&gt;
* dlcdPhysicalRows -&amp;gt; Anzahl physikalisch vorhandener Zeilen am Ausgabedisplay&lt;br /&gt;
* dlcdScrolling -&amp;gt; Zeilen automatisch scrollen, 1=an 0=aus&lt;br /&gt;
* dlcdDebugOutput -&amp;gt; zusätzliche readings für aktuelle Display-ausgabe zum testen der Scroll-Funktion&lt;br /&gt;
* dlcdClearLineCmd -&amp;gt; optional: command um lcd-zeile zu leeren (%L%=line 0-n), zB. Set lcd42 clear %L%&lt;br /&gt;
* dlcdClearAllCmd -&amp;gt; optional: command um lcd komplett zu leeren (nur bei scrolling)&lt;br /&gt;
* dlcdLineAddrMap -&amp;gt; alternative Zeilenadressierung. Default ist 0,1,2,3,4,5,6,7,8,9. Beispiel: 1,2,3 verwendet nur 2. bis 4. LCD-zeile und überspringt die erste.&lt;br /&gt;
* disable -&amp;gt; keine neuen schreibvorgänge&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
reset -&amp;gt;alle Readings zurücksetzen&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
Line1 -&amp;gt; Aktuelle Anzeige der Zeile 1&lt;br /&gt;
&lt;br /&gt;
Line2 -&amp;gt; Aktuelle Anzeige der Zeile 2&lt;br /&gt;
&lt;br /&gt;
Line3 -&amp;gt; Aktuelle Anzeige der Zeile 3&lt;br /&gt;
&lt;br /&gt;
Line4 -&amp;gt; Aktuelle Anzeige der Zeile 4&lt;br /&gt;
&lt;br /&gt;
Line5 -&amp;gt; Aktuelle Anzeige der Zeile 5&lt;br /&gt;
&lt;br /&gt;
== Spezielle Anzeigefunktionen ==&lt;br /&gt;
&lt;br /&gt;
Datum und Uhrzeit basieren aktuell auf der Systemzeit des FHEM-Servers. Eine Möglichkeit, als Zeitbasis den Timestamp eines FHEM-Readings zu verwenden, ist denkbar; wer das nutzen möchte, bitte im Forum melden.&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
* %date_Y% --&amp;gt; Jaheszahl 4-stellig&lt;br /&gt;
* %date_y% --&amp;gt; Jahreszahl 2-stellig&lt;br /&gt;
* %date_M% --&amp;gt; Monat als Zahl, 2-stellig&lt;br /&gt;
* %date_M_eng% --&amp;gt; Monat, Abkürzung englisch&lt;br /&gt;
* %date_M_ger% --&amp;gt; Monat, Abkürzung deutsch&lt;br /&gt;
* %date_D% --&amp;gt; Tag des Monats 2-stellig&lt;br /&gt;
* %date_WD% --&amp;gt; Wochentag 1-stellig im Format 0(So) ... 6(Sa)&lt;br /&gt;
* %date_WD_eng% --&amp;gt; Wochentag, Abkürzung englisch&lt;br /&gt;
* %date_WD_ger% --&amp;gt; Wochentag, Abkürzung deutsch&lt;br /&gt;
* %date_dmy% --&amp;gt; Datum im Format 25.08.2014&lt;br /&gt;
&lt;br /&gt;
=== Zeit ===&lt;br /&gt;
* %time_hms% --&amp;gt; HH:MM:SS Uhrzeit&lt;br /&gt;
* %time_h% --&amp;gt; Stunde&lt;br /&gt;
* %time_m% --&amp;gt; Minute&lt;br /&gt;
* %time_s% --&amp;gt; Sekunde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LCD-Abbild im Web-frontend ===&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&lt;br /&gt;
&lt;br /&gt;
Soll der Text linksbündig dargestellt werden, so kann dies folgendermaßen definiert werden:&amp;lt;br&amp;gt;&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat &amp;amp;lt;div style=&amp;quot;text-align: left&amp;quot;&amp;amp;gt;state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mathematische Werteberechnung ===&lt;br /&gt;
* Noch in Arbeit - Ideen sind willkommen ;) --&amp;gt; Forum&lt;br /&gt;
* To be continued&lt;br /&gt;
&lt;br /&gt;
== Beziehung zu anderen Modulen ==&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; weitere I2C Treiber&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Link2Forum|Topic=24519|LinkText=Thread}} im Forum, in dem dieses Modul vorgestellt wurde&lt;br /&gt;
* [https://waschto.eu/statusdisplay-mit-esp-easy-dlcd-und-fhem/ Projekt: Statusdisplay mit ESP Easy und DLCD]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22984</id>
		<title>I2C LCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22984"/>
		<updated>2017-10-20T15:16:10Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=I2C_LCD dient zum ansteuern von LCD Displays am I2C Bus.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=I2C_LCD&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModTechName=52_I2C_LCD.pm&lt;br /&gt;
|ModOwner=ntruchsess}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Allgemein =&lt;br /&gt;
Das [[I2C_LCD]]-Modul bietet die Möglichkeit LCD Displays am I2C-Bus anzusteuern.&lt;br /&gt;
Bei einem Rasperry Pi baut das Modul z.B. auf einer Instanz des Moduls [[RPII2C]] auf.&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Benutzung =&lt;br /&gt;
&lt;br /&gt;
Standardmässig wird der Text rechtsbündig ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Soll der Text linksbündig ausgegeben werden muss der optionale Parameter [,l] angegeben werden. (Achtung kleines &amp;quot;L&amp;quot;, keine &amp;quot;Eins&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;name&amp;gt; writeXY x-pos,y-pos,len&#039;&#039;&#039;[,l]&#039;&#039;&#039; &amp;lt;text to be displayed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Beziehung zu anderen Modulen =&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* [[I2C_LCD]] -&amp;gt; weitere I2C Treiber&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=RPII2C&amp;diff=22983</id>
		<title>RPII2C</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=RPII2C&amp;diff=22983"/>
		<updated>2017-10-20T15:14:35Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=RPII2C dient als Treiber um den I2C-Bus des Raspberry Pi ansteuern.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=RPII2C&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModTechName=00_RPII2C.pm&lt;br /&gt;
|ModOwner=klausw}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Allgemein =&lt;br /&gt;
Das [[RPII2C]]-Modul stellt eine Treiberschicht für den I2C-Bus des Raspberry Pi bereit.&amp;lt;br&amp;gt;&lt;br /&gt;
So können weitere Komponenten, wie z.B. LCD Display, Temperatur Sensoren, usw. betrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Beziehung zu anderen Modulen =&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* [[I2C_BME280]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* [[I2C_BH1750]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* und weitere&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22982</id>
		<title>I2C LCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22982"/>
		<updated>2017-10-20T15:11:39Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Beziehung zu anderen Modulen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=I2C_LCD dient zum ansteuern von LCD Displays am I2C Bus.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=I2C_LCD&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModTechName=52_I2C_LCD.pm&lt;br /&gt;
|ModOwner=ntruchsess}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[I2C_LCD]]-Modul bietet die Möglichkeit LCD Displays am I2C-Bus anzusteuern.&lt;br /&gt;
Bei einem Rasperry Pi baut das Modul z.B. auf einer Instanz des Moduls [[RPII2C]] auf.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Benutzung ==&lt;br /&gt;
&lt;br /&gt;
Standardmässig wird der Text rechtsbündig ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Soll der Text linksbündig ausgegeben werden muss der optionale Parameter [,l] angegeben werden. (Achtung kleines &amp;quot;L&amp;quot;, keine &amp;quot;Eins&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;name&amp;gt; writeXY x-pos,y-pos,len&#039;&#039;&#039;[,l]&#039;&#039;&#039; &amp;lt;text to be displayed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beziehung zu anderen Modulen ==&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* [[I2C_LCD]] -&amp;gt; weitere&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22981</id>
		<title>DLCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22981"/>
		<updated>2017-10-20T15:11:00Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Beziehung zu anderen Modulen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Daten sammeln und formatiert auf LCD ausgeben&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModCmdRef= ---- noch nicht Teil von FHEM ----&lt;br /&gt;
|ModForumArea=Codeschnipsel&lt;br /&gt;
|ModTechName=39_DLCD.pm&lt;br /&gt;
|ModOwner=epsrw1 ([http://forum.fhem.de/index.php?action=profile;u=6340 Forum] / [[Benutzer Diskussion:Epsrw1|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das [[DLCD]]-Modul bietet eine einfache Möglichkeit, Daten zu sammeln und für die Anzeige auf einem seriellen LCD aufzubereiten.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Diese Wiki-Seite beschreibt den Versionsstand 2.0 des DLCD-Moduls.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thread im {{Link2Forum|Topic=24519|LinkText=Fhem-Forum}} mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
[[Datei:dok39_DLCD.jpg|mini|Funktionsweise]]&lt;br /&gt;
&lt;br /&gt;
DLCD bietet als kleines Helferlein die Möglichkeit, Textzeilen eines LCD Displays als Readings vorzubereiten und mit Daten frei konfigurierbarer Readings zu befüllen.&lt;br /&gt;
DLCD baut z.B. auf einer Instanz des Moduls [[I2C_LCD]] auf.&lt;br /&gt;
&lt;br /&gt;
Jede Zeile wird als Attr vordefiniert, und mit Platzhaltern (z.B.: %1%) für die einzutragenden Werte versehen.&lt;br /&gt;
&lt;br /&gt;
Die Liste aller einzulesenden Devices:Readings wird in einem attr eingestellt. Das Modul prüft dann regelmäßig (attr: poll interval) die Daten der Fhem-Devices &lt;br /&gt;
und aktualisiert dann die Anzeige sobald sich einer der Werte geändert hat.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich können Zahlen einfach über attr formatiert werden (Kommastellen, Rundung, Anzeige von + und - Zeichen).&lt;br /&gt;
&lt;br /&gt;
Eine Reihe von Platzhaltern ermöglicht das Einsetzen von Datum und Zeit-Werten in die Ausgabezeilen (zB Minute einzeln, Wochentag, Datum, ....)&lt;br /&gt;
&lt;br /&gt;
Die über attr einschaltbare Rollierfunktion verschiebt die Zeilen bei jedem Update um eine Ziffer nach oben. So läßt sich zB eine wechselanzeige auf einem einzeiligen Display realisieren.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Ausgabe auf das LCD erfolgt jeweils immer dann wenn eine Änderung der Daten festgestellt wird, auf beliebiges konfigurierbares Device. Zum beispiel I2C LCD über FHEM, oder auch über shell-command für nicht von FHEM unterstützte displays.&lt;br /&gt;
&lt;br /&gt;
Manche Displays können Leerzeichen oder Umlaute nicht richtig wiedergeben. Daher kann DLCD über attr eingestellte Ersetzungen vornehmen, bevor die Daten an das LCD-device übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Um die Einrichtung zu erleichtern, kann man mit dem attr dlcdDebugOutput die jeweils an das Device abgesetzten Befehle als &#039;&#039;reading&#039;&#039; ausgeben lassen. &lt;br /&gt;
&lt;br /&gt;
Mit stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4 kann man sich ein Abbild des Displayinhaltes im Web-frontend anzeigen lassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:dlcd_stateformat.png|mini|Frontend-Beispiel]]&lt;br /&gt;
&lt;br /&gt;
== Define ==&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; DLCD &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In der Basisversion wurde Number::Format von cpan benötigt. Dies ist ab v. 1.1. nicht mehr der Fall.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
Alle Attribute sind auch in fhem durch das Kommando get attrHelp &amp;lt;varname&amp;gt; erklärt, für&#039;s &amp;quot;schnelle Nachschauen zwischendurch&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* dlcdRows -&amp;gt; Anzahl Datenzeilen (kann mehr als am Display sein mit eingeschaltetem Scrolling)&lt;br /&gt;
* dlcdCols -&amp;gt; Anzahl Spalten des LC-Displays&lt;br /&gt;
* dlcdPollInterval -&amp;gt; Zeitintervall, nach dem FHEM versucht, die Daten zu aktualisieren&lt;br /&gt;
* dlcdLine1 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %1% text: %2%&lt;br /&gt;
* dlcdLine2 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %3% text: %4%&lt;br /&gt;
* dlcdLine3 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %5% text: %6%&lt;br /&gt;
* dlcdLine4 -&amp;gt; Formatvorlage für LCD-Zeile Text: %7% text: %8%&lt;br /&gt;
* dlcdLine5 -&amp;gt; Formatvorlage für LCD-Zeile Text: %11% text: %12%&lt;br /&gt;
* dlcdVal1 -&amp;gt; Quelle für den Wert %1% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal2 -&amp;gt; Quelle für den Wert %2% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal3 -&amp;gt; Quelle für den Wert %3% im Format: FhemDev:reading&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20 -&amp;gt; Quelle für den Wert %12% im Format: FhemDev:reading&lt;br /&gt;
&lt;br /&gt;
* dlcdTriggerCmd -&amp;gt; Fhem-Befehl zum Schreiben einer LCD-Zeile, z.B.: &amp;lt;code&amp;gt;set lcd_wand writeXY 0,%L%,20,1 %T%&amp;lt;/code&amp;gt;&lt;br /&gt;
* dlcdVal1formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal2formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal3formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
dlcdVal .. formatnum setzen die Anzahl Dezimalstellen fest, sowie ob ein + bzw. - Zeichen vorangestellt wird. Es funktioniert wie folgt:&lt;br /&gt;
&lt;br /&gt;
erste Ziffer: Gesamtzahl Ziffern in der Ausgabe.&lt;br /&gt;
zweite Ziffer: Anzahl fester Dezimalstellen&lt;br /&gt;
optional: +- an dritter Stelle&lt;br /&gt;
&lt;br /&gt;
Beispiele: &lt;br /&gt;
2+1 -&amp;gt; 1.1 9.0 0.4&lt;br /&gt;
4+2+- -&amp;gt; -12.34 +10.50&lt;br /&gt;
4+0+- -&amp;gt; -0012 +0010&lt;br /&gt;
&lt;br /&gt;
Die möglichen Optionen sind in einer Liste fest vorgegeben, um Fehleinstellungen zu vermeiden. Über manuellen Eintrag in der fhem-config können Eigenkreationen eingestellt werden, die nicht in der Liste enthalten sind (zB. 10+2+-).&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
* dlcdVal1formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal2formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal3formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
&lt;br /&gt;
* dlcdBlankspaceReplace -&amp;gt; Leerzeichen wird im dlcdTriggerCmd durch diesen attr-Wert ersetzt. z.B.: \\x20 oder \\x{10}&lt;br /&gt;
* dlcdReplaceRegex -&amp;gt; beliebige ersetzung von zeichen, kommagetrennte paare mit = zeichen, zB.: ä=\\xE1,ö=\\xEF,ü=\\xF5,Ä=\\xE1,Ö=\\xEF,Ü=\\xF5,ß=\\xE2,°=\\x{DF}, Unicode-Beispiel: \N{U+code}, zB \N{U+0041}und  \N{U+41} werden zu A und A&lt;br /&gt;
* dlcdPhysicalRows -&amp;gt; Anzahl physikalisch vorhandener Zeilen am Ausgabedisplay&lt;br /&gt;
* dlcdScrolling -&amp;gt; Zeilen automatisch scrollen, 1=an 0=aus&lt;br /&gt;
* dlcdDebugOutput -&amp;gt; zusätzliche readings für aktuelle Display-ausgabe zum testen der Scroll-Funktion&lt;br /&gt;
* dlcdClearLineCmd -&amp;gt; optional: command um lcd-zeile zu leeren (%L%=line 0-n), zB. Set lcd42 clear %L%&lt;br /&gt;
* dlcdClearAllCmd -&amp;gt; optional: command um lcd komplett zu leeren (nur bei scrolling)&lt;br /&gt;
* dlcdLineAddrMap -&amp;gt; alternative Zeilenadressierung. Default ist 0,1,2,3,4,5,6,7,8,9. Beispiel: 1,2,3 verwendet nur 2. bis 4. LCD-zeile und überspringt die erste.&lt;br /&gt;
* disable -&amp;gt; keine neuen schreibvorgänge&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
reset -&amp;gt;alle Readings zurücksetzen&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
Line1 -&amp;gt; Aktuelle Anzeige der Zeile 1&lt;br /&gt;
&lt;br /&gt;
Line2 -&amp;gt; Aktuelle Anzeige der Zeile 2&lt;br /&gt;
&lt;br /&gt;
Line3 -&amp;gt; Aktuelle Anzeige der Zeile 3&lt;br /&gt;
&lt;br /&gt;
Line4 -&amp;gt; Aktuelle Anzeige der Zeile 4&lt;br /&gt;
&lt;br /&gt;
Line5 -&amp;gt; Aktuelle Anzeige der Zeile 5&lt;br /&gt;
&lt;br /&gt;
== Spezielle Anzeigefunktionen ==&lt;br /&gt;
&lt;br /&gt;
Datum und Uhrzeit basieren aktuell auf der Systemzeit des FHEM-Servers. Eine Möglichkeit, als Zeitbasis den Timestamp eines FHEM-Readings zu verwenden, ist denkbar; wer das nutzen möchte, bitte im Forum melden.&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
* %date_Y% --&amp;gt; Jaheszahl 4-stellig&lt;br /&gt;
* %date_y% --&amp;gt; Jahreszahl 2-stellig&lt;br /&gt;
* %date_M% --&amp;gt; Monat als Zahl, 2-stellig&lt;br /&gt;
* %date_M_eng% --&amp;gt; Monat, Abkürzung englisch&lt;br /&gt;
* %date_M_ger% --&amp;gt; Monat, Abkürzung deutsch&lt;br /&gt;
* %date_D% --&amp;gt; Tag des Monats 2-stellig&lt;br /&gt;
* %date_WD% --&amp;gt; Wochentag 1-stellig im Format 0(So) ... 6(Sa)&lt;br /&gt;
* %date_WD_eng% --&amp;gt; Wochentag, Abkürzung englisch&lt;br /&gt;
* %date_WD_ger% --&amp;gt; Wochentag, Abkürzung deutsch&lt;br /&gt;
* %date_dmy% --&amp;gt; Datum im Format 25.08.2014&lt;br /&gt;
&lt;br /&gt;
=== Zeit ===&lt;br /&gt;
* %time_hms% --&amp;gt; HH:MM:SS Uhrzeit&lt;br /&gt;
* %time_h% --&amp;gt; Stunde&lt;br /&gt;
* %time_m% --&amp;gt; Minute&lt;br /&gt;
* %time_s% --&amp;gt; Sekunde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LCD-Abbild im Web-frontend ===&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&lt;br /&gt;
&lt;br /&gt;
Soll der Text linksbündig dargestellt werden, so kann dies folgendermaßen definiert werden:&amp;lt;br&amp;gt;&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat &amp;amp;lt;div style=&amp;quot;text-align: left&amp;quot;&amp;amp;gt;state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mathematische Werteberechnung ===&lt;br /&gt;
* Noch in Arbeit - Ideen sind willkommen ;) --&amp;gt; Forum&lt;br /&gt;
* To be continued&lt;br /&gt;
&lt;br /&gt;
== Beziehung zu anderen Modulen ==&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; tdb&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Link2Forum|Topic=24519|LinkText=Thread}} im Forum, in dem dieses Modul vorgestellt wurde&lt;br /&gt;
* [https://waschto.eu/statusdisplay-mit-esp-easy-dlcd-und-fhem/ Projekt: Statusdisplay mit ESP Easy und DLCD]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=RPII2C&amp;diff=22980</id>
		<title>RPII2C</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=RPII2C&amp;diff=22980"/>
		<updated>2017-10-20T15:09:08Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=RPII2C dient als Treiber um den I2C-Bus des Raspberry Pi ansteuern.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=RPII2C&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModTechName=00_RPII2C.pm&lt;br /&gt;
|ModOwner=klausw}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
Das [[RPII2C]]-Modul stellt eine Treiberschicht für den I2C-Bus des Raspberry Pi bereit.&amp;lt;br&amp;gt;&lt;br /&gt;
So können weitere Komponenten, wie z.B. LCD Display, Temperatur Sensoren, usw. betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Module die z.B. auf diesem Modul aufbauen können: [[I2C_LCD]], [[I2C_BME280]], [[I2C_BH1750]], und weitere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beziehung zu anderen Modulen ==&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* [[I2C_BME280]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* [[I2C_BH1750]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* und weitere&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=RPII2C&amp;diff=22979</id>
		<title>RPII2C</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=RPII2C&amp;diff=22979"/>
		<updated>2017-10-20T15:08:30Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=RPII2C dient als Treiber um den I2C-Bus des Raspberry Pi ansteuern.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=RPII2C&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModTechName=00_RPII2C.pm&lt;br /&gt;
|ModOwner=klausw}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
Das [[RPII2C]]-Modul stellt eine Treiberschicht für den I2C-Bus des Raspberry Pi bereit.&amp;lt;br&amp;gt;&lt;br /&gt;
So können weitere Komponenten, wie z.B. LCD Display, Temperatur Sensoren, usw. betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Module die z.B. auf diesem Modul aufbauen können: [[I2C_LCD]], [[I2C_BME280]], [[I2C_BH1750]], und weitere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beziehung zu anderen Modulen ==&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* und weitere&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22978</id>
		<title>I2C LCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22978"/>
		<updated>2017-10-20T15:08:15Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=I2C_LCD dient zum ansteuern von LCD Displays am I2C Bus.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=I2C_LCD&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModTechName=52_I2C_LCD.pm&lt;br /&gt;
|ModOwner=ntruchsess}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[I2C_LCD]]-Modul bietet die Möglichkeit LCD Displays am I2C-Bus anzusteuern.&lt;br /&gt;
Bei einem Rasperry Pi baut das Modul z.B. auf einer Instanz des Moduls [[RPII2C]] auf.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Benutzung ==&lt;br /&gt;
&lt;br /&gt;
Standardmässig wird der Text rechtsbündig ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Soll der Text linksbündig ausgegeben werden muss der optionale Parameter [,l] angegeben werden. (Achtung kleines &amp;quot;L&amp;quot;, keine &amp;quot;Eins&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;name&amp;gt; writeXY x-pos,y-pos,len&#039;&#039;&#039;[,l]&#039;&#039;&#039; &amp;lt;text to be displayed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beziehung zu anderen Modulen ==&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* und weitere&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22977</id>
		<title>DLCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22977"/>
		<updated>2017-10-20T15:07:49Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Daten sammeln und formatiert auf LCD ausgeben&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModCmdRef= ---- noch nicht Teil von FHEM ----&lt;br /&gt;
|ModForumArea=Codeschnipsel&lt;br /&gt;
|ModTechName=39_DLCD.pm&lt;br /&gt;
|ModOwner=epsrw1 ([http://forum.fhem.de/index.php?action=profile;u=6340 Forum] / [[Benutzer Diskussion:Epsrw1|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das [[DLCD]]-Modul bietet eine einfache Möglichkeit, Daten zu sammeln und für die Anzeige auf einem seriellen LCD aufzubereiten.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Diese Wiki-Seite beschreibt den Versionsstand 2.0 des DLCD-Moduls.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thread im {{Link2Forum|Topic=24519|LinkText=Fhem-Forum}} mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
[[Datei:dok39_DLCD.jpg|mini|Funktionsweise]]&lt;br /&gt;
&lt;br /&gt;
DLCD bietet als kleines Helferlein die Möglichkeit, Textzeilen eines LCD Displays als Readings vorzubereiten und mit Daten frei konfigurierbarer Readings zu befüllen.&lt;br /&gt;
DLCD baut z.B. auf einer Instanz des Moduls [[I2C_LCD]] auf.&lt;br /&gt;
&lt;br /&gt;
Jede Zeile wird als Attr vordefiniert, und mit Platzhaltern (z.B.: %1%) für die einzutragenden Werte versehen.&lt;br /&gt;
&lt;br /&gt;
Die Liste aller einzulesenden Devices:Readings wird in einem attr eingestellt. Das Modul prüft dann regelmäßig (attr: poll interval) die Daten der Fhem-Devices &lt;br /&gt;
und aktualisiert dann die Anzeige sobald sich einer der Werte geändert hat.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich können Zahlen einfach über attr formatiert werden (Kommastellen, Rundung, Anzeige von + und - Zeichen).&lt;br /&gt;
&lt;br /&gt;
Eine Reihe von Platzhaltern ermöglicht das Einsetzen von Datum und Zeit-Werten in die Ausgabezeilen (zB Minute einzeln, Wochentag, Datum, ....)&lt;br /&gt;
&lt;br /&gt;
Die über attr einschaltbare Rollierfunktion verschiebt die Zeilen bei jedem Update um eine Ziffer nach oben. So läßt sich zB eine wechselanzeige auf einem einzeiligen Display realisieren.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Ausgabe auf das LCD erfolgt jeweils immer dann wenn eine Änderung der Daten festgestellt wird, auf beliebiges konfigurierbares Device. Zum beispiel I2C LCD über FHEM, oder auch über shell-command für nicht von FHEM unterstützte displays.&lt;br /&gt;
&lt;br /&gt;
Manche Displays können Leerzeichen oder Umlaute nicht richtig wiedergeben. Daher kann DLCD über attr eingestellte Ersetzungen vornehmen, bevor die Daten an das LCD-device übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Um die Einrichtung zu erleichtern, kann man mit dem attr dlcdDebugOutput die jeweils an das Device abgesetzten Befehle als &#039;&#039;reading&#039;&#039; ausgeben lassen. &lt;br /&gt;
&lt;br /&gt;
Mit stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4 kann man sich ein Abbild des Displayinhaltes im Web-frontend anzeigen lassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:dlcd_stateformat.png|mini|Frontend-Beispiel]]&lt;br /&gt;
&lt;br /&gt;
== Define ==&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; DLCD &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In der Basisversion wurde Number::Format von cpan benötigt. Dies ist ab v. 1.1. nicht mehr der Fall.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
Alle Attribute sind auch in fhem durch das Kommando get attrHelp &amp;lt;varname&amp;gt; erklärt, für&#039;s &amp;quot;schnelle Nachschauen zwischendurch&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* dlcdRows -&amp;gt; Anzahl Datenzeilen (kann mehr als am Display sein mit eingeschaltetem Scrolling)&lt;br /&gt;
* dlcdCols -&amp;gt; Anzahl Spalten des LC-Displays&lt;br /&gt;
* dlcdPollInterval -&amp;gt; Zeitintervall, nach dem FHEM versucht, die Daten zu aktualisieren&lt;br /&gt;
* dlcdLine1 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %1% text: %2%&lt;br /&gt;
* dlcdLine2 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %3% text: %4%&lt;br /&gt;
* dlcdLine3 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %5% text: %6%&lt;br /&gt;
* dlcdLine4 -&amp;gt; Formatvorlage für LCD-Zeile Text: %7% text: %8%&lt;br /&gt;
* dlcdLine5 -&amp;gt; Formatvorlage für LCD-Zeile Text: %11% text: %12%&lt;br /&gt;
* dlcdVal1 -&amp;gt; Quelle für den Wert %1% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal2 -&amp;gt; Quelle für den Wert %2% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal3 -&amp;gt; Quelle für den Wert %3% im Format: FhemDev:reading&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20 -&amp;gt; Quelle für den Wert %12% im Format: FhemDev:reading&lt;br /&gt;
&lt;br /&gt;
* dlcdTriggerCmd -&amp;gt; Fhem-Befehl zum Schreiben einer LCD-Zeile, z.B.: &amp;lt;code&amp;gt;set lcd_wand writeXY 0,%L%,20,1 %T%&amp;lt;/code&amp;gt;&lt;br /&gt;
* dlcdVal1formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal2formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal3formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
dlcdVal .. formatnum setzen die Anzahl Dezimalstellen fest, sowie ob ein + bzw. - Zeichen vorangestellt wird. Es funktioniert wie folgt:&lt;br /&gt;
&lt;br /&gt;
erste Ziffer: Gesamtzahl Ziffern in der Ausgabe.&lt;br /&gt;
zweite Ziffer: Anzahl fester Dezimalstellen&lt;br /&gt;
optional: +- an dritter Stelle&lt;br /&gt;
&lt;br /&gt;
Beispiele: &lt;br /&gt;
2+1 -&amp;gt; 1.1 9.0 0.4&lt;br /&gt;
4+2+- -&amp;gt; -12.34 +10.50&lt;br /&gt;
4+0+- -&amp;gt; -0012 +0010&lt;br /&gt;
&lt;br /&gt;
Die möglichen Optionen sind in einer Liste fest vorgegeben, um Fehleinstellungen zu vermeiden. Über manuellen Eintrag in der fhem-config können Eigenkreationen eingestellt werden, die nicht in der Liste enthalten sind (zB. 10+2+-).&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
* dlcdVal1formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal2formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal3formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
&lt;br /&gt;
* dlcdBlankspaceReplace -&amp;gt; Leerzeichen wird im dlcdTriggerCmd durch diesen attr-Wert ersetzt. z.B.: \\x20 oder \\x{10}&lt;br /&gt;
* dlcdReplaceRegex -&amp;gt; beliebige ersetzung von zeichen, kommagetrennte paare mit = zeichen, zB.: ä=\\xE1,ö=\\xEF,ü=\\xF5,Ä=\\xE1,Ö=\\xEF,Ü=\\xF5,ß=\\xE2,°=\\x{DF}, Unicode-Beispiel: \N{U+code}, zB \N{U+0041}und  \N{U+41} werden zu A und A&lt;br /&gt;
* dlcdPhysicalRows -&amp;gt; Anzahl physikalisch vorhandener Zeilen am Ausgabedisplay&lt;br /&gt;
* dlcdScrolling -&amp;gt; Zeilen automatisch scrollen, 1=an 0=aus&lt;br /&gt;
* dlcdDebugOutput -&amp;gt; zusätzliche readings für aktuelle Display-ausgabe zum testen der Scroll-Funktion&lt;br /&gt;
* dlcdClearLineCmd -&amp;gt; optional: command um lcd-zeile zu leeren (%L%=line 0-n), zB. Set lcd42 clear %L%&lt;br /&gt;
* dlcdClearAllCmd -&amp;gt; optional: command um lcd komplett zu leeren (nur bei scrolling)&lt;br /&gt;
* dlcdLineAddrMap -&amp;gt; alternative Zeilenadressierung. Default ist 0,1,2,3,4,5,6,7,8,9. Beispiel: 1,2,3 verwendet nur 2. bis 4. LCD-zeile und überspringt die erste.&lt;br /&gt;
* disable -&amp;gt; keine neuen schreibvorgänge&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
reset -&amp;gt;alle Readings zurücksetzen&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
Line1 -&amp;gt; Aktuelle Anzeige der Zeile 1&lt;br /&gt;
&lt;br /&gt;
Line2 -&amp;gt; Aktuelle Anzeige der Zeile 2&lt;br /&gt;
&lt;br /&gt;
Line3 -&amp;gt; Aktuelle Anzeige der Zeile 3&lt;br /&gt;
&lt;br /&gt;
Line4 -&amp;gt; Aktuelle Anzeige der Zeile 4&lt;br /&gt;
&lt;br /&gt;
Line5 -&amp;gt; Aktuelle Anzeige der Zeile 5&lt;br /&gt;
&lt;br /&gt;
== Spezielle Anzeigefunktionen ==&lt;br /&gt;
&lt;br /&gt;
Datum und Uhrzeit basieren aktuell auf der Systemzeit des FHEM-Servers. Eine Möglichkeit, als Zeitbasis den Timestamp eines FHEM-Readings zu verwenden, ist denkbar; wer das nutzen möchte, bitte im Forum melden.&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
* %date_Y% --&amp;gt; Jaheszahl 4-stellig&lt;br /&gt;
* %date_y% --&amp;gt; Jahreszahl 2-stellig&lt;br /&gt;
* %date_M% --&amp;gt; Monat als Zahl, 2-stellig&lt;br /&gt;
* %date_M_eng% --&amp;gt; Monat, Abkürzung englisch&lt;br /&gt;
* %date_M_ger% --&amp;gt; Monat, Abkürzung deutsch&lt;br /&gt;
* %date_D% --&amp;gt; Tag des Monats 2-stellig&lt;br /&gt;
* %date_WD% --&amp;gt; Wochentag 1-stellig im Format 0(So) ... 6(Sa)&lt;br /&gt;
* %date_WD_eng% --&amp;gt; Wochentag, Abkürzung englisch&lt;br /&gt;
* %date_WD_ger% --&amp;gt; Wochentag, Abkürzung deutsch&lt;br /&gt;
* %date_dmy% --&amp;gt; Datum im Format 25.08.2014&lt;br /&gt;
&lt;br /&gt;
=== Zeit ===&lt;br /&gt;
* %time_hms% --&amp;gt; HH:MM:SS Uhrzeit&lt;br /&gt;
* %time_h% --&amp;gt; Stunde&lt;br /&gt;
* %time_m% --&amp;gt; Minute&lt;br /&gt;
* %time_s% --&amp;gt; Sekunde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LCD-Abbild im Web-frontend ===&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&lt;br /&gt;
&lt;br /&gt;
Soll der Text linksbündig dargestellt werden, so kann dies folgendermaßen definiert werden:&amp;lt;br&amp;gt;&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat &amp;amp;lt;div style=&amp;quot;text-align: left&amp;quot;&amp;amp;gt;state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mathematische Werteberechnung ===&lt;br /&gt;
* Noch in Arbeit - Ideen sind willkommen ;) --&amp;gt; Forum&lt;br /&gt;
* To be continued&lt;br /&gt;
&lt;br /&gt;
== Beziehung zu anderen Modulen ==&lt;br /&gt;
* [[DLCD]] -&amp;gt; [[I2C_LCD]] -&amp;gt; [[RPII2C]]&lt;br /&gt;
* und weitere&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Link2Forum|Topic=24519|LinkText=Thread}} im Forum, in dem dieses Modul vorgestellt wurde&lt;br /&gt;
* [https://waschto.eu/statusdisplay-mit-esp-easy-dlcd-und-fhem/ Projekt: Statusdisplay mit ESP Easy und DLCD]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22976</id>
		<title>DLCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22976"/>
		<updated>2017-10-20T13:49:08Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Daten sammeln und formatiert auf LCD ausgeben&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModCmdRef= ---- noch nicht Teil von FHEM ----&lt;br /&gt;
|ModForumArea=Codeschnipsel&lt;br /&gt;
|ModTechName=39_DLCD.pm&lt;br /&gt;
|ModOwner=epsrw1 ([http://forum.fhem.de/index.php?action=profile;u=6340 Forum] / [[Benutzer Diskussion:Epsrw1|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das [[DLCD]]-Modul bietet eine einfache Möglichkeit, Daten zu sammeln und für die Anzeige auf einem seriellen LCD aufzubereiten.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Diese Wiki-Seite beschreibt den Versionsstand 2.0 des DLCD-Moduls.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thread im {{Link2Forum|Topic=24519|LinkText=Fhem-Forum}} mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
[[Datei:dok39_DLCD.jpg|mini|Funktionsweise]]&lt;br /&gt;
&lt;br /&gt;
DLCD bietet als kleines Helferlein die Möglichkeit, Textzeilen eines LCD Displays als Readings vorzubereiten und mit Daten frei konfigurierbarer Readings zu befüllen.&lt;br /&gt;
DLCD baut z.B. auf einer Instanz des Moduls [[I2C_LCD]] auf.&lt;br /&gt;
&lt;br /&gt;
Jede Zeile wird als Attr vordefiniert, und mit Platzhaltern (z.B.: %1%) für die einzutragenden Werte versehen.&lt;br /&gt;
&lt;br /&gt;
Die Liste aller einzulesenden Devices:Readings wird in einem attr eingestellt. Das Modul prüft dann regelmäßig (attr: poll interval) die Daten der Fhem-Devices &lt;br /&gt;
und aktualisiert dann die Anzeige sobald sich einer der Werte geändert hat.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich können Zahlen einfach über attr formatiert werden (Kommastellen, Rundung, Anzeige von + und - Zeichen).&lt;br /&gt;
&lt;br /&gt;
Eine Reihe von Platzhaltern ermöglicht das Einsetzen von Datum und Zeit-Werten in die Ausgabezeilen (zB Minute einzeln, Wochentag, Datum, ....)&lt;br /&gt;
&lt;br /&gt;
Die über attr einschaltbare Rollierfunktion verschiebt die Zeilen bei jedem Update um eine Ziffer nach oben. So läßt sich zB eine wechselanzeige auf einem einzeiligen Display realisieren.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Ausgabe auf das LCD erfolgt jeweils immer dann wenn eine Änderung der Daten festgestellt wird, auf beliebiges konfigurierbares Device. Zum beispiel I2C LCD über FHEM, oder auch über shell-command für nicht von FHEM unterstützte displays.&lt;br /&gt;
&lt;br /&gt;
Manche Displays können Leerzeichen oder Umlaute nicht richtig wiedergeben. Daher kann DLCD über attr eingestellte Ersetzungen vornehmen, bevor die Daten an das LCD-device übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Um die Einrichtung zu erleichtern, kann man mit dem attr dlcdDebugOutput die jeweils an das Device abgesetzten Befehle als &#039;&#039;reading&#039;&#039; ausgeben lassen. &lt;br /&gt;
&lt;br /&gt;
Mit stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4 kann man sich ein Abbild des Displayinhaltes im Web-frontend anzeigen lassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:dlcd_stateformat.png|mini|Frontend-Beispiel]]&lt;br /&gt;
&lt;br /&gt;
== Define ==&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; DLCD &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In der Basisversion wurde Number::Format von cpan benötigt. Dies ist ab v. 1.1. nicht mehr der Fall.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
Alle Attribute sind auch in fhem durch das Kommando get attrHelp &amp;lt;varname&amp;gt; erklärt, für&#039;s &amp;quot;schnelle Nachschauen zwischendurch&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* dlcdRows -&amp;gt; Anzahl Datenzeilen (kann mehr als am Display sein mit eingeschaltetem Scrolling)&lt;br /&gt;
* dlcdCols -&amp;gt; Anzahl Spalten des LC-Displays&lt;br /&gt;
* dlcdPollInterval -&amp;gt; Zeitintervall, nach dem FHEM versucht, die Daten zu aktualisieren&lt;br /&gt;
* dlcdLine1 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %1% text: %2%&lt;br /&gt;
* dlcdLine2 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %3% text: %4%&lt;br /&gt;
* dlcdLine3 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %5% text: %6%&lt;br /&gt;
* dlcdLine4 -&amp;gt; Formatvorlage für LCD-Zeile Text: %7% text: %8%&lt;br /&gt;
* dlcdLine5 -&amp;gt; Formatvorlage für LCD-Zeile Text: %11% text: %12%&lt;br /&gt;
* dlcdVal1 -&amp;gt; Quelle für den Wert %1% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal2 -&amp;gt; Quelle für den Wert %2% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal3 -&amp;gt; Quelle für den Wert %3% im Format: FhemDev:reading&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20 -&amp;gt; Quelle für den Wert %12% im Format: FhemDev:reading&lt;br /&gt;
&lt;br /&gt;
* dlcdTriggerCmd -&amp;gt; Fhem-Befehl zum Schreiben einer LCD-Zeile, z.B.: &amp;lt;code&amp;gt;set lcd_wand writeXY 0,%L%,20,1 %T%&amp;lt;/code&amp;gt;&lt;br /&gt;
* dlcdVal1formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal2formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal3formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
dlcdVal .. formatnum setzen die Anzahl Dezimalstellen fest, sowie ob ein + bzw. - Zeichen vorangestellt wird. Es funktioniert wie folgt:&lt;br /&gt;
&lt;br /&gt;
erste Ziffer: Gesamtzahl Ziffern in der Ausgabe.&lt;br /&gt;
zweite Ziffer: Anzahl fester Dezimalstellen&lt;br /&gt;
optional: +- an dritter Stelle&lt;br /&gt;
&lt;br /&gt;
Beispiele: &lt;br /&gt;
2+1 -&amp;gt; 1.1 9.0 0.4&lt;br /&gt;
4+2+- -&amp;gt; -12.34 +10.50&lt;br /&gt;
4+0+- -&amp;gt; -0012 +0010&lt;br /&gt;
&lt;br /&gt;
Die möglichen Optionen sind in einer Liste fest vorgegeben, um Fehleinstellungen zu vermeiden. Über manuellen Eintrag in der fhem-config können Eigenkreationen eingestellt werden, die nicht in der Liste enthalten sind (zB. 10+2+-).&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
* dlcdVal1formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal2formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal3formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
&lt;br /&gt;
* dlcdBlankspaceReplace -&amp;gt; Leerzeichen wird im dlcdTriggerCmd durch diesen attr-Wert ersetzt. z.B.: \\x20 oder \\x{10}&lt;br /&gt;
* dlcdReplaceRegex -&amp;gt; beliebige ersetzung von zeichen, kommagetrennte paare mit = zeichen, zB.: ä=\\xE1,ö=\\xEF,ü=\\xF5,Ä=\\xE1,Ö=\\xEF,Ü=\\xF5,ß=\\xE2,°=\\x{DF}, Unicode-Beispiel: \N{U+code}, zB \N{U+0041}und  \N{U+41} werden zu A und A&lt;br /&gt;
* dlcdPhysicalRows -&amp;gt; Anzahl physikalisch vorhandener Zeilen am Ausgabedisplay&lt;br /&gt;
* dlcdScrolling -&amp;gt; Zeilen automatisch scrollen, 1=an 0=aus&lt;br /&gt;
* dlcdDebugOutput -&amp;gt; zusätzliche readings für aktuelle Display-ausgabe zum testen der Scroll-Funktion&lt;br /&gt;
* dlcdClearLineCmd -&amp;gt; optional: command um lcd-zeile zu leeren (%L%=line 0-n), zB. Set lcd42 clear %L%&lt;br /&gt;
* dlcdClearAllCmd -&amp;gt; optional: command um lcd komplett zu leeren (nur bei scrolling)&lt;br /&gt;
* dlcdLineAddrMap -&amp;gt; alternative Zeilenadressierung. Default ist 0,1,2,3,4,5,6,7,8,9. Beispiel: 1,2,3 verwendet nur 2. bis 4. LCD-zeile und überspringt die erste.&lt;br /&gt;
* disable -&amp;gt; keine neuen schreibvorgänge&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
reset -&amp;gt;alle Readings zurücksetzen&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
Line1 -&amp;gt; Aktuelle Anzeige der Zeile 1&lt;br /&gt;
&lt;br /&gt;
Line2 -&amp;gt; Aktuelle Anzeige der Zeile 2&lt;br /&gt;
&lt;br /&gt;
Line3 -&amp;gt; Aktuelle Anzeige der Zeile 3&lt;br /&gt;
&lt;br /&gt;
Line4 -&amp;gt; Aktuelle Anzeige der Zeile 4&lt;br /&gt;
&lt;br /&gt;
Line5 -&amp;gt; Aktuelle Anzeige der Zeile 5&lt;br /&gt;
&lt;br /&gt;
== Spezielle Anzeigefunktionen ==&lt;br /&gt;
&lt;br /&gt;
Datum und Uhrzeit basieren aktuell auf der Systemzeit des FHEM-Servers. Eine Möglichkeit, als Zeitbasis den Timestamp eines FHEM-Readings zu verwenden, ist denkbar; wer das nutzen möchte, bitte im Forum melden.&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
* %date_Y% --&amp;gt; Jaheszahl 4-stellig&lt;br /&gt;
* %date_y% --&amp;gt; Jahreszahl 2-stellig&lt;br /&gt;
* %date_M% --&amp;gt; Monat als Zahl, 2-stellig&lt;br /&gt;
* %date_M_eng% --&amp;gt; Monat, Abkürzung englisch&lt;br /&gt;
* %date_M_ger% --&amp;gt; Monat, Abkürzung deutsch&lt;br /&gt;
* %date_D% --&amp;gt; Tag des Monats 2-stellig&lt;br /&gt;
* %date_WD% --&amp;gt; Wochentag 1-stellig im Format 0(So) ... 6(Sa)&lt;br /&gt;
* %date_WD_eng% --&amp;gt; Wochentag, Abkürzung englisch&lt;br /&gt;
* %date_WD_ger% --&amp;gt; Wochentag, Abkürzung deutsch&lt;br /&gt;
* %date_dmy% --&amp;gt; Datum im Format 25.08.2014&lt;br /&gt;
&lt;br /&gt;
=== Zeit ===&lt;br /&gt;
* %time_hms% --&amp;gt; HH:MM:SS Uhrzeit&lt;br /&gt;
* %time_h% --&amp;gt; Stunde&lt;br /&gt;
* %time_m% --&amp;gt; Minute&lt;br /&gt;
* %time_s% --&amp;gt; Sekunde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LCD-Abbild im Web-frontend ===&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&lt;br /&gt;
&lt;br /&gt;
Soll der Text linksbündig dargestellt werden, so kann dies folgendermaßen definiert werden:&amp;lt;br&amp;gt;&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat &amp;amp;lt;div style=&amp;quot;text-align: left&amp;quot;&amp;amp;gt;state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mathematische Werteberechnung ===&lt;br /&gt;
* Noch in Arbeit - Ideen sind willkommen ;) --&amp;gt; Forum&lt;br /&gt;
* To be continued&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Link2Forum|Topic=24519|LinkText=Thread}} im Forum, in dem dieses Modul vorgestellt wurde&lt;br /&gt;
* [https://waschto.eu/statusdisplay-mit-esp-easy-dlcd-und-fhem/ Projekt: Statusdisplay mit ESP Easy und DLCD]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=RPII2C&amp;diff=22975</id>
		<title>RPII2C</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=RPII2C&amp;diff=22975"/>
		<updated>2017-10-20T13:38:32Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: Die Seite wurde neu angelegt: „{{Infobox Modul |ModPurpose=RPII2C dient als Treiber um den I2C-Bus des Raspberry Pi ansteuern. |ModType=h |ModCmdRef=RPII2C |ModForumArea= |ModTechName=00_RPI…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=RPII2C dient als Treiber um den I2C-Bus des Raspberry Pi ansteuern.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=RPII2C&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModTechName=00_RPII2C.pm&lt;br /&gt;
|ModOwner=klausw}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
Das [[RPII2C]]-Modul stellt eine Treiberschicht für den I2C-Bus des Raspberry Pi bereit.&amp;lt;br&amp;gt;&lt;br /&gt;
So können weitere Komponenten, wie z.B. LCD Display, Temperatur Sensoren, usw. betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Module die z.B. auf diesem Modul aufbauen können: [[I2C_LCD]], [[I2C_BME280]], [[I2C_BH1750]], und weitere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22974</id>
		<title>I2C LCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22974"/>
		<updated>2017-10-20T13:31:11Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=I2C_LCD dient zum ansteuern von LCD Displays am I2C Bus.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=I2C_LCD&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModTechName=52_I2C_LCD.pm&lt;br /&gt;
|ModOwner=ntruchsess}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[I2C_LCD]]-Modul bietet die Möglichkeit LCD Displays am I2C-Bus anzusteuern.&lt;br /&gt;
Bei einem Rasperry Pi baut das Modul z.B. auf einer Instanz des Moduls [[RPII2C]] auf.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Benutzung ==&lt;br /&gt;
&lt;br /&gt;
Standardmässig wird der Text rechtsbündig ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Soll der Text linksbündig ausgegeben werden muss der optionale Parameter [,l] angegeben werden. (Achtung kleines &amp;quot;L&amp;quot;, keine &amp;quot;Eins&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;name&amp;gt; writeXY x-pos,y-pos,len&#039;&#039;&#039;[,l]&#039;&#039;&#039; &amp;lt;text to be displayed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22973</id>
		<title>I2C LCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22973"/>
		<updated>2017-10-20T13:29:08Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Hinweise zur Benutzung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=I2C_LCD dient zum ansteuern von LCD Displays am I2C Bus.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=I2C_LCD&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModTechName=52_I2C_LCD.pm&lt;br /&gt;
|ModOwner=ntruchsess}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[I2C_LCD]]-Modul bietet die Möglichkeit LCD Displays am I2C-Bus anzusteuern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Benutzung ==&lt;br /&gt;
&lt;br /&gt;
Standardmässig wird der Text rechtsbündig ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Soll der Text linksbündig ausgegeben werden muss der optionale Parameter [,l] angegeben werden. (Achtung kleines &amp;quot;L&amp;quot;, keine &amp;quot;Eins&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;name&amp;gt; writeXY x-pos,y-pos,len&#039;&#039;&#039;[,l]&#039;&#039;&#039; &amp;lt;text to be displayed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22972</id>
		<title>I2C LCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=I2C_LCD&amp;diff=22972"/>
		<updated>2017-10-20T13:28:35Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: Die Seite wurde neu angelegt: „{{Infobox Modul |ModPurpose=I2C_LCD dient zum ansteuern von LCD Displays am I2C Bus. |ModType=h |ModCmdRef=I2C_LCD |ModForumArea= |ModTechName=52_I2C_LCD.pm |M…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=I2C_LCD dient zum ansteuern von LCD Displays am I2C Bus.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=I2C_LCD&lt;br /&gt;
|ModForumArea=&lt;br /&gt;
|ModTechName=52_I2C_LCD.pm&lt;br /&gt;
|ModOwner=ntruchsess}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[I2C_LCD]]-Modul bietet die Möglichkeit LCD Displays am I2C-Bus anzusteuern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Benutzung ==&lt;br /&gt;
&lt;br /&gt;
Standardmässig wird der Text rechtsbündig ausgegeben.&lt;br /&gt;
Soll der Text linksbündig ausgegeben werden muss der optionale Parameter [,l] angegeben werden. (Achtung kleines &amp;quot;L&amp;quot;, keine &amp;quot;Eins&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;name&amp;gt; writeXY x-pos,y-pos,len&#039;&#039;&#039;[,l]&#039;&#039;&#039; &amp;lt;text to be displayed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22971</id>
		<title>DLCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22971"/>
		<updated>2017-10-20T13:10:02Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Daten sammeln und formatiert auf LCD ausgeben&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModCmdRef= ---- noch nicht Teil von FHEM ----&lt;br /&gt;
|ModForumArea=Codeschnipsel&lt;br /&gt;
|ModTechName=39_DLCD.pm&lt;br /&gt;
|ModOwner=epsrw1 ([http://forum.fhem.de/index.php?action=profile;u=6340 Forum] / [[Benutzer Diskussion:Epsrw1|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das [[DLCD]]-Modul bietet eine einfache Möglichkeit, Daten zu sammeln und für die Anzeige auf einem seriellen LCD aufzubereiten.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Diese Wiki-Seite beschreibt den Versionsstand 2.0 des DLCD-Moduls.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thread im {{Link2Forum|Topic=24519|LinkText=Fhem-Forum}} mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
[[Datei:dok39_DLCD.jpg|mini|Funktionsweise]]&lt;br /&gt;
&lt;br /&gt;
DLCD bietet als kleines Helferlein die Möglichkeit, Textzeilen eines LCD Displays als Readings vorzubereiten und mit Daten frei konfigurierbarer Readings zu befüllen.&lt;br /&gt;
DLCD baut z.B. auf einer Instanz des Moduls [[I2C_LCD]] auf.&lt;br /&gt;
&lt;br /&gt;
Jede Zeile wird als Attr vordefiniert, und mit Platzhaltern (z.B.: %1%) für die einzutragenden Werte versehen.&lt;br /&gt;
&lt;br /&gt;
Die Liste aller einzulesenden Devices:Readings wird in einem attr eingestellt. Das Modul prüft dann regelmäßig (attr: poll interval) die Daten der Fhem-Devices &lt;br /&gt;
und aktualisiert dann die Anzeige sobald sich einer der Werte geändert hat.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich können Zahlen einfach über attr formatiert werden (Kommastellen, Rundung, Anzeige von + und - Zeichen).&lt;br /&gt;
&lt;br /&gt;
Eine Reihe von Platzhaltern ermöglicht das Einsetzen von Datum und Zeit-Werten in die Ausgabezeilen (zB Minute einzeln, Wochentag, Datum, ....)&lt;br /&gt;
&lt;br /&gt;
Die über attr einschaltbare Rollierfunktion verschiebt die Zeilen bei jedem Update um eine Ziffer nach oben. So läßt sich zB eine wechselanzeige auf einem einzeiligen Display realisieren.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Ausgabe auf das LCD erfolgt jeweils immer dann wenn eine Änderung der Daten festgestellt wird, auf beliebiges konfigurierbares Device. Zum beispiel I2C LCD über FHEM, oder auch über shell-command für nicht von FHEM unterstützte displays.&lt;br /&gt;
&lt;br /&gt;
Manche Displays können Leerzeichen oder Umlaute nicht richtig wiedergeben. Daher kann DLCD über attr eingestellte Ersetzungen vornehmen, bevor die Daten an das LCD-device übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Um die Einrichtung zu erleichtern, kann man mit dem attr dlcdDebugOutput die jeweils an das Device abgesetzten Befehle als &#039;&#039;reading&#039;&#039; ausgeben lassen. &lt;br /&gt;
&lt;br /&gt;
Mit stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4 kann man sich ein Abbild des Displayinhaltes im Web-frontend anzeigen lassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:dlcd_stateformat.png|mini|Frontend-Beispiel]]&lt;br /&gt;
&lt;br /&gt;
== Define ==&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; DLCD &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In der Basisversion wurde Number::Format von cpan benötigt. Dies ist ab v. 1.1. nicht mehr der Fall.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
Alle Attribute sind auch in fhem durch das Kommando get attrHelp &amp;lt;varname&amp;gt; erklärt, für&#039;s &amp;quot;schnelle Nachschauen zwischendurch&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* dlcdRows -&amp;gt; Anzahl Datenzeilen (kann mehr als am Display sein mit eingeschaltetem Scrolling)&lt;br /&gt;
* dlcdCols -&amp;gt; Anzahl Spalten des LC-Displays&lt;br /&gt;
* dlcdPollInterval -&amp;gt; Zeitintervall, nach dem FHEM versucht, die Daten zu aktualisieren&lt;br /&gt;
* dlcdLine1 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %1% text: %2%&lt;br /&gt;
* dlcdLine2 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %3% text: %4%&lt;br /&gt;
* dlcdLine3 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %5% text: %6%&lt;br /&gt;
* dlcdLine4 -&amp;gt; Formatvorlage für LCD-Zeile Text: %7% text: %8%&lt;br /&gt;
* dlcdLine5 -&amp;gt; Formatvorlage für LCD-Zeile Text: %11% text: %12%&lt;br /&gt;
* dlcdVal1 -&amp;gt; Quelle für den Wert %1% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal2 -&amp;gt; Quelle für den Wert %2% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal3 -&amp;gt; Quelle für den Wert %3% im Format: FhemDev:reading&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20 -&amp;gt; Quelle für den Wert %12% im Format: FhemDev:reading&lt;br /&gt;
&lt;br /&gt;
* dlcdTriggerCmd -&amp;gt; Fhem-Befehl zum Schreiben einer LCD-Zeile, z.B.: &amp;lt;code&amp;gt;set lcd_wand writeXY 0,%L%,20,1 %T%&amp;lt;/code&amp;gt;&lt;br /&gt;
* dlcdVal1formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal2formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal3formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
dlcdVal .. formatnum setzen die Anzahl Dezimalstellen fest, sowie ob ein + bzw. - Zeichen vorangestellt wird. Es funktioniert wie folgt:&lt;br /&gt;
&lt;br /&gt;
erste Ziffer: Gesamtzahl Ziffern in der Ausgabe.&lt;br /&gt;
zweite Ziffer: Anzahl fester Dezimalstellen&lt;br /&gt;
optional: +- an dritter Stelle&lt;br /&gt;
&lt;br /&gt;
Beispiele: &lt;br /&gt;
2+1 -&amp;gt; 1.1 9.0 0.4&lt;br /&gt;
4+2+- -&amp;gt; -12.34 +10.50&lt;br /&gt;
4+0+- -&amp;gt; -0012 +0010&lt;br /&gt;
&lt;br /&gt;
Die möglichen Optionen sind in einer Liste fest vorgegeben, um Fehleinstellungen zu vermeiden. Über manuellen Eintrag in der fhem-config können Eigenkreationen eingestellt werden, die nicht in der Liste enthalten sind (zB. 10+2+-).&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
* dlcdVal1formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal2formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal3formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
&lt;br /&gt;
* dlcdBlankspaceReplace -&amp;gt; Leerzeichen wird im dlcdTriggerCmd durch diesen attr-Wert ersetzt. z.B.: \\x20 oder \\x{10}&lt;br /&gt;
* dlcdReplaceRegex -&amp;gt; beliebige ersetzung von zeichen, kommagetrennte paare mit = zeichen, zB.: ä=\\xE1,ö=\\xEF,ü=\\xF5,Ä=\\xE1,Ö=\\xEF,Ü=\\xF5,ß=\\xE2,°=\\x{DF}, Unicode-Beispiel: \N{U+code}, zB \N{U+0041}und  \N{U+41} werden zu A und A&lt;br /&gt;
* dlcdPhysicalRows -&amp;gt; Anzahl physikalisch vorhandener Zeilen am Ausgabedisplay&lt;br /&gt;
* dlcdScrolling -&amp;gt; Zeilen automatisch scrollen, 1=an 0=aus&lt;br /&gt;
* dlcdDebugOutput -&amp;gt; zusätzliche readings für aktuelle Display-ausgabe zum testen der Scroll-Funktion&lt;br /&gt;
* dlcdClearLineCmd -&amp;gt; optional: command um lcd-zeile zu leeren (%L%=line 0-n), zB. Set lcd42 clear %L%&lt;br /&gt;
* dlcdClearAllCmd -&amp;gt; optional: command um lcd komplett zu leeren (nur bei scrolling)&lt;br /&gt;
* dlcdLineAddrMap -&amp;gt; alternative Zeilenadressierung. Default ist 0,1,2,3,4,5,6,7,8,9. Beispiel: 1,2,3 verwendet nur 2. bis 4. LCD-zeile und überspringt die erste.&lt;br /&gt;
* disable -&amp;gt; keine neuen schreibvorgänge&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
reset -&amp;gt;alle Readings zurücksetzen&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
Line1 -&amp;gt; Aktuelle Anzeige der Zeile 1&lt;br /&gt;
&lt;br /&gt;
Line2 -&amp;gt; Aktuelle Anzeige der Zeile 2&lt;br /&gt;
&lt;br /&gt;
Line3 -&amp;gt; Aktuelle Anzeige der Zeile 3&lt;br /&gt;
&lt;br /&gt;
Line4 -&amp;gt; Aktuelle Anzeige der Zeile 4&lt;br /&gt;
&lt;br /&gt;
Line5 -&amp;gt; Aktuelle Anzeige der Zeile 5&lt;br /&gt;
&lt;br /&gt;
== Spezielle Anzeigefunktionen ==&lt;br /&gt;
&lt;br /&gt;
Datum und Uhrzeit basieren aktuell auf der Systemzeit des FHEM-Servers. Eine Möglichkeit, als Zeitbasis den Timestamp eines FHEM-Readings zu verwenden, ist denkbar; wer das nutzen möchte, bitte im Forum melden.&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
* %date_Y% --&amp;gt; Jaheszahl 4-stellig&lt;br /&gt;
* %date_y% --&amp;gt; Jahreszahl 2-stellig&lt;br /&gt;
* %date_M% --&amp;gt; Monat als Zahl, 2-stellig&lt;br /&gt;
* %date_M_eng% --&amp;gt; Monat, Abkürzung englisch&lt;br /&gt;
* %date_M_ger% --&amp;gt; Monat, Abkürzung deutsch&lt;br /&gt;
* %date_D% --&amp;gt; Tag des Monats 2-stellig&lt;br /&gt;
* %date_WD% --&amp;gt; Wochentag 1-stellig im Format 0(So) ... 6(Sa)&lt;br /&gt;
* %date_WD_eng% --&amp;gt; Wochentag, Abkürzung englisch&lt;br /&gt;
* %date_WD_ger% --&amp;gt; Wochentag, Abkürzung deutsch&lt;br /&gt;
* %date_dmy% --&amp;gt; Datum im Format 25.08.2014&lt;br /&gt;
&lt;br /&gt;
=== Zeit ===&lt;br /&gt;
* %time_hms% --&amp;gt; HH:MM:SS Uhrzeit&lt;br /&gt;
* %time_h% --&amp;gt; Stunde&lt;br /&gt;
* %time_m% --&amp;gt; Minute&lt;br /&gt;
* %time_s% --&amp;gt; Sekunde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LCD-Abbild im Web-frontend ===&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&lt;br /&gt;
&lt;br /&gt;
=== Mathematische Werteberechnung ===&lt;br /&gt;
* Noch in Arbeit - Ideen sind willkommen ;) --&amp;gt; Forum&lt;br /&gt;
* To be continued&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Link2Forum|Topic=24519|LinkText=Thread}} im Forum, in dem dieses Modul vorgestellt wurde&lt;br /&gt;
* [https://waschto.eu/statusdisplay-mit-esp-easy-dlcd-und-fhem/ Projekt: Statusdisplay mit ESP Easy und DLCD]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22970</id>
		<title>DLCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22970"/>
		<updated>2017-10-20T13:08:59Z</updated>

		<summary type="html">&lt;p&gt;Markus1407: /* Beschreibung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Daten sammeln und formatiert auf LCD ausgeben&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModCmdRef= ---- noch nicht Teil von FHEM ----&lt;br /&gt;
|ModForumArea=Codeschnipsel&lt;br /&gt;
|ModTechName=39_DLCD.pm&lt;br /&gt;
|ModOwner=epsrw1 ([http://forum.fhem.de/index.php?action=profile;u=6340 Forum] / [[Benutzer Diskussion:Epsrw1|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das [[DLCD]]-Modul bietet eine einfache Möglichkeit, Daten zu sammeln und für die Anzeige auf einem seriellen LCD aufzubereiten.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Diese Wiki-Seite beschreibt den Versionsstand 2.0 des DLCD-Moduls.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thread im {{Link2Forum|Topic=24519|LinkText=Fhem-Forum}} mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
[[Datei:dok39_DLCD.jpg|mini|Funktionsweise]]&lt;br /&gt;
&lt;br /&gt;
DLCD bietet als kleines Helferlein die Möglichkeit, Textzeilen eines LCD Displays als Readings vorzubereiten und mit Daten frei konfigurierbarer Readings zu befüllen.&lt;br /&gt;
DLCD baut z.B. auf einer Instanz des Moduls I2C_LCD auf.&lt;br /&gt;
&lt;br /&gt;
Jede Zeile wird als Attr vordefiniert, und mit Platzhaltern (z.B.: %1%) für die einzutragenden Werte versehen.&lt;br /&gt;
&lt;br /&gt;
Die Liste aller einzulesenden Devices:Readings wird in einem attr eingestellt. Das Modul prüft dann regelmäßig (attr: poll interval) die Daten der Fhem-Devices &lt;br /&gt;
und aktualisiert dann die Anzeige sobald sich einer der Werte geändert hat.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich können Zahlen einfach über attr formatiert werden (Kommastellen, Rundung, Anzeige von + und - Zeichen).&lt;br /&gt;
&lt;br /&gt;
Eine Reihe von Platzhaltern ermöglicht das Einsetzen von Datum und Zeit-Werten in die Ausgabezeilen (zB Minute einzeln, Wochentag, Datum, ....)&lt;br /&gt;
&lt;br /&gt;
Die über attr einschaltbare Rollierfunktion verschiebt die Zeilen bei jedem Update um eine Ziffer nach oben. So läßt sich zB eine wechselanzeige auf einem einzeiligen Display realisieren.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Ausgabe auf das LCD erfolgt jeweils immer dann wenn eine Änderung der Daten festgestellt wird, auf beliebiges konfigurierbares Device. Zum beispiel I2C LCD über FHEM, oder auch über shell-command für nicht von FHEM unterstützte displays.&lt;br /&gt;
&lt;br /&gt;
Manche Displays können Leerzeichen oder Umlaute nicht richtig wiedergeben. Daher kann DLCD über attr eingestellte Ersetzungen vornehmen, bevor die Daten an das LCD-device übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Um die Einrichtung zu erleichtern, kann man mit dem attr dlcdDebugOutput die jeweils an das Device abgesetzten Befehle als &#039;&#039;reading&#039;&#039; ausgeben lassen. &lt;br /&gt;
&lt;br /&gt;
Mit stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4 kann man sich ein Abbild des Displayinhaltes im Web-frontend anzeigen lassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:dlcd_stateformat.png|mini|Frontend-Beispiel]]&lt;br /&gt;
&lt;br /&gt;
== Define ==&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; DLCD &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In der Basisversion wurde Number::Format von cpan benötigt. Dies ist ab v. 1.1. nicht mehr der Fall.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
Alle Attribute sind auch in fhem durch das Kommando get attrHelp &amp;lt;varname&amp;gt; erklärt, für&#039;s &amp;quot;schnelle Nachschauen zwischendurch&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* dlcdRows -&amp;gt; Anzahl Datenzeilen (kann mehr als am Display sein mit eingeschaltetem Scrolling)&lt;br /&gt;
* dlcdCols -&amp;gt; Anzahl Spalten des LC-Displays&lt;br /&gt;
* dlcdPollInterval -&amp;gt; Zeitintervall, nach dem FHEM versucht, die Daten zu aktualisieren&lt;br /&gt;
* dlcdLine1 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %1% text: %2%&lt;br /&gt;
* dlcdLine2 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %3% text: %4%&lt;br /&gt;
* dlcdLine3 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %5% text: %6%&lt;br /&gt;
* dlcdLine4 -&amp;gt; Formatvorlage für LCD-Zeile Text: %7% text: %8%&lt;br /&gt;
* dlcdLine5 -&amp;gt; Formatvorlage für LCD-Zeile Text: %11% text: %12%&lt;br /&gt;
* dlcdVal1 -&amp;gt; Quelle für den Wert %1% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal2 -&amp;gt; Quelle für den Wert %2% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal3 -&amp;gt; Quelle für den Wert %3% im Format: FhemDev:reading&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20 -&amp;gt; Quelle für den Wert %12% im Format: FhemDev:reading&lt;br /&gt;
&lt;br /&gt;
* dlcdTriggerCmd -&amp;gt; Fhem-Befehl zum Schreiben einer LCD-Zeile, z.B.: &amp;lt;code&amp;gt;set lcd_wand writeXY 0,%L%,20,1 %T%&amp;lt;/code&amp;gt;&lt;br /&gt;
* dlcdVal1formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal2formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal3formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
dlcdVal .. formatnum setzen die Anzahl Dezimalstellen fest, sowie ob ein + bzw. - Zeichen vorangestellt wird. Es funktioniert wie folgt:&lt;br /&gt;
&lt;br /&gt;
erste Ziffer: Gesamtzahl Ziffern in der Ausgabe.&lt;br /&gt;
zweite Ziffer: Anzahl fester Dezimalstellen&lt;br /&gt;
optional: +- an dritter Stelle&lt;br /&gt;
&lt;br /&gt;
Beispiele: &lt;br /&gt;
2+1 -&amp;gt; 1.1 9.0 0.4&lt;br /&gt;
4+2+- -&amp;gt; -12.34 +10.50&lt;br /&gt;
4+0+- -&amp;gt; -0012 +0010&lt;br /&gt;
&lt;br /&gt;
Die möglichen Optionen sind in einer Liste fest vorgegeben, um Fehleinstellungen zu vermeiden. Über manuellen Eintrag in der fhem-config können Eigenkreationen eingestellt werden, die nicht in der Liste enthalten sind (zB. 10+2+-).&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
* dlcdVal1formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal2formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal3formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
&lt;br /&gt;
* dlcdBlankspaceReplace -&amp;gt; Leerzeichen wird im dlcdTriggerCmd durch diesen attr-Wert ersetzt. z.B.: \\x20 oder \\x{10}&lt;br /&gt;
* dlcdReplaceRegex -&amp;gt; beliebige ersetzung von zeichen, kommagetrennte paare mit = zeichen, zB.: ä=\\xE1,ö=\\xEF,ü=\\xF5,Ä=\\xE1,Ö=\\xEF,Ü=\\xF5,ß=\\xE2,°=\\x{DF}, Unicode-Beispiel: \N{U+code}, zB \N{U+0041}und  \N{U+41} werden zu A und A&lt;br /&gt;
* dlcdPhysicalRows -&amp;gt; Anzahl physikalisch vorhandener Zeilen am Ausgabedisplay&lt;br /&gt;
* dlcdScrolling -&amp;gt; Zeilen automatisch scrollen, 1=an 0=aus&lt;br /&gt;
* dlcdDebugOutput -&amp;gt; zusätzliche readings für aktuelle Display-ausgabe zum testen der Scroll-Funktion&lt;br /&gt;
* dlcdClearLineCmd -&amp;gt; optional: command um lcd-zeile zu leeren (%L%=line 0-n), zB. Set lcd42 clear %L%&lt;br /&gt;
* dlcdClearAllCmd -&amp;gt; optional: command um lcd komplett zu leeren (nur bei scrolling)&lt;br /&gt;
* dlcdLineAddrMap -&amp;gt; alternative Zeilenadressierung. Default ist 0,1,2,3,4,5,6,7,8,9. Beispiel: 1,2,3 verwendet nur 2. bis 4. LCD-zeile und überspringt die erste.&lt;br /&gt;
* disable -&amp;gt; keine neuen schreibvorgänge&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
reset -&amp;gt;alle Readings zurücksetzen&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
Line1 -&amp;gt; Aktuelle Anzeige der Zeile 1&lt;br /&gt;
&lt;br /&gt;
Line2 -&amp;gt; Aktuelle Anzeige der Zeile 2&lt;br /&gt;
&lt;br /&gt;
Line3 -&amp;gt; Aktuelle Anzeige der Zeile 3&lt;br /&gt;
&lt;br /&gt;
Line4 -&amp;gt; Aktuelle Anzeige der Zeile 4&lt;br /&gt;
&lt;br /&gt;
Line5 -&amp;gt; Aktuelle Anzeige der Zeile 5&lt;br /&gt;
&lt;br /&gt;
== Spezielle Anzeigefunktionen ==&lt;br /&gt;
&lt;br /&gt;
Datum und Uhrzeit basieren aktuell auf der Systemzeit des FHEM-Servers. Eine Möglichkeit, als Zeitbasis den Timestamp eines FHEM-Readings zu verwenden, ist denkbar; wer das nutzen möchte, bitte im Forum melden.&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
* %date_Y% --&amp;gt; Jaheszahl 4-stellig&lt;br /&gt;
* %date_y% --&amp;gt; Jahreszahl 2-stellig&lt;br /&gt;
* %date_M% --&amp;gt; Monat als Zahl, 2-stellig&lt;br /&gt;
* %date_M_eng% --&amp;gt; Monat, Abkürzung englisch&lt;br /&gt;
* %date_M_ger% --&amp;gt; Monat, Abkürzung deutsch&lt;br /&gt;
* %date_D% --&amp;gt; Tag des Monats 2-stellig&lt;br /&gt;
* %date_WD% --&amp;gt; Wochentag 1-stellig im Format 0(So) ... 6(Sa)&lt;br /&gt;
* %date_WD_eng% --&amp;gt; Wochentag, Abkürzung englisch&lt;br /&gt;
* %date_WD_ger% --&amp;gt; Wochentag, Abkürzung deutsch&lt;br /&gt;
* %date_dmy% --&amp;gt; Datum im Format 25.08.2014&lt;br /&gt;
&lt;br /&gt;
=== Zeit ===&lt;br /&gt;
* %time_hms% --&amp;gt; HH:MM:SS Uhrzeit&lt;br /&gt;
* %time_h% --&amp;gt; Stunde&lt;br /&gt;
* %time_m% --&amp;gt; Minute&lt;br /&gt;
* %time_s% --&amp;gt; Sekunde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LCD-Abbild im Web-frontend ===&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&lt;br /&gt;
&lt;br /&gt;
=== Mathematische Werteberechnung ===&lt;br /&gt;
* Noch in Arbeit - Ideen sind willkommen ;) --&amp;gt; Forum&lt;br /&gt;
* To be continued&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Link2Forum|Topic=24519|LinkText=Thread}} im Forum, in dem dieses Modul vorgestellt wurde&lt;br /&gt;
* [https://waschto.eu/statusdisplay-mit-esp-easy-dlcd-und-fhem/ Projekt: Statusdisplay mit ESP Easy und DLCD]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Markus1407</name></author>
	</entry>
</feed>