<?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=Mahowi</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=Mahowi"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Mahowi"/>
	<updated>2026-04-13T04:32:31Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wetter_und_Wettervorhersagen&amp;diff=34581</id>
		<title>Wetter und Wettervorhersagen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wetter_und_Wettervorhersagen&amp;diff=34581"/>
		<updated>2021-01-11T13:56:52Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Eigene Wetterdaten hochladen */ Link zur API-Doku bei archive.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wetterdaten und Wettervorhersagen können auf verschiedene Weise in FHEM eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
== Yahoo-Wetter ==&lt;br /&gt;
Für die einfache Einbindung des Yahoo-Wetters gibt es das spezielle Modul [[Weather]].&lt;br /&gt;
Da die Yahoo Weather API zum 03.01.2019 abgeschaltet wurde, kann Weather keine Wetterdaten von Yahoo mehr beziehen!&lt;br /&gt;
&lt;br /&gt;
== Unwetterzentrale ==&lt;br /&gt;
Informationen der Seite(n) Unwetterzentrale.de können mit Hilfe des Moduls [[UWZ]] eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
== Modul OPENWEATHER ==&lt;br /&gt;
Das Modul [[OPENWEATHER]] extrahiert Wetterdaten über die &amp;quot;openweather&amp;quot;-Schnittstelle (API) von www.wetter.com. &lt;br /&gt;
*Vorschau-Zeitraum: 3 Tage&lt;br /&gt;
*Vorschau-Interval: 6:00, 11:00, 17:00, 23:00&lt;br /&gt;
*Aktuelle Daten: keine&lt;br /&gt;
&lt;br /&gt;
== Modul PROPLANTA ==&lt;br /&gt;
Das Modul [[PROPLANTA]] extrahiert Wetterdaten von der Website www.proplanta.de. (keine API)&lt;br /&gt;
*Vorschau-Zeitraum: 12 Tage&lt;br /&gt;
*Vorschau-Interval: 3 h&lt;br /&gt;
*Aktuelle Daten: jede volle Stunde&lt;br /&gt;
&lt;br /&gt;
== Modul WWO ==&lt;br /&gt;
Das Modul extrahiert Wetterdaten über die (alte) API von worldweatheronline.com&lt;br /&gt;
*Vorschau-Zeitraum: ?? Tage&amp;lt;BR&amp;gt;&lt;br /&gt;
*Vorschau-Interval: ??&amp;lt;br&amp;gt;&lt;br /&gt;
*Aktuelle Daten: ??&lt;br /&gt;
&lt;br /&gt;
== Deutscher Wetterdienst (DWD) ==&lt;br /&gt;
&lt;br /&gt;
=== Modul DWD_OpenData ===&lt;br /&gt;
Das Modul [[DWD_OpenData]] stellt einen Teil der frei verfügbaren Daten des Deutschen Wetterdienstes (DWD) bereit, die über den [https://www.dwd.de/DE/leistungen/opendata/opendata.html Open Data Server] abgerufen werden können (diverse Datenformate, keine API). &lt;br /&gt;
*Vorschau-Zeitraum: 10 Tage&lt;br /&gt;
*Vorschau-Interval: datenabhängig, viele mit 3 h&lt;br /&gt;
*Vorschau-Orte: national und international&lt;br /&gt;
*Aktuelle Daten: nicht implementiert&lt;br /&gt;
*Wetterwarnungen: für Landkreise und Gemeinden in deutsch oder englisch&lt;br /&gt;
&lt;br /&gt;
Es gibt zum Modul auch einen Weblink für [[FHEMWEB]], der 2 Icons pro Tag in horizontaler Form darstellt. Die Anzahl der insgesamt dargestellten Icons ist konfigurierbar. Liegen Wetterwarnungen vor, wird zusätzlich ein Warnsymbol angezeigt, über das man per Klick weitere Details zur Wetterwarnung abrufen kann.&lt;br /&gt;
&lt;br /&gt;
[[DWD_OpenData|Weitere Details und Installationsbeschreibung]]&lt;br /&gt;
&lt;br /&gt;
=== Wetterwarnungen als Karte ===&lt;br /&gt;
Der Deutsche Wetterdienst [http://www.dwd.de DWD] stellt neben diversen Wetterdaten auch Wetterwarnungen in Bildform bereit. Diese können sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden - das ist zwar nicht die schönste Form, aber die schnellste.&lt;br /&gt;
&lt;br /&gt;
Dazu sucht man sich zuerst auf der [http://www.dwd.de/bvbw/appmanager/bvbw/dwdwwwDesktop?_nfpb=true&amp;amp;_pageLabel=_dwdwww_wetter_warnungen_warnungen&amp;amp;T92053gsbDocumentPath=BEA__Navigation%2FWetter__Warnungen%2FWarnungen.html%3F__nnn%3Dtrue&amp;amp;lastPageLabel=dwdwww_wetter_warnungen Warnungsseite des DWD] die eigene Region heraus (in der Karte durchklicken). Die gewünschte URL für Berlin Stadt ist z.B. &amp;lt;code&amp;gt;http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html#WS_ANCHOR_0&amp;lt;/code&amp;gt;. Das Anhängsel &amp;lt;code&amp;gt;#WS_ANCHOR_0&amp;lt;/code&amp;gt; kann man in der Konfiguration auch weglassen.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung in FHEM sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define dwd_warnmeldung weblink iframe http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html&lt;br /&gt;
attr dwd_warnmeldung group Wetterwarnungen (DWD)&lt;br /&gt;
attr dwd_warnmeldung htmlattr width=&amp;quot;100%&amp;quot; height=&amp;quot;300&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
attr dwd_warnmeldung room Wettervorhersage,Startseite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorhersage-Diagramm von YR ==&lt;br /&gt;
[http://www.yr.no YR] ist die Seite des norwegischen Wetterdiensts. Er ist zwar nur in Teilen auf Englisch (und gar nicht auf Deutsch) verfügbar, bietet aber sehr gute Wettervorhersagen - auch mit eigenen Vorhersagen für kleine Dörfer. Neben etlichen Detailinfos bietet YR eine sehr schicke 48h-Vorhersage-Grafik. Diese kann sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu geht man auf die [http://www.yr.no Startseite von YR] und gibt in das Suchfeld den Namen seines Dörfchens ein - die Ergebnissliste kann ziemlich lang werden, sodass man evtl. sehr genau schauen muss, welches das eigene Kaff ist - bei mir war es an 29. Stelle... ;-) Auf der gewünschten Seite gibt es einen Unterpunkt &amp;quot;Hour by hour&amp;quot;, wo sich die besagte Grafik findet. Hier kopiert man sich einfach die URL der Grafik.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung in FHEM sieht dann bspw. wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wetter_yr_Vorhersage weblink iframe http://www.yr.no/place/Germany/Berlin/Berlin/meteogram.png&lt;br /&gt;
attr Wetter_yr_Vorhersage group Wettervorhersage (yr)&lt;br /&gt;
attr Wetter_yr_Vorhersage htmlattr width=&amp;quot;100%&amp;quot; height=&amp;quot;300&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
attr Wetter_yr_Vorhersage room Wettervorhersage,Start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wetter von Weather Underground ==&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das (&amp;quot;offene&amp;quot;) API von Weather Underground wird derzeit (März 2019) &amp;quot;retired&amp;quot; = abgestellt, ist also künftig nicht mehr nutzbar! Den benötigten API-Key bekommen &amp;quot;nur noch&amp;quot; Betreiber einer Wetterstation, die diese bei wundergound registrieren und ihre Daten hochladen.}}&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die hier beschriebene Vorgehensweise ist etwas anspruchsvoller und somit eher für erfahrene FHEM-User geeignet.&lt;br /&gt;
&lt;br /&gt;
[http://www.wunderground.com/ Weather Underground] bietet eine sehr umfassende Sammlung aller möglichen offiziellen und privaten (aber teils sehr professionellen) Wetterstationen weltweit. Es besteht eine recht hohe Wahrscheinlichkeit, dass es in der eigenen Umgebung schon eine Wetterstation gibt. Anstatt nun selbst eine komplette Wetterstation aufzubauen, kann man alternativ auf die Daten der Nachbarstation zugreifen.&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Neben dem hier vorgestellten Abruf der Weather Underground-Daten mit [[HTTPMOD]] kann auf Weather Underground-Daten auch mit dem darauf spezialisierten Modul [http://fhem.de/commandref.html#Wunderground Wunderground] zugegriffen werden.}}&lt;br /&gt;
&lt;br /&gt;
Dazu sind grundsätzlich die folgenden Schritte notwendig:&lt;br /&gt;
* Finden der geeigneten Station&lt;br /&gt;
* Auswerten der XML-Daten&lt;br /&gt;
* Erstellen passender gplot-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Finden der geeigneten Station ===&lt;br /&gt;
Als erstes geht man auf die [http://www.wunderground.com Startseite von Weather Underground] und gibt in das Suchfeld den Namen seines Dörfchens oder der nächsten Stadt ein - für Berlin landet man bspw. auf Seite für &amp;quot;Berlin Alexanderplatz&amp;quot;. Es gibt aber manchmal sehr viele Wetterstationen in der direkten Umgebung. Diese findet man indem am auf &amp;quot;Change Station&amp;quot; klickt und sich eine passende Station aussucht. Nähere Infos (zB. zur verwendeten Hard- und Software) zu der gewählten Wetterstation erhält man, wenn man auf den Namen der Station klickt und dann auf &amp;quot;About this PWS&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Weather Underground stellt die Daten der Wetterstation auch über eine API als XML bereit, die wir auswerten können. Die entsprechende URL findet sich ebenfalls unter &amp;quot;About this PWS&amp;quot; unter &amp;quot;Download current conditions XML&amp;quot;. Für Berlin Prenzlauer Berg wäre dies z.B. &lt;br /&gt;
&amp;lt;code&amp;gt;http://api.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&amp;amp;format=XML&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entscheidend für die jeweilige Station ist der Teil nach &amp;quot;?=ID&amp;quot;, also in diesem Fall &amp;quot;IBERLIN15&amp;quot;. Dieser Teil des Links lässt sich leicht durch die ID einer anderen Station ersetzen und die Suche nach dem entsprechenden Link auf der Seite der Station bleibt erspart.&lt;br /&gt;
&lt;br /&gt;
=== Auswerten der XML-Daten ===&lt;br /&gt;
Die Auswertung der XML-Daten erfolgt via [[HTTPMOD]]. Da dies nicht ganz trivial ist, sind im Folgenden zuerst die wesentlichen Konfigurationsschritte exemplarisch beschrieben. Weiter unten findet sich dann die fertige vollständige Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Es erstes wird das Device HTTPMOD definiert (die 600 am Schluss ist der Aktualisierungszyklus in Sekunden, also alle 10 min):&lt;br /&gt;
:&amp;lt;code&amp;gt;define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann werden Attribute für alle Readings definiert:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date ... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird jedem Attribut ein Name zugewiesen (unter diesem Namen wird der Wert ins Log geschrieben):&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg readingsName_cloudiness cloudiness &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Schluss wird das Reading selbst definiert:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id=&amp;quot;NN&amp;quot; percent=&amp;quot;([\d\.]+) &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Konfiguration für alle von der API angebotenen Wetterwerte sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600&lt;br /&gt;
attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date readingsName_dewpointTemperature readingsName_fog readingsName_heatindex readingsName_humidity readingsName_pressure readingsName_solarRadiation readingsName_solarUV readingsName_temperature readingsName_time readingsName_windChill readingsName_windDegrees readingsName_windDirection readingsName_windGust readingsName_windSpeed readingsRegex_cloudiness readingsRegex_date readingsRegex_dewpointTemperature readingsRegex_fog readingsRegex_heatindex readingsRegex_humidity readingsRegex_pressure readingsRegex_solarRadiation readingsRegex_solarUV readingsRegex_temperature readingsRegex_time readingsRegex_windChill readingsRegex_windDegrees readingsRegex_windDirection readingsRegex_windGust readingsRegex_windSpeed&lt;br /&gt;
attr wetter_prenzelberg readingsName_cloudiness cloudiness&lt;br /&gt;
attr wetter_prenzelberg readingsName_date date&lt;br /&gt;
attr wetter_prenzelberg readingsName_dewpointTemperature dewpointTemperature&lt;br /&gt;
attr wetter_prenzelberg readingsName_fog fog&lt;br /&gt;
attr wetter_prenzelberg readingsName_heatindex heatindex&lt;br /&gt;
attr wetter_prenzelberg readingsName_humidity humidity&lt;br /&gt;
attr wetter_prenzelberg readingsName_pressure pressure&lt;br /&gt;
attr wetter_prenzelberg readingsName_solarRadiation solarRadiation&lt;br /&gt;
attr wetter_prenzelberg readingsName_solarUV solarUV&lt;br /&gt;
attr wetter_prenzelberg readingsName_temperature temperature&lt;br /&gt;
attr wetter_prenzelberg readingsName_time time&lt;br /&gt;
attr wetter_prenzelberg readingsName_windChill windChill&lt;br /&gt;
attr wetter_prenzelberg readingsName_windDegrees windDegrees&lt;br /&gt;
attr wetter_prenzelberg readingsName_windDirection windDirection&lt;br /&gt;
attr wetter_prenzelberg readingsName_windGust windGust&lt;br /&gt;
attr wetter_prenzelberg readingsName_windSpeed windSpeed&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id=&amp;quot;NN&amp;quot; percent=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_date date date&amp;quot; content=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_dewpointTemperature &amp;lt;dewpoint_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_fog fog id=&amp;quot;FOG&amp;quot; percent=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_heatindex &amp;lt;heat_index_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_humidity &amp;lt;relative_humidity&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_pressure &amp;lt;pressure_mb&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_solarRadiation &amp;lt;solar_radiation&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_solarUV &amp;lt;UV&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_temperature &amp;lt;temp_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_time time Zeit([\d\:]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windChill &amp;lt;windchill_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windDegrees &amp;lt;wind_degrees&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windDirection &amp;lt;wind_dir&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windGust &amp;lt;wind_gust_mph&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windSpeed &amp;lt;wind_mph&amp;gt;([\d\.]+)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hinweis: Nicht immer werden alle Werte geliefert (wenn keine Sonne, dann kein UV-Wert...). Im System-Log kann das als Fehler auftauchen, ist aber kein Problem.&lt;br /&gt;
&lt;br /&gt;
=== Erstellen passender gplot-Dateien ===&lt;br /&gt;
Um die ausgelesenen Werte als Graphen darstellen zu können müssen eigene gplot-Dateien erstellt werden. Eine grundsätzliche Anleitung dazu findet sich unter [[Creating Plots]]. Deshalb sollen hier nur Beispiele für die eigentlichen gplot-Dateien vorgestellt werden. Beispiele sollten sowohl für [[FileLog]] wie [[DbLog]] funktionieren.&lt;br /&gt;
&lt;br /&gt;
Temperatur und Luftfeuchte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Temperature in C&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Humidity (%)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:temperature\x3a::&lt;br /&gt;
#FileLog 4:windChill\x3a::&lt;br /&gt;
#FileLog 4:humidity\x3a::&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:temperature::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windChill::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:humidity::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Temperatur (C)&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Gefühlte Temperatur (C)&#039; ls l1 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Luftfeuchtigkeit (%)&#039; ls l2fill lw 0.2 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wind und Windrichtung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics (&amp;quot;Nord&amp;quot; 0, &amp;quot;Ost&amp;quot; 80, &amp;quot;S&amp;amp;#252;d&amp;quot; 180, &amp;quot;West&amp;quot; 270, &amp;quot;Nord&amp;quot; 360)&lt;br /&gt;
&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
set grid xtics ytics&lt;br /&gt;
&lt;br /&gt;
set yrange [0:20]&lt;br /&gt;
set y2range [0:360]&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Wind (mph)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Richtung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:windSpeed:0:&lt;br /&gt;
#FileLog 4:windGust:0:&lt;br /&gt;
#FileLog 4:windDegrees:0:&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windSpeed::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windGust::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windDegrees::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Wind (mph)&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Böen (mph)&#039; ls l1 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Windrichtung (°)&#039; ls l2fill lw 0.2 with points&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sonnenintensität und UV-Werte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics&lt;br /&gt;
&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
set grid xtics ytics&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Sonnenstrahlung (W/qm)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;UV&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:solarRadiation:0:&lt;br /&gt;
#FileLog 4:solarUV:0:&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:solarRadiation::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:solarUV::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strahlung&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;UV&#039; ls l1 lw 1.5 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Vergangene Daten abfragen ===&lt;br /&gt;
Ein konkretes vergangenes Datum der Wetterstation kann man übrigens auch abrufen - für den 28.11.2014 wäre dies bspw. &lt;br /&gt;
&amp;lt;code&amp;gt;http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&amp;amp;day=28&amp;amp;month=11&amp;amp;year=2014&amp;amp;graphspan=day&amp;amp;format=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Eigene Wetterdaten hochladen ===&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Unterstützung für das Modul gibt es im dazugehörigen {{Link2Forum|Topic=65587|LinkText=Forumsthread }}.}}&lt;br /&gt;
&lt;br /&gt;
Wer eigene Wetterdaten hochladen will, kann hierzu das Modul [http://fhem.de/commandref.html#WUup WUup] verwenden. Dazu benötigt man die Zugangsdaten (stationID und Paßwort) für eine eigene Wetterstation. Mit dem Modul können die meisten vom [http://web.archive.org/web/20180815041359/http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol PWS Upload Protocol] unterstützten Daten hochgeladen werden:&lt;br /&gt;
* Winddir - [0-360 momentane Windrichtung]&lt;br /&gt;
* Windspeedmph - [mph momentane Windgeschwindigkeit]&lt;br /&gt;
* Windgustmph - [mph aktuellen Böe, mit Software-spezifischem Zeitraum]&lt;br /&gt;
* Windgustdir - [0-360 mit Software-spezifischer Zeit]&lt;br /&gt;
* Windspdmph_avg2m - [mph durchschnittliche Windgeschwindigkeit innerhalb 2 Minuten]&lt;br /&gt;
* Winddir_avg2m - [0-360 durchschnittliche Windrichtung innerhalb 2 Minuten]&lt;br /&gt;
* Windgustmph_10m - [mph Böen der vergangenen 10 Minuten]&lt;br /&gt;
* Windgustdir_10m - [0-360 Richtung der Böen der letzten 10 Minuten]&lt;br /&gt;
* Feuchtigkeit - [% Außenfeuchtigkeit 0-100%]&lt;br /&gt;
* Dewptf- [F Taupunkt im Freien]&lt;br /&gt;
* Tempf - [F Außentemperatur]&lt;br /&gt;
* Rainin - [in Regen in der vergangenen Stunde]&lt;br /&gt;
* Dailyrainin - [in Regenmenge bisher heute]&lt;br /&gt;
* Baromin - [inHg barometrischer Druck]&lt;br /&gt;
* Soiltempf - [F Bodentemperatur]&lt;br /&gt;
* Bodenfeuchtigkeit - [%]&lt;br /&gt;
* Solarradiation - [W/m²]&lt;br /&gt;
* UV - [Index]&lt;br /&gt;
* AqPM2.5 - Feinstaub PM2,5 [µg/m³]&lt;br /&gt;
* AqPM10 - Feinstaub PM10 [µg/m³]&lt;br /&gt;
&lt;br /&gt;
Die Werte werden im Modul für Wunderground ins anglo-amerikanische System umgerechnet. Temperaturen werden also automatisch von °Celsius in Fahrenheit, Windgeschwindigkeiten von km/h in mph, mm in Inch und der barometrische Druck von hPa in inHg umgerechnet.&lt;br /&gt;
&lt;br /&gt;
== Wetternetzwerk auf wetter.com ==&lt;br /&gt;
Ein vollständiges Beispiel zur Nutzung der Informationen über die Regenmenge (Station 1445, Weinheim) von wetter.com ist in {{Link2Forum|Topic=39600|Message=332837|LinkText=diesem Forenbeitrag}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Wetter von netatmo ==&lt;br /&gt;
Das FHEM-Modul [[netatmo]] ermöglicht den Datenimport von privaten und öffentlichen netatmo Wetterstationen sowie den Abruf der in der Netatmo App verfügbaren Wettervorhersage. Eine Übersicht über die verfügbaren öffentlichen Stationen findet sich auf der Seite [http://www.netatmo.com/de-DE/weathermap Weathermap]. Die meisten öffentlichen Stationen liefern Temperatur, Luftfeuchte und Luftdruck, einige auch Wind, Regen und Daten zur Luftqualität (CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33610}} mit Sammlung und Beipielen von Internet-Links für die Anzeige von teilweise animierten Wetterbildern&lt;br /&gt;
* [http://bloglich.de/art/rpi/wetterdaten-auf-dem-raspberry-pi-in-fhem/ Beispiel in Blog(de)]&lt;br /&gt;
* [[HTTPMOD]]  [[Kategorie:Code Snippets]] [[Kategorie:HOWTOS]] [[Kategorie:Wetterstationen]] &amp;lt;!-- eigentlich eine &amp;quot;Hardware-Kategorie&amp;quot;, passt aber trotzdem --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=UConv&amp;diff=32793</id>
		<title>UConv</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=UConv&amp;diff=32793"/>
		<updated>2020-02-17T08:32:05Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Fehler in Infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Hilfsfunktionen zur modulübergreifenden Benutzung bei der Umrechnung von Einheiten.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModForumArea=FHEM Development&lt;br /&gt;
|ModTechName=UConv.pm&lt;br /&gt;
|ModOwner=Loredo ([http://forum.fhem.de/index.php?action=profile;u=1363 Forum] / [[Benutzer Diskussion:loredo|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
[[UConv]] soll modulübergreifend Funktionen bereitstellen, um verschiedene Einheiten umzurechnen. Es wird zur Zeit von dem [[HP1000|HP1000]] Modul verwendet.&lt;br /&gt;
&lt;br /&gt;
== Benutzung ==&lt;br /&gt;
Um die im Folgenden beschriebenen Funktionen zu nutzen, muss die Datei UConv.pm eingebunden werden. Ein Modulautor kann das durch eine &lt;br /&gt;
:&amp;lt;code&amp;gt;use UConv;&amp;lt;/code&amp;gt; &lt;br /&gt;
Anweisung in seinem Modul tun.&lt;br /&gt;
&lt;br /&gt;
Ein Endanwender sollte diese Anweisung in [[99 myUtils anlegen|99_myUtils]] einfügen. Die Einbindung über ein [[Notify]] mittels &amp;lt;code&amp;gt;global:INITIALIZED&amp;lt;/code&amp;gt; ist zu spät, da dieses Event erst nach dem Einlesen aller Konfigurationen kommt.&lt;br /&gt;
&lt;br /&gt;
Es stehen verschiedene Funktionen zur Verfügung, die alle über &amp;lt;code&amp;gt;UConv::&amp;lt;nowiki&amp;gt;&amp;lt;Funktionsname&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; aufgerufen werden können.&lt;br /&gt;
Die Datei UConv beinhaltet entsprechende Kommentare dafür, welche Einheiten eine Funktion genau umrechnet.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Development]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=UConv&amp;diff=32608</id>
		<title>UConv</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=UConv&amp;diff=32608"/>
		<updated>2020-02-04T10:28:26Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: &amp;quot;use Uconv&amp;quot; für Endanwender: Einbindung in 99_myUtils statt Notify (Forum #1020858)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Hilfsfunktionen zur modulübergreifenden Benutzung bei der Umrechnung von Einheiten.&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=intro &amp;lt;!-- no help section available --&amp;gt;&lt;br /&gt;
|ModForumArea=FHEM Development&lt;br /&gt;
|ModTechName=UConv.pm&lt;br /&gt;
|ModOwner=Loredo ([http://forum.fhem.de/index.php?action=profile;u=1363 Forum] / [[Benutzer Diskussion:loredo|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
[[UConv]] soll modulübergreifend Funktionen bereitstellen, um verschiedene Einheiten umzurechnen. Es wird zur Zeit von dem [[HP1000|HP1000]] Modul verwendet.&lt;br /&gt;
&lt;br /&gt;
== Benutzung ==&lt;br /&gt;
Um die im Folgenden beschriebenen Funktionen zu nutzen, muss die Datei UConv.pm eingebunden werden. Ein Modulautor kann das durch eine &lt;br /&gt;
:&amp;lt;code&amp;gt;use UConv;&amp;lt;/code&amp;gt; &lt;br /&gt;
Anweisung in seinem Modul tun.&lt;br /&gt;
&lt;br /&gt;
Ein Endanwender sollte diese Anweisung in [[99 myUtils anlegen|99_myUtils]] einfügen. Die Einbindung über ein [[Notify]] mittels &amp;lt;code&amp;gt;global:INITIALIZED&amp;lt;/code&amp;gt; ist zu spät, da dieses Event erst nach dem Einlesen aller Konfigurationen kommt.&lt;br /&gt;
&lt;br /&gt;
Es stehen verschiedene Funktionen zur Verfügung, die alle über &amp;lt;code&amp;gt;UConv::&amp;lt;nowiki&amp;gt;&amp;lt;Funktionsname&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; aufgerufen werden können.&lt;br /&gt;
Die Datei UConv beinhaltet entsprechende Kommentare dafür, welche Einheiten eine Funktion genau umrechnet.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Development]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=31172</id>
		<title>Junkers Therme Stetigregelung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=31172"/>
		<updated>2019-09-02T12:12:14Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Ziel dieses Projektes */ fixed typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Examples]]&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich)=&lt;br /&gt;
&lt;br /&gt;
Viele Heizungsthermen haben eine Regelung über einen Kontakt, an dem eine feste Spannung anliegt oder eben nicht anliegt. Also als Beispiel: 0V Heizung aus – 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit vom Rücklauf gesteuert. Umso niedriger die Steuerspannung desto später (tiefere Rücklauftemperatur) beginnt die Therme zu heizen. Bei der vorhandenen Junkertherme kann die Vorlauftemperatur nicht über die Steuerspannung eingestellt werden. &lt;br /&gt;
&lt;br /&gt;
==Ziel dieses Projektes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Keine Veränderung der Therme (Sicherheits-, Versicherungs-, Garantie-Gründe)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sicher: Für den Fall eines Defekts der automatischen Steuerung soll der alte Regler erhalten bleiben&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Erzeugen einer Spannung von 3-22 Volt (Simulation des bisherigen Raumtemperaturreglers)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf- und Rücklauftemperatur&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Günstig&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Geringe Energieaufnahme&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ansteuerung mittels Netzwerk&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Integration in FHEM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Umsetzung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin AVR-NET-IO-Board&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Software: Ethersex&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;kleine Zusatzplatine für die Spannungserzeugung (wird einfach parallel zu dem bestehenden Regler angeschlossen)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur mittels OneWire&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 1==&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_analoge_Anzeige.JPG|120px|right|thumb|Steuersignal]]&lt;br /&gt;
Da die Heizungsregelung eine sehr sensible Sache ist besonders bezüglich Frostschäden (beim Ausfall der automatischen Steuerung) und persönlicher Befindlichkeiten musste eine einfache und extrem ausfallsichere Kontrolleinheit her. Hierfür wird einfaches Drehspulmessinstrument verwendet. Anzeigewerte: 0V=Fehler, 3V=Heizung aus, 22V=Therme 100%.&lt;br /&gt;
Der alte Raumtemperaturregler ist weiterhin aktiv, momentan ist er auf 12°C Solltemperatur gestellt. Das bedeutet:&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, aktiviert der alte Raumtemperaturregler die Heizung bevor Frostschäden entstehen können.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, kann die Therme einfach durch einstellen einer neuen Solltemperatur aktiviert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Beide Fälle sind auf Grund von Ausfällen eines anderen FHEM-Systems im ersten Winter aufgetreten.&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 2==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:Junkers Therme Stetigregelung Signalverteiler.JPG|80px|right|thumb|Steuersignal]]&lt;br /&gt;
Die Leitung zu dem bisherigen Regler muss gesplittet werden. Hierfür die Heizung ausschalten (Sicherung auslösen) die Leitung auftrennen und einen Abzweig für die neue Regelung einfügen. Das Ganze kann mit einer Schmelzsicherung (für die 24V VCC Leitung) und einem 3poligem-Schalter (vollständiges Wegschalten der automatischen Regelung) versehen werden.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 3==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Netzwerk zu der Therme oder das Steuersignal zum Netzwerk ziehen. Das AVR-NET-IO-Board kann irgendwo in die Steuersignal-Leitung eingesetzt werden. Theoretisch kann auch die 24V Spannungsversorgung für den ursprünglichen Raumtemperaturregler  verwendet werden. Hier muss einfach ein DC/DC-Wandler eingesetzt werden. (Bitte Leistungsabgabe der Heizung und Leistungsaufnahme des AVR-NET-IO-Board  überprüfen)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Digital-to-Analog-Converter==&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358). Der LTC1257 wandelt (bei interner Referenzspannung) einen digital übermittelten Wert (über die Eingänge CLK, DIN und LOAD) in eine Spannung von 0-2,048V. Diese Spannung wird anschließend von dem LM358 erhöht. Die Elemente R1,R2, C1 und C2 gehören zur Grundbeschaltung des LTC1257. Mittels der Widerstände R3 und R4 wird der Verstärkungsfaktor der Operationsverstärkerschaltung eingestellt. Der OP ist als nicht invertierender Verstärker ausgeführt. Mit zwei Widerständen könnte aus dem LM358 eine doppelte invertierende Verstärkerschaltung (in Reihe geschaltete) aufgebaut werden. Das würde die Genauigkeit erhöhen. Die Schaltung funktioniert jedoch einwandfrei und eine höhere Genauigkeit wird vermutlich nur selten einen Vorteil bieten.&lt;br /&gt;
In diesem Fall ist hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch der Widerstandswert von R4 erhöht werden. An dem Steuersignal_Therme liegt je nach dem welchen Wert der LTC1257 gerade in einen anlogen Wert umsetzt, eine Spannung von 0-24V. Diese Schaltung kann eingesetzt werden, um Junkers-Thermen mit „Stetigeingang“ anzusteuern. &lt;br /&gt;
&lt;br /&gt;
Die Beschaltung mit C1 und R1 scheint nicht in jedem Fall angemessen zu sein. Damit kann man sich einen Sägezahn als Referenzspannung einfangen, der im Kilohertzbereich die Referenz- (und damit auch die DAC-Ausgangspannung) von 100 % auf ca. 90 % fährt. Das gibt dann unerwünschte Effekte beim Messen der Spannung für die Stetigregelung. Ohne C1 und R1 ergibt sich eine konstante Referenzspannung.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, die durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
Variante 3 auf Punktraster in einer kompakten Version. Die Widerstände wurden stehend isoliert platziert, die Sicherung dient dem Schutz der Therme.&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_V3.jpg|center|alt=Variante 3 - eine kompakte Aufbauvariante]]&lt;br /&gt;
&lt;br /&gt;
==Pinzuordnung==&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zu dem AVR-NET-IO-Board erfolgt über die Pins der SUB-D Anschlussplatine (Kx):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLK -&amp;gt; K12 -&amp;gt; PA2&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;DIN -&amp;gt; K11 -&amp;gt; PA1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LOAD -&amp;gt; K9 -&amp;gt; PC7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt1 -&amp;gt; K10 -&amp;gt; PA0&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt2 -&amp;gt; K13 -&amp;gt; PA3&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Onewire -&amp;gt; KK3 -&amp;gt; PC1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ethersex==&lt;br /&gt;
&lt;br /&gt;
Die Firmware der AVR-NET-IO-Boards wird durch eine erweiterte Firmware ausgetauscht.&lt;br /&gt;
&lt;br /&gt;
Der Vorgang ist hier beschrieben: [[AVR-NET-IO#Konfiguration_und_Flashen_von_ethersex]]&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Bauen===&lt;br /&gt;
Als Buildumgebung kann freetz-linux 1.1.1 verwendet werden. freetz-linux läuft sehr gut als Virtuelle Maschine in Virtual Box (unter Windows). Der AVR-ISP-Programmer lässt sich in die VM durchreichen. Eine Programmierung des ATMega kann so aus der VM erfolgen. Bei einem Test mit einer neueren freetz-linux Version schlug der Build-Vorgang fehl. In der Datei pinning/hardware/netio.m4 sind die PIN-Zuordnungen. Mittels „make menuconfig“ kann alles Mögliche eingestellt werden und mittels „make“ wird Ethersex für das AVR-NET-IO-Board erstellt. &lt;br /&gt;
&lt;br /&gt;
Möglicherweise bricht &amp;quot;make&amp;quot; mit der Fehlermeldung &amp;quot;&amp;lt;nowiki&amp;gt;delay.h:230:28: error: __builtin_avr_delay_cycles expects an integer constant.&amp;lt;/nowiki&amp;gt;&amp;quot; ab. Abhilfe schafft ein &amp;quot;&amp;lt;nowiki&amp;gt;#define __DELAY_BACKWARD_COMPATIBLE__ &amp;lt;/nowiki&amp;gt;&amp;quot; in hardware/dac/ltc1257.c vor dem &amp;quot;&amp;lt;nowiki&amp;gt;#include &amp;lt;util/delay.h&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Flashen===&lt;br /&gt;
Die Datei ethersex.hex aus dem tar Archive auf den Atmega 644 flashen. Hierfür eignet sich der AVRISP aus Hongkong von eBay (unter 4€ incl. Porto). Nicht vergessen die Fuses zu setzten.&lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
Preise sind grob gerundet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;eBay&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVRISP-Programmer um Ethersex auf den AVR zu flashen 4€ (wenn nicht schon vorhanden)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVR-NET-IO - Fertigmodul 28€ (als Bausatz 8€ günstiger)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ATmega644-20PU 7€ (optional)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;2x Temperatur-Sensor DS18S20 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;5V-Netzteil EcoFriendly 5€ (ein einfaches USB-Ladegerät reicht)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Bausatz SUB-D Anschlussplatine 4€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reichelt&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;LTC 1257 CN8 7€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Platine+Kleinteile &amp;lt; 10€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 6€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusammen ca. 55-85€&lt;br /&gt;
&lt;br /&gt;
==Erste Inbetriebnahme==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen das AVR-NET-IO-Board per Ping zu erreichen. &amp;lt;br&amp;gt;(Die Datei aus dem tar-Archive sollte in dem Netz 192.168.178.0/24 sein) &lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen auf die Konsole des AVR-NET-IO-Board zuzugreifen Port: 2701 (Mit Putty, TerraTerm, netcat, ...)&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Verfügbare Befehle ansehen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: help&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    OneWire Geräte auf Konsole scannen: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Es sollten zwei Geräte (Vorlauftemperatur, Rücklauftemperatur) gefunden werden.&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 10884e5b0208002d&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Temperatur einlesen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w get 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 26.4&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04D&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04F&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal auf Maximum stellen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: ltc1257_set 4095&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung erneut abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0BF&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0C9&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ermittlung der Betriebspunkte==&lt;br /&gt;
&lt;br /&gt;
Wichtig sind vier Werte:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messwert (ADC) für den Betriebspunkt Therme 0%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messwert (ADC) für den Betriebspunkt Therme 100%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stellwert (DAC) für den Betriebspunkt Therme 0%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stellwert (DAC) für den Betriebspunkt Therme 100%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Messwerte===&lt;br /&gt;
Vorbereitung den Operationsverstärker (LM358) aus der Schaltung entfernen.&lt;br /&gt;
Minimalwert: Messwert wenn der Raumtemperaturregler die Therme ausschaltet. Hierfür den Raumtemperaturregler auf minimale Temperatur einstellen. Die Steuersignalspannung sollte ca. 3V betragen. Mittels „adc get“ den Wert ermitteln und ausschreiben.&lt;br /&gt;
Maximalwert: Messwert wenn der Raumtemperaturregler die Therme auf 100%. Hierfür den Raumtemperaturregler auf maximale Temperatur einstellen. Die Steuersignalspannung sollte ca. 18-22V betragen. Mittels „adc get“ den Wert ermitteln und ausschreiben.&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Stellwerte===&lt;br /&gt;
Vorbereitung den Operationsverstärker (LM358) wieder in die Schaltung einsetzen. Und den Raumtemperaturregler auf minimale Raumtemperatur einstellen.&lt;br /&gt;
Jetzt werden die Stellwerte ermittelt. Der Sollwert des LTC1257 langsam erhöht und der aktuelle Wert mittels des ADC gemessen.  Hierfür werden abwechselnd die Befehle: „ltc1257_set SOLLWERT“ und „adc get“ verwendet. Beide Werte auschreiben.&lt;br /&gt;
&lt;br /&gt;
==Integration in FHEM==&lt;br /&gt;
&lt;br /&gt;
In FHEM muss das Setzen der Sollwerte und die Erfassung der aktuellen Sollwerte/Istwerte integriert werden. Wenn der alt Raumtemperaturregler entfällt kann zweites auch entfallen.&lt;br /&gt;
&lt;br /&gt;
===Setzen der Sollwerte===&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Sollwert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;gt;= 2048) zugewiesen. Hierfür wird eine classdef Datei erstellt, z.B.:  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# Ein Uebergabeparameter -&amp;gt; Sollwert&lt;br /&gt;
set setDAC params dacValue&lt;br /&gt;
set setDAC cmd {&amp;quot;ltc1257_set %dacValue\n&amp;quot;}&lt;br /&gt;
set setDAC expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der LTC1257 als ECMD Device in FHEM (fhem.cfg) angelegt werden. Hierfür wird eine möglicherweise bestehende „NETIO classdefs“ erweitert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
attr NETIO_01 classdefs [Andere ECMD Geräte]:LTC1257=/opt/fhem/ltc1257.classdef&lt;br /&gt;
&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschließend den DAC(/LTC1257) als ECMDDevice definieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
define MEINDAC ECMDDevice LTC1257&lt;br /&gt;
attr MEINDAC room MEINRAUM&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Befehl zum Setzen eines neuen Spannungswertes lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
my $dacValue = 1345;;\&lt;br /&gt;
fhem(&amp;quot;set MEINDAC setDacValue &amp;quot;.$dacValue);;\&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Istwerte===&lt;br /&gt;
&lt;br /&gt;
Der ADC ermittelt den aktuellen Sollwert über einen Spannungsteiler. Dieser Wert wird in einen Prozentwert (0-100) umgerechnet. Hierfür wird eine classdef Datei (adc.classdef)erstellt, z.B.:  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# Ein Uebergabeparameter -&amp;gt; Sollwert&lt;br /&gt;
set setDacValue params dacValue&lt;br /&gt;
set setDacValue cmd {&amp;quot;ltc1257_set %dacValue&amp;quot;}&lt;br /&gt;
set setDacValue postproc {\&lt;br /&gt;
	Log 3, &amp;quot;Setze Wert&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init&amp;quot;}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der ADC als ECMD Device in FHEM (fhem.cfg) angelegt werden. Hierfür wird eine möglicherweise bestehende „NETIO classdefs“ erweitert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
attr NETIO_01 classdefs [Andere ECMD Geräte]:LTC1257=/opt/fhem/adc.classdef&lt;br /&gt;
&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschließend den ADC als ECMDDevice definieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
define MEINADC ECMDDevice LTC1257&lt;br /&gt;
attr MEINADC room MEINRAUM&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Möglichkeiten==&lt;br /&gt;
&lt;br /&gt;
Ein Bild sagt mehr als tausend Worte&lt;br /&gt;
[[File:ScreenshotFHEMTherme.png|center|thumb|alt=Screenshot FHEM Therme]]&lt;br /&gt;
&lt;br /&gt;
==Kritische Nachbetrachtung==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Anschluss der Zusatzplatine nicht über die SUB-D Anschlussplatine sondern über den 10poligen Pfostenstecker. Das würde viel sauberer/professioneller aussehen und ist bei dem verwendeten Platinentyp sehr einfach zu relaisieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Spannungsversorgung des AVR-NET-IO-Boards über die 24V Spannung der Therme (irgendwie cooler)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Eventuell ist es auch bei diesen Junkersthermen sinnvoller die Steuerspannung mittels eines Relais/Transistors zwischen 3-22V zu schalten. Unter Verwendung von 2 Relais/Transistoren wären auch 4 Schaltstufen möglich (0%, 25%, 50% und 100%). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Die Zusatzplatine trennt das AVR-NET-IO-Board/Netzwerk und die Heizung nicht. Wenn keine Messung der Steuersignalspannung gewünscht ist, würde ich den LTC1257 galvanisch trennen. Bislang gab es aber keine Probleme diesbezüglich. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=31171</id>
		<title>Junkers Therme Stetigregelung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=31171"/>
		<updated>2019-09-02T12:11:02Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich) */ fixed typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Examples]]&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich)=&lt;br /&gt;
&lt;br /&gt;
Viele Heizungsthermen haben eine Regelung über einen Kontakt, an dem eine feste Spannung anliegt oder eben nicht anliegt. Also als Beispiel: 0V Heizung aus – 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit vom Rücklauf gesteuert. Umso niedriger die Steuerspannung desto später (tiefere Rücklauftemperatur) beginnt die Therme zu heizen. Bei der vorhandenen Junkertherme kann die Vorlauftemperatur nicht über die Steuerspannung eingestellt werden. &lt;br /&gt;
&lt;br /&gt;
==Ziel dieses Projektes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Keine Veränderung der Therme (Sicherheits-, Versicherungs- ,Garantie-Gründe)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sicher: Für den Fall eines Defekts der automatischen Steuerung soll der alte Regler soll erhalten&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Erzeugen einer Spannung von 3-22Volt (Simulation des bisherigen Raumtemperaturreglers)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Günstig&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Geringe Energieaufnahme&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ansteuerung mittels Netzwerk&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Integration in FHEM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Umsetzung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin AVR-NET-IO-Board&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Software: Ethersex&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;kleine Zusatzplatine für die Spannungserzeugung (wird einfach parallel zu dem bestehenden Regler angeschlossen)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur mittels OneWire&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 1==&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_analoge_Anzeige.JPG|120px|right|thumb|Steuersignal]]&lt;br /&gt;
Da die Heizungsregelung eine sehr sensible Sache ist besonders bezüglich Frostschäden (beim Ausfall der automatischen Steuerung) und persönlicher Befindlichkeiten musste eine einfache und extrem ausfallsichere Kontrolleinheit her. Hierfür wird einfaches Drehspulmessinstrument verwendet. Anzeigewerte: 0V=Fehler, 3V=Heizung aus, 22V=Therme 100%.&lt;br /&gt;
Der alte Raumtemperaturregler ist weiterhin aktiv, momentan ist er auf 12°C Solltemperatur gestellt. Das bedeutet:&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, aktiviert der alte Raumtemperaturregler die Heizung bevor Frostschäden entstehen können.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, kann die Therme einfach durch einstellen einer neuen Solltemperatur aktiviert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Beide Fälle sind auf Grund von Ausfällen eines anderen FHEM-Systems im ersten Winter aufgetreten.&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 2==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:Junkers Therme Stetigregelung Signalverteiler.JPG|80px|right|thumb|Steuersignal]]&lt;br /&gt;
Die Leitung zu dem bisherigen Regler muss gesplittet werden. Hierfür die Heizung ausschalten (Sicherung auslösen) die Leitung auftrennen und einen Abzweig für die neue Regelung einfügen. Das Ganze kann mit einer Schmelzsicherung (für die 24V VCC Leitung) und einem 3poligem-Schalter (vollständiges Wegschalten der automatischen Regelung) versehen werden.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 3==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Netzwerk zu der Therme oder das Steuersignal zum Netzwerk ziehen. Das AVR-NET-IO-Board kann irgendwo in die Steuersignal-Leitung eingesetzt werden. Theoretisch kann auch die 24V Spannungsversorgung für den ursprünglichen Raumtemperaturregler  verwendet werden. Hier muss einfach ein DC/DC-Wandler eingesetzt werden. (Bitte Leistungsabgabe der Heizung und Leistungsaufnahme des AVR-NET-IO-Board  überprüfen)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Digital-to-Analog-Converter==&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358). Der LTC1257 wandelt (bei interner Referenzspannung) einen digital übermittelten Wert (über die Eingänge CLK, DIN und LOAD) in eine Spannung von 0-2,048V. Diese Spannung wird anschließend von dem LM358 erhöht. Die Elemente R1,R2, C1 und C2 gehören zur Grundbeschaltung des LTC1257. Mittels der Widerstände R3 und R4 wird der Verstärkungsfaktor der Operationsverstärkerschaltung eingestellt. Der OP ist als nicht invertierender Verstärker ausgeführt. Mit zwei Widerständen könnte aus dem LM358 eine doppelte invertierende Verstärkerschaltung (in Reihe geschaltete) aufgebaut werden. Das würde die Genauigkeit erhöhen. Die Schaltung funktioniert jedoch einwandfrei und eine höhere Genauigkeit wird vermutlich nur selten einen Vorteil bieten.&lt;br /&gt;
In diesem Fall ist hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch der Widerstandswert von R4 erhöht werden. An dem Steuersignal_Therme liegt je nach dem welchen Wert der LTC1257 gerade in einen anlogen Wert umsetzt, eine Spannung von 0-24V. Diese Schaltung kann eingesetzt werden, um Junkers-Thermen mit „Stetigeingang“ anzusteuern. &lt;br /&gt;
&lt;br /&gt;
Die Beschaltung mit C1 und R1 scheint nicht in jedem Fall angemessen zu sein. Damit kann man sich einen Sägezahn als Referenzspannung einfangen, der im Kilohertzbereich die Referenz- (und damit auch die DAC-Ausgangspannung) von 100 % auf ca. 90 % fährt. Das gibt dann unerwünschte Effekte beim Messen der Spannung für die Stetigregelung. Ohne C1 und R1 ergibt sich eine konstante Referenzspannung.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, die durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
Variante 3 auf Punktraster in einer kompakten Version. Die Widerstände wurden stehend isoliert platziert, die Sicherung dient dem Schutz der Therme.&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_V3.jpg|center|alt=Variante 3 - eine kompakte Aufbauvariante]]&lt;br /&gt;
&lt;br /&gt;
==Pinzuordnung==&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zu dem AVR-NET-IO-Board erfolgt über die Pins der SUB-D Anschlussplatine (Kx):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLK -&amp;gt; K12 -&amp;gt; PA2&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;DIN -&amp;gt; K11 -&amp;gt; PA1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LOAD -&amp;gt; K9 -&amp;gt; PC7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt1 -&amp;gt; K10 -&amp;gt; PA0&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt2 -&amp;gt; K13 -&amp;gt; PA3&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Onewire -&amp;gt; KK3 -&amp;gt; PC1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ethersex==&lt;br /&gt;
&lt;br /&gt;
Die Firmware der AVR-NET-IO-Boards wird durch eine erweiterte Firmware ausgetauscht.&lt;br /&gt;
&lt;br /&gt;
Der Vorgang ist hier beschrieben: [[AVR-NET-IO#Konfiguration_und_Flashen_von_ethersex]]&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Bauen===&lt;br /&gt;
Als Buildumgebung kann freetz-linux 1.1.1 verwendet werden. freetz-linux läuft sehr gut als Virtuelle Maschine in Virtual Box (unter Windows). Der AVR-ISP-Programmer lässt sich in die VM durchreichen. Eine Programmierung des ATMega kann so aus der VM erfolgen. Bei einem Test mit einer neueren freetz-linux Version schlug der Build-Vorgang fehl. In der Datei pinning/hardware/netio.m4 sind die PIN-Zuordnungen. Mittels „make menuconfig“ kann alles Mögliche eingestellt werden und mittels „make“ wird Ethersex für das AVR-NET-IO-Board erstellt. &lt;br /&gt;
&lt;br /&gt;
Möglicherweise bricht &amp;quot;make&amp;quot; mit der Fehlermeldung &amp;quot;&amp;lt;nowiki&amp;gt;delay.h:230:28: error: __builtin_avr_delay_cycles expects an integer constant.&amp;lt;/nowiki&amp;gt;&amp;quot; ab. Abhilfe schafft ein &amp;quot;&amp;lt;nowiki&amp;gt;#define __DELAY_BACKWARD_COMPATIBLE__ &amp;lt;/nowiki&amp;gt;&amp;quot; in hardware/dac/ltc1257.c vor dem &amp;quot;&amp;lt;nowiki&amp;gt;#include &amp;lt;util/delay.h&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Flashen===&lt;br /&gt;
Die Datei ethersex.hex aus dem tar Archive auf den Atmega 644 flashen. Hierfür eignet sich der AVRISP aus Hongkong von eBay (unter 4€ incl. Porto). Nicht vergessen die Fuses zu setzten.&lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
Preise sind grob gerundet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;eBay&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVRISP-Programmer um Ethersex auf den AVR zu flashen 4€ (wenn nicht schon vorhanden)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVR-NET-IO - Fertigmodul 28€ (als Bausatz 8€ günstiger)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ATmega644-20PU 7€ (optional)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;2x Temperatur-Sensor DS18S20 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;5V-Netzteil EcoFriendly 5€ (ein einfaches USB-Ladegerät reicht)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Bausatz SUB-D Anschlussplatine 4€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reichelt&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;LTC 1257 CN8 7€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Platine+Kleinteile &amp;lt; 10€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 6€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusammen ca. 55-85€&lt;br /&gt;
&lt;br /&gt;
==Erste Inbetriebnahme==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen das AVR-NET-IO-Board per Ping zu erreichen. &amp;lt;br&amp;gt;(Die Datei aus dem tar-Archive sollte in dem Netz 192.168.178.0/24 sein) &lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen auf die Konsole des AVR-NET-IO-Board zuzugreifen Port: 2701 (Mit Putty, TerraTerm, netcat, ...)&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Verfügbare Befehle ansehen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: help&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    OneWire Geräte auf Konsole scannen: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Es sollten zwei Geräte (Vorlauftemperatur, Rücklauftemperatur) gefunden werden.&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 10884e5b0208002d&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Temperatur einlesen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w get 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 26.4&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04D&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04F&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal auf Maximum stellen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: ltc1257_set 4095&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung erneut abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0BF&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0C9&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ermittlung der Betriebspunkte==&lt;br /&gt;
&lt;br /&gt;
Wichtig sind vier Werte:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messwert (ADC) für den Betriebspunkt Therme 0%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messwert (ADC) für den Betriebspunkt Therme 100%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stellwert (DAC) für den Betriebspunkt Therme 0%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stellwert (DAC) für den Betriebspunkt Therme 100%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Messwerte===&lt;br /&gt;
Vorbereitung den Operationsverstärker (LM358) aus der Schaltung entfernen.&lt;br /&gt;
Minimalwert: Messwert wenn der Raumtemperaturregler die Therme ausschaltet. Hierfür den Raumtemperaturregler auf minimale Temperatur einstellen. Die Steuersignalspannung sollte ca. 3V betragen. Mittels „adc get“ den Wert ermitteln und ausschreiben.&lt;br /&gt;
Maximalwert: Messwert wenn der Raumtemperaturregler die Therme auf 100%. Hierfür den Raumtemperaturregler auf maximale Temperatur einstellen. Die Steuersignalspannung sollte ca. 18-22V betragen. Mittels „adc get“ den Wert ermitteln und ausschreiben.&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Stellwerte===&lt;br /&gt;
Vorbereitung den Operationsverstärker (LM358) wieder in die Schaltung einsetzen. Und den Raumtemperaturregler auf minimale Raumtemperatur einstellen.&lt;br /&gt;
Jetzt werden die Stellwerte ermittelt. Der Sollwert des LTC1257 langsam erhöht und der aktuelle Wert mittels des ADC gemessen.  Hierfür werden abwechselnd die Befehle: „ltc1257_set SOLLWERT“ und „adc get“ verwendet. Beide Werte auschreiben.&lt;br /&gt;
&lt;br /&gt;
==Integration in FHEM==&lt;br /&gt;
&lt;br /&gt;
In FHEM muss das Setzen der Sollwerte und die Erfassung der aktuellen Sollwerte/Istwerte integriert werden. Wenn der alt Raumtemperaturregler entfällt kann zweites auch entfallen.&lt;br /&gt;
&lt;br /&gt;
===Setzen der Sollwerte===&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Sollwert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;gt;= 2048) zugewiesen. Hierfür wird eine classdef Datei erstellt, z.B.:  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# Ein Uebergabeparameter -&amp;gt; Sollwert&lt;br /&gt;
set setDAC params dacValue&lt;br /&gt;
set setDAC cmd {&amp;quot;ltc1257_set %dacValue\n&amp;quot;}&lt;br /&gt;
set setDAC expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init\n&amp;quot;}&lt;br /&gt;
set init expect &amp;quot;OK\n&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der LTC1257 als ECMD Device in FHEM (fhem.cfg) angelegt werden. Hierfür wird eine möglicherweise bestehende „NETIO classdefs“ erweitert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
attr NETIO_01 classdefs [Andere ECMD Geräte]:LTC1257=/opt/fhem/ltc1257.classdef&lt;br /&gt;
&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschließend den DAC(/LTC1257) als ECMDDevice definieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
define MEINDAC ECMDDevice LTC1257&lt;br /&gt;
attr MEINDAC room MEINRAUM&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Befehl zum Setzen eines neuen Spannungswertes lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
my $dacValue = 1345;;\&lt;br /&gt;
fhem(&amp;quot;set MEINDAC setDacValue &amp;quot;.$dacValue);;\&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Istwerte===&lt;br /&gt;
&lt;br /&gt;
Der ADC ermittelt den aktuellen Sollwert über einen Spannungsteiler. Dieser Wert wird in einen Prozentwert (0-100) umgerechnet. Hierfür wird eine classdef Datei (adc.classdef)erstellt, z.B.:  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# Ein Uebergabeparameter -&amp;gt; Sollwert&lt;br /&gt;
set setDacValue params dacValue&lt;br /&gt;
set setDacValue cmd {&amp;quot;ltc1257_set %dacValue&amp;quot;}&lt;br /&gt;
set setDacValue postproc {\&lt;br /&gt;
	Log 3, &amp;quot;Setze Wert&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init&amp;quot;}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der ADC als ECMD Device in FHEM (fhem.cfg) angelegt werden. Hierfür wird eine möglicherweise bestehende „NETIO classdefs“ erweitert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
attr NETIO_01 classdefs [Andere ECMD Geräte]:LTC1257=/opt/fhem/adc.classdef&lt;br /&gt;
&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschließend den ADC als ECMDDevice definieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
define MEINADC ECMDDevice LTC1257&lt;br /&gt;
attr MEINADC room MEINRAUM&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Möglichkeiten==&lt;br /&gt;
&lt;br /&gt;
Ein Bild sagt mehr als tausend Worte&lt;br /&gt;
[[File:ScreenshotFHEMTherme.png|center|thumb|alt=Screenshot FHEM Therme]]&lt;br /&gt;
&lt;br /&gt;
==Kritische Nachbetrachtung==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Anschluss der Zusatzplatine nicht über die SUB-D Anschlussplatine sondern über den 10poligen Pfostenstecker. Das würde viel sauberer/professioneller aussehen und ist bei dem verwendeten Platinentyp sehr einfach zu relaisieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Spannungsversorgung des AVR-NET-IO-Boards über die 24V Spannung der Therme (irgendwie cooler)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Eventuell ist es auch bei diesen Junkersthermen sinnvoller die Steuerspannung mittels eines Relais/Transistors zwischen 3-22V zu schalten. Unter Verwendung von 2 Relais/Transistoren wären auch 4 Schaltstufen möglich (0%, 25%, 50% und 100%). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Die Zusatzplatine trennt das AVR-NET-IO-Board/Netzwerk und die Heizung nicht. Wenn keine Messung der Steuersignalspannung gewünscht ist, würde ich den LTC1257 galvanisch trennen. Bislang gab es aber keine Probleme diesbezüglich. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SIGNALduino&amp;diff=31036</id>
		<title>SIGNALduino</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SIGNALduino&amp;diff=31036"/>
		<updated>2019-07-25T13:55:13Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Unterstützte Geräte */Wetterstation CTW602 hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Empfang und Verarbeitung von digitalen Signalen&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModFTopic=38402&lt;br /&gt;
|ModCmdRef=SIGNALduino&lt;br /&gt;
|ModForumArea=Sonstige Systeme&lt;br /&gt;
|ModTechName=00_SIGNALduino.pm&lt;br /&gt;
|ModOwner=Sidey ({{Link2FU|8018|Forum}}/[[Benutzer Diskussion:Sidey|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Übersicht ===&lt;br /&gt;
Unter den Namen SIGNALduino versteht man sowohl den Low-Cost Empfänger für digitale Signale (vergleichbar dem  [[CUL]]) als auch das gleichnamige Modul mit dem Dateinamen 00_SIGNALduino.pm. Mit dem SIGNALduino kann man entweder 433 oder 868 MHz-Geräte auslesen und ansprechen. Der SIGNALduino funktioniert auch mit anderen Medien wie Infrarot oder direkter Kabelverbindung.&lt;br /&gt;
&lt;br /&gt;
Der SIGNALduino(-Stick) erkennt Signale anhand von Mustern und gibt sie (als maximal detaillierte Beschreibung einer Signalabfolge) dann schlicht sofort nur noch an FHEM zur Auswertung (Dekodierung) weiter. Auch nicht erkannte Signale werden an FHEM übergeben.&lt;br /&gt;
Aufgabe des SIGNALduino (Firmware/Stick) ist es also nur, Signal-Aktivitäten zu erfassen und maximal präzise (als kurzer Text-String) zu beschreiben.&lt;br /&gt;
Alles weitere (echte, finale Auswertung / Zuweisung dieser Signal-Daten) wird dann auf einer großen Box (Raspberry o.ä.) gemacht.&lt;br /&gt;
&lt;br /&gt;
=== Vorteil gegenüber einem CUL/FHEMduino ===&lt;br /&gt;
Der SIGNALduino hat den Vorteil einer sehr schnellen Demodulation des Funksignals. Sollen weitere Protokolle dekodiert werden, so muss dazu nur ein passendes FHEM Modul entwickelt oder ein universelles Modul erweitert werden (also auf flexibel direkt updatebarer Rechner-Seite!!). Änderungen am Arduino-Firmware-Code sind normalerweise nicht notwendig (sofern die grundsätzliche Signal-Klassifizierung des Sticks korrekt funktioniert - leider nicht immer, z.B.: [https://github.com/RFD-FHEM/SIGNALDuino/issues/65 MU-Nachrichten werden z.T. als MC erkannt]).&lt;br /&gt;
&lt;br /&gt;
Ein großer Vorteil des SIGNALduino besteht darin, dass auch Geräte mit leicht abweichende Frequenzen steuerbar sind; so empfangen die Somfy-Rolladenmotoren beispielsweise auf 433.42 und nicht, wie bei anderen Geräten sehr oft üblich, auf 433.92 MHz. Die Frequenzumstellung stellt für den SIGNALduino kein Problem dar.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann man den SIGNALduino direkt an den Sendeausgang eines Sensors anbinden und die digitalen Signale empfangen, dabei bitte aber auf die passenden Spannungen achten, denn ein Arduino Nano verträgt nur 5V.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsversion ===&lt;br /&gt;
Der SIGNALduino wird derzeit aktiv weiterentwickelt, siehe dazu https://github.com/RFD-FHEM. Die Version von Sidey wird [https://forum.fhem.de/index.php/topic,58396.0.html hier ]genauer beschrieben.&lt;br /&gt;
&lt;br /&gt;
Es existiert eine weitere Entwicklungsversion, siehe dazu die [https://forum.fhem.de/index.php/topic,82379.msg744554.html#msg744554 Firmware] (hierzu gibt es auch eine private Version des [https://github.com/Ralf9/RFFHEM/issues/2 Moduls]).&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
=== Controller ===&lt;br /&gt;
&lt;br /&gt;
Der SIGNALduino (Hardware) wird über den USB Port angeschlossen, er kann aber auch mit zusätzlichen ESP Modulen über ein WLAN angebunden werden. &lt;br /&gt;
&lt;br /&gt;
Der SIGNALduino basiert auf einem [http://arduino.cc/de/Main/ArduinoBoardNano Arduino Nano], die Schaltung entspricht der des [[FHEMduino]] oder dem [[Selbstbau_CUL]]:&lt;br /&gt;
* Entweder wird ein Arduino mit einfachen Sende- und Empfangsmodulen verwendet, dann ist die Verkabelung identisch zum [[FHEMduino]] &lt;br /&gt;
* Oder es wird ein CC1101 Transceiver verwendet, dann ist die Verkabelung identisch zum [[Selbstbau_CUL]].&lt;br /&gt;
* Zuletzt gibt es ein fertig konfektioniertes Modul von In-Circuit mit Radino CC1101 Varianten, link zum [http://shop.in-circuit.de/index.php Hersteller]. &lt;br /&gt;
&lt;br /&gt;
Achten Sie beim Selbstbau auf die entsprechenden Sender-Empfänger. Der sehr preiswert angebotene XY-MK-5V hat sich als zu unzuverlässig erwiesen, während anscheinend beim CC1101 (insbesondere der &amp;quot;grünen Version&amp;quot;) keine Probleme auftreten. &lt;br /&gt;
&lt;br /&gt;
Es stehen auch für den [https://www.arduino.cc/en/Main/arduinoBoardUno UNO] und [https://www.arduino.cc/en/Main/ArduinoBoardProMini PRO Mini] Firmware-Dateien zur Verfügung. Die ausgelieferte Firmware läuft nur auf Mikrocontrollern mit 16 MHz; wer einen Mikrocontroller mit 8 MHz verwenden möchte, muss die Firmware selbst compilieren. Die SW ist auf [https://github.com/RFD-FHEM/SIGNALDuino github]. Vorgesehen ist nur die Übersetzung unter Windows mit Visual Studio und dem Visual Micro Zusatz. Es gibt aber auch eine Anleitung, wie man mit der [[Arduino]] IDE oder einem Makefile [[SIGNALduino Compilieren]] kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt auch eine Variante des SIGNALduino, die auf einem [[ESP8266]] nativ läuft, diese funktioniert seit Anfang 2018 annehmbar, allerdings befindet diese sich noch in einer Entwicklungsphase.&lt;br /&gt;
&lt;br /&gt;
An den &amp;quot;SIGNALESP&amp;quot; kann auch ein CC1101 via SPI angebunden werden:&lt;br /&gt;
&lt;br /&gt;
{||&lt;br /&gt;
!CC1101 Bezeichnung&lt;br /&gt;
!ESP Pin&lt;br /&gt;
|-&lt;br /&gt;
|CLK||GPIO14&lt;br /&gt;
|-&lt;br /&gt;
|MOSI||GPIO13&lt;br /&gt;
|-&lt;br /&gt;
|MISO||GPIO12&lt;br /&gt;
|-&lt;br /&gt;
|CSN||GPIO15&lt;br /&gt;
|-&lt;br /&gt;
|GDO0||GPIO4&lt;br /&gt;
|-&lt;br /&gt;
|GDO2||GPIO5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wird ein einfacher Empfänger / Sender Kombination verwendet, dann über die PINs:&lt;br /&gt;
&lt;br /&gt;
{||&lt;br /&gt;
! Bezeichnung &lt;br /&gt;
! ESP Pin&lt;br /&gt;
|-&lt;br /&gt;
|Transmitter||GPIO4&lt;br /&gt;
|-&lt;br /&gt;
|Receiver||GPIO5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sendemodule ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Viele user berichten über Empfangsprobleme bei Nutzung des XY-MK-5V; es wird ausdrücklich empfohlen, ein anderes Empfangsmodul zu nutzen!}}&lt;br /&gt;
[[Datei:Fhemduino_schematic.png|200px|thumb|right|Beispielschaltplan SIGNAL(FHEM)duino]]  &lt;br /&gt;
&lt;br /&gt;
Mit einem Arduino-Nano und folgenden, billigen Sende- und Empfangsmodulen können Sie einen SIGNALduino bauen:&lt;br /&gt;
* FS1000A Dies ist das Sendemodul (TX) und wird oft im Set mit dem billigen XY-MK-5V-Empfänger angeboten (etwa 5€). &lt;br /&gt;
* RXB6 Das ist das empfohlene Empfangsmodul (RX), statt XY-MK-5V, etwa 5€ aus Deutschland.&lt;br /&gt;
&lt;br /&gt;
Die Verkabelung erfolgt analog zum [[FHEMduino]] und das bedeutet (Arduino -&amp;gt; Modul):&lt;br /&gt;
* PIN D2 an DATA des RX-Moduls&lt;br /&gt;
* PIN D11 an DATA des TX-Moduls (PIN links mit Beschriftung ATAD)&lt;br /&gt;
&lt;br /&gt;
Zusätzlich muss noch jeweils GND und 5V des Arduino mit dem GND bzw. VCC des Moduls verbunden werden.&lt;br /&gt;
&lt;br /&gt;
Jetzt fehlen noch die Antennen. Dafür braucht man ein 17,2 cm langes Stück Kupferdraht, das wird beim Anschluss &amp;quot;ANT&amp;quot; jeweils am Modul angelötet (anfängergeeignet).&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
===  USB-ID ermitteln  ===&lt;br /&gt;
Bevor der SIGNALduino mit dem FHEM Server (im Beispiel hier ein Raspberry PI) verbunden werden kann, muss die USB-Schnittstelle ermittelt werden. Hierzu bitte auf dem Terminal den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt; ls -l /dev/serial/by-id &amp;lt;/pre&amp;gt;&lt;br /&gt;
ausführen. Beispielhaft sieht das Ergebnis etwa so aus: &lt;br /&gt;
&#039;&#039;lrwxrwxrwx 1 root root 13 Jan 31 00:02 &#039;&#039;&#039;usb-FTDI_FT232R_USB_UART_A903N5T5-if00-port&#039;&#039;&#039; -&amp;gt; ../../ttyUSB0&#039;&#039; &lt;br /&gt;
Damit ist der Anschluss des SIGNALduino bestimmt und das Gerät kann wie im nächsten Abschnitt beschrieben definiert werden. Zuvor muss noch das Modul geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== FHEM-Modul laden ===&lt;br /&gt;
Die SIGNALduino Module werden über das FHEM [[update]] verteilt, sobald die Änderungen einen &amp;quot;stabilen&amp;quot; und alltags tauglichen Zustand haben. Aktuell wird dort die Version 3.4.0 seit 20.07.2019 verteilt.&lt;br /&gt;
&lt;br /&gt;
Die in der Entwicklung befindliche Version (3.4.x) kann mit folgenden Befehlen geladen werden:&lt;br /&gt;
&lt;br /&gt;
* FHEM aktualisieren: &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; &lt;br /&gt;
* SIGNALduino Modul aktualisieren: &amp;lt;code&amp;gt;update all &amp;lt;nowiki&amp;gt;https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/dev-r34/controls_signalduino.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;  Durch das Update von FHEM wird sichergestellt, dass das Modul mit FHEM arbeitet.&lt;br /&gt;
*Danach kann das Gerät wie folgt definiert werden (die Spezifikation des USB-Anschlusses muss dabei an die aktuellen Gegebenheiten angepasst werden):&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;eigener-SIGNALduino-Name&amp;gt; SIGNALduino /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A903N5T5-if00-port0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
* Solltet Ihr einen SIGNALESP via IP einbinden wollen ist die Syntax&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;eigener-SIGNALESP-Name&amp;gt; SIGNALduino &amp;lt;ip-adresse&amp;gt;:23&amp;lt;/code&amp;gt;&lt;br /&gt;
Nach dem Einbinden wird der SIGNALduino, falls er erkannt wird, im Status &amp;quot;Opened&amp;quot; angezeigt. &lt;br /&gt;
&lt;br /&gt;
Für neuere Entwicklungen kann in FHEM auch dauerhaft die developer Version aktualisiert werden:&lt;br /&gt;
&amp;lt;code&amp;gt;update add &amp;lt;nowiki&amp;gt;https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/dev-r34/controls_signalduino.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
Danach wird FHEM bei dem normalen Update-Befehl immer automatisch die aktuelle dev Version laden.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Beispiel-Befehle verwenden &amp;quot;sduino&amp;quot; als &amp;lt;eigener-SIGNALduino-Name&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Flashen des Arduino mit der SIGNALduino Firmware ====&lt;br /&gt;
Falls avrdude noch nicht vorhanden ist, kann es mit folgendem Befehl installiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get install avrdude&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In FHEM ist der SIGNALduino mit dem Status &amp;quot;Open&amp;quot; vorhanden. Jetzt müssen wir FHEM noch mitteilen, welche Hardware wir angeschlossen haben. Über das Attribut &#039;&#039;hardware&#039;&#039; lässt sich zwischen den mitgelieferten Firmware-Dateien wechseln. Solltet ihr einen Nano mit cc1101 Transceiver verwenden, so wählt bitte folgende Hardware&lt;br /&gt;
:&amp;lt;code&amp;gt;attr sduino hardware nanoCC1101&amp;lt;/code&amp;gt;&lt;br /&gt;
sonst üblicherweise&lt;br /&gt;
:&amp;lt;code&amp;gt;attr sduino hardware nano328&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann muss mitgeteilt werden, welche Version man geladen haben will: stable oder testing. Derzeit ist nur testing verfügbar:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr sduino updateChannelFW testing&amp;lt;/code&amp;gt;&lt;br /&gt;
Nun wird die entsprechende Firmware heruntergeladen. Dies geschieht durch den Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;get sduino availableFirmware&amp;lt;/code&amp;gt;&lt;br /&gt;
Anschließend kann der &#039;&#039;flash&#039;&#039; Befehl abgesetzt werden: &lt;br /&gt;
:&amp;lt;code&amp;gt;set sduino flash &amp;lt;und-dann-auswaehlen&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Dadurch wird der Arduino mit der gewählten Firmware geflasht. Das Ergebnis wird im Webinterface direkt angezeigt.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch der Flash-Befehl mit einem Dateinamen aufgerufen werden. Diese Möglichkeit sollte jedoch nur verwendet werden, wenn die SIGNALduino Firmware selbst compiliert wurde und eine andere Hardware verwendet wird. Der Flash-Befehl wird wie folgt aufgerufen:&lt;br /&gt;
:&amp;lt;code&amp;gt;set sduino flash FHEM/firmware/SIGNALduino_mega2560.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
(je nachdem wo und unter welchem Namen die .hex Datei abgelegt wurde)&lt;br /&gt;
&lt;br /&gt;
==== Flashen einer Firmware über HTTP ====&lt;br /&gt;
Die Firmware wird in absehbarer Zeit nicht mehr über den Update Mechanismus verteilt werden. &lt;br /&gt;
Damit die passende Firmware auf den SIGNALduino geladen werden kann, wird diese dann über HTTP geladen.&lt;br /&gt;
&lt;br /&gt;
==== Vorabversion einer Firmware ====&lt;br /&gt;
Die Firmware des SIGNALduino wird ebenso wie das FHEM Modul auch weiter entwickelt.&lt;br /&gt;
Die Entwickler sind auf Tests und Rückmeldungen der Nutzer angewiesen, da leider nicht alle Sensoren vorher getestet werden können.&lt;br /&gt;
&lt;br /&gt;
Aktuell (November 2018) ist noch die Version 3.3.1 in Entwicklung. Diese steht aktuell in einer Release Candidate Version zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Für die folgenden Microcontroller kann man die Firmware seit 21.02.2019 auch direkt downloaden und teilweise flashen. &lt;br /&gt;
Dazu muss das Attribut hardware auf einen gültigen Wert angepasst werden!&lt;br /&gt;
Über den GET Befehl availableFirmware werden dann für die hinterlegte Hardware die passenden Versionen gesucht. Über das Attribut updateChannelFW kann zwischen &amp;quot;stable&amp;quot; und &amp;quot;testing&amp;quot; definiert werden, welche Art von Firmware angeboten werden soll.&lt;br /&gt;
&lt;br /&gt;
Nachdem die Firmwareversion erfragt wurde, bietet der set flash Befehl eine Auswahlliste an. Wird ein Flash Befehl mit einer der Versionen ausgewählt, wird diese Version zunächst heruntergeladen und bei den AVR Versionen auch versucht diese mittels avrdude zu flashen.&lt;br /&gt;
Die Firmware für den ESP8266 kann aktuell leider noch nicht über diesen Befehl aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
Alternativ funktioniert aber auch die Option, dem Flash Befehl eine URL zu übergeben. Dann wird die Datei aus der URL heruntergeladen und auch versucht diese zu Flashen. z.B.&lt;br /&gt;
SIGNALDuino_nanocc1101.hex für einen Nano mit CC1101&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set sduino flash https://github.com/RFD-FHEM/SIGNALDuino/releases/download/3.3.1-RC10/SIGNALDuino_nanocc1101release.hex&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
SIGNALESP_.hex (mit cc1101) für einen ESP8266 und 1 MB Flash&lt;br /&gt;
&amp;lt;code&amp;gt;set ipduino flash https://github.com/RFD-FHEM/SIGNALDuino/releases/download/nightly/SIGNALDuino_ESP8266cc1101nightly.hex&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
!Achtung, aktuell wird die Firmware für den ESP dadurch nur herunter geladen. Flashen müsst ihr leider immer noch über ein passendes Tool &lt;br /&gt;
z.B. [https://github.com/nodemcu/nodemcu-flasher ESP8266Flasher.exe] oder Esptool und einer seriellen Konsole.&lt;br /&gt;
Auch ist zu beachten, es handelt sich hierbei tatsächlich um ein Binary und nicht um ein Hex File. &lt;br /&gt;
&lt;br /&gt;
Nach dem Booten des ESPs, spannt dieser ein eigenes WLAN auf. Habt ihr euch damit verbunden, könnt ihr den ESP mit eurem vorhandenen WLAN verbinden.&lt;br /&gt;
&lt;br /&gt;
Die Haupt-Seite für Firmware-Releases findet sich unter https://github.com/RFD-FHEM/SIGNALDuino/releases/ .&lt;br /&gt;
Dort kann auch eine Änderungshistorie eingesehen werden.&lt;br /&gt;
==== Flashen eines radino Boards mit ATmega32U4 ====&lt;br /&gt;
&lt;br /&gt;
Diese Funktion steht seit 21.02.2019 nun auch in der via FHEM aktualisierten version zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
Auch sind Berichte bekannt, dass der Radino beim Neustart von FHEM nicht korrekt initialisiert wird.&lt;br /&gt;
Weiterhin ist zu beachten, dass der Bootloader eine andere USB ID bekommt und diese im Attribut flashCommand hinterlegt werden muss.&lt;br /&gt;
&lt;br /&gt;
==== Fehler beim Flashen ====&lt;br /&gt;
Sollte bei einem Flash Vorgang ein Fehler auftreten, solltet ihr zunächst im Logfile mit Verbose 5 nachsehen.&lt;br /&gt;
&lt;br /&gt;
Findet ihr dort keine Fehlermeldung, gibt es noch ein separates Flashlog, welches ihr über einen Browser aufrufen könnt. Dazu müsst ihr nur den Folgenden Pfad an euren Servernamen anhängen:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/fhem/FileLog_logWrapper?dev=Logfile&amp;amp;type=text&amp;amp;file=SIGNALduino-Flash.log&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geräteerkennung ===&lt;br /&gt;
==== Unterstützte Geräte ====&lt;br /&gt;
Für die folgenden Geräte gibt es derzeit (2017) eine Unterstützung für den Betrieb mit FHEM. Die Geräte werden [[autocreate|automatisch erkannt]] und in der Konfiguration eingetragen, wenn der SIGNALduino läuft.&lt;br /&gt;
Bitte Geräte mit sehr präzisen Referenzen hier listen (Produktnummer, Protokoll-Variantenname etc.), damit eine globale Suche/Verifikation maximal erfolgreich ist. In der detaillierten Liste [[Geprüfte_Geräte]] lassen sich die Geräte näher identifizieren.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot;| Produkt &lt;br /&gt;
! (E)mpfangen&amp;lt;br /&amp;gt;(S)enden &lt;br /&gt;
! Hinweise &lt;br /&gt;
! Verwendetes Modul &lt;br /&gt;
! Protokoll ID&lt;br /&gt;
|-&lt;br /&gt;
|Conrad Wetterstation KW9110||E S||Sensor: KW9010, neben Temperatur u. Luftfeuchte werden auch Trend, Batterie u. Kanal erfasst|| CUL_TCM97001  || 0.3&lt;br /&gt;
|-&lt;br /&gt;
|TCM Wetterstation (97001 und 21xxx Serie)||E|| || CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|ABS Wetterstation (ABS 700)||E|| || CUL_TCM97001  || 0&lt;br /&gt;
|-&lt;br /&gt;
|Prologue Wetterstation ||E|| ||CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Rubicson Wetterstation ||E|| ||CUL_TCM97001 ||0 &lt;br /&gt;
|-&lt;br /&gt;
|NC_WS Wetterstation ||E|| ||CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gt-support.de/ GT-WT-02 Wetterstation]||E|| ||CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|AURIOL Wetterstation ||E|| ||CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Mebus Wetterstation ||E|| ||CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Intertechno Funkschalter||E S|| ||IT || 3,4,5,17&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;strike&amp;gt;Conrad RSL Funkschalter&amp;lt;/strike&amp;gt;||E S|| Funktioniert aktuell nicht || SIGNALduino_RSL  || &lt;br /&gt;
|-&lt;br /&gt;
|[http://global.oregonscientific.com/product_view.php?id=5 Oregon Scientific Wettersensoren]||E || Protokoll V2 &amp;amp; V3 implementiert || OREGON || 10&lt;br /&gt;
|-&lt;br /&gt;
|Bresser Temp/Hydro Sensor||E || || Hideki || 12&lt;br /&gt;
|-&lt;br /&gt;
|[https://de.hama.com/00104985/hama-aussensensor-ts33c-fuer-wetterstation Hama TS33C]||E || || Hideki || 12&lt;br /&gt;
|-&lt;br /&gt;
|TFA Temp/Hydro Sensor||E || || Hideki || 12&lt;br /&gt;
|-&lt;br /&gt;
|Lacrosse TX2/TX3 Sensoren||E || || CUL_TX || 8&lt;br /&gt;
|-&lt;br /&gt;
|TFA 30320902||E || || SD_WS07 || 7&lt;br /&gt;
|-&lt;br /&gt;
|Eurochron eas800z||E || || SD_WS07  || 7&lt;br /&gt;
|-&lt;br /&gt;
|Technoline WS6750/TX70DTH||E || || SD_WS07 || 7&lt;br /&gt;
|-&lt;br /&gt;
|FreeTec Außenmodul NC-7344||E || || SD_WS07 || 7&lt;br /&gt;
|-&lt;br /&gt;
|CTW600||E || || SD_WS09 || 9&lt;br /&gt;
|-&lt;br /&gt;
|CTW602||E ||neuere Version des CTW600 mit 868.35 MHz || SD_WS09 || 9&lt;br /&gt;
|-&lt;br /&gt;
|WH1080||E || || SD_WS09 || 9&lt;br /&gt;
|-&lt;br /&gt;
|Visivon remote pt4450||E || || none || 24&lt;br /&gt;
|-&lt;br /&gt;
|Einhell HS 434/6||E || || none || 21&lt;br /&gt;
|-&lt;br /&gt;
|Flamingo FA20RF / FA21RF / FA22RF Rauchmelder||E || || FLAMINGO || 13,13.1,13.2&lt;br /&gt;
|-&lt;br /&gt;
|mumbi m-FS300||E || || none || 26,27&lt;br /&gt;
|-&lt;br /&gt;
|TFA 30.3200||E || || none || 33&lt;br /&gt;
|-&lt;br /&gt;
|Livolo||E|| || none || 20&lt;br /&gt;
|-&lt;br /&gt;
|Smartwares RM174RF/2 (RM174RF-001CPR) 4500177571 ||E [S?]|| IT EV1527; TODO herausfinden: Alarmierung (wie Alarmton getriggered werden kann); Batterieinfo? || IT || 3&lt;br /&gt;
|-&lt;br /&gt;
|Smartwares SH5-TSO-A||E S|| || IT || ?&lt;br /&gt;
|-&lt;br /&gt;
|X10 Security Devices||E|| ||  || 39&lt;br /&gt;
|-&lt;br /&gt;
|[[Somfy_via_SIGNALduino|Somfy RTS]]||E S|| || SOMFY || 43&lt;br /&gt;
|}&lt;br /&gt;
Bei einigen Intertechno-Funksteckdosen (Brennenstuhl) kann es zu Empfangsproblemen kommen. Hier muss die Taktrate, mit der gesendet wird, angepasst werden. Dazu muss für &#039;&#039;Funksteckdose&#039;&#039; (also sauber per-Client-Instanz-spezifisch, NICHT SIGNALduino-Transceiver-global) das Attribut &lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;Funksteckdose&amp;gt; ITclock 300&amp;lt;/code&amp;gt; &lt;br /&gt;
gesetzt werden, der Standardwert ist 250.&lt;br /&gt;
&lt;br /&gt;
==== Mein Gerät wird in FHEM nicht erkannt ====&lt;br /&gt;
1. Prüfen, ob vom Sensor die Signaldaten (verbose &amp;gt;=4) erkannt werden. Sobald ihr die empfangenen Signaldaten im Logfile zuordnen könnt, geht es weiter mit:&lt;br /&gt;
&lt;br /&gt;
2. Eröffnet ein Thema unter [https://github.com/RFD-FHEM/RFFHEM/issues github] nach folgendem Muster:&lt;br /&gt;
:&#039;&#039;Thema :  Protokoll für &amp;lt;Das verwendete Gerät&amp;gt;&lt;br /&gt;
:Inhalt:  Eure Hardware z.B. Arduino Nano mit XYZ Empfänger, oder Arduino Nano direkt an Gerät x&lt;br /&gt;
&lt;br /&gt;
3. Auszug aus dem Logfile, welches zum Gerät gehört.&lt;br /&gt;
:&#039;&#039;Alles was ihr sonst noch über das Gerät und die übertragenen Daten wisst.&lt;br /&gt;
&lt;br /&gt;
Im Forum solltet ihr solche Fragen besser nicht posten, wenn das Gerät noch nicht unterstützt wird, dazu ist Github besser geeignet. Inzwischen wurde im Wiki eine eigene Seite eröffnet, die sich mit der Erkennung unbekannter Protokolle beschäftigt: [[Unbekannte_Funkprotokolle#Ansatz_1_-_Versuchen|Unbekannte_Funkprotokolle]].&lt;br /&gt;
&lt;br /&gt;
==== Es wird ein Protokoll erkannt, Autocreate legt aber kein device an ====&lt;br /&gt;
Im SIGNALduino sind &amp;gt;30 Protokolle implementiert. Jedoch gibt es nur wenige Module, welche diese Protokolle verarbeiten.&lt;br /&gt;
Teilweise ist das auch nicht zwingend notwendig, um seine Anforderungen zu erfüllen. Insbesondere für Schalter bzw. Sensoren, die nur zwei Zustände kennen, geht es meist ohne Modul und automatisch angelegtem Gerät.&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, wir haben einen Schalter. Dieser kann einen oder zwei Zustände senden.&lt;br /&gt;
Im FHEM Log (und, insbesondere, im FHEMWEB Event Monitor) tauchen Meldungen ähnlich dieser auf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
2015.11.15 15:52:23 4: SIGNALduino_unknown incomming msg: u85#FF8081&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir können mit Hilfe des Modules DOIF auf diese Nachricht eine Aktion ausführen:&lt;br /&gt;
&lt;br /&gt;
Entweder, wenn wir den Inhalt der Nachricht nur zu Teilen wissen, da er sich ändert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
define mydoif DOIF ([sduino:&amp;amp;DMSG] =~ &amp;quot;u85#FF8081&amp;quot;) (set Lamp on)&lt;br /&gt;
attr mydoif do always&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder, wenn wir den Inhalt exakt kennen, dann auch als Vergleichsstring&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
define mydoif DOIF ([sduino:&amp;amp;DMSG] eq &amp;quot;u85#FF8081&amp;quot;) (set relais on)&lt;br /&gt;
attr mydoif do always&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Teil u85#FF8081 muss individuell angepasst werden, der Name eures SIGNALduino möglicherweise auch.&lt;br /&gt;
&lt;br /&gt;
Als Alternative zu DOIF hier ein regex-verwendendes notify-Beispiel für einen Sender, der meint, zwei Codes alternierend senden zu müssen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
define n_sender_trigger notify sduino:UNKNOWNCODE.*u41#(13B72253|163873B3) { my_sender_trigger_indicate();; }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selbstverfreilich muss in diesem Moment auch eine sub my_sender_trigger_indicate() definiert werden (z.B. in FHEM/99_myUtils.pm), die dort z.B. als Test eine Log-Ausgabe (Log3()) machen kann.&lt;br /&gt;
&lt;br /&gt;
=== Das Logfile ===&lt;br /&gt;
Im Logfile ab [[Verbose]] 4 tauchen diverse Meldungen auf, deren Bedeutung kurz erläutert wird (verbose 3 unterdrückt diese Meldungen).&lt;br /&gt;
&lt;br /&gt;
UPDATE: der folgende Bereich ist von einem weniger erfahrenen Zeitgenossen früher nach Kräften erweitert/geschrieben worden. Mittlerweile existiert aber ein neuer Inhalt [[Unbekannte_Funkprotokolle]] (siehe auch Erwähnung weiter oben), der als sehr gut beschrieben und unvergleichlich detailreicher bezeichnet werden muss (&amp;quot;endlich gibt es sowas!&amp;quot;). Der Bereich hier dürfte somit zwar für grundlegende Verdeutlichungen noch recht sinnvoll sein, der Inhalt sollte allerdings evt. in eine konsistente Dokumentation überarbeitet (verlagert/dedupliziert/reduziert) werden.&lt;br /&gt;
&lt;br /&gt;
Die Protokolle (von der SIGNALDuino-Firmware gesendete Signal-Beschreibungs-Strings) können wie folgt unterschieden werden:&lt;br /&gt;
&lt;br /&gt;
*MS - Nachricht mit Sync Puls: Hierzu ein Beispiel&lt;br /&gt;
:&amp;lt;code&amp;gt;MS;P0=-108;P1=395;P2=-1033;P3=-547;P4=-19932;P5=-8916;P6=1368;D=151313131312131313131313131313131312121212121313131313131312131212132;CP=1;SP=5;&amp;lt;/code&amp;gt; P0-P6 sind die Signalpegel (Dauer und positiv/negativ). Hinter D= befindet sich die Abfolge der Signale. Die ersten beiden Ziffern 15 in D sind wie folgt zu lesen. Zuerst wurde ein Signal &amp;quot;1&amp;quot; also P1 mit 395 Mikrosekunden high (die Zeitdauer ergibt sich aufgrund der Mitteilung &amp;quot;P1=395&amp;quot;) und anschließend ein Signal &amp;quot;5&amp;quot; also P5 mit 8916 Mikrosekunden low (die Zeitdauer ergibt sich aufgrund der Mitteilung &amp;quot;P5=-8916&amp;quot;) gemessen. CP=1 ist die Referenz auf den Takt des Signales - der Basistakt ist in diesem Fall ~395 Mikrosekunden. SP=5 gibt die Referenz zum Syncpuls an, der das gesamte Signal einleitet. Welche Signalfolge nun eine binäre 1 bzw. 0 bedeutet, wird im SIGNALduino über die integrierte Protokoll Liste realisiert.&lt;br /&gt;
&lt;br /&gt;
*MC - Nachricht vom Typ Manchester: Manchesterkodierte Signale können bereits sehr einfach im Arduino in eine Binärform umgewandelt werden. Es wird hier nach IEEE 802.3 umgewandelt. In Manchester Signalen gibt es lange und kurze Pulse. Deren Durchschnittswert wird mit LL (long low), LH (long high), SL (short low) und SH (short high) übermittelt. Zusätzlich, um das Protokoll schneller erkennen zu können, wird die Taktfrequenz mit übermittelt (C=429 Mikrosekunden). Die Daten befinden sich hinter D= und werden in HEX Form übergeben.&lt;br /&gt;
:&amp;lt;code&amp;gt;MC;LL=-1066;LH=904;SL=-562;SH=385;D=332B4B4D54D5554B552CD2D554B2B5354A;C=429;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MU - Message unsynced: Diese Art von Nachrichten sind nicht nach Manchester codiert und haben auch keinen erkennbaren Sync / Clock Signalpegel am Start der Nachricht. Bei diesen Nachrichtentypen ist es, im Vergleich zu den anderen, am wahrscheinlichsten, dass das übermittelte Signal unvollständig oder überhaupt kein Signal ist. Wie bei MS sind P0-P6 die Signalpegel und in D= wird die Abfolge der Signalpegel referenziert. CP=2 gibt auch hier die Referenz zum Takt an, allerdings muss dieser nicht korrekt erkannt worden sein.&lt;br /&gt;
:&amp;lt;code&amp;gt;MU;P0=1372;P1=-580;P2=362;P3=-1047;D=01212321212321212121212121212123212123212321232121212121212321;CP=2;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es erscheinen viele Meldungen dieser Art:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fingerprint for MU Protocol id xxxx -&amp;gt; yyy matches, trying to demodulate&lt;br /&gt;
sduino: Starting demodulation at Position 1&lt;br /&gt;
Fingerprint for MU Protocol id 28 -&amp;gt; IC Ledspot matches, trying to demodulate&lt;br /&gt;
sduino: Starting demodulation at Position 1&lt;br /&gt;
Fingerprint for MU Protocol id 29 -&amp;gt; HT12e remote matches, trying to demodulate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies sind nun Bemühungen, anhand der von der SIGNALDuino-Firmware gelieferten rohen aber detaillierten Signal-Strings eine Vor-Analyse / Fingerprinting vorzunehmen.&lt;br /&gt;
Man könnte nun z.B. bei solchen Fingerprinting-Analysen erkennen:&lt;br /&gt;
* dass der Basis-Takt-Wert innerhalb eines charakteristischen Zeit-Bereichs liegt&lt;br /&gt;
* dass die Anzahl der Sync-Pulse eine präzise Zahl ist&lt;br /&gt;
* dass Längen erkannter Puls-Typen innerhalb eines Bereichs liegen&lt;br /&gt;
&lt;br /&gt;
Mittels solcher Untersuchungen kann man also final hoffentlich hinreichend plausibel feststellen, &amp;quot;dass diese Aktivitäten offensichtlich(?) zu einer Funk-Komponente Rauchmelder von Hersteller XYZ gehören müssen, und man somit weiterleiten muss an ein (möglicherweise bereits existierendes) Userdaten-Dekodier-Modul für diese Herstellerkomponente&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei einer dann erfolgenden Demodulation des noch rohen SIGNALDuino-Strings könnte man z.B. (hoffentlich richtigerweise) annehmen, dass eine Signalpegel-Typ-Folge &amp;quot;13&amp;quot; eine binäre 1 bedeuten soll, während eine Folge &amp;quot;12&amp;quot; eine binäre 0 bedeuten soll. Man erhält aus dem Gesamt-Puls-String also nach vollständiger Demodulation eine Abfolge von vielen 0/1 Bits, die insgesamt ein Datenwort darstellen, mit einer gewissen Länge von NN bits (diese Längen-Angabe könnte übrigens - neben Namenssuche nach Hersteller oder Produkt etc. - ein wichtiges Such-Merkmal sein, ob andere Frameworks tatsächlich bereits wissen, wie Daten dieser Funk-Komponente zu dekodieren sind!). Dieses demodulierte Datenwort ist nun das finale Datenwort, welches einen Container für die Funk-Komponenten-Informationen darstellt (in diesem Container also beispielsweise enthalten: Temperatur, Feuchte, Akku-Status, ID, Alarm, ... - zumindest wenn nicht dummerweise der ganze Container erst einmal CRC- oder Crypto-verschlüsselt ist...).&lt;br /&gt;
&lt;br /&gt;
Man muss an dieser Stelle unbedingt sagen, dass dieses Userdaten-Datenwort (einer bestimmten Hersteller-Funk-Komponente!) natürlich bei &#039;&#039;jeglichen&#039;&#039; Transceiver-Systemen &#039;&#039;immer&#039;&#039; gleich erkannt werden &#039;&#039;muss&#039;&#039; - an dieser Stelle ist also ganz klar, dass diese Daten an &#039;&#039;allgemeine&#039;&#039; FHEM-Module weitergeleitet (Dispatched) werden müssen, die nach Übernahme von Daten von &#039;&#039;jeglichen&#039;&#039; Transceiver-Systemen diese Daten immer auf die gleiche Weise (&#039;&#039;&#039;&#039;&#039;generisch/zentral&#039;&#039;&#039;&#039;&#039;) für die jeweilige Hersteller-Funk-Komponente erledigen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Abfolge ist also ganz klar:&#039;&#039;&#039;&lt;br /&gt;
Funk-Aktivität --&amp;gt; Transceiver-Gerät/Firmware (SIGNALDuino) --&amp;gt; maximal detailreich beschreibender Rx-Analyse-Output-String --&amp;gt; Fingerprinting-Grobzuordnung des (SIGNALDuino-Firmware-)Outputs (durch 00_SIGNALduino.pm) auf gerätespezifisches Verhalten --&amp;gt; &#039;&#039;generische/zentrale&#039;&#039; Dekodierung des gerätespezifischen Protokoll-Datenworts, in zentralen Grundsatz-Modulen wie z.B. &amp;lt;code&amp;gt;14_SD_WS.pm&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Und wenn dann bei einer solchen Schritte-Abfolge irgendetwas noch fehlen/unpassend sein sollte, dann muss eben entsprechendes Development an gewissen Stellen erfolgen ;-)&lt;br /&gt;
&lt;br /&gt;
====Minimieren (whitelist/blacklist) von unerwünschter Kommunikations-Aktivität/Einträgen====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unknown Code&amp;quot; bedeutet, dass der SIGNALduino Signaldaten empfangen und diese binär interpretiert hat. Diese Meldung soll uns nun aber mitteilen, dass es dann nicht weiter verarbeitet werden kann, da kein Modul  existiert (oder kein Weiterleitungs-Dispatch zu einem bereits existierenden), welches diese Daten jetzt in ihre Bedeutung umwandeln kann. &lt;br /&gt;
:&amp;lt;code&amp;gt;sduino: Unknown code u1FFFFF0, help me!&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Außerdem kommt es gehäuft zu Logmeldungen und auch Events in ähnlicher Form:&lt;br /&gt;
:&amp;lt;code&amp;gt;SIGNALduino_unknown incomming msg: u85#FF8081&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittlerweile sind über 50 Protokolle für den SIGNALduino definiert. Dadurch kommt es vor, dass sich ein Signal mit mehr als einem Protokoll demodulieren lässt. Meist führt dies dann zu zusätzlichen &amp;quot;Unknown code&amp;quot;-Einträgen.&lt;br /&gt;
&lt;br /&gt;
Derartige Einträge können mit dem Attribut WhitelistID minimiert werden. Dabei werden die Geräte, die nach Daten-Empfang tatsächlich verarbeitet werden sollen (also welche Protokolle vom FHEM Modul berücksichtigt werden), mit ihrer Protokollnummer in die WhitelistID aufgenommen.&lt;br /&gt;
Für Protokolle, die nicht berücksichtigt werden, gibt es weder Logeinträge noch Events. Diese werden im Programmablauf nicht berücksichtigt. Das spart zum einen Ressourcen und trägt auch zur Übersichtlichkeit bei. &lt;br /&gt;
Die Protokollnummer kann Tabelle [[#Unterst.C3.BCtzte_Ger.C3.A4te]] entnommen werden (hilfreich ist es auch, wenn in den verwendeten Geräten im Internal &amp;lt;gerätename&amp;gt;_DMSG nachgesehen wird). So bedeutet beispielsweise ein Eintrag der Form &amp;lt;code&amp;gt;W50#FF553335FFBC&amp;lt;/code&amp;gt; dass dann das Protokoll  #50 in die Whitelist aufzunehmen wäre (&amp;lt;code&amp;gt;attr sduino whitelist_IDs 50&amp;lt;/code&amp;gt;).&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Achtung Schreibweise: Dokumentation oft als WhitelistID o.ä., aber Name ist whitelist_IDs!!&lt;br /&gt;
}}&lt;br /&gt;
Die Angabe erfolgt durch Komma getrennt: z.B.:&lt;br /&gt;
:&amp;lt;code&amp;gt;1,2,5,10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Senden mit dem SIGNALduino ===&lt;br /&gt;
Der SIGNALduino kann etwas &amp;quot;raw senden&amp;quot;, indem ihm das SIGNAL so übermittelt wird, wie er es moduliert. Hierzu  muss der Befehl wie folgt eingegeben werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set sduino sendMsg P3#00111010#R4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl moduliert die Bitfolge 00111010 mittels Protokoll #3 und wiederholt die Nachricht 4x.&lt;br /&gt;
Die Protokoll Nummer kann aus einer empfangenen Nachricht extrahiert werden. Ebenso die Bits.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sduino: extracted data 00111010 (bin)&lt;br /&gt;
sduino: Found Protocol id 3 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das Signal auch in einer &amp;quot;rohform&amp;quot; angegeben werden. Dies ist manchmal in speziellen Fällen notwendig:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set sduino raw SR;;R=3;;P0=4742;;P1=-1554;;P2=286;;P3=-786;;P4=649;;P5=-420;;D=0123234545234545452323232323454523234523454523232345454523232323452345234523452345;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
R=3 bedeutet, das Signal wird 3x gesendet.&lt;br /&gt;
Die Übertragung besteht aus den in D angegeben Pulsen, welche in P0-P5 definiert werden.&lt;br /&gt;
Die Daten kann man aus einer empfangenen MS oder MU Nachricht extrahieren.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann ab Version 3.2 auch eine vereinfachte Form eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
====Fehlersuche====&lt;br /&gt;
&lt;br /&gt;
(Zielgerät reagiert nicht, etc.)&lt;br /&gt;
&lt;br /&gt;
* Nachrichtenwiederholungsanzahl muss evt. für manche Geräte entsprechend groß eingestellt sein&lt;br /&gt;
* Sende-Takt-Wert (Clock) passt evt. nicht ganz, siehe z.B. Thread-Antwort [https://forum.fhem.de/index.php/topic,58397.msg775434.html#msg775434 Signalduino Version 3.3.1], wo für IT-Geräte ein Attribut anhand der CP= des Empfangsdaten-Logs modifiziert wird. ACHTUNG: dies kann entweder global das Internal-Attribut ITClock eines SIGNALduino-Transceiver-Devices sein, oder (viel besser da korrekt geräte-instanz-spezifische Konfiguration) das ITclock eines IT-Client-Devices.&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=VORSICHT blöder Schreibweisen-Mismatch ITClock vs. ITclock!!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Fehlerbehandlung ==&lt;br /&gt;
Der SIGNALduino kann mit folgendem Befehl auf Werkseinstellungen zurückgesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;get raw e&amp;lt;/code&amp;gt;&lt;br /&gt;
als Antwort kommt dann &amp;quot;ccFactoryReset done&amp;quot;. Ob ein solcher Reset nötig ist, erkennt man an der Antwort auf den Befehl &amp;quot;get config&amp;quot;, auf den dann die Meldung &amp;quot;config: MS=1;MU=1;MC=1&amp;quot; folgen sollte.&lt;br /&gt;
&lt;br /&gt;
In der Firmware sind die folgenden Befehle eingebaut&lt;br /&gt;
&lt;br /&gt;
*:&amp;lt;code&amp;gt;get raw C&amp;lt;reg&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;reg&amp;gt; is a (two digit) hex number: return the value of the cc1101 register. &amp;lt;reg&amp;gt;=99 dumps the first 48 registers.&lt;br /&gt;
Example: C35 -&amp;gt; C35 = 0D&lt;br /&gt;
*:&amp;lt;code&amp;gt;get raw e&amp;lt;/code&amp;gt;&lt;br /&gt;
EEPROM / factory reset.  resets all eeprom values without reboot&lt;br /&gt;
*:&amp;lt;code&amp;gt;get raw r&amp;lt;AA&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Read eeprom  (da das &amp;quot;R&amp;quot; beim SIGNALDuino bereits mit freeram belegt ist, habe ich das &amp;quot;r&amp;quot; verwendet)&lt;br /&gt;
*:&amp;lt;code&amp;gt;get raw r&amp;lt;AA&amp;gt;n&amp;lt;/code&amp;gt;&lt;br /&gt;
Read 16 byte from eeprom (z.B. r00n)&lt;br /&gt;
*:&amp;lt;code&amp;gt;get raw W&amp;lt;AA&amp;gt;&amp;lt;DD&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Write eeprom (schreibt einen Wert ins EEPROM und ins CC1101 Register. Die eeprom Adresse hat einen Offset von 2. z.B W041D schreibt 1D ins Register 2)&lt;br /&gt;
&lt;br /&gt;
Die Sendeleistung lässt sich mit &lt;br /&gt;
:&amp;lt;code&amp;gt;get sduino ccreg 3E&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
prüfen, wobei die Rückmeldung wie folgt zu lesen ist: &lt;br /&gt;
  &amp;quot;-10_dBm&amp;quot;  =&amp;gt; &#039;34&#039;,&lt;br /&gt;
  &amp;quot;-5_dBm&amp;quot;   =&amp;gt; &#039;68&#039;,&lt;br /&gt;
  &amp;quot;0_dBm&amp;quot;    =&amp;gt; &#039;60&#039;,&lt;br /&gt;
  &amp;quot;5_dBm&amp;quot;    =&amp;gt; &#039;84&#039;,&lt;br /&gt;
  &amp;quot;7_dBm&amp;quot;    =&amp;gt; &#039;C8&#039;,&lt;br /&gt;
  &amp;quot;10_dBm&amp;quot;   =&amp;gt; &#039;C0&#039; &lt;br /&gt;
Dabei wird die Sendeleistung dauerhaft mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set sduino cc1101_patable &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
hochgeschaltet (&amp;lt;value&amp;gt; durch den Wert ersetzen).&lt;br /&gt;
&lt;br /&gt;
Weitere Firmware-Befehle sind im Thread-Beitrag {{Link2Forum|Topic=58396|Message=497921}} zu finden.&lt;br /&gt;
&lt;br /&gt;
== Foren Links ==&lt;br /&gt;
* {{Link2Forum|Topic=38402|LinkText=Forenthread - Ankündigung}}&lt;br /&gt;
* {{Link2Forum|Topic=58396|LinkText=SIGNALDuino Empfänger Firm- und Hardware}}&lt;br /&gt;
* {{Link2Forum|Topic=58397|LinkText=Signalduino Entwicklung Version 3.3.1 }}&lt;br /&gt;
* [http://www.rflink.nl/blog2/wiring Beschreibung zu diversen Empfängern und Verbesserung der Empfangsleistung]&lt;br /&gt;
* [[SIGNALduino in die Arduino Entwicklungsumgebung einbinden]]&lt;br /&gt;
* [[Somfy via SIGNALduino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:Arduino]]&lt;br /&gt;
[[Kategorie:433MHz]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SIGNALduino&amp;diff=31024</id>
		<title>SIGNALduino</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SIGNALduino&amp;diff=31024"/>
		<updated>2019-07-23T09:14:32Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Unterstützte Geräte */ Ergänzungen zu Flamingo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Empfang und Verarbeitung von digitalen Signalen&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModFTopic=38402&lt;br /&gt;
|ModCmdRef=SIGNALduino&lt;br /&gt;
|ModForumArea=Sonstige Systeme&lt;br /&gt;
|ModTechName=00_SIGNALduino.pm&lt;br /&gt;
|ModOwner=Sidey ({{Link2FU|8018|Forum}}/[[Benutzer Diskussion:Sidey|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Übersicht ===&lt;br /&gt;
Unter den Namen SIGNALduino versteht man sowohl den Low-Cost Empfänger für digitale Signale (vergleichbar dem  [[CUL]]) als auch das gleichnamige Modul mit dem Dateinamen 00_SIGNALduino.pm. Mit dem SIGNALduino kann man entweder 433 oder 868 MHz-Geräte auslesen und ansprechen. Der SIGNALduino funktioniert auch mit anderen Medien wie Infrarot oder direkter Kabelverbindung.&lt;br /&gt;
&lt;br /&gt;
Der SIGNALduino(-Stick) erkennt Signale anhand von Mustern und gibt sie (als maximal detaillierte Beschreibung einer Signalabfolge) dann schlicht sofort nur noch an FHEM zur Auswertung (Dekodierung) weiter. Auch nicht erkannte Signale werden an FHEM übergeben.&lt;br /&gt;
Aufgabe des SIGNALduino (Firmware/Stick) ist es also nur, Signal-Aktivitäten zu erfassen und maximal präzise (als kurzer Text-String) zu beschreiben.&lt;br /&gt;
Alles weitere (echte, finale Auswertung / Zuweisung dieser Signal-Daten) wird dann auf einer großen Box (Raspberry o.ä.) gemacht.&lt;br /&gt;
&lt;br /&gt;
=== Vorteil gegenüber einem CUL/FHEMduino ===&lt;br /&gt;
Der SIGNALduino hat den Vorteil einer sehr schnellen Demodulation des Funksignals. Sollen weitere Protokolle dekodiert werden, so muss dazu nur ein passendes FHEM Modul entwickelt oder ein universelles Modul erweitert werden (also auf flexibel direkt updatebarer Rechner-Seite!!). Änderungen am Arduino-Firmware-Code sind normalerweise nicht notwendig (sofern die grundsätzliche Signal-Klassifizierung des Sticks korrekt funktioniert - leider nicht immer, z.B.: [https://github.com/RFD-FHEM/SIGNALDuino/issues/65 MU-Nachrichten werden z.T. als MC erkannt]).&lt;br /&gt;
&lt;br /&gt;
Ein großer Vorteil des SIGNALduino besteht darin, dass auch Geräte mit leicht abweichende Frequenzen steuerbar sind; so empfangen die Somfy-Rolladenmotoren beispielsweise auf 433.42 und nicht, wie bei anderen Geräten sehr oft üblich, auf 433.92 MHz. Die Frequenzumstellung stellt für den SIGNALduino kein Problem dar.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann man den SIGNALduino direkt an den Sendeausgang eines Sensors anbinden und die digitalen Signale empfangen, dabei bitte aber auf die passenden Spannungen achten, denn ein Arduino Nano verträgt nur 5V.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsversion ===&lt;br /&gt;
Der SIGNALduino wird derzeit aktiv weiterentwickelt, siehe dazu https://github.com/RFD-FHEM. Die Version von Sidey wird [https://forum.fhem.de/index.php/topic,58396.0.html hier ]genauer beschrieben.&lt;br /&gt;
&lt;br /&gt;
Es existiert eine weitere Entwicklungsversion, siehe dazu die [https://forum.fhem.de/index.php/topic,82379.msg744554.html#msg744554 Firmware] (hierzu gibt es auch eine private Version des [https://github.com/Ralf9/RFFHEM/issues/2 Moduls]).&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
=== Controller ===&lt;br /&gt;
&lt;br /&gt;
Der SIGNALduino (Hardware) wird über den USB Port angeschlossen, er kann aber auch mit zusätzlichen ESP Modulen über ein WLAN angebunden werden. &lt;br /&gt;
&lt;br /&gt;
Der SIGNALduino basiert auf einem [http://arduino.cc/de/Main/ArduinoBoardNano Arduino Nano], die Schaltung entspricht der des [[FHEMduino]] oder dem [[Selbstbau_CUL]]:&lt;br /&gt;
* Entweder wird ein Arduino mit einfachen Sende- und Empfangsmodulen verwendet, dann ist die Verkabelung identisch zum [[FHEMduino]] &lt;br /&gt;
* Oder es wird ein CC1101 Transceiver verwendet, dann ist die Verkabelung identisch zum [[Selbstbau_CUL]].&lt;br /&gt;
* Zuletzt gibt es ein fertig konfektioniertes Modul von In-Circuit mit Radino CC1101 Varianten, link zum [http://shop.in-circuit.de/index.php Hersteller]. &lt;br /&gt;
&lt;br /&gt;
Achten Sie beim Selbstbau auf die entsprechenden Sender-Empfänger. Der sehr preiswert angebotene XY-MK-5V hat sich als zu unzuverlässig erwiesen, während anscheinend beim CC1101 (insbesondere der &amp;quot;grünen Version&amp;quot;) keine Probleme auftreten. &lt;br /&gt;
&lt;br /&gt;
Es stehen auch für den [https://www.arduino.cc/en/Main/arduinoBoardUno UNO] und [https://www.arduino.cc/en/Main/ArduinoBoardProMini PRO Mini] Firmware-Dateien zur Verfügung. Die ausgelieferte Firmware läuft nur auf Mikrocontrollern mit 16 MHz; wer einen Mikrocontroller mit 8 MHz verwenden möchte, muss die Firmware selbst compilieren. Die SW ist auf [https://github.com/RFD-FHEM/SIGNALDuino github]. Vorgesehen ist nur die Übersetzung unter Windows mit Visual Studio und dem Visual Micro Zusatz. Es gibt aber auch eine Anleitung, wie man mit der [[Arduino]] IDE oder einem Makefile [[SIGNALduino Compilieren]] kann.&lt;br /&gt;
&lt;br /&gt;
Es gibt auch eine Variante des SIGNALduino, die auf einem [[ESP8266]] nativ läuft, diese funktioniert seit Anfang 2018 annehmbar, allerdings befindet diese sich noch in einer Entwicklungsphase.&lt;br /&gt;
&lt;br /&gt;
An den &amp;quot;SIGNALESP&amp;quot; kann auch ein CC1101 via SPI angebunden werden:&lt;br /&gt;
&lt;br /&gt;
{||&lt;br /&gt;
!CC1101 Bezeichnung&lt;br /&gt;
!ESP Pin&lt;br /&gt;
|-&lt;br /&gt;
|CLK||GPIO14&lt;br /&gt;
|-&lt;br /&gt;
|MOSI||GPIO13&lt;br /&gt;
|-&lt;br /&gt;
|MISO||GPIO12&lt;br /&gt;
|-&lt;br /&gt;
|CSN||GPIO15&lt;br /&gt;
|-&lt;br /&gt;
|GDO0||GPIO4&lt;br /&gt;
|-&lt;br /&gt;
|GDO2||GPIO5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wird ein einfacher Empfänger / Sender Kombination verwendet, dann über die PINs:&lt;br /&gt;
&lt;br /&gt;
{||&lt;br /&gt;
! Bezeichnung &lt;br /&gt;
! ESP Pin&lt;br /&gt;
|-&lt;br /&gt;
|Transmitter||GPIO4&lt;br /&gt;
|-&lt;br /&gt;
|Receiver||GPIO5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sendemodule ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Viele user berichten über Empfangsprobleme bei Nutzung des XY-MK-5V; es wird ausdrücklich empfohlen, ein anderes Empfangsmodul zu nutzen!}}&lt;br /&gt;
[[Datei:Fhemduino_schematic.png|200px|thumb|right|Beispielschaltplan SIGNAL(FHEM)duino]]  &lt;br /&gt;
&lt;br /&gt;
Mit einem Arduino-Nano und folgenden, billigen Sende- und Empfangsmodulen können Sie einen SIGNALduino bauen:&lt;br /&gt;
* FS1000A Dies ist das Sendemodul (TX) und wird oft im Set mit dem billigen XY-MK-5V-Empfänger angeboten (etwa 5€). &lt;br /&gt;
* RXB6 Das ist das empfohlene Empfangsmodul (RX), statt XY-MK-5V, etwa 5€ aus Deutschland.&lt;br /&gt;
&lt;br /&gt;
Die Verkabelung erfolgt analog zum [[FHEMduino]] und das bedeutet (Arduino -&amp;gt; Modul):&lt;br /&gt;
* PIN D2 an DATA des RX-Moduls&lt;br /&gt;
* PIN D11 an DATA des TX-Moduls (PIN links mit Beschriftung ATAD)&lt;br /&gt;
&lt;br /&gt;
Zusätzlich muss noch jeweils GND und 5V des Arduino mit dem GND bzw. VCC des Moduls verbunden werden.&lt;br /&gt;
&lt;br /&gt;
Jetzt fehlen noch die Antennen. Dafür braucht man ein 17,2 cm langes Stück Kupferdraht, das wird beim Anschluss &amp;quot;ANT&amp;quot; jeweils am Modul angelötet (anfängergeeignet).&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
===  USB-ID ermitteln  ===&lt;br /&gt;
Bevor der SIGNALduino mit dem FHEM Server (im Beispiel hier ein Raspberry PI) verbunden werden kann, muss die USB-Schnittstelle ermittelt werden. Hierzu bitte auf dem Terminal den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt; ls -l /dev/serial/by-id &amp;lt;/pre&amp;gt;&lt;br /&gt;
ausführen. Beispielhaft sieht das Ergebnis etwa so aus: &lt;br /&gt;
&#039;&#039;lrwxrwxrwx 1 root root 13 Jan 31 00:02 &#039;&#039;&#039;usb-FTDI_FT232R_USB_UART_A903N5T5-if00-port&#039;&#039;&#039; -&amp;gt; ../../ttyUSB0&#039;&#039; &lt;br /&gt;
Damit ist der Anschluss des SIGNALduino bestimmt und das Gerät kann wie im nächsten Abschnitt beschrieben definiert werden. Zuvor muss noch das Modul geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== FHEM-Modul laden ===&lt;br /&gt;
Die SIGNALduino Module werden über das FHEM [[update]] verteilt, sobald die Änderungen einen &amp;quot;stabilen&amp;quot; und alltags tauglichen Zustand haben. Aktuell wird dort die Version 3.4.0 seit 20.07.2019 verteilt.&lt;br /&gt;
&lt;br /&gt;
Die in der Entwicklung befindliche Version (3.4.x) kann mit folgenden Befehlen geladen werden:&lt;br /&gt;
&lt;br /&gt;
* FHEM aktualisieren: &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; &lt;br /&gt;
* SIGNALduino Modul aktualisieren: &amp;lt;code&amp;gt;update all &amp;lt;nowiki&amp;gt;https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/dev-r34/controls_signalduino.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;  Durch das Update von FHEM wird sichergestellt, dass das Modul mit FHEM arbeitet.&lt;br /&gt;
*Danach kann das Gerät wie folgt definiert werden (die Spezifikation des USB-Anschlusses muss dabei an die aktuellen Gegebenheiten angepasst werden):&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;eigener-SIGNALduino-Name&amp;gt; SIGNALduino /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A903N5T5-if00-port0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
* Solltet Ihr einen SIGNALESP via IP einbinden wollen ist die Syntax&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;eigener-SIGNALESP-Name&amp;gt; SIGNALduino &amp;lt;ip-adresse&amp;gt;:23&amp;lt;/code&amp;gt;&lt;br /&gt;
Nach dem Einbinden wird der SIGNALduino, falls er erkannt wird, im Status &amp;quot;Opened&amp;quot; angezeigt. &lt;br /&gt;
&lt;br /&gt;
Für neuere Entwicklungen kann in FHEM auch dauerhaft die developer Version aktualisiert werden:&lt;br /&gt;
&amp;lt;code&amp;gt;update add &amp;lt;nowiki&amp;gt;https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/dev-r34/controls_signalduino.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
Danach wird FHEM bei dem normalen Update-Befehl immer automatisch die aktuelle dev Version laden.&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Beispiel-Befehle verwenden &amp;quot;sduino&amp;quot; als &amp;lt;eigener-SIGNALduino-Name&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Flashen des Arduino mit der SIGNALduino Firmware ====&lt;br /&gt;
Falls avrdude noch nicht vorhanden ist, kann es mit folgendem Befehl installiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get install avrdude&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In FHEM ist der SIGNALduino mit dem Status &amp;quot;Open&amp;quot; vorhanden. Jetzt müssen wir FHEM noch mitteilen, welche Hardware wir angeschlossen haben. Über das Attribut &#039;&#039;hardware&#039;&#039; lässt sich zwischen den mitgelieferten Firmware-Dateien wechseln. Solltet ihr einen Nano mit cc1101 Transceiver verwenden, so wählt bitte folgende Hardware&lt;br /&gt;
:&amp;lt;code&amp;gt;attr sduino hardware nanoCC1101&amp;lt;/code&amp;gt;&lt;br /&gt;
sonst üblicherweise&lt;br /&gt;
:&amp;lt;code&amp;gt;attr sduino hardware nano328&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann muss mitgeteilt werden, welche Version man geladen haben will: stable oder testing. Derzeit ist nur testing verfügbar:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr sduino updateChannelFW testing&amp;lt;/code&amp;gt;&lt;br /&gt;
Nun wird die entsprechende Firmware heruntergeladen. Dies geschieht durch den Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;get sduino availableFirmware&amp;lt;/code&amp;gt;&lt;br /&gt;
Anschließend kann der &#039;&#039;flash&#039;&#039; Befehl abgesetzt werden: &lt;br /&gt;
:&amp;lt;code&amp;gt;set sduino flash &amp;lt;und-dann-auswaehlen&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Dadurch wird der Arduino mit der gewählten Firmware geflasht. Das Ergebnis wird im Webinterface direkt angezeigt.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch der Flash-Befehl mit einem Dateinamen aufgerufen werden. Diese Möglichkeit sollte jedoch nur verwendet werden, wenn die SIGNALduino Firmware selbst compiliert wurde und eine andere Hardware verwendet wird. Der Flash-Befehl wird wie folgt aufgerufen:&lt;br /&gt;
:&amp;lt;code&amp;gt;set sduino flash FHEM/firmware/SIGNALduino_mega2560.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
(je nachdem wo und unter welchem Namen die .hex Datei abgelegt wurde)&lt;br /&gt;
&lt;br /&gt;
==== Flashen einer Firmware über HTTP ====&lt;br /&gt;
Die Firmware wird in absehbarer Zeit nicht mehr über den Update Mechanismus verteilt werden. &lt;br /&gt;
Damit die passende Firmware auf den SIGNALduino geladen werden kann, wird diese dann über HTTP geladen.&lt;br /&gt;
&lt;br /&gt;
==== Vorabversion einer Firmware ====&lt;br /&gt;
Die Firmware des SIGNALduino wird ebenso wie das FHEM Modul auch weiter entwickelt.&lt;br /&gt;
Die Entwickler sind auf Tests und Rückmeldungen der Nutzer angewiesen, da leider nicht alle Sensoren vorher getestet werden können.&lt;br /&gt;
&lt;br /&gt;
Aktuell (November 2018) ist noch die Version 3.3.1 in Entwicklung. Diese steht aktuell in einer Release Candidate Version zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Für die folgenden Microcontroller kann man die Firmware seit 21.02.2019 auch direkt downloaden und teilweise flashen. &lt;br /&gt;
Dazu muss das Attribut hardware auf einen gültigen Wert angepasst werden!&lt;br /&gt;
Über den GET Befehl availableFirmware werden dann für die hinterlegte Hardware die passenden Versionen gesucht. Über das Attribut updateChannelFW kann zwischen &amp;quot;stable&amp;quot; und &amp;quot;testing&amp;quot; definiert werden, welche Art von Firmware angeboten werden soll.&lt;br /&gt;
&lt;br /&gt;
Nachdem die Firmwareversion erfragt wurde, bietet der set flash Befehl eine Auswahlliste an. Wird ein Flash Befehl mit einer der Versionen ausgewählt, wird diese Version zunächst heruntergeladen und bei den AVR Versionen auch versucht diese mittels avrdude zu flashen.&lt;br /&gt;
Die Firmware für den ESP8266 kann aktuell leider noch nicht über diesen Befehl aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
Alternativ funktioniert aber auch die Option, dem Flash Befehl eine URL zu übergeben. Dann wird die Datei aus der URL heruntergeladen und auch versucht diese zu Flashen. z.B.&lt;br /&gt;
SIGNALDuino_nanocc1101.hex für einen Nano mit CC1101&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set sduino flash https://github.com/RFD-FHEM/SIGNALDuino/releases/download/3.3.1-RC10/SIGNALDuino_nanocc1101release.hex&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
SIGNALESP_.hex (mit cc1101) für einen ESP8266 und 1 MB Flash&lt;br /&gt;
&amp;lt;code&amp;gt;set ipduino flash https://github.com/RFD-FHEM/SIGNALDuino/releases/download/nightly/SIGNALDuino_ESP8266cc1101nightly.hex&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
!Achtung, aktuell wird die Firmware für den ESP dadurch nur herunter geladen. Flashen müsst ihr leider immer noch über ein passendes Tool &lt;br /&gt;
z.B. [https://github.com/nodemcu/nodemcu-flasher ESP8266Flasher.exe] oder Esptool und einer seriellen Konsole.&lt;br /&gt;
Auch ist zu beachten, es handelt sich hierbei tatsächlich um ein Binary und nicht um ein Hex File. &lt;br /&gt;
&lt;br /&gt;
Nach dem Booten des ESPs, spannt dieser ein eigenes WLAN auf. Habt ihr euch damit verbunden, könnt ihr den ESP mit eurem vorhandenen WLAN verbinden.&lt;br /&gt;
&lt;br /&gt;
Die Haupt-Seite für Firmware-Releases findet sich unter https://github.com/RFD-FHEM/SIGNALDuino/releases/ .&lt;br /&gt;
Dort kann auch eine Änderungshistorie eingesehen werden.&lt;br /&gt;
==== Flashen eines radino Boards mit ATmega32U4 ====&lt;br /&gt;
&lt;br /&gt;
Diese Funktion steht seit 21.02.2019 nun auch in der via FHEM aktualisierten version zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
Auch sind Berichte bekannt, dass der Radino beim Neustart von FHEM nicht korrekt initialisiert wird.&lt;br /&gt;
Weiterhin ist zu beachten, dass der Bootloader eine andere USB ID bekommt und diese im Attribut flashCommand hinterlegt werden muss.&lt;br /&gt;
&lt;br /&gt;
==== Fehler beim Flashen ====&lt;br /&gt;
Sollte bei einem Flash Vorgang ein Fehler auftreten, solltet ihr zunächst im Logfile mit Verbose 5 nachsehen.&lt;br /&gt;
&lt;br /&gt;
Findet ihr dort keine Fehlermeldung, gibt es noch ein separates Flashlog, welches ihr über einen Browser aufrufen könnt. Dazu müsst ihr nur den Folgenden Pfad an euren Servernamen anhängen:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/fhem/FileLog_logWrapper?dev=Logfile&amp;amp;type=text&amp;amp;file=SIGNALduino-Flash.log&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geräteerkennung ===&lt;br /&gt;
==== Unterstützte Geräte ====&lt;br /&gt;
Für die folgenden Geräte gibt es derzeit (2017) eine Unterstützung für den Betrieb mit FHEM. Die Geräte werden [[autocreate|automatisch erkannt]] und in der Konfiguration eingetragen, wenn der SIGNALduino läuft.&lt;br /&gt;
Bitte Geräte mit sehr präzisen Referenzen hier listen (Produktnummer, Protokoll-Variantenname etc.), damit eine globale Suche/Verifikation maximal erfolgreich ist. In der detaillierten Liste [[Geprüfte_Geräte]] lassen sich die Geräte näher identifizieren.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot;| Produkt &lt;br /&gt;
! (E)mpfangen&amp;lt;br /&amp;gt;(S)enden &lt;br /&gt;
! Hinweise &lt;br /&gt;
! Verwendetes Modul &lt;br /&gt;
! Protokoll ID&lt;br /&gt;
|-&lt;br /&gt;
|Conrad Wetterstation KW9110||E S||Sensor: KW9010, neben Temperatur u. Luftfeuchte werden auch Trend, Batterie u. Kanal erfasst|| CUL_TCM97001  || 0.3&lt;br /&gt;
|-&lt;br /&gt;
|TCM Wetterstation (97001 und 21xxx Serie)||E|| || CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|ABS Wetterstation (ABS 700)||E|| || CUL_TCM97001  || 0&lt;br /&gt;
|-&lt;br /&gt;
|Prologue Wetterstation ||E|| ||CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Rubicson Wetterstation ||E|| ||CUL_TCM97001 ||0 &lt;br /&gt;
|-&lt;br /&gt;
|NC_WS Wetterstation ||E|| ||CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gt-support.de/ GT-WT-02 Wetterstation]||E|| ||CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|AURIOL Wetterstation ||E|| ||CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Mebus Wetterstation ||E|| ||CUL_TCM97001 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Intertechno Funkschalter||E S|| ||IT || 3,4,5,17&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;strike&amp;gt;Conrad RSL Funkschalter&amp;lt;/strike&amp;gt;||E S|| Funktioniert aktuell nicht || SIGNALduino_RSL  || &lt;br /&gt;
|-&lt;br /&gt;
|[http://global.oregonscientific.com/product_view.php?id=5 Oregon Scientific Wettersensoren]||E || Protokoll V2 &amp;amp; V3 implementiert || OREGON || 10&lt;br /&gt;
|-&lt;br /&gt;
|Bresser Temp/Hydro Sensor||E || || Hideki || 12&lt;br /&gt;
|-&lt;br /&gt;
|[https://de.hama.com/00104985/hama-aussensensor-ts33c-fuer-wetterstation Hama TS33C]||E || || Hideki || 12&lt;br /&gt;
|-&lt;br /&gt;
|TFA Temp/Hydro Sensor||E || || Hideki || 12&lt;br /&gt;
|-&lt;br /&gt;
|Lacrosse TX2/TX3 Sensoren||E || || CUL_TX || 8&lt;br /&gt;
|-&lt;br /&gt;
|TFA 30320902||E || || SD_WS07 || 7&lt;br /&gt;
|-&lt;br /&gt;
|Eurochron eas800z||E || || SD_WS07  || 7&lt;br /&gt;
|-&lt;br /&gt;
|Technoline WS6750/TX70DTH||E || || SD_WS07 || 7&lt;br /&gt;
|-&lt;br /&gt;
|FreeTec Außenmodul NC-7344||E || || SD_WS07 || 7&lt;br /&gt;
|-&lt;br /&gt;
|CTW600||E || || SD_WS09 || 9&lt;br /&gt;
|-&lt;br /&gt;
|WH1080||E || || SD_WS09 || 9&lt;br /&gt;
|-&lt;br /&gt;
|Visivon remote pt4450||E || || none || 24&lt;br /&gt;
|-&lt;br /&gt;
|Einhell HS 434/6||E || || none || 21&lt;br /&gt;
|-&lt;br /&gt;
|Flamingo FA20RF / FA21RF / FA22RF Rauchmelder||E || || FLAMINGO || 13,13.1,13.2&lt;br /&gt;
|-&lt;br /&gt;
|mumbi m-FS300||E || || none || 26,27&lt;br /&gt;
|-&lt;br /&gt;
|TFA 30.3200||E || || none || 33&lt;br /&gt;
|-&lt;br /&gt;
|Livolo||E|| || none || 20&lt;br /&gt;
|-&lt;br /&gt;
|Smartwares RM174RF/2 (RM174RF-001CPR) 4500177571 ||E [S?]|| IT EV1527; TODO herausfinden: Alarmierung (wie Alarmton getriggered werden kann); Batterieinfo? || IT || 3&lt;br /&gt;
|-&lt;br /&gt;
|Smartwares SH5-TSO-A||E S|| || IT || ?&lt;br /&gt;
|-&lt;br /&gt;
|X10 Security Devices||E|| ||  || 39&lt;br /&gt;
|-&lt;br /&gt;
|[[Somfy_via_SIGNALduino|Somfy RTS]]||E S|| || SOMFY || 43&lt;br /&gt;
|}&lt;br /&gt;
Bei einigen Intertechno-Funksteckdosen (Brennenstuhl) kann es zu Empfangsproblemen kommen. Hier muss die Taktrate, mit der gesendet wird, angepasst werden. Dazu muss für &#039;&#039;Funksteckdose&#039;&#039; (also sauber per-Client-Instanz-spezifisch, NICHT SIGNALduino-Transceiver-global) das Attribut &lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;Funksteckdose&amp;gt; ITclock 300&amp;lt;/code&amp;gt; &lt;br /&gt;
gesetzt werden, der Standardwert ist 250.&lt;br /&gt;
&lt;br /&gt;
==== Mein Gerät wird in FHEM nicht erkannt ====&lt;br /&gt;
1. Prüfen, ob vom Sensor die Signaldaten (verbose &amp;gt;=4) erkannt werden. Sobald ihr die empfangenen Signaldaten im Logfile zuordnen könnt, geht es weiter mit:&lt;br /&gt;
&lt;br /&gt;
2. Eröffnet ein Thema unter [https://github.com/RFD-FHEM/RFFHEM/issues github] nach folgendem Muster:&lt;br /&gt;
:&#039;&#039;Thema :  Protokoll für &amp;lt;Das verwendete Gerät&amp;gt;&lt;br /&gt;
:Inhalt:  Eure Hardware z.B. Arduino Nano mit XYZ Empfänger, oder Arduino Nano direkt an Gerät x&lt;br /&gt;
&lt;br /&gt;
3. Auszug aus dem Logfile, welches zum Gerät gehört.&lt;br /&gt;
:&#039;&#039;Alles was ihr sonst noch über das Gerät und die übertragenen Daten wisst.&lt;br /&gt;
&lt;br /&gt;
Im Forum solltet ihr solche Fragen besser nicht posten, wenn das Gerät noch nicht unterstützt wird, dazu ist Github besser geeignet. Inzwischen wurde im Wiki eine eigene Seite eröffnet, die sich mit der Erkennung unbekannter Protokolle beschäftigt: [[Unbekannte_Funkprotokolle#Ansatz_1_-_Versuchen|Unbekannte_Funkprotokolle]].&lt;br /&gt;
&lt;br /&gt;
==== Es wird ein Protokoll erkannt, Autocreate legt aber kein device an ====&lt;br /&gt;
Im SIGNALduino sind &amp;gt;30 Protokolle implementiert. Jedoch gibt es nur wenige Module, welche diese Protokolle verarbeiten.&lt;br /&gt;
Teilweise ist das auch nicht zwingend notwendig, um seine Anforderungen zu erfüllen. Insbesondere für Schalter bzw. Sensoren, die nur zwei Zustände kennen, geht es meist ohne Modul und automatisch angelegtem Gerät.&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, wir haben einen Schalter. Dieser kann einen oder zwei Zustände senden.&lt;br /&gt;
Im FHEM Log (und, insbesondere, im FHEMWEB Event Monitor) tauchen Meldungen ähnlich dieser auf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
2015.11.15 15:52:23 4: SIGNALduino_unknown incomming msg: u85#FF8081&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir können mit Hilfe des Modules DOIF auf diese Nachricht eine Aktion ausführen:&lt;br /&gt;
&lt;br /&gt;
Entweder, wenn wir den Inhalt der Nachricht nur zu Teilen wissen, da er sich ändert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
define mydoif DOIF ([sduino:&amp;amp;DMSG] =~ &amp;quot;u85#FF8081&amp;quot;) (set Lamp on)&lt;br /&gt;
attr mydoif do always&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder, wenn wir den Inhalt exakt kennen, dann auch als Vergleichsstring&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
define mydoif DOIF ([sduino:&amp;amp;DMSG] eq &amp;quot;u85#FF8081&amp;quot;) (set relais on)&lt;br /&gt;
attr mydoif do always&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Teil u85#FF8081 muss individuell angepasst werden, der Name eures SIGNALduino möglicherweise auch.&lt;br /&gt;
&lt;br /&gt;
Als Alternative zu DOIF hier ein regex-verwendendes notify-Beispiel für einen Sender, der meint, zwei Codes alternierend senden zu müssen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
define n_sender_trigger notify sduino:UNKNOWNCODE.*u41#(13B72253|163873B3) { my_sender_trigger_indicate();; }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selbstverfreilich muss in diesem Moment auch eine sub my_sender_trigger_indicate() definiert werden (z.B. in FHEM/99_myUtils.pm), die dort z.B. als Test eine Log-Ausgabe (Log3()) machen kann.&lt;br /&gt;
&lt;br /&gt;
=== Das Logfile ===&lt;br /&gt;
Im Logfile ab [[Verbose]] 4 tauchen diverse Meldungen auf, deren Bedeutung kurz erläutert wird (verbose 3 unterdrückt diese Meldungen).&lt;br /&gt;
&lt;br /&gt;
UPDATE: der folgende Bereich ist von einem weniger erfahrenen Zeitgenossen früher nach Kräften erweitert/geschrieben worden. Mittlerweile existiert aber ein neuer Inhalt [[Unbekannte_Funkprotokolle]] (siehe auch Erwähnung weiter oben), der als sehr gut beschrieben und unvergleichlich detailreicher bezeichnet werden muss (&amp;quot;endlich gibt es sowas!&amp;quot;). Der Bereich hier dürfte somit zwar für grundlegende Verdeutlichungen noch recht sinnvoll sein, der Inhalt sollte allerdings evt. in eine konsistente Dokumentation überarbeitet (verlagert/dedupliziert/reduziert) werden.&lt;br /&gt;
&lt;br /&gt;
Die Protokolle (von der SIGNALDuino-Firmware gesendete Signal-Beschreibungs-Strings) können wie folgt unterschieden werden:&lt;br /&gt;
&lt;br /&gt;
*MS - Nachricht mit Sync Puls: Hierzu ein Beispiel&lt;br /&gt;
:&amp;lt;code&amp;gt;MS;P0=-108;P1=395;P2=-1033;P3=-547;P4=-19932;P5=-8916;P6=1368;D=151313131312131313131313131313131312121212121313131313131312131212132;CP=1;SP=5;&amp;lt;/code&amp;gt; P0-P6 sind die Signalpegel (Dauer und positiv/negativ). Hinter D= befindet sich die Abfolge der Signale. Die ersten beiden Ziffern 15 in D sind wie folgt zu lesen. Zuerst wurde ein Signal &amp;quot;1&amp;quot; also P1 mit 395 Mikrosekunden high (die Zeitdauer ergibt sich aufgrund der Mitteilung &amp;quot;P1=395&amp;quot;) und anschließend ein Signal &amp;quot;5&amp;quot; also P5 mit 8916 Mikrosekunden low (die Zeitdauer ergibt sich aufgrund der Mitteilung &amp;quot;P5=-8916&amp;quot;) gemessen. CP=1 ist die Referenz auf den Takt des Signales - der Basistakt ist in diesem Fall ~395 Mikrosekunden. SP=5 gibt die Referenz zum Syncpuls an, der das gesamte Signal einleitet. Welche Signalfolge nun eine binäre 1 bzw. 0 bedeutet, wird im SIGNALduino über die integrierte Protokoll Liste realisiert.&lt;br /&gt;
&lt;br /&gt;
*MC - Nachricht vom Typ Manchester: Manchesterkodierte Signale können bereits sehr einfach im Arduino in eine Binärform umgewandelt werden. Es wird hier nach IEEE 802.3 umgewandelt. In Manchester Signalen gibt es lange und kurze Pulse. Deren Durchschnittswert wird mit LL (long low), LH (long high), SL (short low) und SH (short high) übermittelt. Zusätzlich, um das Protokoll schneller erkennen zu können, wird die Taktfrequenz mit übermittelt (C=429 Mikrosekunden). Die Daten befinden sich hinter D= und werden in HEX Form übergeben.&lt;br /&gt;
:&amp;lt;code&amp;gt;MC;LL=-1066;LH=904;SL=-562;SH=385;D=332B4B4D54D5554B552CD2D554B2B5354A;C=429;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MU - Message unsynced: Diese Art von Nachrichten sind nicht nach Manchester codiert und haben auch keinen erkennbaren Sync / Clock Signalpegel am Start der Nachricht. Bei diesen Nachrichtentypen ist es, im Vergleich zu den anderen, am wahrscheinlichsten, dass das übermittelte Signal unvollständig oder überhaupt kein Signal ist. Wie bei MS sind P0-P6 die Signalpegel und in D= wird die Abfolge der Signalpegel referenziert. CP=2 gibt auch hier die Referenz zum Takt an, allerdings muss dieser nicht korrekt erkannt worden sein.&lt;br /&gt;
:&amp;lt;code&amp;gt;MU;P0=1372;P1=-580;P2=362;P3=-1047;D=01212321212321212121212121212123212123212321232121212121212321;CP=2;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es erscheinen viele Meldungen dieser Art:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fingerprint for MU Protocol id xxxx -&amp;gt; yyy matches, trying to demodulate&lt;br /&gt;
sduino: Starting demodulation at Position 1&lt;br /&gt;
Fingerprint for MU Protocol id 28 -&amp;gt; IC Ledspot matches, trying to demodulate&lt;br /&gt;
sduino: Starting demodulation at Position 1&lt;br /&gt;
Fingerprint for MU Protocol id 29 -&amp;gt; HT12e remote matches, trying to demodulate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies sind nun Bemühungen, anhand der von der SIGNALDuino-Firmware gelieferten rohen aber detaillierten Signal-Strings eine Vor-Analyse / Fingerprinting vorzunehmen.&lt;br /&gt;
Man könnte nun z.B. bei solchen Fingerprinting-Analysen erkennen:&lt;br /&gt;
* dass der Basis-Takt-Wert innerhalb eines charakteristischen Zeit-Bereichs liegt&lt;br /&gt;
* dass die Anzahl der Sync-Pulse eine präzise Zahl ist&lt;br /&gt;
* dass Längen erkannter Puls-Typen innerhalb eines Bereichs liegen&lt;br /&gt;
&lt;br /&gt;
Mittels solcher Untersuchungen kann man also final hoffentlich hinreichend plausibel feststellen, &amp;quot;dass diese Aktivitäten offensichtlich(?) zu einer Funk-Komponente Rauchmelder von Hersteller XYZ gehören müssen, und man somit weiterleiten muss an ein (möglicherweise bereits existierendes) Userdaten-Dekodier-Modul für diese Herstellerkomponente&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei einer dann erfolgenden Demodulation des noch rohen SIGNALDuino-Strings könnte man z.B. (hoffentlich richtigerweise) annehmen, dass eine Signalpegel-Typ-Folge &amp;quot;13&amp;quot; eine binäre 1 bedeuten soll, während eine Folge &amp;quot;12&amp;quot; eine binäre 0 bedeuten soll. Man erhält aus dem Gesamt-Puls-String also nach vollständiger Demodulation eine Abfolge von vielen 0/1 Bits, die insgesamt ein Datenwort darstellen, mit einer gewissen Länge von NN bits (diese Längen-Angabe könnte übrigens - neben Namenssuche nach Hersteller oder Produkt etc. - ein wichtiges Such-Merkmal sein, ob andere Frameworks tatsächlich bereits wissen, wie Daten dieser Funk-Komponente zu dekodieren sind!). Dieses demodulierte Datenwort ist nun das finale Datenwort, welches einen Container für die Funk-Komponenten-Informationen darstellt (in diesem Container also beispielsweise enthalten: Temperatur, Feuchte, Akku-Status, ID, Alarm, ... - zumindest wenn nicht dummerweise der ganze Container erst einmal CRC- oder Crypto-verschlüsselt ist...).&lt;br /&gt;
&lt;br /&gt;
Man muss an dieser Stelle unbedingt sagen, dass dieses Userdaten-Datenwort (einer bestimmten Hersteller-Funk-Komponente!) natürlich bei &#039;&#039;jeglichen&#039;&#039; Transceiver-Systemen &#039;&#039;immer&#039;&#039; gleich erkannt werden &#039;&#039;muss&#039;&#039; - an dieser Stelle ist also ganz klar, dass diese Daten an &#039;&#039;allgemeine&#039;&#039; FHEM-Module weitergeleitet (Dispatched) werden müssen, die nach Übernahme von Daten von &#039;&#039;jeglichen&#039;&#039; Transceiver-Systemen diese Daten immer auf die gleiche Weise (&#039;&#039;&#039;&#039;&#039;generisch/zentral&#039;&#039;&#039;&#039;&#039;) für die jeweilige Hersteller-Funk-Komponente erledigen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Abfolge ist also ganz klar:&#039;&#039;&#039;&lt;br /&gt;
Funk-Aktivität --&amp;gt; Transceiver-Gerät/Firmware (SIGNALDuino) --&amp;gt; maximal detailreich beschreibender Rx-Analyse-Output-String --&amp;gt; Fingerprinting-Grobzuordnung des (SIGNALDuino-Firmware-)Outputs (durch 00_SIGNALduino.pm) auf gerätespezifisches Verhalten --&amp;gt; &#039;&#039;generische/zentrale&#039;&#039; Dekodierung des gerätespezifischen Protokoll-Datenworts, in zentralen Grundsatz-Modulen wie z.B. &amp;lt;code&amp;gt;14_SD_WS.pm&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Und wenn dann bei einer solchen Schritte-Abfolge irgendetwas noch fehlen/unpassend sein sollte, dann muss eben entsprechendes Development an gewissen Stellen erfolgen ;-)&lt;br /&gt;
&lt;br /&gt;
====Minimieren (whitelist/blacklist) von unerwünschter Kommunikations-Aktivität/Einträgen====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unknown Code&amp;quot; bedeutet, dass der SIGNALduino Signaldaten empfangen und diese binär interpretiert hat. Diese Meldung soll uns nun aber mitteilen, dass es dann nicht weiter verarbeitet werden kann, da kein Modul  existiert (oder kein Weiterleitungs-Dispatch zu einem bereits existierenden), welches diese Daten jetzt in ihre Bedeutung umwandeln kann. &lt;br /&gt;
:&amp;lt;code&amp;gt;sduino: Unknown code u1FFFFF0, help me!&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Außerdem kommt es gehäuft zu Logmeldungen und auch Events in ähnlicher Form:&lt;br /&gt;
:&amp;lt;code&amp;gt;SIGNALduino_unknown incomming msg: u85#FF8081&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittlerweile sind über 50 Protokolle für den SIGNALduino definiert. Dadurch kommt es vor, dass sich ein Signal mit mehr als einem Protokoll demodulieren lässt. Meist führt dies dann zu zusätzlichen &amp;quot;Unknown code&amp;quot;-Einträgen.&lt;br /&gt;
&lt;br /&gt;
Derartige Einträge können mit dem Attribut WhitelistID minimiert werden. Dabei werden die Geräte, die nach Daten-Empfang tatsächlich verarbeitet werden sollen (also welche Protokolle vom FHEM Modul berücksichtigt werden), mit ihrer Protokollnummer in die WhitelistID aufgenommen.&lt;br /&gt;
Für Protokolle, die nicht berücksichtigt werden, gibt es weder Logeinträge noch Events. Diese werden im Programmablauf nicht berücksichtigt. Das spart zum einen Ressourcen und trägt auch zur Übersichtlichkeit bei. &lt;br /&gt;
Die Protokollnummer kann Tabelle [[#Unterst.C3.BCtzte_Ger.C3.A4te]] entnommen werden (hilfreich ist es auch, wenn in den verwendeten Geräten im Internal &amp;lt;gerätename&amp;gt;_DMSG nachgesehen wird). So bedeutet beispielsweise ein Eintrag der Form &amp;lt;code&amp;gt;W50#FF553335FFBC&amp;lt;/code&amp;gt; dass dann das Protokoll  #50 in die Whitelist aufzunehmen wäre (&amp;lt;code&amp;gt;attr sduino whitelist_IDs 50&amp;lt;/code&amp;gt;).&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Achtung Schreibweise: Dokumentation oft als WhitelistID o.ä., aber Name ist whitelist_IDs!!&lt;br /&gt;
}}&lt;br /&gt;
Die Angabe erfolgt durch Komma getrennt: z.B.:&lt;br /&gt;
:&amp;lt;code&amp;gt;1,2,5,10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Senden mit dem SIGNALduino ===&lt;br /&gt;
Der SIGNALduino kann etwas &amp;quot;raw senden&amp;quot;, indem ihm das SIGNAL so übermittelt wird, wie er es moduliert. Hierzu  muss der Befehl wie folgt eingegeben werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set sduino sendMsg P3#00111010#R4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl moduliert die Bitfolge 00111010 mittels Protokoll #3 und wiederholt die Nachricht 4x.&lt;br /&gt;
Die Protokoll Nummer kann aus einer empfangenen Nachricht extrahiert werden. Ebenso die Bits.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sduino: extracted data 00111010 (bin)&lt;br /&gt;
sduino: Found Protocol id 3 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das Signal auch in einer &amp;quot;rohform&amp;quot; angegeben werden. Dies ist manchmal in speziellen Fällen notwendig:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set sduino raw SR;;R=3;;P0=4742;;P1=-1554;;P2=286;;P3=-786;;P4=649;;P5=-420;;D=0123234545234545452323232323454523234523454523232345454523232323452345234523452345;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
R=3 bedeutet, das Signal wird 3x gesendet.&lt;br /&gt;
Die Übertragung besteht aus den in D angegeben Pulsen, welche in P0-P5 definiert werden.&lt;br /&gt;
Die Daten kann man aus einer empfangenen MS oder MU Nachricht extrahieren.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann ab Version 3.2 auch eine vereinfachte Form eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
====Fehlersuche====&lt;br /&gt;
&lt;br /&gt;
(Zielgerät reagiert nicht, etc.)&lt;br /&gt;
&lt;br /&gt;
* Nachrichtenwiederholungsanzahl muss evt. für manche Geräte entsprechend groß eingestellt sein&lt;br /&gt;
* Sende-Takt-Wert (Clock) passt evt. nicht ganz, siehe z.B. Thread-Antwort [https://forum.fhem.de/index.php/topic,58397.msg775434.html#msg775434 Signalduino Version 3.3.1], wo für IT-Geräte ein Attribut anhand der CP= des Empfangsdaten-Logs modifiziert wird. ACHTUNG: dies kann entweder global das Internal-Attribut ITClock eines SIGNALduino-Transceiver-Devices sein, oder (viel besser da korrekt geräte-instanz-spezifische Konfiguration) das ITclock eines IT-Client-Devices.&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=VORSICHT blöder Schreibweisen-Mismatch ITClock vs. ITclock!!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Fehlerbehandlung ==&lt;br /&gt;
Der SIGNALduino kann mit folgendem Befehl auf Werkseinstellungen zurückgesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;get raw e&amp;lt;/code&amp;gt;&lt;br /&gt;
als Antwort kommt dann &amp;quot;ccFactoryReset done&amp;quot;. Ob ein solcher Reset nötig ist, erkennt man an der Antwort auf den Befehl &amp;quot;get config&amp;quot;, auf den dann die Meldung &amp;quot;config: MS=1;MU=1;MC=1&amp;quot; folgen sollte.&lt;br /&gt;
&lt;br /&gt;
In der Firmware sind die folgenden Befehle eingebaut&lt;br /&gt;
&lt;br /&gt;
*:&amp;lt;code&amp;gt;get raw C&amp;lt;reg&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;reg&amp;gt; is a (two digit) hex number: return the value of the cc1101 register. &amp;lt;reg&amp;gt;=99 dumps the first 48 registers.&lt;br /&gt;
Example: C35 -&amp;gt; C35 = 0D&lt;br /&gt;
*:&amp;lt;code&amp;gt;get raw e&amp;lt;/code&amp;gt;&lt;br /&gt;
EEPROM / factory reset.  resets all eeprom values without reboot&lt;br /&gt;
*:&amp;lt;code&amp;gt;get raw r&amp;lt;AA&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Read eeprom  (da das &amp;quot;R&amp;quot; beim SIGNALDuino bereits mit freeram belegt ist, habe ich das &amp;quot;r&amp;quot; verwendet)&lt;br /&gt;
*:&amp;lt;code&amp;gt;get raw r&amp;lt;AA&amp;gt;n&amp;lt;/code&amp;gt;&lt;br /&gt;
Read 16 byte from eeprom (z.B. r00n)&lt;br /&gt;
*:&amp;lt;code&amp;gt;get raw W&amp;lt;AA&amp;gt;&amp;lt;DD&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Write eeprom (schreibt einen Wert ins EEPROM und ins CC1101 Register. Die eeprom Adresse hat einen Offset von 2. z.B W041D schreibt 1D ins Register 2)&lt;br /&gt;
&lt;br /&gt;
Die Sendeleistung lässt sich mit &lt;br /&gt;
:&amp;lt;code&amp;gt;get sduino ccreg 3E&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
prüfen, wobei die Rückmeldung wie folgt zu lesen ist: &lt;br /&gt;
  &amp;quot;-10_dBm&amp;quot;  =&amp;gt; &#039;34&#039;,&lt;br /&gt;
  &amp;quot;-5_dBm&amp;quot;   =&amp;gt; &#039;68&#039;,&lt;br /&gt;
  &amp;quot;0_dBm&amp;quot;    =&amp;gt; &#039;60&#039;,&lt;br /&gt;
  &amp;quot;5_dBm&amp;quot;    =&amp;gt; &#039;84&#039;,&lt;br /&gt;
  &amp;quot;7_dBm&amp;quot;    =&amp;gt; &#039;C8&#039;,&lt;br /&gt;
  &amp;quot;10_dBm&amp;quot;   =&amp;gt; &#039;C0&#039; &lt;br /&gt;
Dabei wird die Sendeleistung dauerhaft mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set sduino cc1101_patable &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
hochgeschaltet (&amp;lt;value&amp;gt; durch den Wert ersetzen).&lt;br /&gt;
&lt;br /&gt;
Weitere Firmware-Befehle sind im Thread-Beitrag {{Link2Forum|Topic=58396|Message=497921}} zu finden.&lt;br /&gt;
&lt;br /&gt;
== Foren Links ==&lt;br /&gt;
* {{Link2Forum|Topic=38402|LinkText=Forenthread - Ankündigung}}&lt;br /&gt;
* {{Link2Forum|Topic=58396|LinkText=SIGNALDuino Empfänger Firm- und Hardware}}&lt;br /&gt;
* {{Link2Forum|Topic=58397|LinkText=Signalduino Entwicklung Version 3.3.1 }}&lt;br /&gt;
* [http://www.rflink.nl/blog2/wiring Beschreibung zu diversen Empfängern und Verbesserung der Empfangsleistung]&lt;br /&gt;
* [[SIGNALduino in die Arduino Entwicklungsumgebung einbinden]]&lt;br /&gt;
* [[Somfy via SIGNALduino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:Arduino]]&lt;br /&gt;
[[Kategorie:433MHz]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Anwesenheitserkennung&amp;diff=30926</id>
		<title>Anwesenheitserkennung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Anwesenheitserkennung&amp;diff=30926"/>
		<updated>2019-07-09T09:47:27Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: WIíki-Link zu &amp;quot;FHEM App&amp;quot; entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Viele Benutzer führen bereits eine eigene &#039;&#039;&#039;Anwesenheitserkennung&#039;&#039;&#039; durch. Diese basiert in den meisten Fällen auf Ping Checks oder bei [[AVM Fritz!Box|FritzBoxen]] auf dem Befehl &#039;&#039;ctlmgr_ctl&#039;&#039;. Diese Lösungen können aber je nach Aufbau und Funktion FHEM massiv beeinträchtigen. Aufgrund des Aufbaus vom FHEM kann dieses dadurch für mehrere Sekunden zum völligen Stillstand gebracht werden.&lt;br /&gt;
&lt;br /&gt;
In FHEM gibt es mittlerweile mehrere Module, die eine zuverlässige Anwesenheitserkennung bieten, ohne dabei FHEM bei der Ausführung zu beeinträchtigen.&lt;br /&gt;
&lt;br /&gt;
Eine erweiterte Funktion der Anwesenheitserkennung ist die Standortverfolgung, die sich nicht nur auf ein oder sehr wenige mit (eigenem) WLAN versorgte Gebiete beschränkt.&lt;br /&gt;
&lt;br /&gt;
== Vorüberlegungen ==&lt;br /&gt;
Generell gibt es mehrere Ansätze um Anwesenheitserkennung mit Handys/Smartphones durchzuführen.&lt;br /&gt;
&lt;br /&gt;
* via PING Checks im gesamten WLAN&lt;br /&gt;
* Aktivitätsprüfung auf einer FritzBox&lt;br /&gt;
* Bluetooth Checks in der gesamten Wohnung&lt;br /&gt;
* eigene Perl-Funktion&lt;br /&gt;
* aktive Benachrichtigung des Smartphones, ausgelöst z.B. über Geo-Lokation/Geofence&lt;br /&gt;
&lt;br /&gt;
Dabei gilt bei der Auswahl der Art darauf zu achten wie sich das jeweilige Device verhält. Aufgrund der Vielfältigkeit kann man hier keine allgemeine Vorgehensweise empfehlen. Als einfacher Start (zumindest für Nicht-Apfel Telefone) eignet sich die Ping-Überprüfung und die FritzBox-Abfrage sehr gut.&lt;br /&gt;
&lt;br /&gt;
=== Randbedingungen ===&lt;br /&gt;
Es gibt Geräte, die ihr WLAN/Bluetooth auch im Standby ständig aktiv haben und auf Anfragen antworten können (fast alle Android-Geräte). Gerade bei Tests über WLAN kann sich das aber signifikant auf die Akku Leistung auswirken.&lt;br /&gt;
&lt;br /&gt;
Andere Geräte wiederum schalten WLAN im Standby Betrieb aus, um Akkukapazität zu sparen. Bluetooth hingegen bleibt weiterhin aktiviert und kann auf Anfragen reagieren. (iPhone)&lt;br /&gt;
&lt;br /&gt;
Wenn man bei einem iPhone die Funktion &amp;quot;über WLAN synchronisieren&amp;quot; aktiviert hat, so ist dies auch im Standby jederzeit pingbar, wenn der Recher auf dem iTunes zum synchroniseren läuft auch an ist. Ansonsten ist bei iPhone Geräten nur die Aktivitätsprüfung mit einer FritzBox oder das überwachen der DHCP Lease auf einer Airport Basestation wirklich zuverlässig.&lt;br /&gt;
&lt;br /&gt;
Auch wenn Bluetooth aktiviert ist, so bleiben einige Mobiltelefone erst dann empfangsbereit, wenn sie bereits zu irgend einem Bluetoothgerät gekoppelt wurden. Sind diese Geräte noch nie gekoppelt worden, deaktivieren diese ihren Bluetooth Empfänger beim verlassen des Bluetooth-Menüs im Gerät (iPhone).&lt;br /&gt;
&lt;br /&gt;
Hier gilt es vor allem auszuprobieren, wie stark der Akku durch eine Anwesenheitserkennung belastet wird. Entscheidend ist hier, in welchem Abstand man eine Anwesenheitserkennung durchführt. Viele Abfragen wirken sich stärker auf den Akku aus als wenige. Wenige Abfragen bieten aber keine zuverlässige und zeitnahe Erkennung.&lt;br /&gt;
&lt;br /&gt;
Als Alternative, unabhängig vom WLAN und der Erkennung, ob ein Gerät dort eingebucht ist oder nicht, bzw. unabhängig von Bluetooth kann zumindest bei einem iPhone die seit iOS 7 nochmals stark verbesserte Geo-Lokation (Geofencing) genutzt werden. Die iPhone Apps [http://geofency.com/ Geofency] oder [http://geofancy.com/ Geofancy] werden über das FHEM-Modul GEOFANCY angebunden und übertragen ihren Status immer dann, wenn ein definierter Standort betreten oder verlassen wird. Gekoppelt mit entsprechenden Notify und/oder Watchdog Kommandos ist so ebenfalls eine sehr zuverlässige Anwesenheitserkennung möglich (und das nicht nur für das eigene Zuhause).&lt;br /&gt;
&lt;br /&gt;
== PRESENCE-Modul ==&lt;br /&gt;
Das [[PRESENCE]] Modul bietet für die Anwesenheitserkennung mehrere Varianten an. Diese sind aktuell folgende:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;lan-ping&#039;&#039;&#039; - Das Überwachen via PING Checks, die durch den FHEM Server versandt werden.&lt;br /&gt;
* &#039;&#039;&#039;fritzbox&#039;&#039;&#039; - Das Überwachen von Geräten auf einer FritzBox via ctlmgr_ctl (Nur auf einer FritzBox möglich)&lt;br /&gt;
* &#039;&#039;&#039; Bluetooth&#039;&#039;&#039;&lt;br /&gt;
:- &#039;&#039;&#039;local-bluetooth&#039;&#039;&#039; - Das Überwachen via Bluetooth Checks, die vom FHEM Server direkt durchgeführt werden (angeschlossener Bluetooth-Stick und die Software bluez voraussgesetzt)&lt;br /&gt;
:- &#039;&#039;&#039;lan-bluetooth&#039;&#039;&#039;   - Das Überwachen von Bluetoothgeräten, über Netzwerk. Auf einer oder mehreren Maschinen im Netzwerk (z.B. [[:Kategorie:Raspberry Pi|Raspberry Pi]]) läuft ein Presence-Daemon, der nach Bluetooth-Geräten sucht. Um mehrere Presence-Daemon mit FHEM zu verbinden, gibt es den Collector-Daemon, der sich zu allen Presence-Damons im Netzwerk verbindet und das Ergebnis von allen zusammenfasst.&lt;br /&gt;
* &#039;&#039;&#039;function&#039;&#039;&#039; - Das Überwachen mithilfe einer selbst geschrieben Perl-Funktion, die den Anwesenheitsstatus zurückgibt (0 oder 1)&lt;br /&gt;
* &#039;&#039;&#039;shell-script&#039;&#039;&#039; - Das Überwachen mithilfe eines selbst geschriebenen Shell-Programms/Skript, das eine 0 oder 1 ausgibt, um den Anwesenheitsstatus mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
Für eine bessere Übersicht befinden sich die &#039;&#039;&#039;Details&#039;&#039;&#039; zur &#039;&#039;&#039;Einrichtung&#039;&#039;&#039; und &#039;&#039;&#039;Benutzung&#039;&#039;&#039; von PRESENCE auf folgende &#039;&#039;&#039;Seite&#039;&#039;&#039; [[PRESENCE|PRESENCE]]&lt;br /&gt;
&lt;br /&gt;
Im Forum [https://forum.fhem.de/index.php/topic,76342.0.html] findet man eine Lösung zum Problem des &amp;quot;deep standby&amp;quot; Modus von den neuen iPhones und Android Geräte. Mittels hping3 werden Packete an das Gerät geschickt, damit die &amp;quot;wach&amp;quot; bleiben. Dann werden die Mac-Adressen via &#039;arp&#039; gelesen.&lt;br /&gt;
&lt;br /&gt;
== GEOFANCY-Modul ==&lt;br /&gt;
Das Modul ermöglicht über einen sogenannten Webhook Mechanismus (umgangssprachlich oft auch als &amp;quot;Push&amp;quot; benannt) das aktive Melden des aktuellen Standortes. Die iPhone Apps  [http://geofency.com/ Geofency] und [http://geofancy.com/ Geofancy] können dann aktiv und quasi in dem Moment, wo man den Wohnbereich betritt oder verlässt, benachrichtigen. Android Nutzern können [https://play.google.com/store/apps/details?id=de.egi.geofence.geozone&amp;amp;hl=de EgiGeoZone Geofence] nutzen. Das geht nochmals um einiges schneller, als die Erkennung im WLAN, bei der die Anwesenheit nur in (engen) Zyklen aktiv geprüft werden muss. Gleichzeitig werden Ressourcen in FHEM geschont. Die aktuelle Implementierung im iPhone 5S mit dediziert für das Tracking zuständigem Chip ist so gut, dass der Akku ebenfalls sehr geschont wird.&lt;br /&gt;
&lt;br /&gt;
Für eine bessere Übersicht befinden sich die &#039;&#039;&#039;Details&#039;&#039;&#039; zur &#039;&#039;&#039;Einrichtung&#039;&#039;&#039; und &#039;&#039;&#039;Benutzung&#039;&#039;&#039; von GEOFANCY auf folgende &#039;&#039;&#039;Seite&#039;&#039;&#039; [[GEOFANCY|GEOFANCY]]&lt;br /&gt;
&lt;br /&gt;
== livetracking-Modul ==&lt;br /&gt;
Das [[livetracking]] Modul baut auf der App Owntracking auf. Wird sie installiert, so kann man via MQTT oder HTTP an FHEM Angaben über den eigenen Standort, die Batteriestärke und die Entfernung zum Heimatort senden. &lt;br /&gt;
&lt;br /&gt;
Livetracking ist unter Linux (RPi) wie folgt zu installieren. Zuerst sind zwei Perl-Module zu holen&lt;br /&gt;
 sudo apt-get -y install libnet-oauth-perl&lt;br /&gt;
 sudo apt-get -y install libmath-round-perl&lt;br /&gt;
Das Modul selbst wird ohne weitere Angaben durch&lt;br /&gt;
 define &amp;lt;name&amp;gt; livetracking&lt;br /&gt;
in FHEM angelegt. Es erhält ein Attribut, das auf das owntracking-Gerät in FHEM verweist durch&lt;br /&gt;
 attr owntracksDevice &amp;lt;hier-owntracking-device-angeben&amp;gt;&lt;br /&gt;
Das owntracking-device selbst ist ein MQTT-Gerät, das in der App entsprechend anzulegen ist. Eine beispielhafte Installation (hinter einem VPN) sieht hier so aus&lt;br /&gt;
 defmod &amp;lt;hier-owntracking-device-angeben&amp;gt; MQTT_DEVICE&lt;br /&gt;
 attr &amp;lt;hier-owntracking-device-angeben&amp;gt; IODev Mosquitto&lt;br /&gt;
 attr &amp;lt;hier-owntracking-device-angeben&amp;gt; subscribeReading_OWNTRACKS owntracks/&amp;lt;nutzer-und-app-spezifische-angaben&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Nutzung der Anwesenheitserkennung ==&lt;br /&gt;
Hier sollen Beispiele für den Nutzen von Anwesenheitserkennung aufgezeigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abschalten aller Verbraucher (Licht, Musikanlage) beim Verlassen der Wohnung ===&lt;br /&gt;
Typisches Szenario: Man geht ausser Haus, aber hat vergessen im Bad das Licht aus zu machen. Allerdings geht man heutzutage fast gar nicht mehr ohne Handy aus dem Haus.&lt;br /&gt;
&lt;br /&gt;
Nun soll FHEM in der gesamten Wohnung das Licht, sowie sonstige Verbraucher ausschalten, wenn ich länger als 15 Minuten ausser Haus bin. Dazu benötigt man zuerst eine structure, die alle Verbraucher und sonstigen Devices, die das betrifft, zusammenfasst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Gesamte_Wohnung structure Gesamtes_Licht Licht_Wohnzimmer Licht_Kueche LED_Kueche Licht_Bad Licht_Schlafzimmer AV_Receiver TV_Steckdose&lt;br /&gt;
attr Gesamte_Wohnung room Wohnung&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann man mittels eines watchdogs eine Überwachung für sein Handy anlegen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Überwachen der gesamten Wohnung mittels collectord sowie presenced in jedem Raum&lt;br /&gt;
define Handy PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222&lt;br /&gt;
attr Handy event-on-change-reading state  # Ein Event soll nur bei der Änderung des Anwesenheitsstatus (Reading: status) erfolgen. Wichtig für den watchdog!!!&lt;br /&gt;
&lt;br /&gt;
# Nach 15 Minuten Abwesenheit (Handy im Status &amp;quot;absent&amp;quot;) soll die gesamte Wohnung ausgeschaltet werden.&lt;br /&gt;
define watchdog_Anwesenheit watchdog Handy:absent 00:15 Handy:present set Gesamte_Wohnung off ; trigger watchdog_Anwesenheit .&lt;br /&gt;
attr watchdog_Anwesenheit regexp1WontReactivate 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Benachrichtigung bei Batteriewechsel ===&lt;br /&gt;
Mit Hilfe des PRESENCE-Moduls kann man auch bei batteriebetriebenen Geräten eine Meldung ausgeben, sobald ein Batteriewechsel ansteht. Hier im Beispiel wird der Eve-Room-Sensor von Elgato eingebunden und anschließend mit einer DOIF-Nachricht ausgestattet.&lt;br /&gt;
Die Bluetooth-Adresse des Sensors kann mittels eines BLE-Scanners ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PRESENCE-Modul für Elgato Eve Room Sensor mit Aktualisierung alle 6 Minuten&lt;br /&gt;
define Eve_Room_BLE lan-bluetooth &amp;lt;Bluetooth-Adresse&amp;gt; 127.0.0.1:5333 360&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend wird eine DOIF-Regel definiert, die eine Nachricht an die installierte FHEM App absendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Eve_Room_BLE_Battery_Msg DOIF ([Eve_Room_BLE] eq &amp;quot;absent&amp;quot;) (set Msg_iPhone message &#039;Batteriewechsel beim Eve Room Sensor im Wohnzimmer.&#039;)&lt;br /&gt;
attr Eve_Room_BLE_Battery_Msg wait 600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Aktualisierung des PRESENCE-Eintrages sollte nicht größer sein als das WAIT-Attribut der DOIF-Regel. Ansonsten könnte eine kurze Systemstörung zum Fehlalarm führen.&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;br /&gt;
[[Kategorie:Anwesenheitserkennung]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wetter_und_Wettervorhersagen&amp;diff=30915</id>
		<title>Wetter und Wettervorhersagen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wetter_und_Wettervorhersagen&amp;diff=30915"/>
		<updated>2019-07-09T08:18:51Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Link zur API Doku angepasst, AqPM2.5 und AgPM10 hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wetterdaten und Wettervorhersagen können auf verschiedene Weise in FHEM eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
== Yahoo-Wetter ==&lt;br /&gt;
Für die einfache Einbindung des Yahoo-Wetters gibt es das spezielle Modul [[Weather]].&lt;br /&gt;
&lt;br /&gt;
== Unwetterzentrale ==&lt;br /&gt;
Informationen der Seite(n) Unwetterzentrale.de können mit Hilfe des Moduls [[UWZ]] eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
== Modul OPENWEATHER ==&lt;br /&gt;
Das Modul [[OPENWEATHER]] extrahiert Wetterdaten über die &amp;quot;openweather&amp;quot;-Schnittstelle (API) von www.wetter.com. &lt;br /&gt;
*Vorschau-Zeitraum: 3 Tage&lt;br /&gt;
*Vorschau-Interval: 6:00, 11:00, 17:00, 23:00&lt;br /&gt;
*Aktuelle Daten: keine&lt;br /&gt;
&lt;br /&gt;
== Modul PROPLANTA ==&lt;br /&gt;
Das Modul [[PROPLANTA]] extrahiert Wetterdaten von der Website www.proplanta.de. (keine API)&lt;br /&gt;
*Vorschau-Zeitraum: 12 Tage&lt;br /&gt;
*Vorschau-Interval: 3 h&lt;br /&gt;
*Aktuelle Daten: jede volle Stunde&lt;br /&gt;
&lt;br /&gt;
== Modul WWO ==&lt;br /&gt;
Das Modul extrahiert Wetterdaten über die (alte) API von worldweatheronline.com&lt;br /&gt;
*Vorschau-Zeitraum: ?? Tage&amp;lt;BR&amp;gt;&lt;br /&gt;
*Vorschau-Interval: ??&amp;lt;br&amp;gt;&lt;br /&gt;
*Aktuelle Daten: ??&lt;br /&gt;
&lt;br /&gt;
== Deutscher Wetterdienst (DWD) ==&lt;br /&gt;
&lt;br /&gt;
=== Modul DWD_OpenData ===&lt;br /&gt;
Das Modul [[DWD_OpenData]] stellt einen Teil der frei verfügbaren Daten des Deutschen Wetterdienstes (DWD) bereit, die über den [https://www.dwd.de/DE/leistungen/opendata/opendata.html Open Data Server] abgerufen werden können (diverse Datenformate, keine API). &lt;br /&gt;
*Vorschau-Zeitraum: 10 Tage&lt;br /&gt;
*Vorschau-Interval: datenabhängig, viele mit 3 h&lt;br /&gt;
*Vorschau-Orte: national und international&lt;br /&gt;
*Aktuelle Daten: nicht implementiert&lt;br /&gt;
*Wetterwarnungen: für Landkreise und Gemeinden in deutsch oder englisch&lt;br /&gt;
&lt;br /&gt;
Es gibt zum Modul auch einen Weblink für [[FHEMWEB]], der 2 Icons pro Tag in horizontaler Form darstellt. Die Anzahl der insgesamt dargestellten Icons ist konfigurierbar. Liegen Wetterwarnungen vor, wird zusätzlich ein Warnsymbol angezeigt, über das man per Klick weitere Details zur Wetterwarnung abrufen kann.&lt;br /&gt;
&lt;br /&gt;
[[DWD_OpenData|Weitere Details und Installationsbeschreibung]]&lt;br /&gt;
&lt;br /&gt;
=== Wetterwarnungen als Karte ===&lt;br /&gt;
Der Deutsche Wetterdienst [http://www.dwd.de DWD] stellt neben diversen Wetterdaten auch Wetterwarnungen in Bildform bereit. Diese können sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden - das ist zwar nicht die schönste Form, aber die schnellste.&lt;br /&gt;
&lt;br /&gt;
Dazu sucht man sich zuerst auf der [http://www.dwd.de/bvbw/appmanager/bvbw/dwdwwwDesktop?_nfpb=true&amp;amp;_pageLabel=_dwdwww_wetter_warnungen_warnungen&amp;amp;T92053gsbDocumentPath=BEA__Navigation%2FWetter__Warnungen%2FWarnungen.html%3F__nnn%3Dtrue&amp;amp;lastPageLabel=dwdwww_wetter_warnungen Warnungsseite des DWD] die eigene Region heraus (in der Karte durchklicken). Die gewünschte URL für Berlin Stadt ist z.B. &amp;lt;code&amp;gt;http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html#WS_ANCHOR_0&amp;lt;/code&amp;gt;. Das Anhängsel &amp;lt;code&amp;gt;#WS_ANCHOR_0&amp;lt;/code&amp;gt; kann man in der Konfiguration auch weglassen.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung in FHEM sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define dwd_warnmeldung weblink iframe http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html&lt;br /&gt;
attr dwd_warnmeldung group Wetterwarnungen (DWD)&lt;br /&gt;
attr dwd_warnmeldung htmlattr width=&amp;quot;100%&amp;quot; height=&amp;quot;300&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
attr dwd_warnmeldung room Wettervorhersage,Startseite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorhersage-Diagramm von YR ==&lt;br /&gt;
[http://www.yr.no YR] ist die Seite des norwegischen Wetterdiensts. Er ist zwar nur in Teilen auf Englisch (und gar nicht auf Deutsch) verfügbar, bietet aber sehr gute Wettervorhersagen - auch mit eigenen Vorhersagen für kleine Dörfer. Neben etlichen Detailinfos bietet YR eine sehr schicke 48h-Vorhersage-Grafik. Diese kann sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu geht man auf die [http://www.yr.no Startseite von YR] und gibt in das Suchfeld den Namen seines Dörfchens ein - die Ergebnissliste kann ziemlich lang werden, sodass man evtl. sehr genau schauen muss, welches das eigene Kaff ist - bei mir war es an 29. Stelle... ;-) Auf der gewünschten Seite gibt es einen Unterpunkt &amp;quot;Hour by hour&amp;quot;, wo sich die besagte Grafik findet. Hier kopiert man sich einfach die URL der Grafik.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung in FHEM sieht dann bspw. wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wetter_yr_Vorhersage weblink iframe http://www.yr.no/place/Germany/Berlin/Berlin/meteogram.png&lt;br /&gt;
attr Wetter_yr_Vorhersage group Wettervorhersage (yr)&lt;br /&gt;
attr Wetter_yr_Vorhersage htmlattr width=&amp;quot;100%&amp;quot; height=&amp;quot;300&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
attr Wetter_yr_Vorhersage room Wettervorhersage,Start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wetter von Weather Underground ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Neben dem hier vorgestellten Abruf der Weather Underground-Daten mit [[HTTPMOD]] kann auf Weather Underground-Daten auch mit dem darauf spezialisierten Modul [http://fhem.de/commandref.html#Wunderground Wunderground] zugegriffen werden.}}&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG: Das API von Weather Underground wird derzeit (März 2019) &amp;quot;retired&amp;quot; = abgestellt.&#039;&#039;&#039; Ist also künftig nicht mehr nutzbar.&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Dieses Vorgehen ist etwas anspruchsvoller und somit eher für erfahrene FHEM-User geeignet.&lt;br /&gt;
&lt;br /&gt;
[http://www.wunderground.com/ Weather Underground] ist bietet eine sehr umfassende Sammlung aller möglichen offiziellen und privaten (aber teils sehr professionellen) Wetterstationen weltweit. Es besteht eine recht hohe Wahrscheinlichkeit, dass es in der eigenen Umgebung schon eine Wetterstation gibt. Anstatt nun selbst eine komplette Wetterstation aufzubauen, kann man alternativ auf die Daten der Nachbarstation zugreifen.&lt;br /&gt;
&lt;br /&gt;
Dazu sind grundsätzlich die folgenden Schritte notwendig:&lt;br /&gt;
* Finden der geeigneten Station&lt;br /&gt;
* Auswerten der XML-Daten&lt;br /&gt;
* Erstellen passender gplot-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Finden der geeigneten Station ===&lt;br /&gt;
Als erstes geht man auf die [http://www.wunderground.com Startseite von Weather Underground] und gibt in das Suchfeld den Namen seines Dörfchens oder der nächsten Stadt ein - für Berlin landet man bspw. auf Seite für &amp;quot;Berlin Alexanderplatz&amp;quot;. Es gibt aber manchmal sehr viele Wetterstationen in der direkten Umgebung. Diese findet man indem am auf &amp;quot;Change Station&amp;quot; klickt und sich eine passende Station aussucht. Nähere Infos (zB. zur verwendeten Hard- und Software) zu der gewählten Wetterstation erhält man, wenn man auf den Namen der Station klickt und dann auf &amp;quot;About this PWS&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Weather Underground stellt die Daten der Wetterstation auch über eine API als XML bereit, die wir auswerten können. Die entsprechende URL findet sich ebenfalls unter &amp;quot;About this PWS&amp;quot; unter &amp;quot;Download current conditions XML&amp;quot;. Für Berlin Prenzlauer Berg wäre dies bspw. &lt;br /&gt;
&amp;lt;code&amp;gt;http://api.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&amp;amp;format=XML&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entscheidend für die jeweilige Station ist der Teil nach &amp;quot;?=ID&amp;quot;, also in diesem Fall &amp;quot;IBERLIN15&amp;quot;. Dieser Teil des Links lässt sich leicht durch die ID einer anderen Station ersetzen und die Suche nach dem entsprechenden Link auf der Seite der Station bleibt erspart.&lt;br /&gt;
&lt;br /&gt;
=== Auswerten der XML-Daten ===&lt;br /&gt;
Die Auswertung der XML-Daten erfolgt via [[HTTPMOD]]. Da dies nicht ganz trivial ist, sind im Folgenden zuerst die wesentlichen Konfigurationsschritte exemplarisch beschrieben. Weiter unten findet sich dann die fertige vollständige Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Es erstes wird das Device HTTPMOD definiert (die 600 am Schluss ist der Aktualisierungszyklus in Sekunden, also alle 10 min):&lt;br /&gt;
:&amp;lt;code&amp;gt;define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann werden Attribute für alle Readings definiert:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date ... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird jedem Attribut ein Name zugewiesen (unter diesem Namen wird der Wert ins Log geschrieben):&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg readingsName_cloudiness cloudiness &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Schluss wird das Reading selbst definiert:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id=&amp;quot;NN&amp;quot; percent=&amp;quot;([\d\.]+) &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Konfiguration für alle von der API angebotenen Wetterwerte sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600&lt;br /&gt;
attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date readingsName_dewpointTemperature readingsName_fog readingsName_heatindex readingsName_humidity readingsName_pressure readingsName_solarRadiation readingsName_solarUV readingsName_temperature readingsName_time readingsName_windChill readingsName_windDegrees readingsName_windDirection readingsName_windGust readingsName_windSpeed readingsRegex_cloudiness readingsRegex_date readingsRegex_dewpointTemperature readingsRegex_fog readingsRegex_heatindex readingsRegex_humidity readingsRegex_pressure readingsRegex_solarRadiation readingsRegex_solarUV readingsRegex_temperature readingsRegex_time readingsRegex_windChill readingsRegex_windDegrees readingsRegex_windDirection readingsRegex_windGust readingsRegex_windSpeed&lt;br /&gt;
attr wetter_prenzelberg readingsName_cloudiness cloudiness&lt;br /&gt;
attr wetter_prenzelberg readingsName_date date&lt;br /&gt;
attr wetter_prenzelberg readingsName_dewpointTemperature dewpointTemperature&lt;br /&gt;
attr wetter_prenzelberg readingsName_fog fog&lt;br /&gt;
attr wetter_prenzelberg readingsName_heatindex heatindex&lt;br /&gt;
attr wetter_prenzelberg readingsName_humidity humidity&lt;br /&gt;
attr wetter_prenzelberg readingsName_pressure pressure&lt;br /&gt;
attr wetter_prenzelberg readingsName_solarRadiation solarRadiation&lt;br /&gt;
attr wetter_prenzelberg readingsName_solarUV solarUV&lt;br /&gt;
attr wetter_prenzelberg readingsName_temperature temperature&lt;br /&gt;
attr wetter_prenzelberg readingsName_time time&lt;br /&gt;
attr wetter_prenzelberg readingsName_windChill windChill&lt;br /&gt;
attr wetter_prenzelberg readingsName_windDegrees windDegrees&lt;br /&gt;
attr wetter_prenzelberg readingsName_windDirection windDirection&lt;br /&gt;
attr wetter_prenzelberg readingsName_windGust windGust&lt;br /&gt;
attr wetter_prenzelberg readingsName_windSpeed windSpeed&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id=&amp;quot;NN&amp;quot; percent=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_date date date&amp;quot; content=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_dewpointTemperature &amp;lt;dewpoint_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_fog fog id=&amp;quot;FOG&amp;quot; percent=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_heatindex &amp;lt;heat_index_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_humidity &amp;lt;relative_humidity&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_pressure &amp;lt;pressure_mb&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_solarRadiation &amp;lt;solar_radiation&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_solarUV &amp;lt;UV&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_temperature &amp;lt;temp_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_time time Zeit([\d\:]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windChill &amp;lt;windchill_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windDegrees &amp;lt;wind_degrees&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windDirection &amp;lt;wind_dir&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windGust &amp;lt;wind_gust_mph&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windSpeed &amp;lt;wind_mph&amp;gt;([\d\.]+)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hinweis: Nicht immer werden alle Werte geliefert (wenn keine Sonne, dann kein UV-Wert...). Im System-Log kann das als Fehler auftauchen, ist aber kein Problem.&lt;br /&gt;
&lt;br /&gt;
=== Erstellen passender gplot-Dateien ===&lt;br /&gt;
Um die ausgelesenen Werte als Graphen darstellen zu können müssen eigene gplot-Dateien erstellt werden. Eine grundsätzliche Anleitung dazu findet sich unter [[Creating Plots]]. Deshalb sollen hier nur Beispiele für die eigentlichen gplot-Dateien vorgestellt werden. Beispiele sollten sowohl für [[FileLog]] wie [[DbLog]] funktionieren.&lt;br /&gt;
&lt;br /&gt;
Temperatur und Luftfeuchte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Temperature in C&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Humidity (%)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:temperature\x3a::&lt;br /&gt;
#FileLog 4:windChill\x3a::&lt;br /&gt;
#FileLog 4:humidity\x3a::&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:temperature::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windChill::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:humidity::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Temperatur (C)&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Gefühlte Temperatur (C)&#039; ls l1 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Luftfeuchtigkeit (%)&#039; ls l2fill lw 0.2 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wind und Windrichtung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics (&amp;quot;Nord&amp;quot; 0, &amp;quot;Ost&amp;quot; 80, &amp;quot;S&amp;amp;#252;d&amp;quot; 180, &amp;quot;West&amp;quot; 270, &amp;quot;Nord&amp;quot; 360)&lt;br /&gt;
&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
set grid xtics ytics&lt;br /&gt;
&lt;br /&gt;
set yrange [0:20]&lt;br /&gt;
set y2range [0:360]&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Wind (mph)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Richtung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:windSpeed:0:&lt;br /&gt;
#FileLog 4:windGust:0:&lt;br /&gt;
#FileLog 4:windDegrees:0:&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windSpeed::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windGust::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windDegrees::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Wind (mph)&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Böen (mph)&#039; ls l1 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Windrichtung (°)&#039; ls l2fill lw 0.2 with points&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sonnenintensität und UV-Werte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics&lt;br /&gt;
&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
set grid xtics ytics&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Sonnenstrahlung (W/qm)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;UV&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:solarRadiation:0:&lt;br /&gt;
#FileLog 4:solarUV:0:&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:solarRadiation::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:solarUV::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strahlung&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;UV&#039; ls l1 lw 1.5 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Vergangene Daten abfragen ===&lt;br /&gt;
Ein konkretes vergangenes Datum der Wetterstation kann man übrigens auch abrufen - für den 28.11.2014 wäre dies bspw. &lt;br /&gt;
&amp;lt;code&amp;gt;http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&amp;amp;day=28&amp;amp;month=11&amp;amp;year=2014&amp;amp;graphspan=day&amp;amp;format=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Eigene Wetterdaten hochladen ===&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Unterstützung für das Modul gibt es im dazugehörigen {{Link2Forum|Topic=65587|LinkText=Forumsthread }}.}}&lt;br /&gt;
&lt;br /&gt;
Wer eigene Wetterdaten hochladen will, kann hierzu das Modul [http://fhem.de/commandref.html#WUup WUup] verwenden. Dazu benötigt man die Zugangsdaten (stationID und Paßwort) für eine eigene Wetterstation. Mit dem Modul können die meisten vom [https://feedback.weather.com/customer/en/portal/articles/2924682-pws-upload-protocol?b_id=17298 PWS Upload Protocol] unterstützten Daten hochgeladen werden:&lt;br /&gt;
* Winddir - [0-360 momentane Windrichtung]&lt;br /&gt;
* Windspeedmph - [mph momentane Windgeschwindigkeit]&lt;br /&gt;
* Windgustmph - [mph aktuellen Böe, mit Software-spezifischem Zeitraum]&lt;br /&gt;
* Windgustdir - [0-360 mit Software-spezifischer Zeit]&lt;br /&gt;
* Windspdmph_avg2m - [mph durchschnittliche Windgeschwindigkeit innerhalb 2 Minuten]&lt;br /&gt;
* Winddir_avg2m - [0-360 durchschnittliche Windrichtung innerhalb 2 Minuten]&lt;br /&gt;
* Windgustmph_10m - [mph Böen der vergangenen 10 Minuten]&lt;br /&gt;
* Windgustdir_10m - [0-360 Richtung der Böen der letzten 10 Minuten]&lt;br /&gt;
* Feuchtigkeit - [% Außenfeuchtigkeit 0-100%]&lt;br /&gt;
* Dewptf- [F Taupunkt im Freien]&lt;br /&gt;
* Tempf - [F Außentemperatur]&lt;br /&gt;
* Rainin - [in Regen in der vergangenen Stunde]&lt;br /&gt;
* Dailyrainin - [in Regenmenge bisher heute]&lt;br /&gt;
* Baromin - [inHg barometrischer Druck]&lt;br /&gt;
* Soiltempf - [F Bodentemperatur]&lt;br /&gt;
* Bodenfeuchtigkeit - [%]&lt;br /&gt;
* Solarradiation - [W/m²]&lt;br /&gt;
* UV - [Index]&lt;br /&gt;
* AqPM2.5 - Feinstaub PM2,5 [µg/m³]&lt;br /&gt;
* AqPM10 - Feinstaub PM10 [µg/m³]&lt;br /&gt;
&lt;br /&gt;
Die Werte werden im Modul für Wunderground ins anglo-amerikanische System umgerechnet. Temperaturen werden also automatisch von °Celsius in Fahrenheit, Windgeschwindigkeiten von km/h in mph, mm in Inch und der barometrische Druck von hPa in inHg umgerechnet.&lt;br /&gt;
&lt;br /&gt;
== Wetternetzwerk auf wetter.com ==&lt;br /&gt;
Ein vollständiges Beispiel zur Nutzung der Informationen über die Regenmenge (Station 1445, Weinheim) von wetter.com ist in {{Link2Forum|Topic=39600|Message=332837|LinkText=diesem Forenbeitrag}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Wetter von netatmo ==&lt;br /&gt;
Das FHEM-Modul [[netatmo]] ermöglicht den Datenimport von privaten und öffentlichen netatmo Wetterstationen sowie den Abruf der in der Netatmo App verfügbaren Wettervorhersage. Eine Übersicht über die verfügbaren öffentlichen Stationen findet sich auf der Seite [http://www.netatmo.com/de-DE/weathermap Weathermap]. Die meisten öffentlichen Stationen liefern Temperatur, Luftfeuchte und Luftdruck, einige auch Wind, Regen und Daten zur Luftqualität (CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33610}} mit Sammlung und Beipielen von Internet-Links für die Anzeige von teilweise animierten Wetterbildern&lt;br /&gt;
* [http://bloglich.de/art/rpi/wetterdaten-auf-dem-raspberry-pi-in-fhem/ Beispiel in Blog(de)]&lt;br /&gt;
* [[HTTPMOD]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Wetterstationen]] &amp;lt;!-- eigentlich eine &amp;quot;Hardware-Kategorie&amp;quot;, passt aber trotzdem --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Anwesenheitserkennung_-_Remote_Fritzbox&amp;diff=23265</id>
		<title>Anwesenheitserkennung - Remote Fritzbox</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Anwesenheitserkennung_-_Remote_Fritzbox&amp;diff=23265"/>
		<updated>2017-11-13T07:39:37Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Code (beide Varianten) */ Link2Forum gefixt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Dieses Modul wird nicht mehr unterstützt oder weiterentwickelt, weil es:&lt;br /&gt;
# kein telnet mehr auf der FB gibt,&lt;br /&gt;
# die Weboberfläche sich mit jeder neuen FB-Version ändert,&lt;br /&gt;
# mit dem &#039;&#039;&#039;FRITZBOX Modul&#039;&#039;&#039; mittlerweile bessere Lösungen gibt.&lt;br /&gt;
&lt;br /&gt;
Details (zur Umstellung) siehe: &lt;br /&gt;
* [[FRITZBOX]] Modulseite&lt;br /&gt;
* {{Link2Forum|Topic=39433|LinkText=dieses Forenthema}} und&lt;br /&gt;
* Otto&#039;s Technik Blog [http://heinz-otto.blogspot.de/2015/07/die-zeiten-andern-sich.html]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
In Erweiterung des Beitrages [[Anwesenheitserkennung|Anwesenheitserkennung]] wird eine Beispiel-Lösung für folgendes Szenario vorgestellt:&lt;br /&gt;
&lt;br /&gt;
* Eine (nicht modifizierte) Fritzbox wird als WLAN Access Point und Router genutzt, jedoch läuft auf dieser Box kein FHEM oder Perl.&lt;br /&gt;
* Ein Linux Rechner (in diesem Beispiel ein RPI) wird als FHEM host verwendet.&lt;br /&gt;
* Device Erkennung mittels PRESENCE - ident mit PRESENCE fritzbox&lt;br /&gt;
&lt;br /&gt;
Die Lösung basiert auf dem PRESENCE Modul und nutzt die Funktion &#039;&#039;&#039;PRESENCE function { }&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Auch bei einem Repeater-Einsatz im WLan (zweite Fritzbox) kann diese Lösung eingesetzt werden - es ist nur eine Installation auf der Haupt-Fritzbox notwendig, nicht auf dem Repeater.&lt;br /&gt;
&lt;br /&gt;
== Background / Motivation ==&lt;br /&gt;
Ich hatte während der letzten 12 Monate ein modifiziertes PRESENCE Modul im Einsatz, das jedoch immer wieder ein Hängen oder Reboots der Fritzbox verursacht hatte (speziell bei 7270), daher hatte ich es nicht veröffentlicht. Die Vermutung liegt nahe, dass das ständige Telnet ein/aus-loggen die Hänger/Reboots verursacht hat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;update Version 1.3&#039;&#039;&#039;&lt;br /&gt;
Anpassung an die Änderungen im PRESENCE Modul, nun wahlweise die Angabe von Device-Namen oder MAC-Adresse möglich!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;update Version 1.7&#039;&#039;&#039;&lt;br /&gt;
RemoteFritzBoxWeb speichert nun ebenfalls die Session-ID, damit weniger logins notwendig. Unterstützung für Repeater 1750E eingebaut, Abfragen werden serialisiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;update Version 1.9&#039;&#039;&#039;&lt;br /&gt;
RemoteFritzBoxWeb: startup verbessert, verwendet telnetforBlocking zur Rückmeldung an fhem, OSX compatibility: keine Verwendung von pidof&lt;br /&gt;
&lt;br /&gt;
== Konzept ==&lt;br /&gt;
=== Variante 1 ===&lt;br /&gt;
* Diese Lösung basiert (wie auch die &#039;&#039;&#039;PRESENCE fritzbox&#039;&#039;&#039; Funktion) auf dem Fritzbox Befehl &#039;&#039;ctlmgr_ctl&#039;&#039;, der jedoch von der &amp;quot;Ferne&amp;quot; ausgelöst werden muss, da FHEM ja nicht auf der Fritzbox läuft. Weiters wurden Ideen/Konzepte des presenced/collectord verwendet.&lt;br /&gt;
* Die Lösung läuft bei mir seit Anfang Dez. 2013 stabil mit 12 abgefragten Devices / 120 Sekunden Intervall. (Env: FHEM auf RPI, Fritzbox 7390)&lt;br /&gt;
* Auf der Fritzbox wird ein &#039;&#039;&#039;shellscript&#039;&#039;&#039; installiert, dass von remote gestartet wird,  Kommandos lokal ausführt und das Ergebniss zurückschickt.&lt;br /&gt;
* Am FHEM host läuft ein &#039;&#039;&#039;perl basierender daemon&#039;&#039;&#039; der Kommandos von FHEM empfängt, aufbereitet und das shellscript auf der Fritzbox (mit parameter) startet. Dieser Daemon hält auch die Telnet Verbindung zur Fritzbox permanent aufrecht. Gestartet wird dieser Daemon automatisch beim ersten Aufruf durch FHEM.  &lt;br /&gt;
* ein Modul &#039;&#039;&#039;99_RFritzBox.pm&#039;&#039;&#039; ist die Schnittstelle zwischen FHEM und dem daemon.   &lt;br /&gt;
&lt;br /&gt;
=== Variante 2 ===&lt;br /&gt;
* Die WEB Oberfläche der Fritzbox wird über http abgefragt. &lt;br /&gt;
* Es ist kein code und kein Telnet auf der Fritzbox selbst notwendig, ein Nachteil könnte jedoch die Performance der Abfrage sein.&lt;br /&gt;
* Diese Variante ist vor allem für jene FB-Benutzer interessant, die kein Telnet auf der FB aktivieren können (oder wollen).&lt;br /&gt;
* Ab der Version 1.7 werden die Logindaten (Sid) zwischengespeichert (ca. 3 Minuten), das bringt wesentliche Performance-Vorteile.&lt;br /&gt;
* Zusätzlich werden die Webanfragen serialisiert, d.h. nur eine Abfrage gleichzeitig, damit sollten die select/timeout errors weg sein.&lt;br /&gt;
* &#039;&#039;&#039;Feature:&#039;&#039;&#039; Diese Version bietet die Möglichkeit, eine zweite Fritzbox (oder einen Repeater) per Web abzufragen.  &lt;br /&gt;
* Derzeit getestet sind FB 7270,7390,7490 und der Repeater 1750E.&lt;br /&gt;
&lt;br /&gt;
== Code (beide Varianten)==&lt;br /&gt;
Der Code ist als Zip-File im Thread {{Link2Forum|Topic=17957|LinkText=PRESENCE-RemoteFritzbox}} abgelegt. Bitte in diesem Thread auch Fragen/Feedback/Wünsche posten.&lt;br /&gt;
&lt;br /&gt;
== Installation &amp;amp; Debug Variante 1 ==&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
* Telnet auf der Fritzbox aktiviert &lt;br /&gt;
* perl NET::Telnet Modul auf dem Host wo FHEM läuft installiert. Beim Raspberry-PI geht das so:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/pre&amp;gt;&lt;br /&gt;
Folgende Reihenfolge ist empfehlenswert:&lt;br /&gt;
&lt;br /&gt;
=== Kopieren von  Rpresence.sh in die Fritzbox === &lt;br /&gt;
z.B. mittels FTP in folgendes Verzeichnis:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/var/media/ftp/FRITZ/bin # Der Verzeichnispfad muss angepasst werden! In diesem Beispiel ist das eine FB7390 im Internen Speicher.&lt;br /&gt;
chmod +x Rpresence.sh # shell script ausführbar machen.&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ein erster Test von der Telnet Konsole der Fritzbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;./Rpresence.sh &amp;lt;FBdevicename/FB-MAC-Adress&amp;gt;&amp;lt;/pre&amp;gt; sollte folgendes Ergebnis liefern: &amp;lt;pre&amp;gt;RFritzBox: &amp;lt;FBdevicename/FB-MAC-Adress&amp;gt; y z&amp;lt;/pre&amp;gt; wobei für &amp;lt;FBdevicename/FB-MAC-Adress&amp;gt; der Name &amp;lt;b&amp;gt;oder&amp;lt;/b&amp;gt; die MAC-Adresse eines Gerätes, so wie in der Fritzbox Weboberfläche definert einzusetzen ist. y ist die Fritzbox interne Devicenummer dieses Gerätes (es sollte jedenfalls nicht 999 hier stehen, in diesem Fall hat die FB den Namen nicht gefunden. z ist der Status (0==abwesend/1==anwesend).&lt;br /&gt;
Falls bis hierher alles geklappt hat, ist die Einrichtung auf der Fritzbox fertig.&lt;br /&gt;
&lt;br /&gt;
=== Installation &amp;amp; konfig &amp;amp; test Daemon am FHEM host === &lt;br /&gt;
kopieren von RFritzBoxScan.pl ins FHEM Verzeichnis (dort wo alle Module 00_xxx.pm - 99_yyy.pm sind)&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo chmod +x RFritzBoxScan.pl # ausführbar machen&lt;br /&gt;
sudo chown fhem:root RFritzBoxScan.pl #for user fhem &amp;lt;/pre&amp;gt;&lt;br /&gt;
Erstellen eines config- files für den daemon:&lt;br /&gt;
im root FHEM-Verzeichnis ( dort wo üblicherweise auch die fhem.pl zu finden ist )&lt;br /&gt;
ein file: &#039;&#039;&#039;credentials.cfg&#039;&#039;&#039; mit folgendem Inhalt erstellen (Adressen/User/Passwort/pfad anpassen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PRESENCE credentials (only required for function RemoteFritzBox)&lt;br /&gt;
$credentials{RemoteFritzBox}{ipadress} = &#039;192.168.1.254&#039;; # FB LAN Adress&lt;br /&gt;
$credentials{RemoteFritzBox}{username} = &#039;FritzBoxusername&#039;;&lt;br /&gt;
$credentials{RemoteFritzBox}{password} = &#039;FritzboxPasswort&#039;;&lt;br /&gt;
$credentials{RemoteFritzBox}{shellcmd} = &#039;/var/media/ftp/FRITZ/bin/Rpresence.sh&#039;; # pfad anpassen!&lt;br /&gt;
$credentials{RemoteFritzBox}{serverhost} = &#039;localhost&#039;;  #  RFritzBoxScan.pl provides this service&lt;br /&gt;
$credentials{RemoteFritzBox}{serverport} = 7777;&lt;br /&gt;
$credentials{RemoteFritzBox}{serverbin} = &#039;RFritzBoxScan.pl&#039;; # Fritzbox daemon&lt;br /&gt;
$credentials{RemoteFritzBox}{speedmatching} = &amp;quot;active&amp;quot;;         # optional valid: &amp;lt;active|speed&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Format dieser cfg-file entspricht dem im Modul Webcam. &lt;br /&gt;
Ein erster Test:&lt;br /&gt;
&amp;lt;pre&amp;gt;./RFritzBoxScan.pl &amp;lt;fullpath and name&amp;gt; # of credentials.cfg  eg: /opt/fhem/credentials.cfg&amp;lt;/pre&amp;gt; &lt;br /&gt;
Damit wir der Daemon von Hand gestartet und alle debug-Meldungen kommen auf diese Konsole.&lt;br /&gt;
Beim Start sollte der Output so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RFritzBoxScan: server waiting for client connection on port 7777&lt;br /&gt;
RFritzBoxScan: Fritzbox login ok&lt;br /&gt;
### die folgenden Zeilen kommen erst ab dem nächsten Schritt !&lt;br /&gt;
### und zwar jedesmal wenn ein request von FHEM an den daemon kommt...&lt;br /&gt;
RFritzBoxScan: connection from 127.0.0.1:57595&lt;br /&gt;
RFritzBoxScan: ..from FHEM received data: Nokia-N810&lt;br /&gt;
RFritzBoxScan: ..sending to Fritzbox: Nokia-N810 17&lt;br /&gt;
RFritzBoxScan: ..cmdresult: RFritzBox: Nokia-N810 17 1&lt;br /&gt;
RFritzBoxScan: ..result to fhem: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation und Konfiguration FHEM-Module ===&lt;br /&gt;
kopieren von 99_RFritzBox.pm ins FHEM Verzeichnis&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo chown fhem:root 99_RFritzBox.pm # for user fhem&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im FHEM command-feld: &amp;lt;pre&amp;gt;reload 99_RFritzBox.pm&amp;lt;/pre&amp;gt; eintippen (oder FHEM neu starten)&lt;br /&gt;
Die FHEM-PRESENCE Definition:&lt;br /&gt;
&amp;lt;pre&amp;gt;define &amp;lt;myName&amp;gt; PRESENCE function {RemoteFritzBox(&amp;quot;&amp;lt;FB-devicename/FB-MAC-Adress&amp;gt;&amp;quot;)} 120 120&lt;br /&gt;
example by name:&lt;br /&gt;
  define myEiFonStatus PRESENCE function {RemoteFritzBox(&amp;quot;myEiFon&amp;quot;)} 120 120&lt;br /&gt;
or with MAC adress:&lt;br /&gt;
  define myEiFonStatus PRESENCE function {RemoteFritzBox(&amp;quot;11:22:33:44:55:66&amp;quot;)} 120 120 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
damit wird in 120 sec Abständen der Status abgefragt.&lt;br /&gt;
im Telnet Fenster sollten jetzt die requests / response - Meldungen kommen.&lt;br /&gt;
&lt;br /&gt;
Zum Abschluß:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Strg-C&amp;gt;&amp;lt;/pre&amp;gt; im telnet Fenster eingeben, der Daemon wird dadurch gestoppt. Auf den nächsten Aufruf durch FHEM warten, der Daemon wird automatisch (im Hintergrund) gestartet. Überprüfen durch Eingabe von &amp;lt;pre&amp;gt;ps -e | grep RFritzBoxScan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation &amp;amp; Debug Variante 2 ==&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
* fhem auf raspberry o.ä.&lt;br /&gt;
&lt;br /&gt;
=== installation &amp;amp; konfig &amp;amp; test am FHEM host === &lt;br /&gt;
Erstellen eines config- files im root FHEM-Verzeichnis ( dort wo üblicherweise auch die fhem.pl zu finden ist )&lt;br /&gt;
ein file: &#039;&#039;&#039;credentials.cfg&#039;&#039;&#039; mit folgendem Inhalt erstellen (Adressen/User/Passwort/Modell anpassen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PRESENCE credentials (only required for function RemoteFritzBoxWeb)&lt;br /&gt;
$credentials{RemoteFritzBox}{ipadress} = &#039;192.168.1.254&#039;; 	# FB LAN Adress&lt;br /&gt;
$credentials{RemoteFritzBox}{username} = &#039;FritzBoxusername&#039;;&lt;br /&gt;
$credentials{RemoteFritzBox}{password} = &#039;FritzboxPasswort&#039;;&lt;br /&gt;
$credentials{RemoteFritzBox}{model}    = &#039;FB&#039;;                 	# optional FB-model: FB, FBLAN, 1750E&lt;br /&gt;
#								# model FB specifies the WLAN page, FBLAN the LAN page on Fritzbox-Web&lt;br /&gt;
# only required for a 2nd FB or repeater to be monitored by RemoteFritzBoxWeb - see below&lt;br /&gt;
$credentials{RemoteFritzBox1}{ipadress} = &#039;192.168.1.253&#039;; 	# 2nd FB LAN Adress&lt;br /&gt;
$credentials{RemoteFritzBox1}{username} = &#039;FritzBoxusername&#039;;	# optional, else 1st entry will be used&lt;br /&gt;
$credentials{RemoteFritzBox1}{password} = &#039;FritzboxPasswort&#039;;	# optional, else 1st entry will be used&lt;br /&gt;
$credentials{RemoteFritzBox1}{model}    = &#039;1750E&#039;;              # optional FB-model: FB, FBLAN, 1750E&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Format dieser cfg-file entspricht dem im Modul Webcam.&lt;br /&gt;
&amp;lt;br&amp;gt;Unterstützte Modelle:&lt;br /&gt;
   FB      holt und parsed die WLAN-Seite der Fritzbox, getested mit: 7270,7390,7490, DVBC-Repeater,... z.b: [http://fritz.box/wlan/wlan_settings.lua Fritzbox WLAN]&lt;br /&gt;
   FBLAN   holt und parsed die LAN-Seite der Fritzbox, getested mit: 7270,7390,7490,... z.b: [http://fritz.box/net/network_user_devices.lua Fritzbox LAN]&lt;br /&gt;
   1750E   holt und parsed die WLAN-Seite des 1750E Repeaters, z.b: [http://1750e.fritz.box/wlan/rep_settings.lua Repeater WLAN]&lt;br /&gt;
&lt;br /&gt;
=== Installation und Konfiguration FHEM-Module ===&lt;br /&gt;
kopieren von 99_RFritzBox.pm ins FHEM Verzeichnis&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo chown fhem:root 99_RFritzBox.pm # for user fhem&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im FHEM command-feld: &amp;lt;pre&amp;gt;reload 99_RFritzBox.pm&amp;lt;/pre&amp;gt; eintippen (oder FHEM neu starten).&lt;br /&gt;
&lt;br /&gt;
Die FHEM Definitionen:&lt;br /&gt;
&amp;lt;pre&amp;gt;define RemoteFritzBoxWeb dummy                     # muss RemoteFritzBoxWeb heissen, in diesem dummy wird &lt;br /&gt;
                                                        # das Web-login zwischengespeichert!&lt;br /&gt;
attr RemoteFritzBoxWeb event-on-update-reading none	# verhindert unnötige notify&#039;s&lt;br /&gt;
attr RemoteFritzBoxWeb verbose (1-5)			# optional: debugging on level 4-5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;define &amp;lt;myName&amp;gt; PRESENCE function {RemoteFritzBoxWeb(&amp;quot;&amp;lt;FBdevicename/FB.MAC-Adress&amp;gt;&amp;quot;)} 120 120&lt;br /&gt;
example by name:&lt;br /&gt;
  define myEiFonStatus PRESENCE function {RemoteFritzBoxWeb(&amp;quot;myEiFon&amp;quot;)} 120 120&lt;br /&gt;
or with MAC adress:&lt;br /&gt;
  define myEiFonStatus PRESENCE function {RemoteFritzBoxWeb(&amp;quot;11:22:33:44:55:66&amp;quot;)} 120 120 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
damit wird in 120 sec Abständen der Status abgefragt.&lt;br /&gt;
&lt;br /&gt;
==== Optional: Zweite Fritzbox/Repeater definieren: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;define &amp;lt;my2ndFritzbox&amp;gt; PRESENCE function{RemoteFritzBoxWeb(&amp;quot;&amp;lt;FBdevicename/FB.MAC-Adress&amp;gt;&amp;quot;, 1)} 120 120 &amp;lt;/pre&amp;gt;&lt;br /&gt;
Die &#039;&#039;&#039;1&#039;&#039;&#039; im Funktionsaufruf ist wichtig!&lt;br /&gt;
&lt;br /&gt;
== Debug Tip (beide Varianten)==&lt;br /&gt;
Log Meldungen vom Daemon bekommt man im FHEM Log durch Anlegen eines dummy devices mit dem Namen &#039;&#039;&#039;RemoteFritzBox&#039;&#039;&#039; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define RemoteFritzBox dummy  # Variante 1&lt;br /&gt;
bzw:&lt;br /&gt;
define RemoteFritzBoxWeb dummy # Variante 2&lt;br /&gt;
attr RemoteFritzBoxWeb verbose 4 oder 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Den Daemon beenden, falls er im Hintergrund läuft (nur Variante 1):&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo killall RFritzBoxScan.pl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
have fun&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_startet_nicht_-_Tipps_zur_Fehlersuche&amp;diff=23264</id>
		<title>FHEM startet nicht - Tipps zur Fehlersuche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_startet_nicht_-_Tipps_zur_Fehlersuche&amp;diff=23264"/>
		<updated>2017-11-13T07:28:32Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Link zu FHEMWEB gesetzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Kein Zugriff auf FHEMWEB/FHEM startet nicht - Was kann ich tun???&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Deine [[FHEMWEB]]-Seite ist nicht erreichbar? Ist FHEM tot, oder ist das Netzwerk kaputt? Was kann ich machen, um zu prüfen, woran es genau liegt?&lt;br /&gt;
&lt;br /&gt;
In diesem Wiki-Artikel soll es darum gehen, wie Du für Dich prüfen kannst, ob ein Fehler bei FHEM, im Netzwerk oder ein anderes Problem vorliegt.&lt;br /&gt;
== Prüfen: Läuft überhaupt ein FHEM-Prozess? ==&lt;br /&gt;
Man kann sich unter einem Linuxsystem sämtliche laufende Prozesse auflisten lassen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ps ax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &#039;&#039;ps&#039;&#039; listet je nach Argument alle laufende Prozesse auf. Die Liste kann man nun noch nach einem bestimmten Prozess filtern. Aufruf und Ausgabe einer Prozessliste mit einem Filter nach perl sieht z. B. so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cooltux@fhem01-cluster:~&amp;gt; ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;11320 pts/0    S+     0:00 grep --color=auto perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie wir sehen, wird hier lediglich der gerade ausgeführte Befehl &#039;&#039;ps&#039;&#039; gefunden (weil das Wort &#039;&#039;perl&#039;&#039; in der Aufrufzeile stand. Es wird hier überhaupt kein Perl-Prozess gelistet. Aktuell läuft also definitiv kein FHEM, das ja ein Perl-Programm/Prozess ist.&lt;br /&gt;
&lt;br /&gt;
Eine Prozessliste mit einem laufenden FHEM-Prozess könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[11:31 root@fhem01-cluster cooltux] &amp;gt; ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15852 ?        R    2119:09 /usr/bin/perl fhem.pl configDB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;21447 pts/0    S+     0:00 grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FHEM (&#039;&#039;perl fhem.pl ...&#039;&#039;) ist in diesem Fall also aktiv.&lt;br /&gt;
== Prüfen: Ist der laufende FHEM-Prozess überlastet? ==&lt;br /&gt;
Ich sollte mir anschauen, ob der FHEM-Prozess vielleicht zu sehr ausgelastet ist, der Prozess also 100 Prozent CPU Auslastung produziert?&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Linuxbefehl &#039;&#039;top&#039;&#039; wird uns hierbei behilflich sein:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
 [11:38 root@fhem01-cluster cooltux] &amp;gt; top&lt;br /&gt;
 top - 11:38:18 up 11 days, 18:58,  1 user,  load average: 1,07, 1,03, 1,00&lt;br /&gt;
 Tasks: 125 total,   2 running, 123 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 %Cpu(s): 24,9 us,  0,9 sy,  0,0 ni, 74,1 id,  0,0 wa,  0,0 hi,  0,1 si,  0,0 st&lt;br /&gt;
 KiB Mem:    945524 total,   833532 used,   111992 free,    41552 buffers&lt;br /&gt;
 KiB Swap:   102396 total,    46564 used,    55832 free.   496240 cached Mem&lt;br /&gt;
 PID   USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND&lt;br /&gt;
 15852 fhem      20   0  103652  82160   5068 R 100,0  8,7   2125:41 perl                                                                                                               &lt;br /&gt;
 21683 root      20   0    5740   2560   2092 R   1,0  0,3   0:00.37 top                                                                                                                &lt;br /&gt;
 19129 cooltux   20   0   86204  22348   3668 S   0,3  2,4  64:16.90 insync-portable                                                                                                    &lt;br /&gt;
 21350 cooltux   20   0   11436   2848   2248 S   0,3  0,3   0:00.10 sshd                                                                                                               &lt;br /&gt;
     1 root      20   0   23292   2368   1380 S   0,0  0,3   0:54.23 systemd                                                                                                            &lt;br /&gt;
     2 root      20   0       0      0      0 S   0,0  0,0   0:01.09 kthreadd                                                                                                           &lt;br /&gt;
     3 root      20   0       0      0      0 S   0,0  0,0   3:37.20 ksoftirqd/0                                                                                                        &lt;br /&gt;
     5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H                                                                                                       &lt;br /&gt;
     7 root      20   0       0      0      0 S   0,0  0,0   8:20.71 rcu_sched                                                                                                          &lt;br /&gt;
     8 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcu_bh                                                                                                             &lt;br /&gt;
     9 root      rt   0       0      0      0 S   0,0  0,0   0:05.45 migration/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier können wir nun eindeutig erkennen, dass unser FHEM die CPU mit 100 Prozent auslastet. FHEM hat also ein Problem!&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich ein FHEM/Perl-Prozess ohne Probleme:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
 [11:50 root@fhem01-cluster cooltux] &amp;gt; top&lt;br /&gt;
 top - 11:50:33 up 11 days, 19:10,  1 user,  load average: 0,84, 1,03, 1,00&lt;br /&gt;
 Tasks: 133 total,   1 running, 132 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 %Cpu(s):  0,6 us,  0,8 sy,  0,0 ni, 98,6 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st&lt;br /&gt;
 KiB Mem:    945524 total,   818344 used,   127180 free,    43748 buffers&lt;br /&gt;
 KiB Swap:   102396 total,    46820 used,    55576 free.   489652 cached Mem&lt;br /&gt;
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND&lt;br /&gt;
 22074 fhem      20   0   86424  68516   7200 S   1,3  7,2   0:47.64 perl&lt;br /&gt;
 22294 root      20   0    5740   2564   2092 R   1,3  0,3   0:00.19 top&lt;br /&gt;
 22296 fhem      20   0   86424  63556   2240 S   1,3  6,7   0:00.04 perl&lt;br /&gt;
 22297 fhem      20   0    2088    408    328 S   0,7  0,0   0:00.02 ping&lt;br /&gt;
     7 root      20   0       0      0      0 S   0,3  0,0   8:21.23 rcu_sched&lt;br /&gt;
  1366 mysql     20   0  620608 157132   5736 S   0,3 16,6  70:12.59 mysqld&lt;br /&gt;
 19481 root      20   0       0      0      0 S   0,3  0,0   0:02.35 kworker/3:0&lt;br /&gt;
     1 root      20   0   23292   2408   1420 S   0,0  0,3   0:54.27 systemd&lt;br /&gt;
     2 root      20   0       0      0      0 S   0,0  0,0   0:01.09 kthreadd&lt;br /&gt;
     3 root      20   0       0      0      0 S   0,0  0,0   3:37.42 ksoftirqd/0&lt;br /&gt;
     5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Prüfen: Stimmen die Dateiberechtigungen? ==&lt;br /&gt;
Alle Dateien im Verzeichnis /opt/fhem/ und allen Unterverzeichnissen  gehören nach der Installation dem Benutzer fhem und der Gruppe dialout. Man kann es leicht prüfen:&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Häufig wird der Eigentümer durch Manipulation der Dateien falsch gesetzt, mit diesem Befehl kann man alle Dateien auf den Eigentümer fhem und dessen primäre Gruppe setzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown -R fhem: /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Setup Routine setzt den Besitz auf fhem:dialout&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown -R fhem:dialout /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und wenn sich gar nichts mehr tut? ==&lt;br /&gt;
=== Fehlernachrichten von FHEM bei dessen Start analysieren  ===&lt;br /&gt;
In der Regel werden die Ausgaben von FHEM, auch die beim Start, gemeinsam mit vielen anderen Nachrichten in ein Logfile geschrieben. Dort kann natürlich nach Ursachen geforscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine einfachere Auswertung wird möglich, wenn man diese Meldungen zeitweilig in einem Terminalfenster (das Ding, um Kommandozeilenbefehle einzugeben) angezeigt bekommt. Das erreicht man z.B. auf folgendem Weg:&lt;br /&gt;
&lt;br /&gt;
# Starte ein Terminalfenster bzw. einen Terminalemulator&lt;br /&gt;
# Wechsle in das FHEM-Installationsverzeichnis (meist: &#039;&#039;/opt/fhem&#039;&#039;)&lt;br /&gt;
#: &amp;lt;code&amp;gt;cd /opt/fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
# Erstelle eine Kopie Deiner fhem.cfg, z.B. fhem.cfg.debug&lt;br /&gt;
#: &amp;lt;code&amp;gt;cp fhem.cfg fhem.cfg.debug&amp;lt;/code&amp;gt;&lt;br /&gt;
# Bearbeite diese Kopie fhem.cfg.debug nun, um die Meldungen in das Terminalfenster zu leiten, in dem der FHEM-Start versucht wird:&lt;br /&gt;
#: &amp;lt;code&amp;gt;nano ./fhem.cfg.debug&amp;lt;/code&amp;gt;&lt;br /&gt;
#:&lt;br /&gt;
#: In der Zeile mit &amp;quot;attr global logfile&amp;quot; ist der Dateiname durch ein - (Minuszeichen) zu ersetzen. Dadurch werden die FHEM-Ausgaben auf STDOUT (in das Terminalfenster) geschrieben, und FHEM geht nicht in den Hintergrund.&lt;br /&gt;
&lt;br /&gt;
# Starte FHEM im Terminalfenster &#039;&#039;&#039;mit der angepassten Konfigurationsdatei&#039;&#039;&#039;:&lt;br /&gt;
#: &amp;lt;code&amp;gt;perl fhem.pl fhem.cfg.debug&amp;lt;/code&amp;gt;&lt;br /&gt;
#: Das Terminalfenster nun nicht schliessen, die Meldungen tauchen hier auf.&lt;br /&gt;
#: ... Die Fehlermeldungen sind nun zu interpretieren. Gegebenenfalls kann man sie kopieren und als wichtige Information bei einer Hilfeanfrage (z.B. im Forum) verwenden.&lt;br /&gt;
# Wenn man genug analysiert hat, FHEM mit Ctrl-C/Strg-C stoppen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neue Möglichkeit des Debuggen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Seit dem 01.08.2017 gibt es die Möglichkeit beim manuellen Starten von FHEM im Terminal den Schalter -d zu verwenden ({{Link2Forum|Topic=74774|Message=666766}}). Dieser startet FHEM mit den beiden gesetzten Attributen &amp;lt;code&amp;gt;attr global logfile -&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;attr global verbose 5&amp;lt;/code&amp;gt; und gibt somit alle Meldungen im Terminalfenster aus. Zuerst mit ins FHEM Verzeichnis wechseln. Root oder sudo ist nicht erforderlich!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd /opt/fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fhem.cfg - Nutzer:&lt;br /&gt;
&amp;lt;code&amp;gt;perl fhem.pl -d fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
configDB - Nutzer:&lt;br /&gt;
&amp;lt;code&amp;gt;perl fhem.pl -d configDB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EBUS&amp;diff=23263</id>
		<title>EBUS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EBUS&amp;diff=23263"/>
		<updated>2017-11-13T07:25:25Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Mit ECMD in FHEM */  Link auf Artikel zu ECMD gesetzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=r|RNText=Die Verwendung des EBUS zur &#039;&#039;Ansteuerung&#039;&#039; eines Heizungssystems kann dieses bei unsachgemäßer Anwendung beschädigen. Für unmittelbare oder mittelbare Folgen, die sich aus dem Nachbau des Interfaces oder der Verwendung der hier zur Verfügung gestellten Information ergeben, übernimmt der Autor keine Haftung.}}Dieser Artikel beschreibt die Ankopplung von Heizungssysteme mit eBus-Interface an FHEM.&lt;br /&gt;
&lt;br /&gt;
Der eBus ist eine bei vielen Heizungssystemen vorhandene serielle Schnittstelle mit zwei Leitungen. Verwendet werden dabei 2400 Baud als Geschwindigkeit und die beiden Signalpegel&lt;br /&gt;
*logisch 1: 15–24 V&lt;br /&gt;
*logisch 0: 9–12 V&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS-Adapter-aufgebaut.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fertig aufgebaute eBus Platine, bereit für den Einsatz mit eBusd!&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;
=Interface=&lt;br /&gt;
==Schaltung==&lt;br /&gt;
[[Datei:EBUS_Interface_Schaltung.png|thumb|left|alt=eBus-USB Interface]]&lt;br /&gt;
Eine direkte Ankopplung des eBus an FHEM via Pegelwandlung und serielle Schnittstelle ist nicht empfehlenswert, stattdessen wurde der Weg beschritten, einen separaten Raspberry Pi (Modell B) an den eBus zu koppeln und darauf die Software &#039;&#039;eBusd&#039;&#039; laufen zu lassen. Diese wird dann in einer beliebigen FHEM-Instanz als ECMD-Device definiert und somit per Telnet abgefragt.&lt;br /&gt;
&lt;br /&gt;
Hierbei wird ein kommerziell für ca. 6,00 € erhältliches USB-Modul mit ein paar Zusatzbauteilen im Wert von ca. 5,00 € versehen. Das Interface hat die folgenden Eigenschaften:&lt;br /&gt;
*Verpolungssicherer eBus-Anschluss&lt;br /&gt;
*Galvanische Trennung zwischen eBus und USB &lt;br /&gt;
Die Bauteile sind unkritisch und können durch äquivalente Teile ersetzt werden. Allerdings sollte bei der Zenerdiode auf eine Belastbarkeit mit 1,3 W geachtet werden, und beim USB-Modul darauf, dass dieses einen FTDI-Chip enthält.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur die lesende Hälfte des Interfaces nachzubauen und sich auf ein passives Lauschen auf dem EBUS zu beschränken. Dazu einfach den Zweig mit Darlington-Transistor aus der Schaltung nicht einbauen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Schaltung des eBus von Prof. Dr. Peter A. Henning ist eine bewährte Schaltung die von zahlreichen Anwendern bereits nachgebaut wurde. &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;&lt;br /&gt;
&lt;br /&gt;
==Eigenbau (Lochrasterplatine)==&lt;br /&gt;
[[Datei:EBUS_Adapter_Lochrasterplatine.png|thumb|left|alt=Platine]]&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel eines Aufbaues auf einer Lochrasterplatine.&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;
==Platine==&lt;br /&gt;
Auf Basis der oben genannten Schaltung, wurde im {{Link2Forum|Topic=46098|LinkText=FHEM Forum}} ein Platinenlayout erstellt und produziert. Die dazu benötigten Gerberfiles können {{Link2Forum|Topic=45127|Message=370647|LinkText=hier}} heruntergeladen werden. Der Autor des Layouts hat dies mit der Freeware Version von EAGLE erstellt, d.h. die Files können bei allen Platinenherstellern eingereicht werden (keine Lizenz eines bestimmten Herstellers notwendig).&lt;br /&gt;
[[Datei:EBUS_Adapter_Platine.png|thumb|left|alt=Platine]]&lt;br /&gt;
Diese Beschreibung sollte hauptsächlich für Personen dienen, bei denen es nicht das tägliche Brot ist elektronische Schaltungen in Betrieb zu nehmen. Ich setze hier voraus, dass der Umgang mit einem Lötkolben klar ist. Wer noch nie gelötet hat, sollte besser einen Bekannten ersuchen der das schon gemacht hat.&lt;br /&gt;
Nachfolgend wird beschrieben, wie eine Platine mit den Bauteilen bestückt wird.&lt;br /&gt;
Am einfachsten ist es einen fertigen Adapter zu kaufen.&lt;br /&gt;
Siehe dazu auch den {{Link2Forum|Topic=46098|LinkText=Link aus dem Forum}}:&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;
===Platine bestücken===&lt;br /&gt;
[[Datei:EBUS_Adapter_Bestueckung.png|thumb|left|alt=Platine bestücken]]&lt;br /&gt;
Bei der Bestückung sollte darauf geachtet werden mit den niedrigsten Bauteilen zuerst zu beginnen, sonst fallen sie beim verlöten ständig heraus. Wer die Farbcodes der Widerstände nicht auswendig kennt sollte diese vorher mit einem Meßgerät (Ohmmeter) messen. Nach den Dioden und Widerständen können die IC Sockel eingelötet werden, hier sollte lediglich auf die Einkerbung laut Bestückungsaufdruck geachtet werden. Zum Schluß noch die restlichen Bauteile. Nach einer genauen Sichtkontrolle (verbogene Beinchen des IC, Kurzschlüsse beim Löten, richtige Polung) können noch die ICS eingesetzt werden. Diese können auf einer flachen Unterlage etwas vorgebogen werden, damit sie leichter in den Sockel passen.&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;Achtung&#039;&#039;&#039;: der IC 4011 ist ein Cmos Schaltkreis und ist empfindlich gegen statische Aufladungen, daher die Beinchen nicht mit dem Finger berühren, bzw. ein Antistatikband am Arm verwenden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Bestückung der Widerstände bei Platine V1.6&lt;br /&gt;
 R1 = 3k3&lt;br /&gt;
 R2 = 1k0&lt;br /&gt;
 R3 = 20k Poti&lt;br /&gt;
 R4 = 10k (auf der Platine nicht beschriftet, links neben R2)&lt;br /&gt;
 R5 = 470&lt;br /&gt;
 R6 = 22k&lt;br /&gt;
 R7 = 100k (auf der Platine nicht beschriftet, links unten liegt quer)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[https://secure.reichelt.de/index.html?&amp;amp;ACTION=20&amp;amp;AWKID=1170007&amp;amp;PROVID=2084 Warenkorb der benötigten Bauteile von Reichelt]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Platine Messpunkte===&lt;br /&gt;
[[Datei:EBUS_Adapter_Messpunkte.png|thumb|left|alt=Platine messen]]&lt;br /&gt;
Hier abgebildet der Schaltplan mit einigen wichtigen Spannungen für den Testbetrieb am Netzgerät. Bitte beachtet den Widerstand am Eingang des eBus und die Anschaltung der behelfsmäßigen Led zur Abstimmung. Spätestens dann, wenn die Schaltung Fehler zeigt, wird man über so einen Versuchsaufbau nicht herum kommen. Damit kann in Ruhe die Schaltung getestet und gemessen werden. Defekte Bauteile oder fehlerhafte Lötstellen sollten dann schnell gefunden werden.&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;
Der Schaltplan zeigt einige wichtigen Spannungen für den Testbetrieb am Netzgerät. &lt;br /&gt;
Bei dem Versuchsaufbau ist insbesondere auf den Einsatz eines korrekten Vorwiderstands, am Eingang des eBus und die Anschaltung der behelfsmäßigen LED (zur Abstimmung), zu beachten (nur zur Abstimmhilfe).&lt;br /&gt;
&lt;br /&gt;
===Poti abgleichen===&lt;br /&gt;
Zur ersten Justierung des Potis, wird der eBusd Dienst genutzt. Das Vorgehen sieht wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
1) &#039;&#039;&#039;eBus Dienst stoppen&#039;&#039;&#039; - Das kann mit der folgenden Kommandozeile bewerkstelligt werden:&lt;br /&gt;
 service ebusd stop&lt;br /&gt;
2) &#039;&#039;&#039;eBus Dienst&#039;&#039;&#039;, jedoch mit minimalen Parametern und ohne eBusd Konfigurationsdateien (CSV-Files), mit der folgenden Kommandozeile erneut starten:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; &amp;lt;DEVICE&amp;gt; Muss zuvor durch den entsprechenden USB-Port (siehe [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]) z.B. /dev/ttyUSB0 ersetzt werden.&#039;&#039;&lt;br /&gt;
 ebusd -f -c /tmp --logareas bus --loglevel info -d &amp;lt;DEVICE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Der eBusd Dienst läuft nun im &#039;&#039;&#039;Vordergrund&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
4) &#039;&#039;&#039;Einem zweiten Terminal öffnen&#039;&#039;&#039; und den folgenden Befehl ausführen:&lt;br /&gt;
 ebusctl raw&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl erhält man im Terminalfenster die empfangenen Bytes als Hex, die wie folgt aussehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-24 12:07:16.955 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.001 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.047 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.093 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.097 [bus notice] &amp;lt;10&lt;br /&gt;
2015-12-24 12:07:17.102 [bus notice] &amp;lt;50&lt;br /&gt;
2015-12-24 12:07:17.107 [bus notice] &amp;lt;b5&lt;br /&gt;
2015-12-24 12:07:17.111 [bus notice] &amp;lt;04&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wenn gerade kein Gerät den Bus nutzt, dann sollten ca. 20 Zeilen pro Sekunde ausgegeben werden und zwar mit &amp;quot;&amp;lt;aa&amp;quot; (im Beispiel die oberen 4 Zeilen).&lt;br /&gt;
&lt;br /&gt;
Sobald ein Gerät den eBus nutzt, tauchen neben &amp;quot;&amp;lt;aa&amp;quot; auch andere HEX Werte auf (im Beispiel die unteren 4 Zeilen). Diese Werte können ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Poti Einstellung ist, dass vor allem die regulären &amp;quot;aa&amp;quot;s zu sehen sind. Tauchen die &amp;quot;aa&amp;quot;s auf, dann kann davon ausgegangen werden, dass der Poti korrekt eigestellt ist. Ist dies der Fall, dann kann der eBusd Dienst regulär gestartet werden.&lt;br /&gt;
Dabei muss der im Vordergrund laufende eBusd Prozess (siehe Punkt 2) mit der Tastenkombination STRG+C abgebrochen und der folgende Befehl in der Kommandozeile ausgeführt werden:&lt;br /&gt;
 service ebusd start&lt;br /&gt;
Anschließend erscheint eine Meldung, die einen erfolgreichen Start des Dienstes signalisiert.&lt;br /&gt;
 [ ok ] Starting ebusd: ebusd.&lt;br /&gt;
&lt;br /&gt;
===Bekannte Fehler=== &lt;br /&gt;
Das Logfile ist zur Inbetriebnahme unerlässlich und kann (z.B. mit [[#PSPad|PSPad]]) ausgelesen werden. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-22 16:27:34.195 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:12.029 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:12.339 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:14.006 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:16.372 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:18.023 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:18.729 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:20.458 [update notice] update myCustom Status01: 43.0;41.0;8.000;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:26.460 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-12-22 16:28:30.436 [update notice] update myCustom Status01: 41.0;40.0;8.000;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:32.458 [update notice] update broadcast vdatetime QQ=10: 16:24:52;22.12.2015&lt;br /&gt;
2015-12-22 16:28:32.696 [update notice] update myCustom2 Pumpenstatus: ok&lt;br /&gt;
2015-12-22 16:28:36.452 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-12-22 16:28:40.478 [update notice] update myCustom Status01: 40.0;39.0;7.750;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:42.482 [update notice] update myCustom1 Status11: nosignal;41;5;18;-;-;-;-;8.000&lt;br /&gt;
2015-12-22 16:28:42.753 [update notice] update myCustom Status02: auto;60;70.0;70;54.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier ein typisches Log wenn das Poti noch nicht oder &#039;&#039;&#039;falsch kalibriert&#039;&#039;&#039; wurde.&lt;br /&gt;
Ab dem Eintrag 16:28:20.458 war dann die richtige Stellung gefunden. Das Poti soll daher zunächst ganz nach links (Transistor der Platine ist dann rechts unten) gedreht werden und dann vorsichtig auf etwa 2:00 Uhr. Bei knapp 2:00 Uhr ist bei der Testplatine dann die ideale Stellung. Der Stellbereich ist sehr klein (etwa 1-2 mm), daher einen Schraubendreher verwenden der sehr exakt passt und gleichzeitig mit dem Laptop abfragen starten. Zur Kontrolle dann das Log (var/log/ebusd.log) abfragen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-11-29 06:26:55.271 [update notice] update myCustom1 Status11: nosignal;40;0;15;-;-;-;-;-0.188&lt;br /&gt;
2015-11-29 06:26:55.541 [update notice] update myCustom Status02: auto;60;70.0;70;54.0&lt;br /&gt;
2015-11-29 06:26:59.293 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-11-29 06:27:03.323 [update notice] update myCustom Status01: 53.0;45.0;-0.438;47.0;46.0;error&lt;br /&gt;
2015-11-29 06:27:05.268 [update notice] update broadcast outsidetemp QQ=10: -3.188&lt;br /&gt;
2015-11-29 06:27:09.344 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-11-29 06:27:11.934 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:11.981 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:12.025 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:12.069 [bus error] send to 08: ERR: read timeout&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall liegt ein Fehler bei jedem Sendeversuch vor. Ein &amp;quot;bus error&amp;quot; mit timeout sollte nicht (zu oft) zu finden sein. Gut zu sehen sind schon die Broadcast Meldungen, die selbständig über den Bus laufen und vom Konverter schon richtig interpretiert werden. Sollten wie in diesem Fall, die Meldungen nicht mit Texten zu lesen sein fehlen noch die Konfigurationfiles (csv) im Verzeichnis /etc/ebusd. Welche Files hier verwendet werden sollen ist natürlich von der Therme und dem Zubehör abhängig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur lesend auf die Schnittstelle zugreifen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Kommerzielles Interface==&lt;br /&gt;
Ein kommerzielles Interface für die Umsetzung eBus-&amp;gt;USB ist hier erhältlich:&lt;br /&gt;
[https://www.eservice-online.de/produkte/ebus/ eBus Koppler USB]&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
Als Software kommt auf dem Raspberry Pi der [https://github.com/john30/ebusd ebusd] = eBus-Dämon zum Einsatz (aktuell im Januar 2016 die Version 2.0). &lt;br /&gt;
&lt;br /&gt;
Der ebusd wird auf dem System (z.B Raspberry Pi) nach der beiliegenden Anleitung übersetzt und installiert.&lt;br /&gt;
&lt;br /&gt;
Wichtigsten Bestandteile (Komponenten) der Installation sind:&lt;br /&gt;
*&#039;&#039;ebusd&#039;&#039; - das eigentliche Programm zur Kommunikation mit dem EBUS&lt;br /&gt;
*&#039;&#039;ebusd-configuration - Dateien im CSV(Comma Separated Value)-Format, die beim Start des eBusd eingelesen und als Kommandos (Befehle) für das Heizungsystem verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend wird die Installation der zwei Komponenten beschrieben.&lt;br /&gt;
&lt;br /&gt;
==eBusd Installation per Debian Package==&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
wget (ist in der Regel auf vielen Distributionen bereits installiert). Die Installation kann mit der folgenden Kommandozeile nachträglich durchgeführt werden: &lt;br /&gt;
 sudo apt-get install wget&lt;br /&gt;
&lt;br /&gt;
===eBusd installieren===&lt;br /&gt;
Das entsprechende eBusd Debian Package kann [https://github.com/john30/ebusd/releases vom GitHub ebusd] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Die Installation (&#039;&#039;Stand Januar 2016 - Version 2.0&#039;&#039;) wird wie folgt durchgeführt:&lt;br /&gt;
&lt;br /&gt;
 EBUSDPACKAGE=ebusd-2.0_armhf.deb # &amp;lt;--- Version kann bei Bedarf hier angepasst werden.&lt;br /&gt;
 wget https://github.com/john30/ebusd/releases/download/v2.0/$EBUSDPACKAGE&lt;br /&gt;
 sudo dpkg -i --force-overwrite $EBUSDPACKAGE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die eBusd wird dauernd aktualisiert. Aus diesem Grund sollte vor der Installation geprüft werden (siehe den o.g. Link), ob bereits eine neuere Version zur Verfügung steht. Der Name des Debian Packages muss, vor der Ausführung der o.g. Kommandozeilen, an der entsprechenden Stelle angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===eBusd Konfigurationsdateien (CSV-Files)===&lt;br /&gt;
Das entsprechende eBusd Konfigurations Debian Package kann [https://github.com/john30/ebusd-configuration/releases vom GitHub ebusd-configuration] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Die Installation (&#039;&#039;Stand Januar 2016 - Version 2.0.5aa482c&#039;&#039;) wird wie folgt durchgeführt:&lt;br /&gt;
&lt;br /&gt;
 EBUSDCFGPACKAGE=ebusd-configuration-2.0.5aa482c-de_all.deb # &amp;lt;--- Version kann bei Bedarf hier angepasst werden.&lt;br /&gt;
 wget https://github.com/john30/ebusd-configuration/releases/download/v2.0.1/$EBUSDCFGPACKAGE&lt;br /&gt;
 sudo dpkg -i --force-overwrite $EBUSDCFGPACKAGE&lt;br /&gt;
&lt;br /&gt;
===eBusd starten===&lt;br /&gt;
Nach der erfolgreichen Installation des eBusd und der eBusd Konfigurationsdateien kann nun der Dienst gestartet werden.&lt;br /&gt;
Zuvor muss jedoch der USB-Port des eBus Adapters überprüft werden (siehe auch [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]). Sollte der USB-Port von dem Standardwert &amp;quot;/dev/ttyUSB0&amp;quot; abweichen, dann muss die Konfiguration &amp;quot;/etc/default/ebusd&amp;quot; angepasst werden.&lt;br /&gt;
Andernfalls kann nun der Dienst mit der folgenden Kommandozeile gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 service ebusd start&lt;br /&gt;
Anschließend erscheint eine Meldung:&lt;br /&gt;
 [ ok ] Starting ebusd: ebusd.&lt;br /&gt;
die einen erfolgreichen Start des Dienstes signalisiert.&lt;br /&gt;
&lt;br /&gt;
===eBusd und Konfigurationsdateien deinstallieren===&lt;br /&gt;
Nachfolgend wird die Deinstallation des eBusd und der eBusd Konfigurationsdateien beschrieben.&lt;br /&gt;
&lt;br /&gt;
Zunächst muss der eBusd Dienst beendet werden, dies erfolgt mit der folgenden Kommandozeile:&lt;br /&gt;
 service ebusd stop&lt;br /&gt;
Anschließend erscheint eine Meldung:&lt;br /&gt;
 [ ok ] Stopping ebusd: ebusd.&lt;br /&gt;
die einen erfolgreichen Stop des Dienstes signalisiert.&lt;br /&gt;
&lt;br /&gt;
Anschließend wird zunächst das Debian Konfigurations Package deinstalliert. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Bei der Deinstallation werden alle Konfigurationsdateien (CSV-Files) unwiderruflich gelöscht!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Deinstallation erfolgt mit der folgenden Kommandozeile:&lt;br /&gt;
 sudo dpkg -r --force-overwrite ebusd-configuration&lt;br /&gt;
&lt;br /&gt;
Das eBusd Debian Package wird mit der folgenden Kommandozeile deinstalliert:&lt;br /&gt;
 sudo dpkg -r --force-overwrite ebusd&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp:&#039;&#039;&#039; Mit der folgenden Kommandozeile: &lt;br /&gt;
 dpkg -l | grep &#039;ebusd&#039; &lt;br /&gt;
können die installierten eBusd Debian Packages überprüft werden. &lt;br /&gt;
&lt;br /&gt;
Liefert der Befehl kein Ergebnis, dann kann davon ausgegangen werden, dass kein eBusd Debian Package mehr installiert ist.&lt;br /&gt;
&lt;br /&gt;
==eBusd Installation Build Prozess==&lt;br /&gt;
Möchte man eine aktuelle Entwicklungsversion von eBusd nutzen, weil ein Fehler behoben wurde und für diese Version noch kein Debian Package vorhanden ist, dann kann der eBusd manuell kompiliert werden. Nachfolgend werden die dafür notwendigen Schritte beschrieben.&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
Zunächst müssen die notwendigen Werkzeuge auf dem System installiert werden. Dies erfolgt mit der nachfolgenden Kommandozeile:&lt;br /&gt;
 apt-get -y install git &amp;amp;&amp;amp; apt-get -y install autoconf &amp;amp;&amp;amp; apt-get -y install automake &amp;amp;&amp;amp; apt-get -y install g++ &amp;amp;&amp;amp; apt-get -y install make&lt;br /&gt;
&lt;br /&gt;
Weiterführende Informationen findet man auch direkt im eBusd [https://github.com/john30/ebusd/wiki/1.-Build-and-install Wiki]!&lt;br /&gt;
&lt;br /&gt;
===eBusd kompilieren ===&lt;br /&gt;
&lt;br /&gt;
Nachdem alle Voraussetzungen erfüllt sind, kann der eBusd auf dem lokalen System kompiliert und installiert werden.&lt;br /&gt;
Dafür sind folgende Schritte notwendig:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;eBusd auschecken&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/john30/ebusd.git &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Den Kompilierungsvorgang starten&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 cd ebusd&lt;br /&gt;
 sudo ./autogen.sh --prefix=/usr&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo cp contrib/debian/default/ebusd /etc/default/ebusd # Konfigurationsdatei für eBusd Startoptionen.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang kann je nach Geschwindigkeit des Systems ca. 20 Minuten dauern. &lt;br /&gt;
&lt;br /&gt;
Wurde der Vorgang erfolgreich durchgeführt, dann kann mit der folgenden Kommandozeile die Version abgefragt werden:&lt;br /&gt;
&lt;br /&gt;
 ebusd -V&lt;br /&gt;
&lt;br /&gt;
===Autostart von eBusd konfigurieren===&lt;br /&gt;
&lt;br /&gt;
Damit die Austostartroutine auch nach einem Neustart des Systems funktioniert, muss das Dämonstartfile in das entsprechende Verzeichnis kopiert werden.&lt;br /&gt;
Die Konfiguration wird mit der folgenden Kommandozeile durchgeführt:  &lt;br /&gt;
&lt;br /&gt;
 sudo cp contrib/debian/init.d/ebusd /etc/init.d/ebusd   # (Dämonstartfile kopieren)&lt;br /&gt;
&lt;br /&gt;
Der eBusd Dienst kann, wie [[#eBusd starten|hier]] beschrieben, gestartet werden.&lt;br /&gt;
&lt;br /&gt;
===eBusd Logrotate===&lt;br /&gt;
Logrotate ist ein logischer Ablauf was mit dem Logfile geschehen soll. Man kann damit das File täglich komprimieren und das 7 Tage lang, dann erst wieder beginnen es zu überschreiben. Dies ist besonders wichtig, denn sonst würde irgendwann das Logilfe bis zu einer extremen Größe anwachsen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/ebusd.log {&lt;br /&gt;
     rotate 7&lt;br /&gt;
     copytruncate&lt;br /&gt;
     compress&lt;br /&gt;
     missingok&lt;br /&gt;
     notifempty&lt;br /&gt;
     daily&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Logfile kann in &#039;&#039;&#039;/etc/logrotate.d/ebusd&#039;&#039;&#039; konfiguriert werden.&lt;br /&gt;
In diesem Beispiel wird alle 7 Tage rotiert und die Datei komprimiert, das aktuelle Tagesfile ist unkomprimiert und mit einem Editor lesbar.&lt;br /&gt;
Das Ergebnis aus der oben dargestellten Definition sieht wie folgt aus:&lt;br /&gt;
[[Datei:EBUS_Logfile_logrotate.png|thumb|left|alt=Logfile Ansicht]]&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;
=Systemüberwachung=&lt;br /&gt;
&lt;br /&gt;
Aufgrund unterschiedlicher Ursachen kann es vorkommen, dass der eBus Dämon seinen Dienst einstellt. Die hätte zufolge, dass der Lese- und Schreibzugriff nicht mehr möglich wäre. Nachfolgend werden zwei Möglichkeiten beschreiben wie eine Überwachung des Systems realisiert und im Störungsfall die Funktionalität wiederhergestellt, werden kann.&lt;br /&gt;
&lt;br /&gt;
==Mithilfe von FHEM==&lt;br /&gt;
&lt;br /&gt;
In FHEM kann man ein Notify einrichten, um bei einem Verbindungsabbruch mehrere Versuche zum Reconnect durchzuführen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define EBUS.N notify (EBUS.*DISCONNECTED.*)|(HK.Hz:A.Temp.*err) { EBUSrecover(&amp;quot;notify EBUS.N&amp;quot;,0)}&lt;br /&gt;
attr EBUS.N group deviceDetector&lt;br /&gt;
attr EBUS.N room Alarm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das dabei aufgerufene Perl-Programm besteht nur aus wenigen Zeilen und muss in die 99_myUtils.pm kopiert/erweitert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# 99_myUtils.pm&lt;br /&gt;
sub EBUSrecover($$)&lt;br /&gt;
{   &lt;br /&gt;
  my ($evt,$num) = @_;&lt;br /&gt;
  Log 1,&amp;quot;[EBUS] Recover triggered from $evt, attempt No. $num&amp;quot;;&lt;br /&gt;
  if(Value(&amp;quot;EBUS&amp;quot;) ne &amp;quot;opened&amp;quot;){&lt;br /&gt;
    if( $num &amp;lt; 7){&lt;br /&gt;
      $num++;&lt;br /&gt;
      fhem(&amp;quot;set EBUS reopen&amp;quot;);&lt;br /&gt;
      fhem(&amp;quot;delete EBUSrecoverdly&amp;quot;) if($defs{&amp;quot;EBUSrecoverdly&amp;quot;});&lt;br /&gt;
      fhem(&amp;quot;define EBUSrecoverdly at +00:00:05 {EBUSrecover(&#039;EBUSrecover&#039;,$num)}&amp;quot;);&lt;br /&gt;
    }else{&lt;br /&gt;
      fhem(&amp;quot;set Device.warn EBUS&amp;quot;) &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mithilfe von Watchdog==&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich auch, den ebusd kontinuierlich zu überwachen und ggf. neu zu starten. Mit der nachfolgenden Beschreibung wird alle 5 Sekunden die Existenz des Programms abgefragt und dieses bei einem versagenden Test neu gestartet.&lt;br /&gt;
&lt;br /&gt;
Dazu wird auf dem System nach überall erhältlichen Anleitungen der Watchdog Timer installiert und die Datei /etc/watchdog.conf mit den beiden Parametern&lt;br /&gt;
 test-timeout = 10&lt;br /&gt;
 interval     = 5&lt;br /&gt;
besetzt. Ferner wird die Datei /etc/watchdog.d/ebusd angelegt mit dem Inhalt&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# description: watchdog helper file for ebusd  &lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
&#039;test&#039;)&lt;br /&gt;
       #--- Test for ebusd&lt;br /&gt;
       if [ -s /var/run/ebusd.pid ] ; then&lt;br /&gt;
           RUN=`ps -ef | grep ebusd.*USB0 | grep -v grep`&lt;br /&gt;
           if [ &amp;quot;$RUN&amp;quot; != &amp;quot;&amp;quot; ] ; then            &lt;br /&gt;
              #echo &amp;quot;ebusd is already running&amp;quot;&lt;br /&gt;
              exit 0&lt;br /&gt;
           else&lt;br /&gt;
              echo &amp;quot;ebusd defunct at &amp;quot;`date`&lt;br /&gt;
              exit 1    &lt;br /&gt;
           fi&lt;br /&gt;
       else&lt;br /&gt;
           echo &amp;quot;ebusd not running, return 1 at &amp;quot;`date`&lt;br /&gt;
           exit 1    &lt;br /&gt;
       fi&lt;br /&gt;
       ;;&lt;br /&gt;
&#039;repair&#039;)&lt;br /&gt;
       #-- Restarting ebusd&lt;br /&gt;
       echo &amp;quot;ebusd restarting at &amp;quot;`date`&lt;br /&gt;
       /etc/init.d/ebusd start&lt;br /&gt;
       RETVAL=$?&lt;br /&gt;
       exit 0&lt;br /&gt;
       ;;&lt;br /&gt;
*)&lt;br /&gt;
       exit 0&lt;br /&gt;
       ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Visualisierung und Steuerung=&lt;br /&gt;
&lt;br /&gt;
==Mit ECMD in FHEM==&lt;br /&gt;
Eine einfache aber sichere Anbindung des eBusd an FHEM kann mit [[ECMD]] durchgeführt werden. Es ist egal ob eBusd auf dem selben Raspberry wie FHEM läuft oder ein eigener Raspberry dafür verwendet wird. Die gezeigten Beispiele sind nur eine der Möglichkeiten die zum Ziel führen, sollen aber sicher und schnell zu den ersten Erfolgen führen.&lt;br /&gt;
&lt;br /&gt;
===ECMD in FHEM aktivieren===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define EBUS ECMD telnet &#039;&#039;&#039;ip-raspi-ebusd&#039;&#039;&#039;:8888   # IP Adresse ebusd einsetzen!!!&lt;br /&gt;
attr EBUS classdefs bai00.class=/opt/fhem/FHEM/bai00.cfg&lt;br /&gt;
attr EBUS icon usb&lt;br /&gt;
attr EBUS requestSeparator 000&lt;br /&gt;
attr EBUS room Vaillant&lt;br /&gt;
&lt;br /&gt;
# Die Definition von ECMD, &amp;quot;ip-raspi-ebusd&amp;quot; muss durch die IP-Adresse ersetzt werden. Beispiel:&lt;br /&gt;
define EBUS ECMD telnet 192.168.0.10:8888&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Kommunikation erfolgt über Telnet und  8888 ist das Port über welches kommuniziert werden soll.&lt;br /&gt;
&lt;br /&gt;
===ECMD Devices definieren===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define Vorlauf ECMDDevice bai00.class&lt;br /&gt;
attr Vorlauf IODev EBUS&lt;br /&gt;
attr Vorlauf group Vaillant&lt;br /&gt;
attr Vorlauf icon sani_supply_temp&lt;br /&gt;
attr Vorlauf room Vaillant&lt;br /&gt;
&lt;br /&gt;
define Ruecklauf ECMDDevice bai00.class&lt;br /&gt;
attr Ruecklauf IODev EBUS&lt;br /&gt;
attr Ruecklauf group Vaillant&lt;br /&gt;
attr Ruecklauf icon sani_return_temp&lt;br /&gt;
attr Ruecklauf room Vaillant&lt;br /&gt;
&lt;br /&gt;
define PumpeWatt ECMDDevice bai00.class&lt;br /&gt;
attr PumpeWatt IODev EBUS&lt;br /&gt;
attr PumpeWatt group Vaillant&lt;br /&gt;
attr PumpeWatt icon measure_power&lt;br /&gt;
attr PumpeWatt room Vaillant&lt;br /&gt;
&lt;br /&gt;
define Fanspeed ECMDDevice bai00.class&lt;br /&gt;
attr Fanspeed IODev EBUS&lt;br /&gt;
attr Fanspeed group Vaillant&lt;br /&gt;
attr Fanspeed icon vent_ventilation_level_automatic&lt;br /&gt;
attr Fanspeed room Vaillant&lt;br /&gt;
&lt;br /&gt;
define HKurve ECMDDevice bai00.class&lt;br /&gt;
attr HKurve IODev EBUS&lt;br /&gt;
attr HKurve group Vaillant&lt;br /&gt;
attr HKurve icon temp_control&lt;br /&gt;
attr HKurve room Vaillant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Jeder Messwert der von eBusd abgefragt werden soll, muss dazu ein ECMDDevice erstellt werden. Hier ein paar Beispiele mit Vorlauf, Rücklauf, Leistung der Pumpe, Ventilatorgeschwindigkeit und der Heizkurve.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Daten_Heizung.png|thumb|left|alt=EBUS-USB Interface]]&lt;br /&gt;
Zu jedem ECMDDevice muss es eine Classdefinition in der bai00.cfg geben. Der Name &amp;quot;bai00.cfg&amp;quot; ist frei gewählt und wird in diesen Beispielen verwendet.&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;
===ECMD Classdefinition===&lt;br /&gt;
&lt;br /&gt;
Um eine Klasse zu definieren muss der dazu benötigte Code in eine eigene Datei (hier bai00.cfg) geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
################## bai00.cfg ###############&lt;br /&gt;
# &lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
# Aussentemperatur&lt;br /&gt;
get Aussentemp cmd {&amp;quot;r -f outsidetemp temp\n&amp;quot;}&lt;br /&gt;
get Aussentemp expect &amp;quot;.*\n*&amp;quot;&lt;br /&gt;
get Aussentemp postproc { $_ }&lt;br /&gt;
#&lt;br /&gt;
# vorlauftemperatur&lt;br /&gt;
get Vorlauf cmd {&amp;quot;r -m 10 status01 temp1.0\n&amp;quot;}&lt;br /&gt;
get Vorlauf expect &amp;quot;\d+\.\d+\n\n&amp;quot;&lt;br /&gt;
get Vorlauf postproc { sprintf(&amp;quot;%5.1f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# Ruecklauftemperatur&lt;br /&gt;
get Ruecklauf cmd {&amp;quot;r -m 10 status01 temp1.1\n&amp;quot;}&lt;br /&gt;
get Ruecklauf expect &amp;quot;\d+\.\d+\n\n&amp;quot;&lt;br /&gt;
get Ruecklauf postproc { sprintf(&amp;quot;%5.1f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# Pumpenleistung&lt;br /&gt;
get PumpeWatt cmd {&amp;quot;r -f PumpPower\n&amp;quot;}&lt;br /&gt;
get PumpeWatt expect &amp;quot;\d+\n\n&amp;quot;&lt;br /&gt;
get PumpeWatt postproc { sprintf(&amp;quot;%5.0f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# Fanspeed&lt;br /&gt;
get Fanspeed cmd {&amp;quot;r -f SDFanSpeed\n&amp;quot;}&lt;br /&gt;
get Fanspeed expect &amp;quot;\d+\n\n&amp;quot;&lt;br /&gt;
get Fanspeed postproc { sprintf(&amp;quot;%5.0f&amp;quot;,$_) }  &lt;br /&gt;
#&lt;br /&gt;
# Heizkurve lesen&lt;br /&gt;
get HKurve cmd {&amp;quot;r -f Hc1HeatCurve\n&amp;quot;}&lt;br /&gt;
get HKurve expect &amp;quot;\d+\.\d+\n&amp;quot;&lt;br /&gt;
get HKurve postproc { sprintf(&amp;quot;%3.1f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# HeizkurveSchreiben&lt;br /&gt;
get HeizkurveSchreiben cmd {&amp;quot;write 430 Hc1HeatCurve &amp;quot;.Value(&amp;quot;HeizkurveEinstellen&amp;quot;).&amp;quot;\n&amp;quot;}&lt;br /&gt;
get HeizkurveSchreiben expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get HeizkurveSchreiben postproc  { $_ } &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für jeden Device wird hier festgelegt wie die Befehls Syntax der Abfrage auszusehen hat (cmd) und wie die Ergebnisse zu filtern sind (expect), wie soll das Ausgabeformat sein (postproc). Diese Definitionen bitte in einer neuen Datei &amp;quot;bai00.cfg&amp;quot; speichern.&lt;br /&gt;
&lt;br /&gt;
===ECMD Zyklische Abfrage===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# Abfrage Timersteuerung, fhem.cfg&lt;br /&gt;
define EBUS.Timer at +*00:15:00 get Aussentemp Aussentemp;;get Vorlauf Vorlauf;;get Ruecklauf Ruecklauf;;get PumpeWatt PumpeWatt;get Fanspeed Fanspeed;;get PumpeWatt PumpeWatt;;get HKurve HKurve&lt;br /&gt;
attr EBUS.Timer group VaillantControl&lt;br /&gt;
attr EBUS.Timer icon time_timer&lt;br /&gt;
attr EBUS.Timer room Vaillant&lt;br /&gt;
attr EBUS.Timer verbose 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Daten auch zyklisch vom eBus abholen zu können, wird ein Timer gesetzt. Hier wird alle 15 Minuten abgefragt.&lt;br /&gt;
Tipp: unwichtige Daten wie Druck oder irgendwelche Zähler definiert man in einem zweiten Timer, welcher dann zB. auf 1 Stunde getriggert wird. So wird die Häufigkeit des Zugriffs auf den eBus entlastet.&lt;br /&gt;
&lt;br /&gt;
===ECMD Solar, Warmwasser und Heizkreis===&lt;br /&gt;
&lt;br /&gt;
====ECMD Beispiel Solar====&lt;br /&gt;
Im nachfolgenden Beispiel wird der EBUS über das Modul ECMD angebunden und mit drei Klassen von Kommandos versehen. IP Adresse ist jene des Device wo der eBusd läuft. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
define EBUS ECMD telnet 192.168.0.192:8888&lt;br /&gt;
attr EBUS classdefs HK.SOL.class=/opt/fhem/FHEM/ebus_solar.cfg:HK.WW.class=/opt/fhem/FHEM/ebus_ww.cfg:HK.Hz.class=/opt/fhem/FHEM/ebus_hz.cfg&lt;br /&gt;
attr EBUS room System&lt;br /&gt;
#--&lt;br /&gt;
define HK.Hz ECMDDevice HK.Hz.class&lt;br /&gt;
attr HK.Hz IODev EBUS&lt;br /&gt;
attr HK.Hz group heating&lt;br /&gt;
attr HK.Hz room Verbrauch&lt;br /&gt;
#--&lt;br /&gt;
define HK.WW ECMDDevice HK.WW.class&lt;br /&gt;
attr HK.WW IODev EBUS&lt;br /&gt;
attr HK.WW group heating&lt;br /&gt;
attr HK.WW room Verbrauch&lt;br /&gt;
#--&lt;br /&gt;
define HK.SOL ECMDDevice HK.SOL.class&lt;br /&gt;
attr HK.SOL IODev EBUS&lt;br /&gt;
attr HK.SOL group solarGenerator&lt;br /&gt;
attr HK.SOL room Solaranlage&lt;br /&gt;
#--&lt;br /&gt;
# Diese drei Klassen werden als separate Files mit den in der EBUS-Definition stehenden Dateinamen &#039;&#039;ebus_hz.cfg&#039;&#039;, &#039;&#039;ebus_ww.cfg&#039;&#039; sowie &#039;&#039;ebus_solar.cfg&#039;&#039; angelegt. Alle drei ECMD-Devices werden nun zyklisch (z.B. jede Minute) abgefragt mit&lt;br /&gt;
define EBUS.Timer at +*00:01:00 get HK.Hz A.Temp;;get HK.Hz state;;get HK.WW state;;get HK.SOL state&lt;br /&gt;
attr EBUS.Timer group heatingControl&lt;br /&gt;
attr EBUS.Timer room Verbrauch&lt;br /&gt;
attr EBUS.Timer verbose 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ECMD Classdefinition Heizkreis====&lt;br /&gt;
Die erste Datei definiert die FHEM-Readings für die Abfrage von Außentemperatur und Heizkreis:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Außentemperatur&lt;br /&gt;
get A.Temp cmd {&amp;quot;cyc broad temp\n&amp;quot;}&lt;br /&gt;
get A.Temp expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get A.Temp postproc { my $rval;\&lt;br /&gt;
 if(($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
   $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
   $rval=sprintf(&amp;quot;%5.2f °C&amp;quot;,$_);\&lt;br /&gt;
 }\&lt;br /&gt;
$rval; }&lt;br /&gt;
# Heizkeis HK1&lt;br /&gt;
get state cmd {&amp;quot;cyc mv HK1_temp\n&amp;quot;}&lt;br /&gt;
get state expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get state postproc { my ($bval,$rval,$tval,$pval,$qval,$sval,$xval,$zval);\&lt;br /&gt;
my $hash  = $defs{&amp;quot;%NAME&amp;quot;};\&lt;br /&gt;
 if( ($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
    $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $sval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
    my @values=split(&#039; &#039;,$_);\&lt;br /&gt;
    if( $values[0] &amp;lt; 15 ){\&lt;br /&gt;
       $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $sval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    } else { \&lt;br /&gt;
       $bval = HzBedarf();\&lt;br /&gt;
       $rval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[0]);\&lt;br /&gt;
       $tval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[1]);\&lt;br /&gt;
       if( $values[2] == 0 ){\&lt;br /&gt;
          $pval = &amp;quot;OFF&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;0 0&amp;quot;;\&lt;br /&gt;
       }elsif( $values[2] == 1 ){\&lt;br /&gt;
          $pval = &amp;quot;ON (HK)&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;80 0&amp;quot;;\&lt;br /&gt;
       }elsif( $values[2] == 2 ){\&lt;br /&gt;
          $pval = &amp;quot;ON (WW)&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;0 80&amp;quot;;\&lt;br /&gt;
       }else{\&lt;br /&gt;
          $pval = &amp;quot;unknown&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       }\&lt;br /&gt;
       $sval = sprintf(&amp;quot;%d&amp;quot;,$values[2]);\&lt;br /&gt;
       $xval = sprintf(&amp;quot;%5.2f %5.2f %s %5.2f&amp;quot;,\&lt;br /&gt;
         $values[0],$values[1],$qval,$bval);\&lt;br /&gt;
       $zval = sprintf(&amp;quot;VL.T %5.2f °C, RL.T %5.2f °C, %s&amp;quot;,\&lt;br /&gt;
         $values[0],$values[1],$pval);\&lt;br /&gt;
    }\&lt;br /&gt;
  }\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;VL.T&amp;quot;, $rval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;RL.T&amp;quot;, $tval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe&amp;quot;, $pval, 1); \&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe.P&amp;quot;, $qval, 1); \&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Bedarf&amp;quot;, $bval, 1); \&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Status&amp;quot;, $sval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;reading&amp;quot;, $xval, 1);\&lt;br /&gt;
$zval; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ECMD Classdefinition Warmwasserkreis====&lt;br /&gt;
Die zweite Datei definiert die FHEM-Readings für den Warmwasserkreis:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Warmwasserkreis&lt;br /&gt;
get state cmd {&amp;quot;cyc broad getstatus_WW\n&amp;quot;}&lt;br /&gt;
get state expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get state postproc { my ($rval,$tval,$bval,$pval,$xval,$zval);\&lt;br /&gt;
my $hash  = $defs{&amp;quot;%NAME&amp;quot;};\&lt;br /&gt;
 if( ($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
    $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
    my @values=split(&#039; &#039;,$_);\&lt;br /&gt;
    if( $values[1] &amp;lt; 15 ){\&lt;br /&gt;
       $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    }else {\&lt;br /&gt;
       $rval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[0]);\&lt;br /&gt;
       $tval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[1]);\&lt;br /&gt;
       $bval = ($values[2] == 80) ? &amp;quot;ON (WW)&amp;quot; : &amp;quot;OFF&amp;quot;;\&lt;br /&gt;
       $pval = ($values[3] == 1) ? &amp;quot;ON&amp;quot; : &amp;quot;OFF&amp;quot;;\&lt;br /&gt;
       $xval = sprintf(&amp;quot;%5.2f %5.2f %5.2f %d %d&amp;quot;,\&lt;br /&gt;
        $values[0],0.0,$values[1],$values[2],$values[3]);\&lt;br /&gt;
       $zval = sprintf(&amp;quot;SF1.T %5.2f °C, %s&amp;quot;,\&lt;br /&gt;
        $values[0],$pval);\&lt;br /&gt;
    }\&lt;br /&gt;
  }\&lt;br /&gt;
$zval; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ECMD Classdefinition Solarkreis====&lt;br /&gt;
Die dritte Datei definiert die FHEM-Readings für den Solarkreis:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Solarkreis&lt;br /&gt;
get state cmd {&amp;quot;cyc broad getstatus_SOL\n&amp;quot;}&lt;br /&gt;
get state expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get state postproc { my ($rval,$pval,$qval,$lval,$yval,$xval,$zval);\&lt;br /&gt;
my $hash  = $defs{&amp;quot;%NAME&amp;quot;};\&lt;br /&gt;
 if( ($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
    $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $lval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $yval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
    my @values=split(&#039; &#039;,$_);\&lt;br /&gt;
    $rval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[0]);\&lt;br /&gt;
    $pval = ($values[1] == 1)?&amp;quot;ON&amp;quot;:&amp;quot;OFF&amp;quot;;\&lt;br /&gt;
    $qval = ($values[1] == 1)?65:0;\&lt;br /&gt;
    $lval = sprintf(&amp;quot;%5.2f %%&amp;quot;,$values[2]);\&lt;br /&gt;
    $yval = sprintf(&amp;quot;%d&amp;quot;,$values[3]);\&lt;br /&gt;
    $xval = sprintf(&amp;quot;%5.2f %d %5.2f %d&amp;quot;,\&lt;br /&gt;
      $values[0],$qval,$values[2],$values[3]);\&lt;br /&gt;
    $zval = sprintf(&amp;quot;Coll.T %5.2f °C, %s&amp;quot;,\&lt;br /&gt;
      $values[0],$pval);\&lt;br /&gt;
 }\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Coll.T&amp;quot;, $rval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe&amp;quot;, $pval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe.P&amp;quot;, $qval.&amp;quot; W&amp;quot;, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Load&amp;quot;,  $lval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Yield&amp;quot;, $yval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;reading&amp;quot;, $xval, 1);\&lt;br /&gt;
$zval; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ECMD Classdefinition Heizkurve===&lt;br /&gt;
&lt;br /&gt;
Diese Klassendefinition muss in der bai00.cfg gespeichert (angehängt) werden.&lt;br /&gt;
in diesem Beispiel wurde sie für die Vaillant Calormatic 430 definiert, bei einer Calormatic 470 muss der Text entsprechend geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# HeizkurveSchreiben Calormatic 430, bai00.cfg&lt;br /&gt;
get HeizkurveSchreiben cmd {&amp;quot;write -c 430 Hc1HeatCurve &amp;quot;.Value(&amp;quot;HeizkurveEinstellen&amp;quot;).&amp;quot;\n&amp;quot;}&lt;br /&gt;
get HeizkurveSchreiben expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get HeizkurveSchreiben postproc  { $_ }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Heizkurve schreiben===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
#fhem.cfg&lt;br /&gt;
define HeizkurveEinstellen dummy&lt;br /&gt;
attr HeizkurveEinstellen group Heizkurve_Einstellen&lt;br /&gt;
attr HeizkurveEinstellen icon temp_control&lt;br /&gt;
attr HeizkurveEinstellen room Vaillant,Heizung&lt;br /&gt;
attr HeizkurveEinstellen setList state:0.20,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70&lt;br /&gt;
attr HeizkurveEinstellen webCmd state&lt;br /&gt;
&lt;br /&gt;
define HeizkurveSchreiben_Click notify HeizkurveEinstellen {\&lt;br /&gt;
 fhem(&amp;quot;get HeizkurveSchreiben HeizkurveSchreiben&amp;quot;);;\&lt;br /&gt;
}&lt;br /&gt;
attr HeizkurveSchreiben_Click group heatingControl&lt;br /&gt;
attr HeizkurveSchreiben_Click room Vaillant&lt;br /&gt;
&lt;br /&gt;
define HeizkurveSchreiben ECMDDevice bai00.class&lt;br /&gt;
attr HeizkurveSchreiben IODev EBUS&lt;br /&gt;
attr HeizkurveSchreiben group Heizkurve_Einstellen&lt;br /&gt;
attr HeizkurveSchreiben room Vaillant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein kleines Demo wie man via ECMD und eBus die Daten zurück in die Register der Therme (Calormatic) schreiben kann. Hier wird die Heizkurve verstellt.&lt;br /&gt;
Ein Dummy wird definiert und über eine setList werden die verschiedenen Kurven vorgegeben. Dank setList kann es zu keinen unerlaubten Eingaben kommen. Über den notify wird die Heizkurve dann schließlich gesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Heizkurve_Einstellen.png|thumb|left|alt=EBUS-USB Interface]]&lt;br /&gt;
Vorsicht: überlegt euch bitte gut was ihr zurück schreiben wollt, es kann unter Umständen gefährlich für eure Hardware oder Gesundheit werden (zB: Warmwasser auf über 60 Grad). Alles was hier durchgeführt wird, führt ihr auf eigene Verantwortung durch.&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;
===Wochenprogramme===&lt;br /&gt;
Ein gerne benutztes Feature ist die Änderung der Zeitprogramme des Heizgerätes in FHEM. Die Visualisierung  ist etwas komplexer weil alles x 7 ist und hier Steuerzeichen beim Zusammensetzen des Sendestrings vorkommen die nicht direkt übergeben werden können. Einzelne Timer können damit nicht geschrieben werden, daher wird bei jeder Timereingabe der komplette String geschrieben. Der Einfachheit halber und wegen der Übersicht sind nur 2 Tagesprogramme (Timer) im Beispielcode vorgesehen (die Calormatic kann 3).&lt;br /&gt;
[[Datei:EBUS_Timerprogramme.png|thumb|left|alt=Wochentimer]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#####################&lt;br /&gt;
#  Timer-Programme  #&lt;br /&gt;
#####################&lt;br /&gt;
get Mo cmd {&amp;quot;r -f hc1Timer.Monday\n&amp;quot;}&lt;br /&gt;
get Mo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Mo postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Di cmd {&amp;quot;r -f hc1Timer.Tuesday\n&amp;quot;}&lt;br /&gt;
get Di expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Di postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Mi cmd {&amp;quot;r -f hc1Timer.Wednesday\n&amp;quot;}&lt;br /&gt;
get Mi expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Mi postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Do cmd {&amp;quot;r -f hc1Timer.Thursday\n&amp;quot;}&lt;br /&gt;
get Do expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Do postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Fr cmd {&amp;quot;r -f hc1Timer.Friday\n&amp;quot;}&lt;br /&gt;
get Fr expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Fr postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Sa cmd {&amp;quot;r -f hc1Timer.Saturday\n&amp;quot;}&lt;br /&gt;
get Sa expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Sa postproc { Vaillant_Timer($_); }&lt;br /&gt;
get So cmd {&amp;quot;r -f hc1Timer.Sunday\n&amp;quot;}&lt;br /&gt;
get So expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get So postproc { Vaillant_Timer($_); }&lt;br /&gt;
get ZeitfensterSchreibenMo cmd {&amp;quot;write -c 430 hc1Timer.Monday &amp;quot;.ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenMo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenMo postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenDi cmd {&amp;quot;write -c 430 hc1Timer.Tuesday &amp;quot;.ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenDi expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenDi postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenMi cmd {&amp;quot;write -c 430 hc1Timer.Wednesday &amp;quot;.ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenMi expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenMi postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenDo cmd {&amp;quot;write -c 430 hc1Timer.Thursday &amp;quot;.ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenDo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenDo postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenFr cmd {&amp;quot;write -c 430 hc1Timer.Friday &amp;quot;.ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenFr expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenFr postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenSa cmd {&amp;quot;write -c 430 hc1Timer.Saturday &amp;quot;.ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenSa expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenSa postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenSo cmd {&amp;quot;write -c 430 hc1Timer.Sunday &amp;quot;.ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenSo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenSo postproc  { $_ }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Beispiel ist für eine Vaillant Calormatic 430, bei einer Calormatic 470 müssen die entsprechenden Zeilen angepasst werden (write -c 430....) .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#########################################################&lt;br /&gt;
#&lt;br /&gt;
#                      Vaillant_Timer&lt;br /&gt;
# Datenstring = 03:30;19:30;20:00;20:00;20:00;20:00;Mo-Fr&lt;br /&gt;
#########################################################&lt;br /&gt;
# 99_myUtils.pm&lt;br /&gt;
sub Vaillant_Timer($)&lt;br /&gt;
{&lt;br /&gt;
 my @values=split(/[; ]/,$_);&lt;br /&gt;
 #-- suppress leading zero ?&lt;br /&gt;
 for(my $i=0;$i&amp;lt;7;$i++){ &lt;br /&gt;
   $values[$i]=~s/^0//;&lt;br /&gt;
 }&lt;br /&gt;
 my $sval=sprintf(&amp;quot;%s-%s&amp;quot;,$values[0],$values[1]);&lt;br /&gt;
 $sval  .=sprintf(&amp;quot;, %s-%s&amp;quot;,$values[2],$values[3])&lt;br /&gt;
   if($values[2] ne $values[3]);&lt;br /&gt;
 $sval  .=sprintf(&amp;quot;, %s-%s&amp;quot;,$values[4],$values[5])&lt;br /&gt;
   if($values[4] ne $values[5]);&lt;br /&gt;
 return $sval;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oben gezeigtes Beispiel benötigt den Vaillant_Timer (von Prof. Peter Henning). Dieser Code muss in die 99_myUtils.pm gespeichert werden. Unter diesem {{Link2Forum|Topic=41064|Message=336911|LinkText=Link}} gibt es weiterreichende Informationen zu diesem Thema.&lt;br /&gt;
&lt;br /&gt;
==GAEBUS==&lt;br /&gt;
&lt;br /&gt;
GAEBUS ist ein Perl Modul welches es in FHEM ermöglicht sämtliche Daten des eBus bequem zu konfigurieren.&lt;br /&gt;
Das Protokoll ist ebenso wie bei ECMD Telnet, aber die Einrichtung unterscheidet sich sehr stark und wird von den meisten Anwendern einfacher empfunden. Allerdings ist im derzeitigen Entwicklungsstand der GAEBUS noch nicht so flexibel wie ECMD. Das betrifft vor allem die Datenfilterung und Datenformatierung.&lt;br /&gt;
&lt;br /&gt;
Eine genaue Installations- und Einrichtungsanleitung kann aus diesem {{Link2Forum|Topic=46098|Message=381580|LinkText=Forums-Thread}} entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Den Diskussionsthread des Autors findet man {{Link2Forum|Topic=41064|Message=332654|LinkText=hier}}.&lt;br /&gt;
&lt;br /&gt;
==FHEM Tablet UI (FTUI)==&lt;br /&gt;
&lt;br /&gt;
Die [http://forum.fhem.de/index.php/board,71.0.html Tablet-UI] ist ein ansprechendes HTML Frontend welches durch intensive Betreuung des Autors sehr gepflegt wird. Mit sogenannten Widgets kann hier auch für ungeübte schnell ein optisch ansprechendes Ergebnis erzielt werden. Die Tablet-UI stellt mit ihren Widgets direkt die Verbindung zu den Readings in FHEM her. Alle Messwerte die hier dargestellt werden sollen, müssen daher vorher in FHEM bereits definiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUSD_FTUI.png|thumb|left|alt=eBus Platine]]&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;
Der komplette Demo-Code der abgebildeten Seite kann hier downgeloadet werden: {{Link2Forum|Topic=46098|Message=383071|LinkText=Tablet-UI}}&lt;br /&gt;
&lt;br /&gt;
=Tipps &amp;amp; Tricks=&lt;br /&gt;
&lt;br /&gt;
==eBusd Bedeutung der Telegramme==&lt;br /&gt;
&lt;br /&gt;
Der ebusd wird entweder über &#039;&#039;ebusctl&#039;&#039; oder über &#039;&#039;telnet&#039;&#039; durch Klartextkommandos abgefragt, die lauten z.B. &#039;&#039;read -c broadcast outsidetemp&#039;&#039;.&lt;br /&gt;
*In CSV-Dateien in /etc/ebusd wird festgelegt, in welche bzw. aus welcher binären Folge ein Kommando übersetzt wird. Konkret handelt es sich z.B. bei &#039;&#039;read -c broadcast outsidetemp&#039;&#039; um die Außentemperatur, die im Heizungssystem zyklisch als Broadcast gesendet wird und vom ebusd einfach mitgelesen wird.&lt;br /&gt;
*Für unterschiedliche Heizungssysteme werden unterschiedliche CSV-Dateien benötigt. &lt;br /&gt;
Für die Übersetzung der binären Daten in den Klartext ist es notwendig die entsprechenden Konfigurationsdateien(CSV-Files) zu installieren.&lt;br /&gt;
Den aktuellen Stand dieser Dateien findet ihr im [https://github.com/john30/ebusd-configuration/releases GIT von John].&lt;br /&gt;
&lt;br /&gt;
Desweiteren kann der eBusd gestartet werden, und zwar mit den Optionen -f (läuft im Vordergrund) und --loglevel debug (alles wird geloggt). Diese Optionen produzieren Unmengen an Daten und damit werden auch alle empfangenen Telegramme protokolliert, z.B.  &lt;br /&gt;
 10feb5160301f00d44&lt;br /&gt;
Hierin bedeutet&lt;br /&gt;
{|&lt;br /&gt;
|Byte&lt;br /&gt;
|Bedeutung&lt;br /&gt;
|hier&lt;br /&gt;
|-&lt;br /&gt;
|0x10&lt;br /&gt;
|Adresse des Senders&lt;br /&gt;
|Zentrale&lt;br /&gt;
|-&lt;br /&gt;
|0xfe&lt;br /&gt;
|Adresse des Empfängers&lt;br /&gt;
|Alle Geräte&lt;br /&gt;
|-&lt;br /&gt;
|0xb5&lt;br /&gt;
|Herstellercode&lt;br /&gt;
|Vaillant&lt;br /&gt;
|-&lt;br /&gt;
|0x16&lt;br /&gt;
|Klasse des Kommandos&lt;br /&gt;
|Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|0x03&lt;br /&gt;
|Anzahl Datenbytes&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|0x01&lt;br /&gt;
|Bedeutung des Wertes&lt;br /&gt;
|outsidetemp = Außentemperatur&lt;br /&gt;
|-&lt;br /&gt;
|0xf0&lt;br /&gt;
|LSB des Wertes&lt;br /&gt;
|240&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|MSB des Wertes&lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
|0x44&lt;br /&gt;
|CRC&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Damit ergibt sich in diesem Falle eine Außentemperatur von (12*256 + 240)/256 = 12,9375 Grad Celsius. In der zugehörigen CSV-Datei wird dem ebusd diese Übersetzung mitgeteilt durch eine Zeile der Form&lt;br /&gt;
 u,broadcast,outsidetemp,Außentemperatur,,FE,B516,01,temp2,m,D2B,,°C,Temperatur&lt;br /&gt;
Diese CSV-Dateien können z.B. mit OpenOffice aus einem Spreadsheet generiert werden, indem dieses als CSV-Datei mit Separator &amp;quot;,&amp;quot; gespeichert wird. &lt;br /&gt;
*Bei einem vollkommen unbekannten Heizungssystem sollte man den Hersteller fragen, welche Codes er verwendet&lt;br /&gt;
*Für Vaillant- und Wolf- Heizungssysteme liegen in dem oben genannten Verzeichnis ein paar Beispiele vor, die man als Ausgangspunkt nehmen kann.&lt;br /&gt;
&lt;br /&gt;
==Serieller Konverter==&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_RS232_Konverter.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Es hat sich als nicht praktikabel erwiesen, den eBus mit einem Pegelwandler direkt an den seriellen GPIO-Port des Raspberry Pi anzuschließen. Die ständig einlaufenden Synchronisationssignale auf dem eBus, sowie die interne Verarbeitung der GPIO-Signale im Raspberry führen zu einer intolerablen Latenz, d.h., die eBus-Signale kommen verspätet bei der Software eBusd an (bis zu 90 Minuten wurden beobachtet). Stattdessen sollte grundsätzlich ein Seriell-USB-Konverter verwendet werden und der Raspberry Pi über einen USB-Port mit dem eBus verbunden werden.&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;
==USB Device und Port unter Linux ermitteln==&lt;br /&gt;
&lt;br /&gt;
Die einfachste Art den USB Device zu ermitteln erfolgt direkt am Raspberry Pi mit dem Befehl &amp;quot;lsusb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 pi@raspberry2 ~ $ lsusb&lt;br /&gt;
 Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.&lt;br /&gt;
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
 Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.&lt;br /&gt;
 Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC&lt;br /&gt;
&lt;br /&gt;
in diesem Beispiel ist das der Device 004, dieser FT232 lauscht am eBus und ist mit dem eBus-Konverter verbunden.&lt;br /&gt;
&lt;br /&gt;
Der USB Port kann mit der folgenden Kommandozeile ermittelt werden:&lt;br /&gt;
 sudo dmesg | grep -i tty&lt;br /&gt;
Die Ausgabe sieht wie folgt aus:&lt;br /&gt;
 [553999.530995] usb 1-1.3: FTDI USB Serial Device converter now attached to &#039;&#039;&#039;ttyUSB0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==eBusd==&lt;br /&gt;
===Prüfen der eBusd Konfigurationsdateien===&lt;br /&gt;
Mit dem Parameter &amp;quot;&#039;&#039;&#039;--checkconfig --scanconfig&#039;&#039;&#039;&amp;quot; kann die Installation der benutzten CSV Dateien am Raspberyy Pi überprüft werden. Vor allem wird hier angezeigt wieviele Messages übersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberry2 ~ $ ebusd --checkconfig --scanconfig&lt;br /&gt;
2016-01-22 17:14:12.619 [main notice] Performing configuration check...&lt;br /&gt;
2016-01-22 17:14:19.336 [main notice] found messages: 4440 (416 conditional on 89 conditions, 2 poll, 64 update)&lt;br /&gt;
&lt;br /&gt;
pi@raspberry2 ~ $ ebusctl info&lt;br /&gt;
version: ebusd 2.0.0ea7efc&lt;br /&gt;
signal: acquired&lt;br /&gt;
symbol rate: 24&lt;br /&gt;
masters: 3&lt;br /&gt;
messages: 426&lt;br /&gt;
address 03: master #3&lt;br /&gt;
address 08: slave #3, scanned &amp;quot;MF=Vaillant;ID=BAI00;SW=0518;HW=7401&amp;quot;, loaded  &amp;quot;vaillant/08.bai.HW7401.csv&amp;quot;&lt;br /&gt;
address 10: master #6&lt;br /&gt;
address 15: slave #6, scanned &amp;quot;MF=Vaillant;ID=43000;SW=0215;HW=2002&amp;quot;, loaded &amp;quot;vaillant/15.430.csv&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Info hingegen zeigt genau welche CSV Dateien geladen worden sind und ihre Soft- und Hardewareversion.&lt;br /&gt;
&lt;br /&gt;
===Bedeutung von &amp;quot;unknown MS&amp;quot; in der eBusd Logdatei===&lt;br /&gt;
Der Autor des eBus Dämons ist ständig bemüht die Geräte der unterschiedlichen Hersteller alle zu erfassen und so die Konfigurationsdateien zu ergänzen. Je nach Hard- und Softwarekonfiguration können  Broadcast Meldungen vom eBus kommen die in der _broadcast.csv noch nicht übersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-30 21:48:57.662 [update notice] unknown MS cmd: 1008b5110101 / 09404210004a620000ff&lt;br /&gt;
2015-12-30 21:48:59.670 [update notice] unknown BC cmd: 10feb516080001492130120315&lt;br /&gt;
2015-12-30 21:48:59.923 [update notice] unknown MS cmd: 1008b512020064 / 00&lt;br /&gt;
2015-12-30 21:49:01.711 [update notice] unknown MS cmd: 1008b5100900003c7affff00ff00 / 0101&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Meldungen haben in der Regel für den weiteren Verlauf der Kommunikation über den eBus keinen Einfluß und ist keine Fehlfunktion der Schaltung oder Platine!&lt;br /&gt;
&lt;br /&gt;
===Bedeutung von &amp;quot;signal lost&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberrypi /etc/init.d $ sudo ebusd -f -c /tmp --logareas bus --loglevel info -d /dev/ttyUSB0&lt;br /&gt;
2016-01-18 22:38:56.348 [bus notice] signal acquired&lt;br /&gt;
2016-01-18 22:38:56.477 [bus notice] new master 10, master count 2&lt;br /&gt;
2016-01-18 22:38:56.481 [bus notice] new master 3f, master count 3&lt;br /&gt;
2016-01-18 22:39:02.051 [bus error] signal lost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei dieser Meldung verliert der USB Konverter nach 20-Sekunden die Verbindung zum Raspberry Pi und produziert dann den Logeintrag.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=394313|LinkText=Lösungvorschlag}}&lt;br /&gt;
&lt;br /&gt;
===ERR: unable to load===&lt;br /&gt;
&lt;br /&gt;
 2016-01-17 19:04:03.961 [main error] unable to load scan config 08: no file from /etc/ebusd/vaillant with prefix 08. matches ID &amp;quot;bai00&amp;quot;, SW0604, HW5502&lt;br /&gt;
&lt;br /&gt;
Ebusd wird gestartet, findet aber ein Konfigurations File (CSV) nicht.&lt;br /&gt;
&lt;br /&gt;
Die eBusd Konfigurationsdateien könne nach [[#eBusd Konfigurationsdateien (CSV-Files)|diesem]] Vorgehen installiert werden.&lt;br /&gt;
Die Konfigurationsdateien aus dem Git neu laden und installieren.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=394270|LinkText=Lösungvorschlag}}&lt;br /&gt;
&lt;br /&gt;
===ERR: duplicate Entry===&lt;br /&gt;
&lt;br /&gt;
===ERR: End of input reached===&lt;br /&gt;
&lt;br /&gt;
Die CSV Dateien wurden [http://forum.fhem.de/index.php/topic,46098.msg383450/topicseen.html#msg383450 fehlerhaft installiert] oder sind defekt!&lt;br /&gt;
Eine Neuinstallation dieser Dateien ist erforderlich!&lt;br /&gt;
&lt;br /&gt;
 Error reading &amp;quot;/etc/ebusd/vaillant/05.vd3.csv&amp;quot; line 1 field 1 value &amp;quot;05.vd4.csv&amp;quot;: ERR: end of input reached&lt;br /&gt;
 Erroneous item is here:&lt;br /&gt;
 05.vd4.csv&lt;br /&gt;
  ^&lt;br /&gt;
 Error reading &amp;quot;/etc/ebusd/vaillant/15.hep.csv&amp;quot; line 1 field 1 value &amp;quot;15.sdr_p.csv&amp;quot;: ERR: end of input reached&lt;br /&gt;
 Erroneous item is here:&lt;br /&gt;
 15.sdr_p.csv&lt;br /&gt;
  ^&lt;br /&gt;
&lt;br /&gt;
===BUS ERR send to 15===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2016-01-16 19:20:28.575 [bus notice] new master 03, master count 4&lt;br /&gt;
2016-01-16 19:20:28.575 [update notice] unknown MS cmd: 1008b513020508 / 00&lt;br /&gt;
2016-01-16 19:20:29.413 [update notice] unknown MS cmd: 100ab504010d / 054201008037&lt;br /&gt;
2016-01-16 19:20:32.398 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:33.005 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:33.613 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:34.859 [bus error] send to 08: ERR: read timeout&lt;br /&gt;
2016-01-16 19:20:34.859 [main error] scan config 08 message: ERR: read timeout&lt;br /&gt;
2016-01-16 19:20:37.017 [main notice] read common config file /etc/ebusd/vaillant/scan.csv&lt;br /&gt;
2016-01-16 19:20:37.019 [main notice] read common config file /etc/ebusd/vaillant/broadcast.csv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Fehlermeldung (read timeout) kann verschiedene Ursachen haben, meist liegt der Fehler in einer fehlerhaften Verkabelung.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=393547|LinkText=Lösungsvorschlag}}&lt;br /&gt;
&lt;br /&gt;
=Systemarchitektur / Systemdesign=&lt;br /&gt;
Es muss sich jeder vorher überlegen, ob man für den eBus einen eigenen Rechner Raspberry Pi nimmt, oder auf der bestehenden FHEM Installation laufen lassen will. Eine Trennung bietet mehrere Vorteile die dann speziell im Testbetrieb den normalen Smart-Home Betrieb nicht beinflussen.&lt;br /&gt;
[[Datei:EBUS_Konfiguration.png|thumb|left|alt=eBus Konfiguration]]&lt;br /&gt;
Hier eine Konfiguration von FHEM und das Zusammenspiel mit eBusd via ECMD. Das soll aber jeder so handhaben wie es am Besten in das eigene Konzept passt.&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;
=Werkzeuge / Tools=&lt;br /&gt;
&lt;br /&gt;
==PSPad==&lt;br /&gt;
[http://www.pspad.com/de/ Pspad] ist ein besonders auf Programmierer zugeschnittener unicode-fähiger Editor für Microsoft Windows, welcher in der Lage ist auch per FTP die Dateien direkt zu editieren und zu schreiben ohne den Umweg sie vorher kopieren zu müssen! Besonders wichtig ist neben einem Syntaxhighlighter das er Linuxkonform ist und die Steuerzeichen am Zeilenende richtig interpretiert.&lt;br /&gt;
&lt;br /&gt;
Hier zwei wichtige Infos zur Einrichtung des PSPad.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_PSPad_FTP.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&lt;br /&gt;
Im Tab &amp;quot;&#039;&#039;&#039;FTP&#039;&#039;&#039;&amp;quot; unten mit der rechten Maustaste auf die weiße Fläche klicken und in dem neu geöffneten Fenster &amp;quot;FTP verbinden&amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_PSPad_FTP2.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Es öffnet sich ein Fenster mit den Verbindungsdaten des FTP Servers. Nicht vergessen, das unten markierte Häckchen &amp;quot;&#039;&#039;&#039;Verbindung halten&#039;&#039;&#039; ...&amp;quot; zu markieren. Es wird dann alle 60 Sekunden ein NOOP Signal gesendet und die Verbindung wird nach einem Timeout nicht jedes Mal beendet.&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;
==Filezilla==&lt;br /&gt;
Ebenso wie PSPad wird es für viele Arbeiten am Raspberry und eBusd eine Erleichterung sein manche Dateien direkt zu kopieren oder am PC zu sichern.&lt;br /&gt;
[https://filezilla-project.org/ Filezilla] beherrscht ebenfalls das &#039;&#039;&#039;FTP Protokoll&#039;&#039;&#039; und speichert die Verbindungsdaten in einem Profil.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Filezilla_FTP.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Links oben öffnet man den Servermanager und wählt (links unten) &amp;quot;neuer Server&amp;quot;. Man gibt die Verbindungsdaten des Raspberry ein und drückt &amp;quot;speichern&amp;quot;. Das Verbindungs Profil steht nun im Servermanager als &amp;quot;Raspberry&amp;quot; zur Verfügung und die Verbindung kann nun mit einem Doppelklick geöffnet werden. Dateien können nun durch einfaches Drag &amp;amp; Drop zwischen linken (lokales Laufwerk am PC) und rechten Dateifenster (in diesem Fall Raspberry) bequem kopiert werden.&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;
==Putty==&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] ist ein SSH Client welcher neben Secure Shell auch Telnet, Remote login und eine serielle Schnittstelle enthält. Als Tipp sei hier erwähnt, dass hier einige sehr nützliche Features zur Verfügung stehen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;rechte Maustaste&#039;&#039;&#039; = Zwischenablage wird ins Terminalfenster kopiert &lt;br /&gt;
* &#039;&#039;&#039;Text mit Maus markieren&#039;&#039;&#039; = in Zwischenablage kopieren&lt;br /&gt;
* &#039;&#039;&#039;Pfeiltasten Auf/Ab&#039;&#039;&#039; = die letzten Befehle wiederholen, durch die Liste steppen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Putty.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Ebenso können mit Putty mehrere Terminalfenster parallel geöffnet werden. Diese Methode ist bei der Kalibrierung des Potis im Raw-Modus sehr von Vorteil.&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;
=Weiterführende Links=&lt;br /&gt;
Diskussionsthread aus dem Forum:&lt;br /&gt;
*{{Link2Forum|Topic=46098|LinkText=eBus Schaltung in Betrieb nehmen!}}&lt;br /&gt;
*{{Link2Forum|Topic=29737|LinkText=Läuft: Heizung mit eBus-Schnittstelle}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Heizungssteuerung]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wetter_und_Wettervorhersagen&amp;diff=22247</id>
		<title>Wetter und Wettervorhersagen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wetter_und_Wettervorhersagen&amp;diff=22247"/>
		<updated>2017-08-17T17:39:31Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Upload eigener Wetterdaten mit WUup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wetterdaten und Wettervorhersagen können auf verschiedene Weise in FHEM eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
== Yahoo-Wetter ==&lt;br /&gt;
Für die einfache Einbindung des Yahoo-Wetters gibt es das spezielle Modul [[Weather]].&lt;br /&gt;
&lt;br /&gt;
== Unwetterzentrale ==&lt;br /&gt;
Informationen der Seite(n) Unwetterzentrale.de können mit Hilfe des Moduls [[UWZ]] eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
== Modul OPENWEATHER ==&lt;br /&gt;
Das Modul [[OPENWEATHER]] extrahiert Wetterdaten über die &amp;quot;openweather&amp;quot;-Schnittstelle (API) von www.wetter.com. &lt;br /&gt;
*Vorschau-Zeitraum: 3 Tage&lt;br /&gt;
*Vorschau-Interval: 6:00, 11:00, 17:00, 23:00&lt;br /&gt;
*Aktuelle Daten: keine&lt;br /&gt;
&lt;br /&gt;
== Modul PROPLANTA ==&lt;br /&gt;
Das Modul [[PROPLANTA]] extrahiert Wetterdaten von der Website www.proplanta.de. (keine API)&lt;br /&gt;
*Vorschau-Zeitraum: 12 Tage&lt;br /&gt;
*Vorschau-Interval: 3 h&lt;br /&gt;
*Aktuelle Daten: jede volle Stunde&lt;br /&gt;
&lt;br /&gt;
== Modul WWO ==&lt;br /&gt;
Das Modul extrahiert Wetterdaten über die (alte) API von worldweatheronline.com&lt;br /&gt;
*Vorschau-Zeitraum: ?? Tage&amp;lt;BR&amp;gt;&lt;br /&gt;
*Vorschau-Interval: ??&amp;lt;br&amp;gt;&lt;br /&gt;
*Aktuelle Daten: ??&lt;br /&gt;
&lt;br /&gt;
== Wetterwarnungen des DWD ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Die Nutzung der Vorhersagedaten wurde vom DWD verändert und ist momentan nicht wie hier beschrieben möglich. Eine Alternative bietet das Modul [[UWZ]]!}}&lt;br /&gt;
Der Deutsche Wetterdienst [http://www.dwd.de DWD] stellt neben diversen Wetterdaten auch Wetterwarnungen bereit. Diese können sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden - das ist zwar nicht die schönste Form, aber die schnellste.&lt;br /&gt;
&lt;br /&gt;
Dazu sucht man sich zuerst auf der [http://www.dwd.de/bvbw/appmanager/bvbw/dwdwwwDesktop?_nfpb=true&amp;amp;_pageLabel=_dwdwww_wetter_warnungen_warnungen&amp;amp;T92053gsbDocumentPath=BEA__Navigation%2FWetter__Warnungen%2FWarnungen.html%3F__nnn%3Dtrue&amp;amp;lastPageLabel=dwdwww_wetter_warnungen Warnungsseite des DWD] die eigene Region heraus (in der Karte durchklicken). Die gewünschte URL für Berlin Stadt ist z.B. &amp;lt;code&amp;gt;http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html#WS_ANCHOR_0&amp;lt;/code&amp;gt;. Das Anhängsel &amp;lt;code&amp;gt;#WS_ANCHOR_0&amp;lt;/code&amp;gt; kann man in der Konfiguration auch weglassen.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung in FHEM sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define dwd_warnmeldung weblink iframe http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html&lt;br /&gt;
attr dwd_warnmeldung group Wetterwarnungen (DWD)&lt;br /&gt;
attr dwd_warnmeldung htmlattr width=&amp;quot;100%&amp;quot; height=&amp;quot;300&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
attr dwd_warnmeldung room Wettervorhersage,Startseite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorhersage-Diagramm von YR ==&lt;br /&gt;
[http://www.yr.no YR] ist die Seite des norwegischen Wetterdiensts. Er ist zwar nur in Teilen auf Englisch (und gar nicht auf Deutsch) verfügbar, bietet aber sehr gute Wettervorhersagen - auch mit eigenen Vorhersagen für kleine Dörfer. Neben etlichen Detailinfos bietet YR eine sehr schicke 48h-Vorhersage-Grafik. Diese kann sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu geht man auf die [http://www.yr.no Startseite von YR] und gibt in das Suchfeld den Namen seines Dörfchens ein - die Ergebnissliste kann ziemlich lang werden, sodass man evtl. sehr genau schauen muss, welches das eigene Kaff ist - bei mir war es an 29. Stelle... ;-) Auf der gewünschten Seite gibt es einen Unterpunkt &amp;quot;Hour by hour&amp;quot;, wo sich die besagte Grafik findet. Hier kopiert man sich einfach die URL der Grafik.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung in FHEM sieht dann bspw. wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wetter_yr_Vorhersage weblink iframe http://www.yr.no/place/Germany/Berlin/Berlin/meteogram.png&lt;br /&gt;
attr Wetter_yr_Vorhersage group Wettervorhersage (yr)&lt;br /&gt;
attr Wetter_yr_Vorhersage htmlattr width=&amp;quot;100%&amp;quot; height=&amp;quot;300&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
attr Wetter_yr_Vorhersage room Wettervorhersage,Start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wetter von Weather Underground ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Neben dem hier vorgestellten Abruf der Weather Underground-Daten mit [[HTTPMOD]] kann auf Weather Underground-Daten auch mit dem darauf spezialisierten Modul [http://fhem.de/commandref.html#Wunderground Wunderground] zugegriffen werden.}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Dieses Vorgehen ist etwas anspruchsvoller und somit eher für erfahrene FHEM-User geeignet.&lt;br /&gt;
&lt;br /&gt;
[http://www.wunderground.com/ Weather Underground] ist bietet eine sehr umfassende Sammlung aller möglichen offiziellen und privaten (aber teils sehr professionellen) Wetterstationen weltweit. Es besteht eine recht hohe Wahrscheinlichkeit, dass es in der eigenen Umgebung schon eine Wetterstation gibt. Anstatt nun selbst eine komplette Wetterstation aufzubauen, kann man alternativ auf die Daten der Nachbarstation zugreifen.&lt;br /&gt;
&lt;br /&gt;
Dazu sind grundsätzlich die folgenden Schritte notwendig:&lt;br /&gt;
* Finden der geeigneten Station&lt;br /&gt;
* Auswerten der XML-Daten&lt;br /&gt;
* Erstellen passender gplot-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Finden der geeigneten Station ===&lt;br /&gt;
Als erstes geht man auf die [http://www.wunderground.com Startseite von Weather Underground] und gibt in das Suchfeld den Namen seines Dörfchens oder der nächsten Stadt ein - für Berlin landet man bspw. auf Seite für &amp;quot;Berlin Alexanderplatz&amp;quot;. Es gibt aber manchmal sehr viele Wetterstationen in der direkten Umgebung. Diese findet man indem am auf &amp;quot;Change Station&amp;quot; klickt und sich eine passende Station aussucht. Nähere Infos (zB. zur verwendeten Hard- und Software) zu der gewählten Wetterstation erhält man, wenn man auf den Namen der Station klickt und dann auf &amp;quot;About this PWS&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Weather Underground stellt die Daten der Wetterstation auch über eine API als XML bereit, die wir auswerten können. Die entsprechende URL findet sich ebenfalls unter &amp;quot;About this PWS&amp;quot; unter &amp;quot;Download current conditions XML&amp;quot;. Für Berlin Prenzlauer Berg wäre dies bspw. &lt;br /&gt;
&amp;lt;code&amp;gt;http://api.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&amp;amp;format=XML&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entscheidend für die jeweilige Station ist der Teil nach &amp;quot;?=ID&amp;quot;, also in diesem Fall &amp;quot;IBERLIN15&amp;quot;. Dieser Teil des Links lässt sich leicht durch die ID einer anderen Station ersetzen und die Suche nach dem entsprechenden Link auf der Seite der Station bleibt erspart.&lt;br /&gt;
&lt;br /&gt;
=== Auswerten der XML-Daten ===&lt;br /&gt;
Die Auswertung der XML-Daten erfolgt via [[HTTPMOD]]. Da dies nicht ganz trivial ist, sind im Folgenden zuerst die wesentlichen Konfigurationsschritte exemplarisch beschrieben. Weiter unten findet sich dann die fertige vollständige Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Es erstes wird das Device HTTPMOD definiert (die 600 am Schluss ist der Aktualisierungszyklus in Sekunden, also alle 10 min):&lt;br /&gt;
:&amp;lt;code&amp;gt;define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann werden Attribute für alle Readings definiert:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date ... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird jedem Attribut ein Name zugewiesen (unter diesem Namen wird der Wert ins Log geschrieben):&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg readingsName_cloudiness cloudiness &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Schluss wird das Reading selbst definiert:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id=&amp;quot;NN&amp;quot; percent=&amp;quot;([\d\.]+) &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Konfiguration für alle von der API angebotenen Wetterwerte sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600&lt;br /&gt;
attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date readingsName_dewpointTemperature readingsName_fog readingsName_heatindex readingsName_humidity readingsName_pressure readingsName_solarRadiation readingsName_solarUV readingsName_temperature readingsName_time readingsName_windChill readingsName_windDegrees readingsName_windDirection readingsName_windGust readingsName_windSpeed readingsRegex_cloudiness readingsRegex_date readingsRegex_dewpointTemperature readingsRegex_fog readingsRegex_heatindex readingsRegex_humidity readingsRegex_pressure readingsRegex_solarRadiation readingsRegex_solarUV readingsRegex_temperature readingsRegex_time readingsRegex_windChill readingsRegex_windDegrees readingsRegex_windDirection readingsRegex_windGust readingsRegex_windSpeed&lt;br /&gt;
attr wetter_prenzelberg readingsName_cloudiness cloudiness&lt;br /&gt;
attr wetter_prenzelberg readingsName_date date&lt;br /&gt;
attr wetter_prenzelberg readingsName_dewpointTemperature dewpointTemperature&lt;br /&gt;
attr wetter_prenzelberg readingsName_fog fog&lt;br /&gt;
attr wetter_prenzelberg readingsName_heatindex heatindex&lt;br /&gt;
attr wetter_prenzelberg readingsName_humidity humidity&lt;br /&gt;
attr wetter_prenzelberg readingsName_pressure pressure&lt;br /&gt;
attr wetter_prenzelberg readingsName_solarRadiation solarRadiation&lt;br /&gt;
attr wetter_prenzelberg readingsName_solarUV solarUV&lt;br /&gt;
attr wetter_prenzelberg readingsName_temperature temperature&lt;br /&gt;
attr wetter_prenzelberg readingsName_time time&lt;br /&gt;
attr wetter_prenzelberg readingsName_windChill windChill&lt;br /&gt;
attr wetter_prenzelberg readingsName_windDegrees windDegrees&lt;br /&gt;
attr wetter_prenzelberg readingsName_windDirection windDirection&lt;br /&gt;
attr wetter_prenzelberg readingsName_windGust windGust&lt;br /&gt;
attr wetter_prenzelberg readingsName_windSpeed windSpeed&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id=&amp;quot;NN&amp;quot; percent=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_date date date&amp;quot; content=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_dewpointTemperature &amp;lt;dewpoint_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_fog fog id=&amp;quot;FOG&amp;quot; percent=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_heatindex &amp;lt;heat_index_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_humidity &amp;lt;relative_humidity&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_pressure &amp;lt;pressure_mb&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_solarRadiation &amp;lt;solar_radiation&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_solarUV &amp;lt;UV&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_temperature &amp;lt;temp_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_time time Zeit([\d\:]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windChill &amp;lt;windchill_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windDegrees &amp;lt;wind_degrees&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windDirection &amp;lt;wind_dir&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windGust &amp;lt;wind_gust_mph&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windSpeed &amp;lt;wind_mph&amp;gt;([\d\.]+)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hinweis: Nicht immer werden alle Werte geliefert (wenn keine Sonne, dann kein UV-Wert...). Im System-Log kann das als Fehler auftauchen, ist aber kein Problem.&lt;br /&gt;
&lt;br /&gt;
=== Erstellen passender gplot-Dateien ===&lt;br /&gt;
Um die ausgelesenen Werte als Graphen darstellen zu können müssen eigene gplot-Dateien erstellt werden. Eine grundsätzliche Anleitung dazu findet sich unter [[Creating Plots]]. Deshalb sollen hier nur Beispiele für die eigentlichen gplot-Dateien vorgestellt werden. Beispiele sollten sowohl für [[FileLog]] wie [[DbLog]] funktionieren.&lt;br /&gt;
&lt;br /&gt;
Temperatur und Luftfeuchte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Temperature in C&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Humidity (%)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:temperature\x3a::&lt;br /&gt;
#FileLog 4:windChill\x3a::&lt;br /&gt;
#FileLog 4:humidity\x3a::&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:temperature::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windChill::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:humidity::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Temperatur (C)&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Gefühlte Temperatur (C)&#039; ls l1 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Luftfeuchtigkeit (%)&#039; ls l2fill lw 0.2 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wind und Windrichtung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics (&amp;quot;Nord&amp;quot; 0, &amp;quot;Ost&amp;quot; 80, &amp;quot;S&amp;amp;#252;d&amp;quot; 180, &amp;quot;West&amp;quot; 270, &amp;quot;Nord&amp;quot; 360)&lt;br /&gt;
&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
set grid xtics ytics&lt;br /&gt;
&lt;br /&gt;
set yrange [0:20]&lt;br /&gt;
set y2range [0:360]&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Wind (mph)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Richtung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:windSpeed:0:&lt;br /&gt;
#FileLog 4:windGust:0:&lt;br /&gt;
#FileLog 4:windDegrees:0:&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windSpeed::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windGust::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windDegrees::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Wind (mph)&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Böen (mph)&#039; ls l1 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Windrichtung (°)&#039; ls l2fill lw 0.2 with points&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sonnenintensität und UV-Werte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics&lt;br /&gt;
&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
set grid xtics ytics&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Sonnenstrahlung (W/qm)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;UV&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:solarRadiation:0:&lt;br /&gt;
#FileLog 4:solarUV:0:&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:solarRadiation::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:solarUV::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strahlung&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;UV&#039; ls l1 lw 1.5 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Vergangene Daten abfragen ===&lt;br /&gt;
Ein konkretes vergangenes Datum der Wetterstation kann man übrigens auch abrufen - für den 28.11.2014 wäre dies bspw. &lt;br /&gt;
&amp;lt;code&amp;gt;http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&amp;amp;day=28&amp;amp;month=11&amp;amp;year=2014&amp;amp;graphspan=day&amp;amp;format=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Eigene Wetterdaten hochladen ===&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Unterstützung für das Modul gibt es im dazugehörigen {{Link2Forum|Topic=65587|LinkText=Forumsthread }}.}}&lt;br /&gt;
&lt;br /&gt;
Wer eigene Wetterdaten hochladen will, kann hierzu das Modul [http://fhem.de/commandref.html#WUup WUup] verwenden. Dazu benötigt man die Zugangsdaten (stationID und Paßwort) für eine eigene Wetterstation. Mit dem Modul können die meisten vom [http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol PWS Upload Protocol] unterstützten Daten hochgeladen werden:&lt;br /&gt;
* Winddir - [0-360 momentane Windrichtung]&lt;br /&gt;
* Windspeedmph - [mph momentane Windgeschwindigkeit]&lt;br /&gt;
* Windgustmph - [mph aktuellen Böe, mit Software-spezifischem Zeitraum]&lt;br /&gt;
* Windgustdir - [0-360 mit Software-spezifischer Zeit]&lt;br /&gt;
* Windspdmph_avg2m - [mph durchschnittliche Windgeschwindigkeit innerhalb 2 Minuten]&lt;br /&gt;
* Winddir_avg2m - [0-360 durchschnittliche Windrichtung innerhalb 2 Minuten]&lt;br /&gt;
* Windgustmph_10m - [mph Böen der vergangenen 10 Minuten]&lt;br /&gt;
* Windgustdir_10m - [0-360 Richtung der Böen der letzten 10 Minuten]&lt;br /&gt;
* Feuchtigkeit - [% Außenfeuchtigkeit 0-100%]&lt;br /&gt;
* Dewptf- [F Taupunkt im Freien]&lt;br /&gt;
* Tempf - [F Außentemperatur]&lt;br /&gt;
* Rainin - [in Regen in der vergangenen Stunde]&lt;br /&gt;
* Dailyrainin - [in Regenmenge bisher heute]&lt;br /&gt;
* Baromin - [inHg barometrischer Druck]&lt;br /&gt;
* Soiltempf - [F Bodentemperatur]&lt;br /&gt;
* Bodenfeuchtigkeit - [%]&lt;br /&gt;
* Solarradiation - [W/m²]&lt;br /&gt;
* UV - [Index]&lt;br /&gt;
&lt;br /&gt;
Die Werte werden im Modul für Wunderground ins anglo-amerikanische System umgerechnet. Temperaturen werden also automatisch von °Celsius in Fahrenheit, Windgeschwindigkeiten von km/h in mph, mm in Inch und der barometrische Druck von hPa in inHg umgerechnet.&lt;br /&gt;
&lt;br /&gt;
== Wetternetzwerk auf wetter.com ==&lt;br /&gt;
Ein vollständiges Beispiel zur Nutzung der Informationen über die Regenmenge (Station 1445, Weinheim) von wetter.com ist in {{Link2Forum|Topic=39600|Message=332837|LinkText=diesem Forenbeitrag}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Wetter von netatmo ==&lt;br /&gt;
Das FHEM-Modul [[netatmo]] ermöglicht den Datenimport von privaten und öffentlichen netatmo Wetterstationen. Eine Übersicht über die verfügbaren öffentlichen Stationen findet sich auf der Seite [http://www.netatmo.com/de-DE/weathermap Weathermap]. Die meisten öffentlichen Stationen liefern Temperatur, Luftfeuchte und Luftdruck, einige auch Wind, Regen und Daten zur Luftqualität (CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33610}} mit Sammlung und Beipielen von Internet-Links für die Anzeige von teilweise animierten Wetterbildern&lt;br /&gt;
* [http://bloglich.de/art/rpi/wetterdaten-auf-dem-raspberry-pi-in-fhem/ Beispiel in Blog(de)]&lt;br /&gt;
* [[HTTPMOD]]&lt;br /&gt;
* [[GDS|Modul GDS]] zum Auslesen von DWD-Daten&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Wetterstationen]] &amp;lt;!-- eigentlich eine &amp;quot;Hardware-Kategorie&amp;quot;, passt aber trotzdem --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21343</id>
		<title>Raspberry Pi &amp; HTTPS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21343"/>
		<updated>2017-04-18T06:43:26Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Links auf &amp;quot;Raspberry Pi&amp;quot; und &amp;quot;FHEMWEB&amp;quot; gesetzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt das Vorgehen unter &#039;&#039;&#039;Linux&#039;&#039;&#039;. Um unter &#039;&#039;&#039;Windows&#039;&#039;&#039; ein SSL Zertifikat zu erstellen hilft eine Bat Datei aus dem FHEM Users Forum: [https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit das Kennwort verschlüsselt übertragen wird, ist eine HTTPS Verbindung wichtig.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Schritte sind direkt auf dem [[Raspberry Pi|Raspberry]] oder über ein Terminal auszuführen.&lt;br /&gt;
Zunächst müssen folgende Pakete nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install libio-socket-ssl-perl&lt;br /&gt;
sudo apt-get install libwww-perl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss noch im fhem-Verzeichnis (befindet sich in der Regel unter /opt) das Verzeichnis &amp;quot;certs&amp;quot; für die Zertifikate erstellt werden. Dies geht wie folgt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem&lt;br /&gt;
sudo mkdir certs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dieses Verzeichnis kommen zwei Dateien die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Dazu wechselt man in das neu erstellte Verzeichnis. Auf der Konsole ist nun folgendes auszuführen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/certs&lt;br /&gt;
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit das SSL-Modul die erzeugten Dateien verwenden kann, muss das certs-Verzeichnis Ausführrechte haben (es ist auch kein Fehler, wenn die Dateien selbst nur die nötigsten Rechte haben). Die Berechtigungen werden wie folgt gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo chmod 644 /opt/fhem/certs/*.pem&lt;br /&gt;
sudo chmod 711 /opt/fhem/certs&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war auch schon alles, was man auf dem Raspberry Pi über die Konsole tun muss. Als nächstes öffnen wir FHEM im Browser. Hier müssen wir nun die Web Instanz suchen welche wir auf HTTPS umstellen möchten. In der Regel ist diese Instanz als WEB angelegt. Evtl. hab ihr mehrere Webinstanzen (z.B. WEBphone, WEBtablet) oder hab das Define anders benannt, dann müsst Ihr die folgenden Angaben entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
Wechselt in [[FHEMWEB]] in die Detailansicht des Define WEB (die URL lautet z.B. http://fhem:8083/fhem?detail=WEB). Dort setzt Ihr nun das folgende Attribut&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr WEB HTTPS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist HTTPS aktiviert. Nicht vergessen, die Konfiguration zu speichern, denn erst nach einem Neustart erfolgt der Zugriff per HTTPS über [https://192.168.n.n:8083/fhem https://192.168.n.n:8083/fhem]. Es ist wichtig die Adresse mit https:// aufzurufen, da es keine automatische Weiterleitung von http auf https existiert.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=PDF_Datei_darstellen&amp;diff=21342</id>
		<title>PDF Datei darstellen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=PDF_Datei_darstellen&amp;diff=21342"/>
		<updated>2017-04-18T06:37:00Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* PDF Dateien unter FHEM darstellen */ Link auf &amp;quot;weblink&amp;quot; gesetzt, damit die Seite keine Sackgasse mehr ist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= PDF Dateien unter FHEM darstellen =&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Zeilen kann man eine PDF Datei durch definieren eines [[weblink|Weblink]] direkt in seiner FHEM Webseite darstellen. Der PDF&lt;br /&gt;
Reader wird in dem entsprechenden Frame des Computers geöffnet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für fhem.cfg&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;### Aufruf der FHEM Anfänger Anleitung via https&lt;br /&gt;
define FhemDoc weblink iframe https://fhem:8083/fhem/docs/fhem-floorplan-installation-guide_de.pdf&lt;br /&gt;
attr FhemDoc room Anleitung&lt;br /&gt;
attr FhemDoc htmlattr width=&amp;quot;600&amp;quot; height=&amp;quot;900&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels des &amp;quot;htmlattr&amp;quot; kann man die Größe des PDF-Viewers innerhalb der Webseite bestimmen.&lt;br /&gt;
&lt;br /&gt;
Hierbei wird bei Anwahl des Menüpunkt &amp;quot;Fhemdoc&amp;quot; innerhalb des gleichen Frames ein PDF Reader geöffnet und&lt;br /&gt;
dieser zeigt dann die entsprechende PDF Seite an.&lt;br /&gt;
== PC basierend ==&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Das Darstellen oder Einbinden von Dokumentation ist auf linux PC ist generell einfach, da durch den Aufruf automatisch ein entsprechender Reader geladen wird.  Unter Linux (kubuntu) wird automatisch okula geöffnet.&lt;br /&gt;
=== Windows/Mac ===&lt;br /&gt;
Auf einer Windows-Maschine oder Mac Maschine ist meist der Acrobat Reader installiert und sollte daher auch sofort arbeitet. Sollte die Darstellung nicht arbeiten, fehlt meistens das Acrobat Reader Plug-in des Internet Browsers.&lt;br /&gt;
== Android basierend ==&lt;br /&gt;
=== Standard Browser ===&lt;br /&gt;
Standardmäßig stellt der WEB Browser eines Android Handy&#039;s oder Tablet keine PDF Dateien dar. Die Datei wird automatisch gedownloaded und muss dann manuell mit einem PDF Reader geöffnet.&lt;br /&gt;
=== FireFox ===&lt;br /&gt;
Der Browser &amp;quot;FireFox&amp;quot; biete die Möglichkeit von Addons, die den Browser um weitere Funktionen erweitert.&lt;br /&gt;
&lt;br /&gt;
Nachdem man im Google Play Store das Programm-Paket &amp;quot;Fire Fox&amp;quot; hinzugefügt hat und diesen nach seinen Wünschen konfiguiert hat, muss hier noch das Addon für &amp;quot;Fire Fox&amp;quot; namens &amp;quot;PDF Viewer&amp;quot; zu Firefox hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
;HInweis zum Browser FireFox&lt;br /&gt;
*Firefox scheint ein Problem mit dem &amp;quot;iFrame&amp;quot; Code zu haben, da ein entsprechender Code nicht auf der Webseite darstellt wird.&lt;br /&gt;
*Firefox ist generell nicht der schnellste Browser&lt;br /&gt;
&lt;br /&gt;
; Nachteile der PDF Viewer Lösung&lt;br /&gt;
* Die Software wandelt die PDF Datei beim Öffnen der PDF-Datei diese in HTML5 um. Hierdurch ist die Darstellung der PDF Datei sehr langsam. Leider ist dies derzeit die einzige Lösung (Stand 12.2013), wie man in Webseiten eine PDF Datei unter Fire Fox darstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== Dolphin Browser ===&lt;br /&gt;
Infos fehlen noch&lt;br /&gt;
=== Boat Browser ===&lt;br /&gt;
Infos fehlen noch&lt;br /&gt;
=== Maxthon Browser ===&lt;br /&gt;
Infos fehlen noch&lt;br /&gt;
=== Opera Browser ===&lt;br /&gt;
Infos fehlen noch&lt;br /&gt;
=== UC Browser ===&lt;br /&gt;
Infos fehlen noch&lt;br /&gt;
=== Chrome Browser ===&lt;br /&gt;
Infos fehlen noch&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Bewegungsmelder:_Status_zur%C3%BCcksetzen&amp;diff=21341</id>
		<title>Bewegungsmelder: Status zurücksetzen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Bewegungsmelder:_Status_zur%C3%BCcksetzen&amp;diff=21341"/>
		<updated>2017-04-18T06:27:41Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Code: at wird über defmod definiert, daher keine Unterscheidung nötig, ob es schon definiert ist.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNText=Für HomeMatic ist dieser Codeschnipsel nicht mehr nötig. In der aktuellen Version des Moduls wird der Status automatisch aut &#039;&#039;noMotion&#039;&#039; zurückgesetzt.}}&lt;br /&gt;
Manche &#039;Bewegungsmelder (&amp;lt;strike&amp;gt;z.B. von [[HomeMatic Type motionDetector]]&amp;lt;/strike&amp;gt;) haben den Nachteil, dass nach einer erkannten Bewegung zwar das Reading &#039;&#039;motion&#039;&#039; gesetzt, aber nicht mehr zurückgesetzt wird. Der folgende Codeschnipsel behebt das. Das Reading wird auf &#039;&#039;scanning&#039;&#039; zurückgesetzt und ein Event ausgelöst, auf das wiederum reagiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Folgender Code muss in die [[99_myUtils anlegen|99_myUtils.pm]] kopiert werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub BM_MotionHandling($$) {&lt;br /&gt;
    my ( $device, $event ) = @_;&lt;br /&gt;
    return if ( $attr{$device}{subType} ne &amp;quot;motionDetector&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $ResetAT = $device . &amp;quot;_Reset&amp;quot;;&lt;br /&gt;
    if ( $event eq &amp;quot;motion&amp;quot; ) {&lt;br /&gt;
&lt;br /&gt;
        # Bewegung erkannt, erstelle AT um Status wieder zurückzusetzen&lt;br /&gt;
        fhem &amp;quot;defmod &amp;quot; . $ResetAT&lt;br /&gt;
          . &amp;quot; at +00:05:00 {BM_MotionHandling(\&amp;quot;$device\&amp;quot;, \&amp;quot;scanning\&amp;quot;)}&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    elsif ( $event eq &amp;quot;scanning&amp;quot; ) {&lt;br /&gt;
&lt;br /&gt;
        # Status des Devices wieder zurücksetzen&lt;br /&gt;
        readingsSingleUpdate( $defs{$device}, &amp;quot;state&amp;quot;, $event, 1 );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend ist einmalig ein [[notify]] zu definieren. In diesem Beispiel wird davon ausgegangen, dass alle Bewegungsmelder mit &amp;quot;BM_&amp;quot; beginnen und bei Bewegung ein Reading mit dem Namen &#039;&#039;motion&#039;&#039; gesetzt wird. Anderenfalls muss die [[Regulärer Ausdruck|Regexp]] angepasst werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;define NTFY_Reset_Motion notify (BM_.*:motion*) {BM_MotionHandling(&amp;quot;$NAME&amp;quot;, &amp;quot;motion&amp;quot;)}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MapleCUX-Platinen&amp;diff=21163</id>
		<title>MapleCUX-Platinen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MapleCUX-Platinen&amp;diff=21163"/>
		<updated>2017-04-03T13:11:40Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Link für Bild korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware|&lt;br /&gt;
|Bild=MapleCULx4.jpg&lt;br /&gt;
|Bildbeschreibung=MAPLE CUL (ohne LAN)&lt;br /&gt;
|HWProtocol=diverse&lt;br /&gt;
|HWType=Transceiver&lt;br /&gt;
|HWCategory=CUL&lt;br /&gt;
|HWComm=Funk 433MHz, 868MHz, optional 2,4GHz &lt;br /&gt;
|HWChannels=N/A&lt;br /&gt;
|HWVoltage=3,3V nach Spannungsregler&lt;br /&gt;
|HWPowerConsumption=&lt;br /&gt;
|HWPoweredBy=USB&lt;br /&gt;
|HWSize=&lt;br /&gt;
|HWDeviceFHEM=CUL&lt;br /&gt;
|HWManufacturer=Eigenbau&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Der [https://wiki.fhem.de/wiki/MapleCUN MapleCUN ] ist neuartiges CUN oder CUL Interface zum Selbstbau, entwickelt von Telekatz.&lt;br /&gt;
Durch den STM32 Mikrocontroller ist die Basis sehr leistungsfähig. Der Controller ist deutlich schneller als ATMega und verfügt über mehr Flash und RAM sowie integriertes USB.&lt;br /&gt;
Es können 1-4 Transceiver verbaut werden. Durch fertige Platinen wird der Aufbaz erleichtert, sowie die Möglichkeiten erweitert.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:MapleCULx4.jpg|Prototypen-Aufbau mit Steck Tranceivern|alt=alt language&lt;br /&gt;
File:4-fach-1.3-1280.jpg|4-Fach CUL V1.3|alt=alt language&lt;br /&gt;
File:4-fach-1.3-LAN.jpg|4-Fach CUN mit LAN-Modul V1.3|alt=alt language&lt;br /&gt;
File:4-fach-produktiv.jpg|4-Fach CUL im offenen Gehäuse|alt=alt language&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Benötigt werden dazu folgende Teile:&lt;br /&gt;
&lt;br /&gt;
* [https://de.aliexpress.com/item/leaflabs-Leaf-maple-mini-ARM-STM32-compatibility/32214664071.html Maple Mini Board]&amp;lt;br/&amp;gt;&lt;br /&gt;
* [https://de.aliexpress.com/item/CC1101-Wireless-Module-Long-Distance-Transmission-Antenna-868MHZ-M115/32635393463.html CC1101 Funkmodul]&amp;lt;br/&amp;gt;&lt;br /&gt;
* [https://de.aliexpress.com/item/Free-shipping-W5100-Ethernet-module-Ethernet-network-module-for-arduino/32341522510.html  W5100] oder [https://de.aliexpress.com/item/Free-shipping-W5500-Ethernet-network-module-hardware-TCP-IP-51-STM32-microcontroller-program-over-W5100/32750316619.html W5500] Ethernet Modul (Optional)&amp;lt;br/&amp;gt;&lt;br /&gt;
Der Aufbau kann auf Lochraster erfolgen, fertige Platinen siehe Foto sparen jedoch Zeit, reduzieren Fehlerquellen und erhöhen die Zuverlässigkeit.&lt;br /&gt;
&lt;br /&gt;
Die Module werden gemäß Schaltplan miteinander verbunden. Da alle Module mit 3,3V laufen sind keine Bauteile für eine Pegelanpassung notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bestückung der Module ==&lt;br /&gt;
Stand 01/2017: Es sind noch nicht alle Protokolle an den zusätzlichen Transceivern verfügbar.&lt;br /&gt;
SlowRF funktioniert nur an CC0 und CC1. Nach einem Reset der Konfiguration ist die Frequenz von CC0 auf 868MHz und CC1 auf 433MHz voreingestellt. Lässt sich dann aber auch umkonfigurieren.&lt;br /&gt;
KOPP und MBUS funktionieren nur an CC0.&lt;br /&gt;
Die restlichen Protokolle sind an allen Transceivern verfügbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zusätzliche Serielle Schnittstellen ==&lt;br /&gt;
Über USB werden zwei weitere Schnittstellen angelegt, der Netzwerkzugriff erfolgt über die Ports 2324 und 2325.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-Ein angeschlossener HM-MOD-UART kann in FHEM eingebunden werden. (5. Funkmodul)&lt;br /&gt;
-ein Arduino kann ein MySensors Gateway bilden&lt;br /&gt;
-ESP8266 ...&lt;br /&gt;
-RS485 ...&lt;br /&gt;
-1Wire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
Output mit 4 Transceivern und LAN Modul:&lt;br /&gt;
 -I- Getting new Started Project --&lt;br /&gt;
 -I- MapleCUNx4&lt;br /&gt;
 -I- Compiled: Mar 18 2017 15:46:32 --&lt;br /&gt;
 -I- init Flash&lt;br /&gt;
 -I- init Timer&lt;br /&gt;
 -I- init EEprom&lt;br /&gt;
 -I- init Ethernet&lt;br /&gt;
 WIZCHIP Initialized success.&lt;br /&gt;
 -I- Detected CC0: PN 0x00  VER 0x14 &lt;br /&gt;
 -I- Detected CC1: PN 0x00  VER 0x18 &lt;br /&gt;
 -I- Detected CC2: PN 0x00  VER 0x14 &lt;br /&gt;
 -I- Detected CC3: PN 0x00  VER 0x14 &lt;br /&gt;
 -I- Detected ethernet &lt;br /&gt;
 -I- init USB&lt;br /&gt;
 -I- init Complete&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
{{Link2Forum|Topic=https://forum.fhem.de/index.php/topic,60458.0.html |LinkText=Diskussion im Forum}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Kategorie:CUL]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ABFALL&amp;diff=20597</id>
		<title>ABFALL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ABFALL&amp;diff=20597"/>
		<updated>2017-03-07T12:16:02Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Voraussetzungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Filtern von (Abfall-)Terminen aus einem Calendar.&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModFTopic=48237&lt;br /&gt;
|ModForumArea=Codeschnipsel&lt;br /&gt;
|ModTechName=57_ABFALL.pm&lt;br /&gt;
|ModOwner=Constantin / {{Link2FU|14026|uniqueck}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[ABFALL]] ist ein (inoffizielles, nicht Bestandteil der Distribution) Hilfsmodul, das bestimmte Termine aus einem bestehenden Kalender des Moduls [[Calendar]] in Readings übernimmt. &lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Es muss ein [[Calendar]]-Objekt definiert sein. Der dabei benutzte Name muss in der Definition des ABFALL-Objekts spezifiziert werden.&lt;br /&gt;
Es können auch mehrere Calendar Objekte übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Sonderzeichen aus dem Namen der Termine, werden entfernt um die Namen der generierten Readings FHEM tauglich zu machen, für die Werte der Readings bleiben diese allerdings erhalten.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Mit folgendem Befehl kann das Modul direkt in den Standard FHEM Update Prozess eingeklinkt werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;update add https://raw.githubusercontent.com/uniqueck/fhem-abfall/master/controls_fhemabfall.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
Um es nur zu installieren, kann auch einfach nur das Command&lt;br /&gt;
:&amp;lt;code&amp;gt;update all https://raw.githubusercontent.com/uniqueck/fhem-abfall/master/controls_fhemabfall.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsstrang ===&lt;br /&gt;
:&amp;lt;code&amp;gt;update add https://raw.githubusercontent.com/uniqueck/fhem-abfall/develop/controls_fhemabfall.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
:&amp;lt;code&amp;gt;update all https://raw.githubusercontent.com/uniqueck/fhem-abfall/develop/controls_fhemabfall.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Define ===&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;Name&amp;gt; ABFALL &amp;lt;calendarname&amp;gt;,&amp;lt;calendarname2&amp;gt;,...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erläuterung der Parameter im &#039;&#039;&#039;define&#039;&#039;&#039;:&lt;br /&gt;
;&amp;lt;calendarname&amp;gt;&lt;br /&gt;
:Name des &#039;&#039;&#039;Calendar&#039;&#039;&#039; Kalenders &lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
:&amp;lt;code&amp;gt;define AbfallGoogleCalender Calendar ical url https://......&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;define myABFALL ABFALL AbfallGoogleCalender&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Werte aktualisieren ===&lt;br /&gt;
Die Werte aktualisieren sich abhängig vom [[notify]] der entsprechenden Calendar Instanz, welche im define angegeben wurde(n).&lt;br /&gt;
&lt;br /&gt;
=== Weitere Attribute ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Attribut&lt;br /&gt;
!Werteliste&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |calendarname_praefix&lt;br /&gt;
|0 und 1&lt;br /&gt;
|soll der Kalendername als praefix dem Reading vorangestellt werden, sollte bei nur einem Kalender auf 0 gesetzt werden&lt;br /&gt;
|1 - praefix wird vorangestellt&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |abfall_clear_reading_regex&lt;br /&gt;
|&lt;br /&gt;
|regex zum Entfernen von Anteilen aus dem Termin, dieser wird vor dem Entfernen von Sonderzeichen aus den Namen der Termine angewandt.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |disable&lt;br /&gt;
|0 und 1&lt;br /&gt;
|deaktiviert das Modul&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |weekday_mapping&lt;br /&gt;
|&lt;br /&gt;
|Mapping, wie die Readings der Tage angezeigt werden sollen, zum Beispiel So Mo Di Mi Do Fr Sa&lt;br /&gt;
|Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |delimiter_text_reading&lt;br /&gt;
|&lt;br /&gt;
|Wenn zwei Abholungen an ein und demselben Tag existieren, wird dieses Trennzeichen genutzt, um die beiden (oder mehrere) Werte zu einem Text zu verbinden. Nur relevant für die Readings next_text und now_text&lt;br /&gt;
|und&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |delimiter_reading&lt;br /&gt;
|&lt;br /&gt;
|wie attribute delimiter_text_reading, allerdings nur für die readings next und now&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |filter&lt;br /&gt;
|&lt;br /&gt;
|regex zum Filtern der Namen der Termine aus den Kalendern, so dass nur solche genutzt werden, welche diesem Filter entsprechen&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiel(e) ==&lt;br /&gt;
=== Einbindung ins Tablet UI ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div data-device=&amp;quot;myABFALL&amp;quot; data-type=&amp;quot;symbol&amp;quot; class=&amp;quot;bigger warn wider&amp;quot; &lt;br /&gt;
          data-get=&amp;quot;next&amp;quot; data-get-warn=&amp;quot;.*(\d+).*&amp;quot; &lt;br /&gt;
          data-get-on=&#039;[&amp;quot;Restmuell_.*&amp;quot;,&amp;quot;Wertstoff_.*&amp;quot;]&#039;&lt;br /&gt;
          data-on-colors=&#039;[&amp;quot;#000&amp;quot;,&amp;quot;#6EB54C&amp;quot;]&#039; &lt;br /&gt;
          data-icons=&#039;[&amp;quot;fa-trash-o&amp;quot;,&amp;quot;fa-trash-o&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einbindung ins Tablet UI, erweitert ===&lt;br /&gt;
Fallen die Leerungen zweier verschiedener Tonnen nicht auf den selben Tag, reicht es normalerweise, nur ein Symbol auf der Oberfläche zu platzieren und dieses dann dynamisch zu befüllen. In folgendem Beispiel werden folgende Anforderungen umgesetzt:&lt;br /&gt;
* Anzeige unterschiedlicher Symbole bzw. Farben für Papiertonne, Restmülltonne, Biotonne und gelbe Säcke&lt;br /&gt;
* Anzeige der verbleibenden Tage bis zur Leerung als &amp;quot;Warn&amp;quot;-Marker in Rot, aber nur, wenn die Leerung innerhalb der nächsten 2 Tage ist&lt;br /&gt;
* Blinken des Symbols, wenn die nächste Leerung morgen ansteht&lt;br /&gt;
* Rotation des Symbols, wenn die nächste Leerung noch am selben Tag ansteht. Nach einer bestimmten Uhrzeit (z.B. 9 Uhr morgens) soll dann auf die nächste Tonne geschaltet werden&lt;br /&gt;
* Anzeige des Datums bzw. von &amp;quot;heute&amp;quot; oder &amp;quot;morgen&amp;quot; unter dem Symbol als Label&lt;br /&gt;
&lt;br /&gt;
Zur Datumsanzeige wird eine kleine Hilfsfunktion in die 99_myUtils eingebaut. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub datumHeuteMorgen($){&lt;br /&gt;
		my $compareDate = shift;&lt;br /&gt;
		my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
		$year += 1900; $mon += 1; &lt;br /&gt;
		my $heute = sprintf(&#039;%02d.%02d.%04d&#039;, $mday, $mon, $year);&lt;br /&gt;
		($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time+86400);&lt;br /&gt;
		$year += 1900; $mon += 1;&lt;br /&gt;
		my $morgen = sprintf(&#039;%02d.%02d.%04d&#039;, $mday, $mon, $year);&lt;br /&gt;
		return &amp;quot;heute&amp;quot; if $compareDate eq $heute;&lt;br /&gt;
		return &amp;quot;morgen&amp;quot; if $compareDate eq $morgen;&lt;br /&gt;
		return $compareDate;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Diese Funktion wird in den userReadings des Abfall-Moduls verwendet. Das Abfallmodul erzeugt eine Gruppe von Readings mit dem Namen now_*, wenn die Leerung am selben Tag ansteht, bzw. genau dann, wenn der Termin im zu Grunde liegenden Kalender gerade aktiv ist. In diesem Beispiel liegt dem Kalender-Modul ein Google-Kalender zu Grunde, bei dem die Termine immer von 0 Uhr bis 9 Uhr morgens eingetragen sind. Dadurch wird erreicht, dass die Anzeige nach 9 Uhr weiterspringt, weil dann die now-Readings verschwinden.&lt;br /&gt;
&lt;br /&gt;
Folgende userReadings werden zum Abfallmodul hinzugefügt, welches in diesem Beispiel &amp;quot;abf.abfall&amp;quot; genannt ist:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
attr myABFALL userReadings ftui_datum {ReadingsVal(&amp;quot;myABFALL&amp;quot;,&amp;quot;now_text&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;&amp;quot; ? datumHeuteMorgen(ReadingsVal(&amp;quot;myABFALL&amp;quot;,&amp;quot;next_datum&amp;quot;,&amp;quot;&amp;quot;)) : &amp;quot;heute&amp;quot;;},ftui_next {ReadingsVal(&amp;quot;myABFALL&amp;quot;,&amp;quot;now_text&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;&amp;quot; ? ReadingsVal(&amp;quot;myABFALL&amp;quot;,&amp;quot;next&amp;quot;,&amp;quot;&amp;quot;) : ReadingsVal(&amp;quot;myABFALL&amp;quot;,&amp;quot;now&amp;quot;,&amp;quot;&amp;quot;).&amp;quot;_0&amp;quot;;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Das Reading &amp;quot;ftui_next&amp;quot; bildet die Grundlage für das Symbol in TabletUI, das Reading &amp;quot;ftui_datum&amp;quot; wird für das Label genutzt. &lt;br /&gt;
&lt;br /&gt;
Somit lässt sich ganze in FTUI wie folgt darstellen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div data-device=&amp;quot;myABFALL&amp;quot; &lt;br /&gt;
                     data-type=&amp;quot;symbol&amp;quot;&lt;br /&gt;
                     data-get=&amp;quot;ftui_next&amp;quot;&lt;br /&gt;
                     data-get-on=&#039;[&amp;quot;Biotonne_0$&amp;quot;,&amp;quot;Biotonne_1$&amp;quot;,&amp;quot;Biotonne_.*&amp;quot;,&amp;quot;GelberSack_0$&amp;quot;,&amp;quot;GelberSack_1$&amp;quot;,&amp;quot;GelberSack_.*&amp;quot;,&amp;quot;Papiertonne_0$&amp;quot;,&amp;quot;Papiertonne_1$&amp;quot;,&amp;quot;Papiertonne_.*&amp;quot;,&amp;quot;Restmuelltonne_0$&amp;quot;,&amp;quot;Restmuelltonne_1$&amp;quot;,&amp;quot;Restmuelltonne_.*&amp;quot;]&#039;&lt;br /&gt;
                     data-get-warn=&amp;quot;.*([0|1|2]).*&amp;quot;&lt;br /&gt;
                     data-on-colors=&#039;[&amp;quot;#8B4513&amp;quot;,&amp;quot;#8B4513&amp;quot;,&amp;quot;#8B4513&amp;quot;,&amp;quot;#f4e946&amp;quot;,&amp;quot;#f4e946&amp;quot;,&amp;quot;#f4e946&amp;quot;,&amp;quot;#2d9e1c&amp;quot;,&amp;quot;#2d9e1c&amp;quot;,&amp;quot;#2d9e1c&amp;quot;,&amp;quot;#696969&amp;quot;,&amp;quot;#696969&amp;quot;,&amp;quot;#696969&amp;quot;]&#039;&lt;br /&gt;
                     class=&amp;quot;large warn&amp;quot;&lt;br /&gt;
                     data-icons=&#039;[&amp;quot;fa-trash-o fa-spin&amp;quot;,&amp;quot;fa-trash-o blink&amp;quot;,&amp;quot;fa-trash-o&amp;quot;,&amp;quot;fs-bag fa-spin&amp;quot;,&amp;quot;fs-bag blink&amp;quot;,&amp;quot;fs-bag&amp;quot;,&amp;quot;fs-dustbin fa-spin&amp;quot;,&amp;quot;fs-dustbin blink&amp;quot;,&amp;quot;fs-dustbin&amp;quot;,&amp;quot;fa-trash fa-spin&amp;quot;,&amp;quot;fa-trash blink&amp;quot;,&amp;quot;fa-trash&amp;quot;]&#039;&lt;br /&gt;
                     /&amp;gt;&lt;br /&gt;
                &amp;lt;div data-device=&amp;quot;myABFALL&amp;quot; data-get=&amp;quot;ftui_datum&amp;quot; data-type=&amp;quot;label&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Für Jede Tonne werden hier drei Zustände unterschieden und einzeln in &amp;quot;data-get-on&amp;quot;, &amp;quot;data-on-colors&amp;quot; und &amp;quot;data-icons&amp;quot; zugeordnet. Daher haben diese Listen jeweils 12 Einträge.&lt;br /&gt;
&lt;br /&gt;
=== Benachrichtigung ===&lt;br /&gt;
==== DOIF ====&lt;br /&gt;
====== TelegramBot Beispiel ======&lt;br /&gt;
&amp;lt;pre&amp;gt;[myABFALL:next_tage] == 1) ( set fhemBot message &#039;Morgen wird [myABFALL:next_text] abgeholt&#039;)&lt;br /&gt;
[myABFALL:now_text] ne &amp;quot;&amp;quot;) ( set fhemBot message &#039;Heute wird [myABFALL:now_text] abgeholt&#039;)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Pushbullet Beispiel ======&lt;br /&gt;
&lt;br /&gt;
Die morgigen Leerungen per Push um 19:30 mittels Pushbullet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define dAbfallmorgen doif ([19:30] and [myABFALL:next_tage] == 1) ( msg |Morgen wird [myABFALL:next_text] abgeholt)&lt;br /&gt;
&lt;br /&gt;
attr dAbfallmorgen do always&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die heutigen Leerungen per Push um 07:00 mittels Pushbullet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define dAbfallheute doif ([07:00] and [myABFALL:now_text] ne &amp;quot;&amp;quot;) ( msg |Heute wird [myABFALL:now_text] abgeholt)&lt;br /&gt;
&lt;br /&gt;
attr dAbfallheute do always&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* Forenthema {{Link2Forum|Topic=50177|LinkText=Abfall Visualisierung mit Bilderrahmen}}&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEMWiki:Interna&amp;diff=19984</id>
		<title>FHEMWiki:Interna</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEMWiki:Interna&amp;diff=19984"/>
		<updated>2017-02-15T14:56:05Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Januar 2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=info|RNText=&amp;quot;Infobox Interna&amp;quot; zu FHEM Wiki&lt;br /&gt;
* [[Spezial:Version|Versionsinfo]]&lt;br /&gt;
* [[Spezial:Statistik|Statistisches]]&lt;br /&gt;
}}&lt;br /&gt;
[[FHEMWiki:Interna]] wie Informationen über geplante Wartungsarbeiten, Probleme, Erweiterungswünsche etc.&lt;br /&gt;
&lt;br /&gt;
== Aktuell ==&lt;br /&gt;
== Januar 2017 ==&lt;br /&gt;
* MediaWiki wurde auf Version 1.28.0 aktualisiert&lt;br /&gt;
&lt;br /&gt;
== Dezember 2016 ==&lt;br /&gt;
* Wiki wurde auf einen anderen Server und gleichzeitig auf die Domain wiki.fhem.de umgezogen&lt;br /&gt;
* MediaWiki wurde vorerst auf Version 1.24.1 belassen; Update auf aktuelle Version ist vorgesehen, sobald sich das Wiki in der neuen Umgebung eingespielt hat&lt;br /&gt;
&lt;br /&gt;
== Umstellung vom 6.11.2015 ==&lt;br /&gt;
* Einige &amp;quot;Standarddateien&amp;quot; (aus wikimedia:common) scheinen verschwunden zu sein; dadurch fehlen aktuell einige Bilder, insbesondere in den Vorlagen &amp;quot;Hallo&amp;quot; und &amp;quot;Randnotiz&amp;quot;. Arno wurde per Mail informiert.&lt;br /&gt;
&lt;br /&gt;
== Umstellung vom 30.10.2015 ==&lt;br /&gt;
* [[Syntax Highlighting]] wurde auf mehrfachen Wunsch eingerichtet.&lt;br /&gt;
&lt;br /&gt;
== Umstellung vom 10.2.2015 ==&lt;br /&gt;
Am 10.2.2015 wurde der Wiki-Server auf eine leistungsfähigere Plattform umgezogen. &lt;br /&gt;
&lt;br /&gt;
Gleichzeitig wurde die MediaWiki Version auf 1.24.1 aktualisiert.&lt;br /&gt;
&lt;br /&gt;
=== Offene Probleme ===&lt;br /&gt;
Probleme sind mittlerweile abgearbeitet, Wünsche bearbeitet (abgelehnt oder erfüllt)&lt;br /&gt;
&lt;br /&gt;
=== Erledigte Probleme ===&lt;br /&gt;
* Kopfbereich aller Wiki-Seiten hat (noch) die falsche Hintergrundfarbe&lt;br /&gt;
** erledigt: [[Benutzer:Akw|Akw]] ([[Benutzer Diskussion:Akw|Diskussion]]) 17:27, 24. Feb. 2015 (CET)&lt;br /&gt;
* &#039;&#039;wikitable sortable&#039;&#039; funktioniert nicht (mehr)&lt;br /&gt;
** erledigt: --[[Benutzer:Akw|Akw]] ([[Benutzer Diskussion:Akw|Diskussion]]) 22:37, 19. Apr. 2015 (CEST)&lt;br /&gt;
* Bearbeitungs- und erweiterte Bearbeitungswerkzeugleiste sind trotz Auswahl in Benutzereinstellung nicht vorhanden (getestete Browser: Firefox, IE)&lt;br /&gt;
** erledigt: --[[Benutzer:Akw|Akw]] ([[Benutzer Diskussion:Akw|Diskussion]]) 22:37, 19. Apr. 2015 (CEST)&lt;br /&gt;
* Suchvorschlagsliste bei Eingabe des Suchwortes im Suchfeld nicht mehr vorhanden&lt;br /&gt;
** erledigt: --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 20:23, 22. Apr. 2015 (CEST)&lt;br /&gt;
* Darstellung ist &amp;quot;anders&amp;quot; (z.B.: Überschriften auf Level 2 (==) jetzt Serifenschrift)&lt;br /&gt;
* (Wunsch:) Wäre es möglich, die Extension [http://www.mediawiki.org/wiki/Extension:DynamicWikiSitemap DynamicWikiSitemap] zu installieren?&lt;br /&gt;
** Die funktioniert nicht gut mit dem nginx-webserver. Ich habe statische sitemaps für die Google Webmaster Tools erstellt: http://wiki.fhem.de/w/sitemap/sitemap-index-c1fhemwiki.xml [[Benutzer:Akw|Akw]] ([[Benutzer Diskussion:Akw|Diskussion]]) 17:27, 24. Feb. 2015 (CET)&lt;br /&gt;
* Benutzereinstellungen (Spezial:Einstellungen): die Seite bietet keine &amp;quot;Themes&amp;quot; (mehr?) an; es ist &amp;quot;nur noch&amp;quot; &#039;&#039;&#039;Benutzeroberfläche&#039;&#039;&#039; &#039;&#039;Vector&#039;&#039; installiert.&lt;br /&gt;
:: Das ist so gewollt. ([[Benutzer Diskussion:Akw|Diskussion]]) 17:27, 24. Feb. 2015 (CET)&lt;br /&gt;
* Bug? Wenn man direkt ein Kapitel einer Seite bearbeitet, bleibt die Schaltfläche &amp;quot;nur Kleinigkeiten wurden verändert&amp;quot; ohne Wirkung. &lt;br /&gt;
&lt;br /&gt;
=== Diskussion === &lt;br /&gt;
:: Es gibt aber allem Anschein nach noch ein offenes Problem mit diesem einzigen verbliebenen Skin: ich bekomme auf allen FHEM-Wiki Seiten (sichtbar &amp;quot;nur&amp;quot; in Firebug) die Fehlermeldung &#039;&#039;&amp;lt;nowiki&amp;gt;&amp;quot;NetworkError: 502 Bad Gateway - http://wiki.fhem.de/w/load.php?debug=false&amp;amp;lang=de&amp;amp;modules=startup&amp;amp;only=scripts&amp;amp;skin=vector&amp;amp;*&amp;quot;&amp;lt;/nowiki&amp;gt;&#039;&#039;. Nach einer Info, die ich an anderer Stelle gefunden habe, könnte auch die fehlende Werkzeugleiste damit zusammenhängen. &lt;br /&gt;
:: Falls die Frage erlaubt ist: was ist der Grund dafür, dass nur noch ein Skin &amp;quot;gewollt&amp;quot; ist? --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 10:56, 2. Apr. 2015 (CEST)&lt;br /&gt;
:: &amp;lt;hr /&amp;gt;&lt;br /&gt;
:: Ich hab den Bug jetzt im Griff, denke ich. Es paar Puffergrößen mussten angepasst werden. --[[Benutzer:Akw|Akw]] ([[Benutzer Diskussion:Akw|Diskussion]]) 22:35, 19. Apr. 2015 (CEST)&lt;br /&gt;
:: @Peter: Wenn es zwingend gewünscht wird, lasse ich mich mit den Skins breitschlagen, aber Vector ist doch ganz hübsch oder? Und der Wartungsaufwand wird minimiert.&lt;br /&gt;
[[Kategorie:FHEM Wiki]]&lt;br /&gt;
::: Ich brauch jedenfalls keine Skins.[[Benutzer:Soulman|Soulman]] ([[Benutzer Diskussion:Soulman|Diskussion]]) 03:47, 26. Apr. 2015 (CEST)&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MAX!_Temperatur-Scanner&amp;diff=19201</id>
		<title>MAX! Temperatur-Scanner</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MAX!_Temperatur-Scanner&amp;diff=19201"/>
		<updated>2017-01-30T13:05:01Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Einrichten des Thermostat-internen Wochenprogrammes */  Typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der &#039;&#039;&#039;MAX! Temperatur-Scanner&#039;&#039;&#039; ist ein Perl-Skript, das die kontinuierliche Temperatur-Aufzeichnung&lt;br /&gt;
von MAX-Thermostaten ermöglicht. &lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* kontinuierliche Erfassung von Temperatur und Ventil-Position &lt;br /&gt;
* Berücksichtigung der System-Ressourcen (dutycycle, credits)&lt;br /&gt;
* [[MAX#CUL_MAX|CUL]] und [[MAX#MAXLAN|CUBE]] werden unterstützt&lt;br /&gt;
* gleichberechtigte zeitliche Bearbeitung der Thermostate (Round-Robin-Prinzip)&lt;br /&gt;
* Ermittlung der optimalen Scan-Rate über die Anzahl der eingebundenen Thermostate&lt;br /&gt;
* 2 Scan-Modi stehen zur Verfügung (DesiredChange + ModeChange)&lt;br /&gt;
&lt;br /&gt;
== Zielsetzung des WIKI-Artikels ==&lt;br /&gt;
Hier werden Fragen und Erkenntnisse zum Thema dargestellt, da der Forums-Eintrag für viele Anwender nicht mehr überschaubar ist.&lt;br /&gt;
&lt;br /&gt;
Der Artikel wird sukzessive erweitert.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
==== Qualität der Funkverbindung ====&lt;br /&gt;
In der Log-Datei sollten möglichst wenig Einträge der nachfolgenden Form auftreten&lt;br /&gt;
&amp;lt;pre&amp;gt;2013.11.01 02:12:33 2: CUL_MAX_SendQueueHandler: Missing ack from 0905a5 for 0b0b0040123456xxxxxxxxx&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese weisen auf eine schlechte Funkverbindung hin. In diesem Fall wird  der CUL bis zu 3x den Befehl wiederholen und dabei jede Menge Credits verbrauchen. Damit wird  der Scanner inaktiv bleiben, da häufig zu wenige Credits vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
==== Ausreichend Credits ====&lt;br /&gt;
Der Scanner kann nicht aktiv werden, wenn gehäuft Log-Einträge der nachfolgenden Form auftreten.&lt;br /&gt;
&amp;lt;pre&amp;gt;2013.11.01 14:12:50 2: CUL_MAX_SendQueueHandler: Not enough credit! credit10ms is 6, but we need 121. Waiting 115 seconds.&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Ursache hierfür kann neben funktechnischen Problem auch sein, dass ein anderer Mechanismus ausserhalb des Scanners permanent sendet, ohne Rücksicht auf die Credits zu nehmen.&lt;br /&gt;
&lt;br /&gt;
==== Einrichten des Thermostat-internen Wochenprogrammes ====&lt;br /&gt;
&lt;br /&gt;
Die Readings des Wochenprogramms müssen erscheinen. Der Scanner greift ausgiebig auf diese Informationen zurück. Ein manuelles Verstellen des Sollwertes ist nur bis zu dem nächsten Schaltzeitpunkt des Wochenprogramms gültig. Danach wird je nach ScanMode das Thermostat selbst oder der Scanner den Sollwert gemäß den Einstellungen des Wochenprogramms ändern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte folgendes beachten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt im Zusammenhang mit dem Wochenprogramm ein Problem mit dem letzten Schaltpunkt des Tages. &lt;br /&gt;
Der Workaround wurde  [http://forum.fhem.de/index.php/topic,17231.msg112738.html#msg112738 hier]&lt;br /&gt;
beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Man muss dafür sorgen, dass man kurz vor Ende des Tages noch einen Schaltpunkt setzt.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mechanismen ==&lt;br /&gt;
=== Das Problem ===&lt;br /&gt;
Der Hersteller der MAX-Thermostate hat diese so konzipiert, dass die gemessene Temperatur und Ventilstellung nur übertragen werden, wenn sich Folgendes ändert:&lt;br /&gt;
* die Ventilstellung&lt;br /&gt;
* die Betriebsart (mode: auto,manu,temporary,boost)&lt;br /&gt;
* der Sollwert&lt;br /&gt;
&lt;br /&gt;
Es kann der Fall eintreten, dass über Stunden keine Temperatur an FHEM übertragen wird. Damit sind Aufzeichnungen für Temperatur und Ventilstellung wenig aussagekräftig.&lt;br /&gt;
&lt;br /&gt;
=== Der Lösungsansatz ===&lt;br /&gt;
==== Triggerung per Mode-Umschaltung (ModeChange) ====&lt;br /&gt;
Dies ist der Default-Mode des Scanners.&lt;br /&gt;
Hier wird der Ansatz verfolgt, die Betriebsart des Thermostats regelmässig umzuschalten via&lt;br /&gt;
:AUTO ==&amp;gt; MANU&lt;br /&gt;
&amp;lt;Wartezeit mindestens 3 Minuten&amp;gt;&lt;br /&gt;
:MANU ==&amp;gt; AUTO&lt;br /&gt;
&lt;br /&gt;
Dies veranlasst das Thermostat, regelmässig die gewünschten Werte an FHEM (den gepaarten Transceiver) zu senden.&lt;br /&gt;
&lt;br /&gt;
==== Triggerung per Sollwert-Umschaltung (DesiredChange) ====&lt;br /&gt;
Durch Änderung des Sollwertes kann ebenso die Übertragung des Istwertes am Thermostat initiiert werden.&lt;br /&gt;
&lt;br /&gt;
Der Scanner ändert den vorgegebenen Sollwert um 0.5 Grad. Er wird hierbei die Änderung immer in die Richtung einer sich vergroessernden Regelabweichung durchführen.&lt;br /&gt;
&lt;br /&gt;
Dieser Modus wird durch die Definition des UserReadings &amp;quot;onlyAutoMode&amp;quot; festgelegt.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr HT.JOHN userReadings onlyAutoMode { return &amp;quot;1&amp;quot;;;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Sollwert im Thermostat nach Wochenprofil: 18&lt;br /&gt;
Fall A:&lt;br /&gt;
----&lt;br /&gt;
* Istwert   17&lt;br /&gt;
* Sollwert A von Scanner gesetzt : 18.5&lt;br /&gt;
* Sollwert B von Scanner gesetzt : 18.0&lt;br /&gt;
* Der Scanner wechselt also von 18 auf 18.5 und zurück.&lt;br /&gt;
&lt;br /&gt;
Fall B:&lt;br /&gt;
----&lt;br /&gt;
* Istwert   19&lt;br /&gt;
* Sollwert A von Scanner gesetzt : 17.5&lt;br /&gt;
* Sollwert B von Scanner gesetzt : 18.0&lt;br /&gt;
* Der Scanner wechselt also von 18 auf 17.5 und zurück.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnis ===&lt;br /&gt;
==== ohne Scanner ====&lt;br /&gt;
[[Datei:2013_12_MaxScanner_Vorher.png|ohne Scanner]]&lt;br /&gt;
&lt;br /&gt;
==== mit Scanner (ScanMode=ModeChange) ====&lt;br /&gt;
[[Datei:13_12_01_Scanner_ModeChange.png|mit Scanner]]&lt;br /&gt;
&lt;br /&gt;
==== mit Scanner (ScanMode=DesiredChange) ====&lt;br /&gt;
[[Datei:13_12_01_Scanner_DesiredChange.png|mit Scanner]]&lt;br /&gt;
&lt;br /&gt;
=== Ressourcen ===&lt;br /&gt;
Die Sendezeit jedes Teilnehmers ist auf 1% begrenzt.&lt;br /&gt;
&lt;br /&gt;
Konkret bedeutet dies, dass ein CUL ca. 33 Telegramme pro Stunde senden kann.&lt;br /&gt;
Der MAX-Scanner darf nicht alle Ressourcen für sich beanspruchen, sondern sieht seine Aufgabe als nachrangig. &lt;br /&gt;
&lt;br /&gt;
Erst wenn mehr als 300 Credits (von max. 900 möglichen) zur Verfügung stehen, wird das Skript aktiv.&lt;br /&gt;
&lt;br /&gt;
== Fragen und Antworten ==&lt;br /&gt;
=== Welchen ScanMode soll ich wählen? ===&lt;br /&gt;
Nachfolgende Punkte können als Entscheidungskriterium dienen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ModeChange&#039;&#039;&#039;&lt;br /&gt;
* keine Änderung des Sollwertes nötig&lt;br /&gt;
* damit ist das Ventil &amp;quot;ruhiger&amp;quot;, da sich die Regeldifferenz nicht durch den Scanner-Betrieb ändert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DesiredChange&#039;&#039;&#039;&lt;br /&gt;
* der Auto-Modus wird niemals verlassen&lt;br /&gt;
* Falls FHEM ausfällt, wird das Thermostat das gespeicherte Wochenprogramm nutzen&lt;br /&gt;
&lt;br /&gt;
=== Was passiert, wenn der Sollwert am Thermostat manuell verstellt wird? ===&lt;br /&gt;
Wenn der Sollwert manuell am Thermostat verändert wird, kann es bis zu 3 Minuten dauern, bis dieser an FHEM gemeldet wird.&lt;br /&gt;
&lt;br /&gt;
Wenn der Scanner in dieser Wartezeit aktiv wird, wird er den soeben geänderten Sollwert überschreiben. In diesem Fall bliebe die manuelle Änderung wirkungslos.&lt;br /&gt;
&lt;br /&gt;
Wird die manuelle Änderung des Sollwertes vom Scanner erkannt, so gilt dieser bis zum nächsten Schaltpunkt des internen Wochenprogrammes.&lt;br /&gt;
&lt;br /&gt;
=== Mehrere Thermostate in einer Gruppe? ===&lt;br /&gt;
Wenn mehrere Thermostate in einer Gruppe vereinigt sind (Raumlösung nach ELV), dann darf nur ein einziges Thermostat vom Scanner bedient werden, da die anderen Thermostate von diesem synchronisiert werden. Also das Attribut &amp;quot;scanTemp&amp;quot; nur bei einem Repräsentanten der Gruppe aktivieren.&lt;br /&gt;
&lt;br /&gt;
=== Was ist zu tun wenn, Thermostate zusammen mit einem Wandthermostat eingesetzt werden? ===&lt;br /&gt;
In diesem Fall ist der Scanner überflüssig, da das Wandthermostat ohnehin eine detaillierte Kurve des Istwertes liefert.&lt;br /&gt;
&lt;br /&gt;
=== Sind Fensterkontakte sinnvoll? ===&lt;br /&gt;
Auf den ersten Blick scheinen sie das zu sein, da man meint Energie zu sparen. Hierzu gibt es jedoch auch eine andere Betrachtungsweise wie die Seite &lt;br /&gt;
[http://www.elv.de/topic/tuer-fensterkontakt-sinn-und-unsinn.html Sinn und Unsinn von Fensterkontakten] zeigt.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist auch ohne Fensterkontakt mit Hilfe der &amp;quot;Temperatur-Sturz-Erkennung&amp;quot; in der Lage festzustellen, dass ein Fenster offen ist. Der zuvor genannte Link präferiert diese Methode. &lt;br /&gt;
&lt;br /&gt;
[[Datei:2013_11_02_Scanner_TSturz.png|Sturz-Temperatur-Erkennung]]&lt;br /&gt;
&lt;br /&gt;
Aber auch die Temperatur-Sturz-Erkennung stellt hinterher wieder fix die 17 Grad ein. Ausserdem ist diese wie hier im Beispiel im Hochsommer angesprungen (Tür wurde zum Abkühlen geöffnet). Diese Problem kann  vermutlich mit einer WindowOpenDuration von 0 behoben werden, ausserdem ist im Hochsommer die Heizung ohnehin ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Folgende Nachteile haben die Max-Fensterkontakte:&lt;br /&gt;
* Es gibt keine Verzögerungszeit, das Thermostat schliesst sofort, wenn das Fenster geöffnet wird. Das mag bei einem normalen Fenster noch akzeptabel sein, nicht aber bei Türen.&lt;br /&gt;
* Wenn das Thermostat im Auto-Modus ist und der Fensterkontakt geht von aktiv zu inaktiv (Fenster wieder geschlossen), dann stellt das Thermostat fix 17 Grad ein, also nicht den zuvor eingestellten Sollwert (dieses Verhalten betrachten viele als Design-Fehler).&lt;br /&gt;
&lt;br /&gt;
=== Berücksichtigt der Scanner die Temperatur-Sturz-Erkennung? ===&lt;br /&gt;
Wenn desiredTemperature=WindowsOpenTemperature, dann stellt der Scanner seine Arbeit ein. Ansonsten würde er durch aktive Modeumschaltung die WindowsOpenTemperature dauerhaft setzen.&lt;br /&gt;
&lt;br /&gt;
=== Kann der Scanner mit Fensterkontakten umgehen? ===&lt;br /&gt;
Der Scanner versucht, das Problem der fixen 17 Grad nach Schliessen des Fensters zu korrigieren. Hierzu braucht er jedoch die Information, welcher Fensterkontakt für das jeweilige Thermostat zuständig ist.&lt;br /&gt;
&lt;br /&gt;
Ausserdem wäre es fatal, wenn der Scanner in der Phase des offenen Fensters den Sollwert überschreiben würde. Bei offenem Fenster ist der Scanner inaktiv, er schaltet also den Modus nicht mehr um.&lt;br /&gt;
&lt;br /&gt;
=== Was passiert, wenn der Boost-Mode aktiviert wurde? ===&lt;br /&gt;
Sobald dies der Scanner erkennt, stellt er seine Aktivität ein, bis wieder der Modus Auto oder Manu erscheint.&lt;br /&gt;
&lt;br /&gt;
=== Unterstützt der Scanner auch den MAX-ECO-Taster? ===&lt;br /&gt;
Nein.&lt;br /&gt;
&lt;br /&gt;
=== Beeinflusst der Scanner den Regelmechanismus des Thermostats? ===&lt;br /&gt;
Im Prinzip nicht. Jedoch wird in der Betriebsart &amp;quot;DesiredChange&amp;quot; der Sollwert geringfügig um +/- 0.5 Grad im Sinne einer sich vergrößernden Regeldifferenz verändert.&lt;br /&gt;
&lt;br /&gt;
== Die Modul-Variante ==&lt;br /&gt;
&lt;br /&gt;
Die Modul-Variante ist seit dem 10.01.2016 Bestandteil von  FHEM.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
* ggf. vorhandene Script-Variante sollte deaktiviert werden (99_UtilsMaxScan löschen/verschieben)&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme ===&lt;br /&gt;
* Scanner Modul definieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Scanner MaxScanner&lt;br /&gt;
attr Scanner verbose 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* die bestehende Max-Thermostate verfügen nun automatisch über neue Attribute, die den Scanner betreffen&lt;br /&gt;
* die meisten Scanner-spezfischen Attribute beginnen immer mit &amp;quot;scn&amp;quot;&lt;br /&gt;
* im folgende Beispiel wird das Thermostat HT.JOHN betrachtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define HT.JOHN MAX HeatingThermostat 066666&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* das Thermostat wird für den Scanner freigegeben&lt;br /&gt;
&amp;lt;pre&amp;gt;attr HT.JOHN scanTemp 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wir wählen die Betriebsart Mode-Change&lt;br /&gt;
&amp;lt;pre&amp;gt;attr HT.JOHN scnProcessByDesiChange 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wir können 0..n ShutterContacts definieren, getrennt durch Komma&lt;br /&gt;
&amp;lt;pre&amp;gt;attr HT.JOHN scnShutterList SHUTTER.JOHN,SHUTTER.BRENNER&amp;lt;/pre&amp;gt;&lt;br /&gt;
* verbose liefert ausführliche Infos im Logger&lt;br /&gt;
&amp;lt;pre&amp;gt;attr HT.JOHN verbose 4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Thermostat===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Wertebereich !! Default !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|scanTemp||[0,1]||0||wenn 1, wird das Thermostat vom Scanner berücksichtigt&lt;br /&gt;
|-&lt;br /&gt;
|scnProcessByDesiChange||[0,1]||0||wenn 1, wird das Thermostat über die Änderung von desiredTemperature (DesiredChange) getriggert, ansonsten über die Änderung des Modes (ModeChange)&lt;br /&gt;
|-&lt;br /&gt;
|scnModeHandling||[NOCHANGE,AUTO,MANUAL]||AUTO|||wenn scnProcessByDesiChange aktiviert ist, kann man hier entscheiden, wie mit dem MODE verfahren werden soll. Wenn AUTO, wird der Scanner immer den Mode &amp;quot;auto&amp;quot; vorgeben, wenn MANUAL, den Mode &amp;quot;manual&amp;quot; sobald der Sollwert zum&lt;br /&gt;
Thermostat geschrieben wird. Ist hingegen NOCHANGE gewählt, so wird der aktuelle am Thermostat angewählte Mode belassen.&lt;br /&gt;
|-&lt;br /&gt;
|scnShutterList||||||Liste von assoziierten Max-Fensterkontakten (ShutterContacts), die durch ein Komma getrennt werden. &lt;br /&gt;
Der Scanner benötigt diese, um ein geöffnetes Fenster umgehend zu erkennen. Er erkennt ein offenes Fenster auch ohne Fensterkontakt, wenn gilt &amp;quot;aktueller Sollwert&amp;quot; = WindowOpenTemperature. Das Thermostat geht nach erkanntem Temperaturabfall auf diesen Wert.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
=== Attribute Scanner===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Wertebereich !! Default !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|disable||[0,1]||0|| wenn 1, dann wird der Scanner gesperrt und ist somit inaktiv.&lt;br /&gt;
|-&lt;br /&gt;
|scnCreditThreshold||[150..600]||300|| die Mindestanzahl von verfügbaren Credits, ab der der Scanner mit dem Triggern der Thermostate beginnt&lt;br /&gt;
|-&lt;br /&gt;
|scnMinInterval||[3..60]||3|| die Mindestwartezeit in Minuten, nach der der Scanner ein Thermostate erneut triggert; diese wird nur berücksichtigt, wenn sie höher ist, als die berechnete Wartezeit, die sich aus der Anzahl der Thermostate ergibt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
==== Hilfe zur Diagnose der Abläufe ====&lt;br /&gt;
Ein wichtiges Hilfsmittel ist der Event-Monitor. Mit der Filter-Einstellung &amp;quot;MAX.*&amp;quot; werden nur noch die MAX-relevanten Events dargestellt.&lt;br /&gt;
&lt;br /&gt;
Interpretation der Ausgabe:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2016-01-06 21:24:43 MAX HT.BAD desiredTemperature auto 20.0 &amp;lt;-- Triggern des Thermostats durch Scanner&lt;br /&gt;
  &lt;br /&gt;
2016-01-06 21:24:50 MAX HT.BAD mode: auto             --&amp;gt; Rückmeldung vom Thermostat&lt;br /&gt;
2016-01-06 21:24:50 MAX HT.BAD RSSI: -54              --&amp;gt; Rückmeldung vom Thermostat&lt;br /&gt;
2016-01-06 21:24:56 MAX HT.BAD temperature: 20.2      --&amp;gt; Rückmeldung vom Thermostat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier erscheinen also die zu Thermostat gesendeten Informationen ebenso, wie die empfangenen.&lt;br /&gt;
Empfangene Informationen sind meist mit einem &amp;quot;:&amp;quot; gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:MAX]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MAX!_Temperatur-Scanner&amp;diff=19200</id>
		<title>MAX! Temperatur-Scanner</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MAX!_Temperatur-Scanner&amp;diff=19200"/>
		<updated>2017-01-30T13:03:57Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Features */ Links zur MAX-Hautpseite (CUBE, CUL)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der &#039;&#039;&#039;MAX! Temperatur-Scanner&#039;&#039;&#039; ist ein Perl-Skript, das die kontinuierliche Temperatur-Aufzeichnung&lt;br /&gt;
von MAX-Thermostaten ermöglicht. &lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* kontinuierliche Erfassung von Temperatur und Ventil-Position &lt;br /&gt;
* Berücksichtigung der System-Ressourcen (dutycycle, credits)&lt;br /&gt;
* [[MAX#CUL_MAX|CUL]] und [[MAX#MAXLAN|CUBE]] werden unterstützt&lt;br /&gt;
* gleichberechtigte zeitliche Bearbeitung der Thermostate (Round-Robin-Prinzip)&lt;br /&gt;
* Ermittlung der optimalen Scan-Rate über die Anzahl der eingebundenen Thermostate&lt;br /&gt;
* 2 Scan-Modi stehen zur Verfügung (DesiredChange + ModeChange)&lt;br /&gt;
&lt;br /&gt;
== Zielsetzung des WIKI-Artikels ==&lt;br /&gt;
Hier werden Fragen und Erkenntnisse zum Thema dargestellt, da der Forums-Eintrag für viele Anwender nicht mehr überschaubar ist.&lt;br /&gt;
&lt;br /&gt;
Der Artikel wird sukzessive erweitert.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
==== Qualität der Funkverbindung ====&lt;br /&gt;
In der Log-Datei sollten möglichst wenig Einträge der nachfolgenden Form auftreten&lt;br /&gt;
&amp;lt;pre&amp;gt;2013.11.01 02:12:33 2: CUL_MAX_SendQueueHandler: Missing ack from 0905a5 for 0b0b0040123456xxxxxxxxx&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese weisen auf eine schlechte Funkverbindung hin. In diesem Fall wird  der CUL bis zu 3x den Befehl wiederholen und dabei jede Menge Credits verbrauchen. Damit wird  der Scanner inaktiv bleiben, da häufig zu wenige Credits vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
==== Ausreichend Credits ====&lt;br /&gt;
Der Scanner kann nicht aktiv werden, wenn gehäuft Log-Einträge der nachfolgenden Form auftreten.&lt;br /&gt;
&amp;lt;pre&amp;gt;2013.11.01 14:12:50 2: CUL_MAX_SendQueueHandler: Not enough credit! credit10ms is 6, but we need 121. Waiting 115 seconds.&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Ursache hierfür kann neben funktechnischen Problem auch sein, dass ein anderer Mechanismus ausserhalb des Scanners permanent sendet, ohne Rücksicht auf die Credits zu nehmen.&lt;br /&gt;
&lt;br /&gt;
==== Einrichten des Thermostat-internen Wochenprogrammes ====&lt;br /&gt;
&lt;br /&gt;
Die Readings Wochenprogrammes müssen erscheinen. Der Scanner greift ausgiebig auf diese Informationen zurück. Ein manuelles verstellen des Sollwertes ist nur bis zu dem nächsten Schaltzeitpunkt des Wochenprogramms gültig. Danach wird je nach ScanMode das Thermostat selbst oder der Scanner den Sollwert gemäß den Einstellungen des Wochenprogramms ändern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte folgendes beachten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt im Zusammenhang mit dem Wochenprogramm ein Problem mit dem letzten Schaltpunkt des Tages. &lt;br /&gt;
Der Workaround wurde  [http://forum.fhem.de/index.php/topic,17231.msg112738.html#msg112738 hier]&lt;br /&gt;
beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Man muss dafür sorgen, dass man kurz vor Ende des Tages noch einen Schaltpunkt setzt.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mechanismen ==&lt;br /&gt;
=== Das Problem ===&lt;br /&gt;
Der Hersteller der MAX-Thermostate hat diese so konzipiert, dass die gemessene Temperatur und Ventilstellung nur übertragen werden, wenn sich Folgendes ändert:&lt;br /&gt;
* die Ventilstellung&lt;br /&gt;
* die Betriebsart (mode: auto,manu,temporary,boost)&lt;br /&gt;
* der Sollwert&lt;br /&gt;
&lt;br /&gt;
Es kann der Fall eintreten, dass über Stunden keine Temperatur an FHEM übertragen wird. Damit sind Aufzeichnungen für Temperatur und Ventilstellung wenig aussagekräftig.&lt;br /&gt;
&lt;br /&gt;
=== Der Lösungsansatz ===&lt;br /&gt;
==== Triggerung per Mode-Umschaltung (ModeChange) ====&lt;br /&gt;
Dies ist der Default-Mode des Scanners.&lt;br /&gt;
Hier wird der Ansatz verfolgt, die Betriebsart des Thermostats regelmässig umzuschalten via&lt;br /&gt;
:AUTO ==&amp;gt; MANU&lt;br /&gt;
&amp;lt;Wartezeit mindestens 3 Minuten&amp;gt;&lt;br /&gt;
:MANU ==&amp;gt; AUTO&lt;br /&gt;
&lt;br /&gt;
Dies veranlasst das Thermostat, regelmässig die gewünschten Werte an FHEM (den gepaarten Transceiver) zu senden.&lt;br /&gt;
&lt;br /&gt;
==== Triggerung per Sollwert-Umschaltung (DesiredChange) ====&lt;br /&gt;
Durch Änderung des Sollwertes kann ebenso die Übertragung des Istwertes am Thermostat initiiert werden.&lt;br /&gt;
&lt;br /&gt;
Der Scanner ändert den vorgegebenen Sollwert um 0.5 Grad. Er wird hierbei die Änderung immer in die Richtung einer sich vergroessernden Regelabweichung durchführen.&lt;br /&gt;
&lt;br /&gt;
Dieser Modus wird durch die Definition des UserReadings &amp;quot;onlyAutoMode&amp;quot; festgelegt.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr HT.JOHN userReadings onlyAutoMode { return &amp;quot;1&amp;quot;;;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Sollwert im Thermostat nach Wochenprofil: 18&lt;br /&gt;
Fall A:&lt;br /&gt;
----&lt;br /&gt;
* Istwert   17&lt;br /&gt;
* Sollwert A von Scanner gesetzt : 18.5&lt;br /&gt;
* Sollwert B von Scanner gesetzt : 18.0&lt;br /&gt;
* Der Scanner wechselt also von 18 auf 18.5 und zurück.&lt;br /&gt;
&lt;br /&gt;
Fall B:&lt;br /&gt;
----&lt;br /&gt;
* Istwert   19&lt;br /&gt;
* Sollwert A von Scanner gesetzt : 17.5&lt;br /&gt;
* Sollwert B von Scanner gesetzt : 18.0&lt;br /&gt;
* Der Scanner wechselt also von 18 auf 17.5 und zurück.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnis ===&lt;br /&gt;
==== ohne Scanner ====&lt;br /&gt;
[[Datei:2013_12_MaxScanner_Vorher.png|ohne Scanner]]&lt;br /&gt;
&lt;br /&gt;
==== mit Scanner (ScanMode=ModeChange) ====&lt;br /&gt;
[[Datei:13_12_01_Scanner_ModeChange.png|mit Scanner]]&lt;br /&gt;
&lt;br /&gt;
==== mit Scanner (ScanMode=DesiredChange) ====&lt;br /&gt;
[[Datei:13_12_01_Scanner_DesiredChange.png|mit Scanner]]&lt;br /&gt;
&lt;br /&gt;
=== Ressourcen ===&lt;br /&gt;
Die Sendezeit jedes Teilnehmers ist auf 1% begrenzt.&lt;br /&gt;
&lt;br /&gt;
Konkret bedeutet dies, dass ein CUL ca. 33 Telegramme pro Stunde senden kann.&lt;br /&gt;
Der MAX-Scanner darf nicht alle Ressourcen für sich beanspruchen, sondern sieht seine Aufgabe als nachrangig. &lt;br /&gt;
&lt;br /&gt;
Erst wenn mehr als 300 Credits (von max. 900 möglichen) zur Verfügung stehen, wird das Skript aktiv.&lt;br /&gt;
&lt;br /&gt;
== Fragen und Antworten ==&lt;br /&gt;
=== Welchen ScanMode soll ich wählen? ===&lt;br /&gt;
Nachfolgende Punkte können als Entscheidungskriterium dienen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ModeChange&#039;&#039;&#039;&lt;br /&gt;
* keine Änderung des Sollwertes nötig&lt;br /&gt;
* damit ist das Ventil &amp;quot;ruhiger&amp;quot;, da sich die Regeldifferenz nicht durch den Scanner-Betrieb ändert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DesiredChange&#039;&#039;&#039;&lt;br /&gt;
* der Auto-Modus wird niemals verlassen&lt;br /&gt;
* Falls FHEM ausfällt, wird das Thermostat das gespeicherte Wochenprogramm nutzen&lt;br /&gt;
&lt;br /&gt;
=== Was passiert, wenn der Sollwert am Thermostat manuell verstellt wird? ===&lt;br /&gt;
Wenn der Sollwert manuell am Thermostat verändert wird, kann es bis zu 3 Minuten dauern, bis dieser an FHEM gemeldet wird.&lt;br /&gt;
&lt;br /&gt;
Wenn der Scanner in dieser Wartezeit aktiv wird, wird er den soeben geänderten Sollwert überschreiben. In diesem Fall bliebe die manuelle Änderung wirkungslos.&lt;br /&gt;
&lt;br /&gt;
Wird die manuelle Änderung des Sollwertes vom Scanner erkannt, so gilt dieser bis zum nächsten Schaltpunkt des internen Wochenprogrammes.&lt;br /&gt;
&lt;br /&gt;
=== Mehrere Thermostate in einer Gruppe? ===&lt;br /&gt;
Wenn mehrere Thermostate in einer Gruppe vereinigt sind (Raumlösung nach ELV), dann darf nur ein einziges Thermostat vom Scanner bedient werden, da die anderen Thermostate von diesem synchronisiert werden. Also das Attribut &amp;quot;scanTemp&amp;quot; nur bei einem Repräsentanten der Gruppe aktivieren.&lt;br /&gt;
&lt;br /&gt;
=== Was ist zu tun wenn, Thermostate zusammen mit einem Wandthermostat eingesetzt werden? ===&lt;br /&gt;
In diesem Fall ist der Scanner überflüssig, da das Wandthermostat ohnehin eine detaillierte Kurve des Istwertes liefert.&lt;br /&gt;
&lt;br /&gt;
=== Sind Fensterkontakte sinnvoll? ===&lt;br /&gt;
Auf den ersten Blick scheinen sie das zu sein, da man meint Energie zu sparen. Hierzu gibt es jedoch auch eine andere Betrachtungsweise wie die Seite &lt;br /&gt;
[http://www.elv.de/topic/tuer-fensterkontakt-sinn-und-unsinn.html Sinn und Unsinn von Fensterkontakten] zeigt.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist auch ohne Fensterkontakt mit Hilfe der &amp;quot;Temperatur-Sturz-Erkennung&amp;quot; in der Lage festzustellen, dass ein Fenster offen ist. Der zuvor genannte Link präferiert diese Methode. &lt;br /&gt;
&lt;br /&gt;
[[Datei:2013_11_02_Scanner_TSturz.png|Sturz-Temperatur-Erkennung]]&lt;br /&gt;
&lt;br /&gt;
Aber auch die Temperatur-Sturz-Erkennung stellt hinterher wieder fix die 17 Grad ein. Ausserdem ist diese wie hier im Beispiel im Hochsommer angesprungen (Tür wurde zum Abkühlen geöffnet). Diese Problem kann  vermutlich mit einer WindowOpenDuration von 0 behoben werden, ausserdem ist im Hochsommer die Heizung ohnehin ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Folgende Nachteile haben die Max-Fensterkontakte:&lt;br /&gt;
* Es gibt keine Verzögerungszeit, das Thermostat schliesst sofort, wenn das Fenster geöffnet wird. Das mag bei einem normalen Fenster noch akzeptabel sein, nicht aber bei Türen.&lt;br /&gt;
* Wenn das Thermostat im Auto-Modus ist und der Fensterkontakt geht von aktiv zu inaktiv (Fenster wieder geschlossen), dann stellt das Thermostat fix 17 Grad ein, also nicht den zuvor eingestellten Sollwert (dieses Verhalten betrachten viele als Design-Fehler).&lt;br /&gt;
&lt;br /&gt;
=== Berücksichtigt der Scanner die Temperatur-Sturz-Erkennung? ===&lt;br /&gt;
Wenn desiredTemperature=WindowsOpenTemperature, dann stellt der Scanner seine Arbeit ein. Ansonsten würde er durch aktive Modeumschaltung die WindowsOpenTemperature dauerhaft setzen.&lt;br /&gt;
&lt;br /&gt;
=== Kann der Scanner mit Fensterkontakten umgehen? ===&lt;br /&gt;
Der Scanner versucht, das Problem der fixen 17 Grad nach Schliessen des Fensters zu korrigieren. Hierzu braucht er jedoch die Information, welcher Fensterkontakt für das jeweilige Thermostat zuständig ist.&lt;br /&gt;
&lt;br /&gt;
Ausserdem wäre es fatal, wenn der Scanner in der Phase des offenen Fensters den Sollwert überschreiben würde. Bei offenem Fenster ist der Scanner inaktiv, er schaltet also den Modus nicht mehr um.&lt;br /&gt;
&lt;br /&gt;
=== Was passiert, wenn der Boost-Mode aktiviert wurde? ===&lt;br /&gt;
Sobald dies der Scanner erkennt, stellt er seine Aktivität ein, bis wieder der Modus Auto oder Manu erscheint.&lt;br /&gt;
&lt;br /&gt;
=== Unterstützt der Scanner auch den MAX-ECO-Taster? ===&lt;br /&gt;
Nein.&lt;br /&gt;
&lt;br /&gt;
=== Beeinflusst der Scanner den Regelmechanismus des Thermostats? ===&lt;br /&gt;
Im Prinzip nicht. Jedoch wird in der Betriebsart &amp;quot;DesiredChange&amp;quot; der Sollwert geringfügig um +/- 0.5 Grad im Sinne einer sich vergrößernden Regeldifferenz verändert.&lt;br /&gt;
&lt;br /&gt;
== Die Modul-Variante ==&lt;br /&gt;
&lt;br /&gt;
Die Modul-Variante ist seit dem 10.01.2016 Bestandteil von  FHEM.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
* ggf. vorhandene Script-Variante sollte deaktiviert werden (99_UtilsMaxScan löschen/verschieben)&lt;br /&gt;
&lt;br /&gt;
=== Inbetriebnahme ===&lt;br /&gt;
* Scanner Modul definieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Scanner MaxScanner&lt;br /&gt;
attr Scanner verbose 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* die bestehende Max-Thermostate verfügen nun automatisch über neue Attribute, die den Scanner betreffen&lt;br /&gt;
* die meisten Scanner-spezfischen Attribute beginnen immer mit &amp;quot;scn&amp;quot;&lt;br /&gt;
* im folgende Beispiel wird das Thermostat HT.JOHN betrachtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define HT.JOHN MAX HeatingThermostat 066666&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* das Thermostat wird für den Scanner freigegeben&lt;br /&gt;
&amp;lt;pre&amp;gt;attr HT.JOHN scanTemp 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wir wählen die Betriebsart Mode-Change&lt;br /&gt;
&amp;lt;pre&amp;gt;attr HT.JOHN scnProcessByDesiChange 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wir können 0..n ShutterContacts definieren, getrennt durch Komma&lt;br /&gt;
&amp;lt;pre&amp;gt;attr HT.JOHN scnShutterList SHUTTER.JOHN,SHUTTER.BRENNER&amp;lt;/pre&amp;gt;&lt;br /&gt;
* verbose liefert ausführliche Infos im Logger&lt;br /&gt;
&amp;lt;pre&amp;gt;attr HT.JOHN verbose 4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Thermostat===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Wertebereich !! Default !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|scanTemp||[0,1]||0||wenn 1, wird das Thermostat vom Scanner berücksichtigt&lt;br /&gt;
|-&lt;br /&gt;
|scnProcessByDesiChange||[0,1]||0||wenn 1, wird das Thermostat über die Änderung von desiredTemperature (DesiredChange) getriggert, ansonsten über die Änderung des Modes (ModeChange)&lt;br /&gt;
|-&lt;br /&gt;
|scnModeHandling||[NOCHANGE,AUTO,MANUAL]||AUTO|||wenn scnProcessByDesiChange aktiviert ist, kann man hier entscheiden, wie mit dem MODE verfahren werden soll. Wenn AUTO, wird der Scanner immer den Mode &amp;quot;auto&amp;quot; vorgeben, wenn MANUAL, den Mode &amp;quot;manual&amp;quot; sobald der Sollwert zum&lt;br /&gt;
Thermostat geschrieben wird. Ist hingegen NOCHANGE gewählt, so wird der aktuelle am Thermostat angewählte Mode belassen.&lt;br /&gt;
|-&lt;br /&gt;
|scnShutterList||||||Liste von assoziierten Max-Fensterkontakten (ShutterContacts), die durch ein Komma getrennt werden. &lt;br /&gt;
Der Scanner benötigt diese, um ein geöffnetes Fenster umgehend zu erkennen. Er erkennt ein offenes Fenster auch ohne Fensterkontakt, wenn gilt &amp;quot;aktueller Sollwert&amp;quot; = WindowOpenTemperature. Das Thermostat geht nach erkanntem Temperaturabfall auf diesen Wert.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
=== Attribute Scanner===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Wertebereich !! Default !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|disable||[0,1]||0|| wenn 1, dann wird der Scanner gesperrt und ist somit inaktiv.&lt;br /&gt;
|-&lt;br /&gt;
|scnCreditThreshold||[150..600]||300|| die Mindestanzahl von verfügbaren Credits, ab der der Scanner mit dem Triggern der Thermostate beginnt&lt;br /&gt;
|-&lt;br /&gt;
|scnMinInterval||[3..60]||3|| die Mindestwartezeit in Minuten, nach der der Scanner ein Thermostate erneut triggert; diese wird nur berücksichtigt, wenn sie höher ist, als die berechnete Wartezeit, die sich aus der Anzahl der Thermostate ergibt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
==== Hilfe zur Diagnose der Abläufe ====&lt;br /&gt;
Ein wichtiges Hilfsmittel ist der Event-Monitor. Mit der Filter-Einstellung &amp;quot;MAX.*&amp;quot; werden nur noch die MAX-relevanten Events dargestellt.&lt;br /&gt;
&lt;br /&gt;
Interpretation der Ausgabe:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2016-01-06 21:24:43 MAX HT.BAD desiredTemperature auto 20.0 &amp;lt;-- Triggern des Thermostats durch Scanner&lt;br /&gt;
  &lt;br /&gt;
2016-01-06 21:24:50 MAX HT.BAD mode: auto             --&amp;gt; Rückmeldung vom Thermostat&lt;br /&gt;
2016-01-06 21:24:50 MAX HT.BAD RSSI: -54              --&amp;gt; Rückmeldung vom Thermostat&lt;br /&gt;
2016-01-06 21:24:56 MAX HT.BAD temperature: 20.2      --&amp;gt; Rückmeldung vom Thermostat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier erscheinen also die zu Thermostat gesendeten Informationen ebenso, wie die empfangenen.&lt;br /&gt;
Empfangene Informationen sind meist mit einem &amp;quot;:&amp;quot; gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:MAX]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_3:_GPIO-Port_Module_und_Bluetooth&amp;diff=19158</id>
		<title>Raspberry Pi 3: GPIO-Port Module und Bluetooth</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_3:_GPIO-Port_Module_und_Bluetooth&amp;diff=19158"/>
		<updated>2017-01-27T15:18:50Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: RaspBee hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Der Raspberry Pi 3 nutzt für den GPIO-Port standardmäßig den UART1 (ttyS0), während die vorherigen Raspberry Pi-Modelle noch den UART0 dafür verwendeten. Der UART0 (ttyAMA0) wird beim Pi 3 durch das neu eingeführte Bluetooth-Modul softwaremäßig belegt. Der UART1 des Pi 3 mit Anhängigkeiten von CPU-Frequenz, CPU-Last, Temperatur und anderem ist für den Betrieb von Aufsteckmodulen jedoch häufig nicht stabil genug. Der Pi 3 muss daher zur Verwendung von einigen Aufsteckmodulen für den GPIO-Port, die über GPIO 14/15 kommunizieren so umkonfiguriert werden, dass der GPIO-Port wie bei den Vorgängermodellen wieder den UART0 einsetzt. &lt;br /&gt;
&lt;br /&gt;
Unter anderem folgende Aufsteckmodule setzen für einen stabilen Betrieb die Nutzung des UART0 für den GPIO-Port voraus:&lt;br /&gt;
* EnOceanPi ([[:Kategorie:EnOcean Components|EnOcean]]-Gateway)&lt;br /&gt;
* Razberry ([[:Kategorie:Z-Wave Components|ZWave]]-Gateway)&lt;br /&gt;
* RaspBee ([[:Kategorie:ZigBee Components|ZigBee]]-Gateway)&lt;br /&gt;
&lt;br /&gt;
Immer wieder angeführte und einfach umzusetzende Lösung ist Bluetooth zu deaktivieren und dann den UART0 (ttyAMA0) auf den GPIO-Port umzumappen (siehe beispielsweise {{Link2Forum|Topic=52161|Message=439757}}). Damit kann man aber das im Pi 3 eingebaute Bluetooth-Modul nicht mehr nutzen. Ein Vorteil des Pi 3 zu den Vorgängermodellen geht somit verloren.&lt;br /&gt;
&lt;br /&gt;
{{Link2FU|14179|robert.heinze}} hat aufbauend auf seinen Erkenntnissen in diesem {{Link2Forum|Topic=51112}} nachfolgendes HowTo zur Verfügung gestellt,&lt;br /&gt;
nach dessen Abarbeitung eine parallele Verwendung von Aufsteckmodulen für den GPIO-Port und Bluetooth in FHEM mit dem Pi 3 möglich ist. &lt;br /&gt;
&lt;br /&gt;
== HowTo ==&lt;br /&gt;
Standardmäßig belegt der Raspberry 3 den Software-UART-ttyAMA0 mit Bluetooth. Da wir diese Schnittstelle aber für serielle Module wie z.B. hier den EnOceanPi verwenden, legen wir den integrierten Bluetooth-Empfänger des Raspberry Pi 3 auf ttyS0 (UART1 - „mini UART“) um den Hardware-UART auf die TX/RX-Pins zu legen (UART0 - „full UART“). Hierfür sind einige Maßnahmen vorzunehmen, die nachfolgend schrittweise beschrieben werden. &lt;br /&gt;
&lt;br /&gt;
=== Schritt 1: ===&lt;br /&gt;
Im ersten Schritt gilt es den Raspberry Pi 3 zu konfigurieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo raspi-config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 A7 Serial auf enabled setzen&lt;br /&gt;
&lt;br /&gt;
=== Schritt 2: ===&lt;br /&gt;
Zur Bearbeitung von Textdateien wird hier und bei allen folgenden Schritten der Editor nano genutzt. Selbstverständlich kann auch auf einen anderen Editor zurückgegriffen werden.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /boot/cmdline.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Diese Zeile suchen:&lt;br /&gt;
 dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait&lt;br /&gt;
und editieren. Der Eintrag &amp;lt;code&amp;gt;console=serial0,115200&amp;lt;/code&amp;gt; sollte wie schon beim RPi2 entfernt werden, wenn es gesetzt ist, damit die UART-Schnittstelle von Zusatzmodulen wie EnOceanPi verwendet werden kann. Der genaue Inhalt der Zeile kann sich je nach System unterscheiden.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 3: ===&lt;br /&gt;
Raspberry auf aktuellen Stand bringen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 4: ===&lt;br /&gt;
Firmware aktualisieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install rpi-update&lt;br /&gt;
sudo rpi-update &lt;br /&gt;
sudo reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 5: ===&lt;br /&gt;
In der Config-Datei /boot/config.txt wird das dementsprechende Overlay geladen, um Bluetooth auf mini UART zu legen:&lt;br /&gt;
&lt;br /&gt;
 dtoverlay=pi3-miniuart-bt &lt;br /&gt;
&lt;br /&gt;
Die Taktfrequenz muss beim Starten auf eine konstante Frequenz eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
 enable_uart=1&lt;br /&gt;
&lt;br /&gt;
UART1 wird auf die Maximalfrequenz oder Minimalfrequenz gelegt, da der mini UART die Baudrate abhängig von der System Clock variiert:&lt;br /&gt;
force_turbo=1 oder core_freq=250, wir entscheiden uns für force_turbo=1 sofern ein dementsprechendes Netzteil (2,5A) verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /boot/config.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Am Ende der Datei einfach die folgenden Zeilen hinzufügen:&lt;br /&gt;
&lt;br /&gt;
 dtoverlay=pi3-miniuart-bt&lt;br /&gt;
 enable_uart=1&lt;br /&gt;
 force_turbo=1&lt;br /&gt;
&lt;br /&gt;
=== Schritt 6: ===&lt;br /&gt;
Der Bluetooth UART-Service muss auf ttyS0 gelegt werden. Dies Sollte nach Mai 2016 nicht mehr notwendig sein! Inhalt der Datei hciuart.service genau vergleichen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /lib/systemd/system/hciuart.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Datei 2x ttyAMA0 gegen ttyS0 (oder alternativ /dev/serial1) tauschen, was in folgendem Code resultiert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Configure Bluetooth Modems connected by UART&lt;br /&gt;
ConditionPathIsDirectory=/proc/device-tree/soc/gpio@7e200000/bt_pins&lt;br /&gt;
Before=bluetooth.service&lt;br /&gt;
After=dev-ttyS0.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=forking&lt;br /&gt;
ExecStart=/usr/bin/hciattach /dev/ttyS0 bcm43xx 921600 noflow -&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 7: ===&lt;br /&gt;
Auf Grund eines Timing-Problems in der Boot-Phase zwischen Bluetooth und dem FHEM Start muss der FHEM-Service 10 Sekunden verzögert werden.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der ersten Zeile der Datei&lt;br /&gt;
 sleep 10&lt;br /&gt;
einfügen.&lt;br /&gt;
&lt;br /&gt;
Nun sollten nach einem Reboot das GPIO-Port-Aufsteckmodul (ttyAMA0) und Raspi 3-Bluetooth (ttyS0) parallel funktionieren.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 8 (optional) ===&lt;br /&gt;
Wenn Bluetooth noch nicht installiert wurde, muss es noch installiert werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install pi-bluetooth&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:MAX&amp;diff=18723</id>
		<title>Diskussion:MAX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:MAX&amp;diff=18723"/>
		<updated>2017-01-21T13:50:06Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Associate zwischen WT und HT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
so wie es aussieht, funktioniert die gplot Datei nicht mehr (warum auch immer). Ich versuche mal, eine neue zu bauen und werde Sie hier einstellen.&lt;br /&gt;
&lt;br /&gt;
Gruß PeMue&lt;br /&gt;
&lt;br /&gt;
== MAX! Komponenten ==&lt;br /&gt;
Sollte dies nicht eigentlich der Grundlagenartikel sein und die einzelnen Hardwarekomponenten eigene Artikel haben ähnlich wie die Struktur im Homematik-Bereich des Wikis angelegt ist?&lt;br /&gt;
&lt;br /&gt;
Ich besitze keine MAX!-Komponenten würde aber die Artikel anlegen und hier herausnehmen, wenn niemand dagegen spricht. Kommt erstmal auf meine ToDo-Liste, und ich frage vorher im Forum und/oder bei den Autoren nach... --[[Benutzer:Krokofant|Krokofant]] ([[Benutzer Diskussion:Krokofant|Diskussion]]) 13:11, 5. Dez. 2016 (CET)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
:Ich würde jetzt hier nicht unbedingt eine Aufteilung in Einzelartikel erzwingen. Wenn jemand ein einzelnes Gerät genauer beschreiben will (z.B. weil er es besitzt), kann das gern ein eigener Artikel werden. Derzeit sehe ich den Bedarf nicht - und MAX! ist auch bei weitem nicht so komplex wie HomeMatic. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 16:36, 5. Dez. 2016 (CET)&lt;br /&gt;
:: Stimmt schon. Ich versuche immer in Wikis eine einheitliche Struktur zu finden und diese dann fortzuschreiben. Und beim Komponentenkauf hätte ich jetzt fast übersehen, dass es den MAX!-Eco-Taster (in fhem) überhaupt gibt, weil er hier nur im Sammelartikel vorkommt. Wie wäre es denn mit &amp;lt;nowiki&amp;gt;#REDIRECT&amp;lt;/nowiki&amp;gt;-Artikeln zum entsprechenden Abschnitt im Sammelartikel? --[[Benutzer:Krokofant|Krokofant]] ([[Benutzer Diskussion:Krokofant|Diskussion]]) 19:53, 7. Dez. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Codeschnipsel für HomeMatic-Fenster im MAX-Artikel ==&lt;br /&gt;
Hier [[MAX#Telegram-Benachrichtigung_bei_dauerge.C3.B6ffnetem_Fenster]] wurden Code-Anpassungen für HomeMatic-Fensterkontakt mit dem Hinweis aufgenommen, dass der HomeMatic-Fensterkontakt baugleich zum MAX-Fensterkontakt ist. Das ist meiner Meinung nach nicht so.  Einen MAX-Fensterkontakt kann ich nicht mit HomeMatic-Protokoll ansprechen und umgekehrt. Daher ist die Ergänzung in diesem Artikel deplaziert und falsch. Zudem verwirrt dies. Plane daher das rückgängig zu machen und erbitte Kommentare.&lt;br /&gt;
Gruß, --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 12:29, 21. Jan. 2017 (CET)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
:Hallo Christian - ist mir mit genau den gleichen Gedanken aufgefallen. Sollte da keine Erklärung / Erläuterung kommen, bin ich auch für &amp;quot;revert&amp;quot;. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 12:43, 21. Jan. 2017 (CET)&lt;br /&gt;
::Ersteller der Änderung ist per PM informiert. --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 12:52, 21. Jan. 2017 (CET)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
: Hallo, ich habe die Änderung gemacht. Ist der Status bei wirklich &amp;quot;opened&amp;quot; oder auch &amp;quot;open&amp;quot;? In letzterem Fall - hier geht es ja nur um den Watchdog! - ist meine Ergänzung natürlich überflüssig. Der Watchdog funktioniert natürlich unabhängig ob es MAX oder Homematic ist. Zum Thema baugleich: Sollte der Status bei MAX &amp;quot;opened&amp;quot; sein, schlage ich vor, dass ich es in &amp;quot;optisch ähnlich&amp;quot; ändere, das wollte ich ausdrücken. 13:55, 21.01.2017&lt;br /&gt;
&lt;br /&gt;
== Associate zwischen WT und HT ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Wer also via FHEM die desiredTemperature an den Wandthermostaten sendet, verändert damit weder direkt noch indirekt die Einstellung der assoziierten Heizkörper, sondern muss auch an diese Heizkörper senden.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das stimmt so nicht. Wenn ich in fhem die Temperatur am WT ändere wird das auch an die HTs weiter gegeben. Hat das mal irgendwann nicht funktioniert?&lt;br /&gt;
Wenn nichts dagegen spricht würde ich das sonst löschen.&lt;br /&gt;
--[[Benutzer:Mahowi|mahowi]] ([[Benutzer Diskussion:Mahowi|Diskussion]]) 14:26, 21. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Mahowi&amp;diff=18722</id>
		<title>Benutzer:Mahowi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Mahowi&amp;diff=18722"/>
		<updated>2017-01-21T13:44:45Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Die Seite wurde neu angelegt: „Mein Profil im Forum: {{Link2FU|11787|mahowi}}“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mein Profil im Forum: {{Link2FU|11787|mahowi}}&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:MAX&amp;diff=18721</id>
		<title>Diskussion:MAX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:MAX&amp;diff=18721"/>
		<updated>2017-01-21T13:27:16Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
so wie es aussieht, funktioniert die gplot Datei nicht mehr (warum auch immer). Ich versuche mal, eine neue zu bauen und werde Sie hier einstellen.&lt;br /&gt;
&lt;br /&gt;
Gruß PeMue&lt;br /&gt;
&lt;br /&gt;
== MAX! Komponenten ==&lt;br /&gt;
Sollte dies nicht eigentlich der Grundlagenartikel sein und die einzelnen Hardwarekomponenten eigene Artikel haben ähnlich wie die Struktur im Homematik-Bereich des Wikis angelegt ist?&lt;br /&gt;
&lt;br /&gt;
Ich besitze keine MAX!-Komponenten würde aber die Artikel anlegen und hier herausnehmen, wenn niemand dagegen spricht. Kommt erstmal auf meine ToDo-Liste, und ich frage vorher im Forum und/oder bei den Autoren nach... --[[Benutzer:Krokofant|Krokofant]] ([[Benutzer Diskussion:Krokofant|Diskussion]]) 13:11, 5. Dez. 2016 (CET)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
:Ich würde jetzt hier nicht unbedingt eine Aufteilung in Einzelartikel erzwingen. Wenn jemand ein einzelnes Gerät genauer beschreiben will (z.B. weil er es besitzt), kann das gern ein eigener Artikel werden. Derzeit sehe ich den Bedarf nicht - und MAX! ist auch bei weitem nicht so komplex wie HomeMatic. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 16:36, 5. Dez. 2016 (CET)&lt;br /&gt;
:: Stimmt schon. Ich versuche immer in Wikis eine einheitliche Struktur zu finden und diese dann fortzuschreiben. Und beim Komponentenkauf hätte ich jetzt fast übersehen, dass es den MAX!-Eco-Taster (in fhem) überhaupt gibt, weil er hier nur im Sammelartikel vorkommt. Wie wäre es denn mit &amp;lt;nowiki&amp;gt;#REDIRECT&amp;lt;/nowiki&amp;gt;-Artikeln zum entsprechenden Abschnitt im Sammelartikel? --[[Benutzer:Krokofant|Krokofant]] ([[Benutzer Diskussion:Krokofant|Diskussion]]) 19:53, 7. Dez. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Codeschnipsel für HomeMatic-Fenster im MAX-Artikel ==&lt;br /&gt;
Hier [[MAX#Telegram-Benachrichtigung_bei_dauerge.C3.B6ffnetem_Fenster]] wurden Code-Anpassungen für HomeMatic-Fensterkontakt mit dem Hinweis aufgenommen, dass der HomeMatic-Fensterkontakt baugleich zum MAX-Fensterkontakt ist. Das ist meiner Meinung nach nicht so.  Einen MAX-Fensterkontakt kann ich nicht mit HomeMatic-Protokoll ansprechen und umgekehrt. Daher ist die Ergänzung in diesem Artikel deplaziert und falsch. Zudem verwirrt dies. Plane daher das rückgängig zu machen und erbitte Kommentare.&lt;br /&gt;
Gruß, --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 12:29, 21. Jan. 2017 (CET)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
:Hallo Christian - ist mir mit genau den gleichen Gedanken aufgefallen. Sollte da keine Erklärung / Erläuterung kommen, bin ich auch für &amp;quot;revert&amp;quot;. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 12:43, 21. Jan. 2017 (CET)&lt;br /&gt;
::Ersteller der Änderung ist per PM informiert. --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 12:52, 21. Jan. 2017 (CET)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
: Hallo, ich habe die Änderung gemacht. Ist der Status bei wirklich &amp;quot;opened&amp;quot; oder auch &amp;quot;open&amp;quot;? In letzterem Fall - hier geht es ja nur um den Watchdog! - ist meine Ergänzung natürlich überflüssig. Der Watchdog funktioniert natürlich unabhängig ob es MAX oder Homematic ist. Zum Thema baugleich: Sollte der Status bei MAX &amp;quot;opened&amp;quot; sein, schlage ich vor, dass ich es in &amp;quot;optisch ähnlich&amp;quot; ändere, das wollte ich ausdrücken. 13:55, 21.01.2017&lt;br /&gt;
&lt;br /&gt;
== Associate zwischen WT und HT ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wer also via FHEM die desiredTemperature an den Wandthermostaten sendet, verändert damit weder direkt noch indirekt die Einstellung der assoziierten Heizkörper, sondern muss auch an diese Heizkörper senden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Das stimmt so nicht. Wenn ich in fhem die Temperatur am WT ändere wird das auch an die HTs weiter gegeben. Hat das mal irgendwann nicht funktioniert?&lt;br /&gt;
Wenn nichts dagegen spricht würde ich das sonst löschen.&lt;br /&gt;
--[[Benutzer:Mahowi|mahowi]] ([[Benutzer Diskussion:Mahowi|Diskussion]]) 14:26, 21. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:MAX&amp;diff=18720</id>
		<title>Diskussion:MAX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:MAX&amp;diff=18720"/>
		<updated>2017-01-21T13:25:02Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Neuer Abschnitt /* Associate zwischen WT und HT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo zusammen,&lt;br /&gt;
&lt;br /&gt;
so wie es aussieht, funktioniert die gplot Datei nicht mehr (warum auch immer). Ich versuche mal, eine neue zu bauen und werde Sie hier einstellen.&lt;br /&gt;
&lt;br /&gt;
Gruß PeMue&lt;br /&gt;
&lt;br /&gt;
== MAX! Komponenten ==&lt;br /&gt;
Sollte dies nicht eigentlich der Grundlagenartikel sein und die einzelnen Hardwarekomponenten eigene Artikel haben ähnlich wie die Struktur im Homematik-Bereich des Wikis angelegt ist?&lt;br /&gt;
&lt;br /&gt;
Ich besitze keine MAX!-Komponenten würde aber die Artikel anlegen und hier herausnehmen, wenn niemand dagegen spricht. Kommt erstmal auf meine ToDo-Liste, und ich frage vorher im Forum und/oder bei den Autoren nach... --[[Benutzer:Krokofant|Krokofant]] ([[Benutzer Diskussion:Krokofant|Diskussion]]) 13:11, 5. Dez. 2016 (CET)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
:Ich würde jetzt hier nicht unbedingt eine Aufteilung in Einzelartikel erzwingen. Wenn jemand ein einzelnes Gerät genauer beschreiben will (z.B. weil er es besitzt), kann das gern ein eigener Artikel werden. Derzeit sehe ich den Bedarf nicht - und MAX! ist auch bei weitem nicht so komplex wie HomeMatic. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 16:36, 5. Dez. 2016 (CET)&lt;br /&gt;
:: Stimmt schon. Ich versuche immer in Wikis eine einheitliche Struktur zu finden und diese dann fortzuschreiben. Und beim Komponentenkauf hätte ich jetzt fast übersehen, dass es den MAX!-Eco-Taster (in fhem) überhaupt gibt, weil er hier nur im Sammelartikel vorkommt. Wie wäre es denn mit &amp;lt;nowiki&amp;gt;#REDIRECT&amp;lt;/nowiki&amp;gt;-Artikeln zum entsprechenden Abschnitt im Sammelartikel? --[[Benutzer:Krokofant|Krokofant]] ([[Benutzer Diskussion:Krokofant|Diskussion]]) 19:53, 7. Dez. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Codeschnipsel für HomeMatic-Fenster im MAX-Artikel ==&lt;br /&gt;
Hier [[MAX#Telegram-Benachrichtigung_bei_dauerge.C3.B6ffnetem_Fenster]] wurden Code-Anpassungen für HomeMatic-Fensterkontakt mit dem Hinweis aufgenommen, dass der HomeMatic-Fensterkontakt baugleich zum MAX-Fensterkontakt ist. Das ist meiner Meinung nach nicht so.  Einen MAX-Fensterkontakt kann ich nicht mit HomeMatic-Protokoll ansprechen und umgekehrt. Daher ist die Ergänzung in diesem Artikel deplaziert und falsch. Zudem verwirrt dies. Plane daher das rückgängig zu machen und erbitte Kommentare.&lt;br /&gt;
Gruß, --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 12:29, 21. Jan. 2017 (CET)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
:Hallo Christian - ist mir mit genau den gleichen Gedanken aufgefallen. Sollte da keine Erklärung / Erläuterung kommen, bin ich auch für &amp;quot;revert&amp;quot;. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 12:43, 21. Jan. 2017 (CET)&lt;br /&gt;
::Ersteller der Änderung ist per PM informiert. --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 12:52, 21. Jan. 2017 (CET)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
: Hallo, ich habe die Änderung gemacht. Ist der Status bei wirklich &amp;quot;opened&amp;quot; oder auch &amp;quot;open&amp;quot;? In letzterem Fall - hier geht es ja nur um den Watchdog! - ist meine Ergänzung natürlich überflüssig. Der Watchdog funktioniert natürlich unabhängig ob es MAX oder Homematic ist. Zum Thema baugleich: Sollte der Status bei MAX &amp;quot;opened&amp;quot; sein, schlage ich vor, dass ich es in &amp;quot;optisch ähnlich&amp;quot; ändere, das wollte ich ausdrücken. 13:55, 21.01.2017&lt;br /&gt;
&lt;br /&gt;
== Associate zwischen WT und HT ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wer also via FHEM die desiredTemperature an den Wandthermostaten sendet, verändert damit weder direkt noch indirekt die Einstellung der assoziierten Heizkörper, sondern muss auch an diese Heizkörper senden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Das stimmt so nicht. Wenn ich in fhem die Temperatur am WT ändere wird das auch an die HTs weiter gegeben. Hat das mal irgendwann nicht funktioniert?&lt;br /&gt;
Wenn nichts dagegen spricht würde ich das sonst löschen.&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=LaCrosse&amp;diff=18581</id>
		<title>LaCrosse</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=LaCrosse&amp;diff=18581"/>
		<updated>2017-01-19T07:45:36Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Voraussetzungen */ Link zur Firmware&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Unterstützung von La Crosse Sensoren&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=LaCrosse&lt;br /&gt;
|ModForumArea=Sonstige Systeme&lt;br /&gt;
|ModTechName=36_LaCrosse.pm&lt;br /&gt;
|ModOwner=HCS ({{Link2FU|6609|Forum}}) }}&lt;br /&gt;
Das Modul [[LaCrosse]] unterstützt [https://www.lacrossetechnology.com/sensors.php La Crosse] Temperatur- und (Luft)Feuchtesensoren und Wetterstationen wie die WS 1600 (TX22 Sensoren).&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Um &#039;&#039;LaCrosse&#039;&#039;-Geräte nutzen zu können, wird ein [[JeeLink]] [[Interface]] oder ein [[LaCrosseGateway]] als IODevice benötigt, auf dem der LaCrosse Sketch ([https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/arduino/36_LaCrosse-LaCrosseITPlusReader.zip Download]) installiert ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Neue Sensoren werden nur automatisch angelegt, wenn &#039;&#039;LaCrossePairForSec&#039;&#039; auf dem IODevice aktiviert ist.&lt;br /&gt;
&lt;br /&gt;
=== Define ===&lt;br /&gt;
Die Syntax für das manuelle Anlegen eines Sensors ist der commandref zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
Unterstützte Geräte werden im Abschnitt &amp;quot;[[JeeLink#Unterst.C3.BCtzte_Sensoren_und_Aktoren_incl._Wetterstation_WS_1600|Unterstützte Sensoren und Aktoren]]&amp;quot; im Artikel zum JeeLink aufgeführt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Wetterstationen]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=LaCrosse&amp;diff=18580</id>
		<title>LaCrosse</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=LaCrosse&amp;diff=18580"/>
		<updated>2017-01-19T07:31:26Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Anwendungsbeispiele */ Verweis auf unterstützte Geräte im JeeLink-Artikel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Unterstützung von La Crosse Sensoren&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=LaCrosse&lt;br /&gt;
|ModForumArea=Sonstige Systeme&lt;br /&gt;
|ModTechName=36_LaCrosse.pm&lt;br /&gt;
|ModOwner=HCS ({{Link2FU|6609|Forum}}) }}&lt;br /&gt;
Das Modul [[LaCrosse]] unterstützt [https://www.lacrossetechnology.com/sensors.php La Crosse] Temperatur- und (Luft)Feuchtesensoren und Wetterstationen wie die WS 1600 (TX22 Sensoren).&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Um &#039;&#039;LaCrosse&#039;&#039;-Geräte nutzen zu können, wird ein [[JeeLink]] [[Interface]] oder ein [[LaCrosseGateway]] als IODevice benötigt, auf dem der LaCrosse Sketch installiert ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Neue Sensoren werden nur automatisch angelegt, wenn &#039;&#039;LaCrossePairForSec&#039;&#039; auf dem IODevice aktiviert ist.&lt;br /&gt;
&lt;br /&gt;
=== Define ===&lt;br /&gt;
Die Syntax für das manuelle Anlegen eines Sensors ist der commandref zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
Unterstützte Geräte werden im Abschnitt &amp;quot;[[JeeLink#Unterst.C3.BCtzte_Sensoren_und_Aktoren_incl._Wetterstation_WS_1600|Unterstützte Sensoren und Aktoren]]&amp;quot; im Artikel zum JeeLink aufgeführt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Wetterstationen]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=LaCrosseGateway_V1.x&amp;diff=18575</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=18575"/>
		<updated>2017-01-18T18:51:29Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Unterstützte Sensoren und Aktoren */ Verweis auf die Liste der vom JeeLink unterstützen Sensoren und Aktoren, so daß die Liste nicht doppelt geführt werden muß&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.25}}&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;[https://forum.fhem.de/index.php/topic,45594.msg430183.html#msg430183 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;
*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===&lt;br /&gt;
[[Datei:lgw_Schaltplan_Devkit.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: ESP8266-12E===&lt;br /&gt;
[[Datei:lgw_Schaltplan_FTDI.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;
[[Datei:lgw_Schaltplan_Platine.png|400px|thumb|left|Variante: Platine (PeMue)]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Addon Schaltung=== &lt;br /&gt;
[[Datei:lgw_Addon-with-example.png|400px|thumb|left|Die Schaltung des kompletten AddOn mit allen aktuell möglichen Optionen]]&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;
===MCP2308=== &lt;br /&gt;
I2C Adresse 0x27 -&amp;gt; A0,A1,A2 = 3.3V&lt;br /&gt;
&amp;lt;source 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;/source&amp;gt;&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.&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;source 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;/source&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;source 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;/source&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;source 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;/source&amp;gt;&lt;br /&gt;
Beispiel:&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;KV DHT 01 Temperature=21.5,Humidity=62&amp;lt;/source&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;source 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;/source&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;LC 9F T=21.5,H=62&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;LC 9F T=21.5&amp;lt;/source&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;
|}&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;
&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;source 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;/source&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;source 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;/source&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;
===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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway flash&amp;lt;/source&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 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;source 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;/source&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;
===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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;http://&amp;lt;LGW-IP&amp;gt;/getLogData&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;http://192.168.31.211/getLogData&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Ergebnis sieht wie folgt aus:&lt;br /&gt;
&amp;lt;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;sudo apt-get install libwww-perl&amp;lt;/source&amp;gt;&lt;br /&gt;
alternativ auch mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;sudo cpan LWP::UserAgent&amp;lt;/source&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;
==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;source lang=&amp;quot;php&amp;quot;&amp;gt;define myLaCrosseGateway LaCrosseGateway 192.168.22.33:81&amp;lt;/source&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;source 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;/source&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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway timeout 120,30&amp;lt;/source&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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;8266e&amp;lt;/source&amp;gt;&lt;br /&gt;
Er kann mit einem Terminalprogramm, von FHEM aus mit &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set &amp;lt;myLaCrosseGateway&amp;gt; raw 8266e&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;define &amp;lt;name&amp;gt; LaCrosse 00&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 220h&amp;lt;/source&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;source 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;/source&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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 0#1r v&amp;lt;/source&amp;gt;&lt;br /&gt;
| DataRate des ersten RFM setzen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 8842#3r v &amp;lt;/source&amp;gt;&lt;br /&gt;
| DataRate des dritten RFM setzen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868300#2f v&amp;lt;/source&amp;gt;&lt;br /&gt;
| Frequenz des zweiten RFM setzten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868295#3f v&amp;lt;/source&amp;gt;&lt;br /&gt;
| Frequenz des dritten RFM setzten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 17241#1r 8842#2r v&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zwei RFM69CW mit DataRate 17241 und 8842&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 3#1m 20#1t 8842#2r v&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 220h 868295#1f 868310#2f v&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zwei RFMs Frequenz 868295 und 868310 sowie Höhe über NN&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 9#2m 20#2t v&amp;lt;/source&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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;MCP GP0=1,GP1=0&amp;quot;&amp;lt;/source&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;
Um auf dem 1.3&amp;quot; Display eine korrekte Darstellung zu erhalten, muss man die Checkbox 1.3&amp;quot; ankreuzen.&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED On&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Schaltet ein angeschlossenes Display ein &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED Off&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Schaltet ein angeschlossenes Display aus &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED interval=20&amp;quot;&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=ths&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte und Systemdaten an &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=thp&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte und Luftdruck an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=thps&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zeigt ausschließlich den von FHEM festgeleget Text an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=s&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zeigt ausschließlich die Systemdaten an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=55%,,,h&amp;quot;&amp;lt;/source&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;source 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;/source&amp;gt;&lt;br /&gt;
| Zeigt drei Texte aber kein Symbol an.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands &amp;quot;OLED mode=thps&amp;quot;&amp;lt;/source&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;
==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;source lang=&amp;quot;php&amp;quot;&amp;gt;define CULXYZ CUL &amp;lt;IP-Adresse&amp;gt;:85 0000&amp;lt;/source&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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;./esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 115200 -ca 0x00000 -cd nodemcu -ce&amp;lt;/source&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;
[https://forum.fhem.de/index.php/topic,43672.0.html LaCrosseGateway - LaCrosse, PCA301 und EC3000 über wifi mit ESP8266 ohne Arduino]&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,45594.0.html Platine für LaCrosseGateway: Platinenbestellung]&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,51329.30.html Platine für nanoLGW (LaCrosse Gateway): Layout]&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,52921.0.html Display für LaCrosseGateway]&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,52895.0.html SC16IS750-Software-Clone]&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;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=JeeLink&amp;diff=18569</id>
		<title>JeeLink</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=JeeLink&amp;diff=18569"/>
		<updated>2017-01-18T18:34:20Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: EMT7110 bereits in der Liste der vom LaCrosse-Sketch unterstützten Sensoren und Aktoren&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;JeeLink&#039;&#039;&#039; ist ein RF-Gerät im Formfaktor eines USB-Sticks mit externer Antenne.&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=JeeLink.jpg&lt;br /&gt;
|Bildbeschreibung=JeeLink mit Drahtantenne&lt;br /&gt;
|HWProtocol=PCA301, EC3000, RoomNode oder LaCrosse und EMT7110&lt;br /&gt;
|HWType=[[Interface]]&lt;br /&gt;
|HWCategory=&lt;br /&gt;
|HWComm=433/868/913 MHz&lt;br /&gt;
|HWChannels=?&lt;br /&gt;
|HWVoltage=5 V&lt;br /&gt;
|HWPowerConsumption=ca. 90 mA&lt;br /&gt;
|HWPoweredBy=USB&lt;br /&gt;
|HWSize=23*67*9mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#JeeLink 36_JeeLink.pm]&lt;br /&gt;
|ModOwner={{Link2FU|430|Andre / justme1968}}&lt;br /&gt;
|HWManufacturer=JeeLabs&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Vergleichbar mit dem [[CUL]] von Busware, ist der JeeLink ein USB-Stick, mit dem Funk-Hausautomations-Komponenten angebunden werden können. CUL und JeeLink unterscheiden sich im Funkmodul (CUL -&amp;gt; CC1101; JeeLink -&amp;gt; RF12B), die nicht miteinander kompatibel sind. Daher kann man auch keinen CUL als JeeLink-Ersatz nutzen!&lt;br /&gt;
&lt;br /&gt;
Den JeeLink gibt es in einer &lt;br /&gt;
* 433 MHz Version&lt;br /&gt;
* 868 MHz Version (Standard)&lt;br /&gt;
* 915 MHz Version (Betrieb in Europa nicht zugelassen)&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung JeeLink == &lt;br /&gt;
Um mit dem JeeLink die jeweils gewünschten Signale empfangen zu können, ist er zunächst mit der passenden Firmware zu versorgen. Dies kann auf zwei Arten geschehen. Entweder durch das selber kompilieren der Software und das Flashen aus der Arduino IDE oder aus Fhem heraus mit einem aktuellen Firmwareimage das per update mit ausgeliefert wird.&lt;br /&gt;
&lt;br /&gt;
=== Selber Kompilieren ===&lt;br /&gt;
[[Datei:JeeLink_flashen_1.jpg|mini|100px|rechts|Vorbereitung: Arduino einrichten]]&lt;br /&gt;
Um den JeeLink mit Fhem benutzen zu können, muss (mit der Arduino Software / Entwicklungsumgebung (IDE)) eine spezifische &amp;quot;Firmware&amp;quot; (ein Sketch) auf dem JeeLink installiert werden. Die generelle Vorbereitung für diese Aktion ist unabhängig vom benötigten Sketch und besteht aus den folgenden Schritten:&lt;br /&gt;
* Für Windows oder Mac OS X den passenden [http://www.ftdichip.com/Drivers/VCP.htm FTDI Treiber] installieren, unter Linux ist dieser meist schon vorhanden&lt;br /&gt;
* Installation der [http://arduino.cc/de/Guide/HomePage Arduino Software] für die benutzte Plattform (verfügbar sind Windows, Mac OS X und Linux)&lt;br /&gt;
* Je nach Sketch einbinden der [https://github.com/jcw/jeelib/archive/master.zip Jeelabs Library] in die Arduino IDE&lt;br /&gt;
* Herunterladen des benötigten Sketches (aus [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino FHEM/contrib])&lt;br /&gt;
* Anschließen des JeeLink an einen USB-Anschluss des Rechners mit der Arduino IDE&lt;br /&gt;
* Start der Arduino Software und JeeLink flashen&lt;br /&gt;
&lt;br /&gt;
=== JeeLink aus Arduino flashen ===&lt;br /&gt;
[[Datei:JeeLink_flashen_2.jpg|mini|100px|rechts|JeeLink Flashen]]&lt;br /&gt;
* Anschließen des JeeLink an einen USB-Anschluss des Rechners mit der Arduino IDE&lt;br /&gt;
* Start der Arduino Software&lt;br /&gt;
* Seriellen Port des JeeLink auswählen&lt;br /&gt;
* Einstellungen: in den Tools als Board &amp;quot;Arduino Uno&amp;quot; auswählen&lt;br /&gt;
* Sketch mit &amp;quot;Datei öffnen&amp;quot; auswählen&lt;br /&gt;
* Upload klicken&lt;br /&gt;
&lt;br /&gt;
=== JeeLink aus Fhem flashen ===&lt;br /&gt;
* Auf dem Fhem System muss &amp;lt;code&amp;gt;avrdude&amp;lt;/code&amp;gt; installiert sein. Das kann z.B. über die &amp;quot;normale&amp;quot; Linux Paketverwaltung geschehen.&lt;br /&gt;
* mit &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; flash [firmware]&amp;lt;/code&amp;gt; wird das Flashen angestossen&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;firmware&amp;lt;/code&amp;gt; kann LaCrosse, PCA301 oder EC3000 sein. Wenn &amp;lt;code&amp;gt;firmware&amp;lt;/code&amp;gt; nicht angegeben wird versucht FHEM den Namen der zu flashenden Firmware aus der zur Zeit installierten Firmware abzuleiten.&lt;br /&gt;
* im Fhem Log kann der Ausgang des Flashvorgangs kontrolliert werden&lt;br /&gt;
* über das &amp;lt;code&amp;gt;flashCommand&amp;lt;/code&amp;gt; Attribut lässt sich das Kommando zum Flashen an besondere Anforderungen anpassen &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorsicht bei Jeelink Clones!&#039;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Jeelink Clones basierend auf dem Arduino Nano haben normalerweise keinen Optibootloader drauf im Gegensatz zum Original JeeLink und JeeNode. &lt;br /&gt;
&lt;br /&gt;
Konsequenz: &lt;br /&gt;
 &lt;br /&gt;
Beim &amp;quot;Nano Clone&amp;quot; und ähnliches muß man zum flashen in FHEM die Baudrate setzen mit &amp;quot;-b 57600&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Original JeeLink, original JeeNode, und alle Arduinos, die einen Optibootloader drauf haben flashen in FHEM ohne &amp;quot;-b 57600&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit Fhem == &lt;br /&gt;
Um den JeeLink (erstmalig) mit Fhem benutzen zu können, muss dieser erfolgreich geflasht worden sein.&lt;br /&gt;
* JeeLink an den Fhem-Rechner anschließen&lt;br /&gt;
* Auf Linux Systemen kann es notwendig sein, mit &amp;lt;code&amp;gt;mknod /dev/ttyUSB0 c 188 0&amp;lt;/code&amp;gt; das Device anzulegen (bitte erst überprüfen, ob der Stick nicht automatisch erkannt wird)&lt;br /&gt;
&lt;br /&gt;
=== Definition in fhem.cfg ===&lt;br /&gt;
Erforderliche Definitionen in Fhem:&lt;br /&gt;
:&amp;lt;code&amp;gt;define myJeeLink JeeLink /dev/ttyUSBx@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;USBx&#039;&#039;&#039; ist anzupassen an die aktuell benutzte Schnittstelle, 0 wenn sonst nichts am USB-Port hängt&lt;br /&gt;
*x=0,1,2, usw.&lt;br /&gt;
&lt;br /&gt;
Die [http://fhem.de/commandref.html#autocreate autocreate-Funktion] sollte aktiv sein. Alle erkannten Devices (PCA301, LaCrosse Sensoren incl. IT+ Wetterstation WS1600, EMT7110, EC3000,  und RoomNodes) werden dann automatisch angelegt, sobald die jeweiligen Daten empfangen werden.&lt;br /&gt;
&lt;br /&gt;
Pro Geräte-Art/Protokoll muss ein eigener JeeLink mit dem passenden Sketch zum Empfang dieser Daten vorhanden sein (es kann jeweils nur ein Sketch im JeeLink aktiv sein und es gibt (zumindest derzeit (04/2014)) keinen Sketch, der mehr als eines der Protokolle abdeckt).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Der LaCrosse Sketch deckt sowohl die LaCrosse Temperatursensoren, die IT+ Wetterstation WS1600 als auch den Energieverbrauchssensor EMT7110 ab.&lt;br /&gt;
&lt;br /&gt;
=== PCA301 Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der &#039;&#039;PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung&#039;&#039; (PCA301-pcaSerial.zip) kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ FHEM-Repository] heruntergeladen werden. Details zur Benutzung finden sich im Artikel zur [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung|PCA301]].&lt;br /&gt;
&lt;br /&gt;
Unter Umständen werden die Signale der PCA301 nicht empfangen. Insbesondere mit selbst erstellten &amp;quot;JeeLinks&amp;quot; durch wahrscheinlich hohe Bauteiltoleranzen der RF12B Sendeeinheiten. Mit dem im Sketch voreingestellten rf12_center_freq = 0xA6FE (868,9500 MHz) bekommt man in diesem Fall keine Steckdose angelernt.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung über modifizierten Sketch ====&lt;br /&gt;
Durch Tests mittels &#039;&#039;set &amp;lt;myJeeLink&amp;gt; raw +&#039;&#039; bzw &#039;&#039;set &amp;lt;myJeeLink&amp;gt; raw -&#039;&#039; kann man dann ermitteln, ob die Funksignale z.B. ab A703 bis A715 empfangen werden. Das entspricht einem Frequenzbereich zwischen 868,9750 MHz und 869,0550 MHz.&lt;br /&gt;
Die Mitte ist die Lösung, die man dann im Sketch ändern muss:&lt;br /&gt;
:&amp;lt;code&amp;gt;static uint16_t rf12_center_freq = 0xA70C;&amp;lt;/code&amp;gt;&lt;br /&gt;
Anschließend auf den JeeLink neu flashen.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung über Attribut initCommands ====&lt;br /&gt;
Über das &amp;lt;code&amp;gt;initCommands&amp;lt;/code&amp;gt; lässt sich die gefundene Frequenz einstellen, ohne dass die Firmware verändert werden muss. &lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;JeeLinkDevice&amp;gt; initCommands &amp;lt;hhhh&amp;gt;h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LaCrosse Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der LaCrosse Temperatursensoren, der IT+ Wetterstation WS1600 und des Energieverbrauchssensors EMT7110 so wie auch TechnoLine Sensoren (Temperatur, Luftfeuchte,...).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Er kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino FHEM-Repository] heruntergeladen werden.&lt;br /&gt;
* Alternative ist den Sketch direkt über Fhem zu flashen &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; flash LaCrosse&amp;lt;/code&amp;gt; z.B.: &amp;lt;code&amp;gt;set myJeeLink flash LaCrosse&amp;lt;/code&amp;gt; zuvor sollte aber ein Fhem update mit &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; durchgeführt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sensoren anlernen:&lt;br /&gt;
Mit folgenden Befehl hat man die Möglichkeit 60 Sekunden ein Gerät anzulernen. Das Gerät erscheint dann unter der Rubrik LaCrosse. &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; LaCrossePairForSec 60&amp;lt;/code&amp;gt; zum Beispiel: &amp;lt;code&amp;gt;set myJeeLink LaCrossePairForSec 60&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In der neuesten Version unterstützt er auch den SuperJee&#039;&#039;&#039; (siehe auch diesen {{Link2Forum|Topic=14786|Message=316924|LinkText=Forenbeitrag}}) mit folgenden Optionen:  &lt;br /&gt;
&lt;br /&gt;
* Option 1 (Dual RFM): &lt;br /&gt;
:Es kann ein zweiter RFM12B oder RFM69CW angeschlossen werden. Somit können zwei data rates (z.B. 17241 für TX29DTH und 8842 für WS 1600) gleichzeitig empfangen werden. Das geht natürlich auch mit dem toggle mode, nur ist es bei der Wetterstation ärgerlich, wenn man 30 Sekunden lang nichts empfängt und dadurch die alles entscheidende Windböe verpasst.&lt;br /&gt;
* Option 2 (BMP180): &lt;br /&gt;
:Da der Luftdruck in den Basisstationen gemessen wird, steht er für FHEM nicht zur Verfügung.&lt;br /&gt;
Deshalb kann nun optional ein BMP180 oder BMP085 angeschlossen werden. Auch hier wird automatisch erkannt, ob er vorhanden ist. &lt;br /&gt;
:Der BMP180 wird mit 3,3V versorgt und SDA mit PC4 und SCL mit PC5 verbunden (siehe die in diesem {{Link2Forum|Topic=14786|Message=316924|LinkText=Forenbeitrag}} angehängte SuperJee-CL.png) &lt;br /&gt;
&lt;br /&gt;
==== Übersicht Kommandos ====&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;f     initial frequency in kHz (5 kHz steps, 860480 ... 879515)  (for RFM #1)&lt;br /&gt;
 &amp;lt;n&amp;gt;F     initial frequency in kHz (5 kHz steps, 860480 ... 879515)  (for RFM #2)&lt;br /&gt;
 &amp;lt;n&amp;gt;h     altituide above sea level&lt;br /&gt;
 &amp;lt;n&amp;gt;m     bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 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 (for RFM #2)&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;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;
    v     show version&lt;br /&gt;
 &amp;lt;n&amp;gt;y     if 1 all received packets will be retransmitted  (Relay mode)&lt;br /&gt;
&lt;br /&gt;
==== Relay-Betrieb ====&lt;br /&gt;
Der LaCrosse Sketch ermöglicht auch den Relay-Betrieb zur Reichweitenverbesserung. Er funktioniert damit ähnlich wie z.&amp;amp;nbsp;B. ein WLAN Range Extender. Wenn der Sketch für den Relay-Betrieb konfiguriert ist, wird jedes empfangene IT+ Datenpaket, das eine gültige Prüfsumme hat, direkt nach dem Empfang wieder gesendet.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip ist generell recht einfach:&lt;br /&gt;
# JeeLink im Sketch als Relais konfigurieren und flashen.&lt;br /&gt;
# Auf &amp;quot;halber Strecke&amp;quot; (d.h. irgendwo zwischen dem primären Sender und dem entfernten Empfänger) auf ein USB-Steckernetzteil stecken. Der JeeLink arbeitet in diesem Modus &amp;quot;autonom&amp;quot;, er benötigt also lediglich einen Spannungsversorgung.&lt;br /&gt;
&lt;br /&gt;
Der JeeLink empfängt und decodiert alle Protokolle, die er auch für FHEM unterstützt. Wenn er ein Paket empfangen hat (egal von welchem Sensor) und CRC OK war, dann sendet er es wieder aus. Der JeeLink am FHEM merkt keinen Unterschied. Falls ein Paket es doch bis zum FHEM direkt geschafft hat, kommt es dort zweimal an. Diese Situation muss in Fhem behandelt werden.&lt;br /&gt;
&lt;br /&gt;
Details zu diesem Betriebsmodus sind in diesen Forenbeiträgen ({{Link2Forum|Topic=14786|Message=165153|LinkText=LaCrosse}} bzw. {{Link2Forum|Topic=26494|Message=196648|LinkText=EMT7110}}) zu finden.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung ====&lt;br /&gt;
Ab Version LaCrosseITPlusReader.10.1e wurde der  Sketch so erweitert, dass man von FHEM aus die Frequenz setzen kann. Dazu versteht der Sketch das neue Kommando &amp;quot;f&amp;quot;:&lt;br /&gt;
:&amp;lt;code&amp;gt;set myJeeLink raw 868295f&amp;lt;/code&amp;gt;&lt;br /&gt;
setzt die Frequenz auf 868295 kHz.&lt;br /&gt;
&lt;br /&gt;
Die Frequenz kann im Bereich von 860480 kHz bis 879515 kHz in 5kHz -Schritten eingestellt werden.&lt;br /&gt;
Details dazu in diesem {{Link2Forum|Topic=14786|Message=222541}} im Forum. Die Frequenzanpassung ist insbesondere beim 30.3155.WD häufig erforderlich, weshalb er als kritisch einzustufen und nicht zu empfehlen ist (siehe {{Link2Forum|Topic=14786|Message=352550|LinkText=Forenbeitrag}}).&lt;br /&gt;
&lt;br /&gt;
==== Toggle und Datenrate ====&lt;br /&gt;
Toggle&lt;br /&gt;
 t: toggle time&lt;br /&gt;
 20t = alle 20 Sekunden die Datenrate wechseln&lt;br /&gt;
&lt;br /&gt;
Datenrate&lt;br /&gt;
 m: toggle mode&lt;br /&gt;
 bits:  1= 17.241 kbps, 2= 9.579 kbps, 4= 8.842 kbps&lt;br /&gt;
 3m ist 17.241 kbps (TX29) und 9.579 kbps (TX35)&lt;br /&gt;
&lt;br /&gt;
Beispiel initCommands&lt;br /&gt;
 6m 30t v&lt;br /&gt;
 Zwischen 8.842 kbps und 9.579 kbps wechseln (4+2=6), alle 30 Sekunden&lt;br /&gt;
&lt;br /&gt;
==== Unterstützte Sensoren und Aktoren incl. Wetterstation WS 1600 ====&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Die Ausführungen in diesem Abschnitt gelten ab der Version 10.1q auch für die Wetterstation WS1080.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig WS1800&#039;&#039;&#039;: die WS1080 gibt es (unter gleichem Namen) in einer &amp;quot;OOK&amp;quot;- und in einer &amp;quot;FSK&amp;quot;-Version.&lt;br /&gt;
* Der LaCrosse Sketch und das LaCrosseGateway können nur die FSK-Version empfangen, die OOK-Version wird  nicht unterstützt.&lt;br /&gt;
* Die FSK-Version ist zu erkennen an einem runden grünen Aufkleber im Batteriefach der Station mit dem Aufdruck &amp;quot;PASS 7&amp;quot;. Details dazu in {{Link2Forum|Topic=14786|Message=363766|LinkText=diesem Forenbeitrag}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Die in der folgenden Liste (Quelle: {{Link2Forum|Topic=14786|Message=164801|LinkText=Fhem Forum}}) aufgeführten Sensoren wurden bisher erfolgreich getestet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung     !! Datenrate   !! Link / Hinweise&lt;br /&gt;
|-&lt;br /&gt;
| TX21IT         || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX25-IT        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX27-IT        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX29-IT        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX29DTH-IT     || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX37           || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX35TH-IT      ||  9.579 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX35DTH-IT     ||  9.579 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3143.IT     || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3144.IT     || 17.241 kbps || ({{Link2Forum|Topic=17662|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| 30.3147.IT     || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3155WD      ||  9.579 kbps || kritisch; nicht zu empfehlen; siehe {{Link2Forum|Topic=14786|Message=352550|LinkText=Forenbeitrag}}&lt;br /&gt;
|-&lt;br /&gt;
| 30.3156WD      ||  9.579 kbps || Batterie-kritisch. Funktioniert schlecht mit Akkus!&lt;br /&gt;
|-&lt;br /&gt;
| 30.3187.IT     || 17.241 kbps || haben alle die gleiche ID, daher nur einzeln verwendbar ({{Link2Forum|Topic=64636|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| WT440XH        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| WS 1600 (TX22) ||  8.842 kbps || ({{Link2Forum|Topic=14786|Message=297293|LinkText=Forenbeitrag}})&lt;br /&gt;
|-&lt;br /&gt;
| WS 1080        || 17.241 kbps || Bitte Hinweise beachten! ({{Link2Forum|Topic=14786|Message=363766|LinkText=Forenbeitrag}})&lt;br /&gt;
|-&lt;br /&gt;
| [[EMT7110]]    ||  9.579 kbps || ({{Link2Forum|Topic=26494|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| LevelSender    || 17.241 kbps || ({{Link2Forum|Topic=23217|LinkText=Forenthread}})&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Werden Sensoren mit unterschiedlichen Datenraten gleichzeitig betrieben, ist der Toggle Modus einzustellen, z.B. mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;initCommands 6m 30t v &amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;30t&#039;&#039; für &amp;quot;Toggle Modus, alle 30 Sekunden&amp;quot; steht.&lt;br /&gt;
&lt;br /&gt;
=== Energy Count 3000 Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der Energy Count 3000 Zwischenstecker kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ FHEM-Repository] heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Das Fhem Modul dazu (36_EC3000.pm) ist genau wie die Module für JeeLink (36_JeeLink.pm) und PCA301 (36_PCA301.pm) mittlerweile im aktuellen Fhem enthalten.&lt;br /&gt;
&lt;br /&gt;
=== JeeLabs RoomNode ===&lt;br /&gt;
Eine Beschreibung zum Empfang der JeeLabs RoomNodes ist in {{Link2Forum|Topic=11648|Message=92037|LinkText=diesem Forenbeitrag}} enthalten.&lt;br /&gt;
&lt;br /&gt;
=== JeeLink LED deaktivieren ===&lt;br /&gt;
Ein &amp;quot;dauerhaftes&amp;quot; Deaktivieren der LED des JeeLink ist möglich mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define not.global notify global:INITIALIZED set myJeeLink led off&amp;lt;/code&amp;gt;&lt;br /&gt;
damit wird, sobald Fhem komplett gestartet ist, von Fhem der Befehl zum Ausschalten der LED gesendet. Alternativ kann mit &lt;br /&gt;
:&amp;lt;code&amp;gt;attr myJeeLink initCommands 0a v&amp;lt;/code&amp;gt;&lt;br /&gt;
dem Sketch die Anweisung gegeben werden, bei der Initialisierung die LED zu deaktivieren.&lt;br /&gt;
&#039;&#039;Quelle: dieser {{Link2Forum|Topic=27161|LinkText=Forenthread}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Weitergehende Informationen ===&lt;br /&gt;
Hinweise zum Betrieb eines JeeLink mit Fhem finden sich aktuell in größerer Anzahl in verschiedenen Diskussionen im Forum:&lt;br /&gt;
* {{Link2Forum|Topic=11648|LinkText=JeeLink / PCA301}} - Analyse des Funkprotokolls; Anfänge der Entstehung der PCA301 Unterstützung in Fhem.&lt;br /&gt;
* {{Link2Forum|Topic=14786|LinkText=JeeLink / LaCrosse}} - JeeLink Modul zur Einbindung von La Crosse&lt;br /&gt;
* {{Link2Forum|Topic=11648|Message=92019|LinkText=JeeLink / EC3000}} - Anfänge der Entstehung der EC3000 Unterstützung in Fhem.&lt;br /&gt;
* Hinweise zu {{Link2Forum|Topic=11648|Message=92037|LinkText=JeeLabs RoomNode}} und anderen JeeLab Nodes&lt;br /&gt;
* {{Link2Forum|Topic=25399|Message=183910|LinkText=JeeLink mit FHEM2FHEM nutzen}}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Beim Betrieb an einer [[AVM Fritz!Box|FritzBox]] wird der JeeLink unter Umständen als &#039;&#039;Für die Nutzung mit dem USB-Fernanschluss reserviert&#039;&#039; angezeigt. In diesem Fall muss die Reservierung deaktiviert/aufgehoben werden (Details dazu in diesem {{Link2Forum|Topic=16579|LinkText=Forenthread}}).&lt;br /&gt;
* Die Version &#039;&#039;v3c&#039;&#039; des JeeLink funktioniert (Stand 06/2015) nur mit dem LaCrosse Sketch. PCA301 und EC3000 Sketch sind auf den JeeLink Classic beschränkt (siehe unter anderem Diskussion im Forum, startend {{Link2Forum|Topic=11648|Message=308267|LinkText=hier}}).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://jeelabs.com/products/jeelink JeeLabs], JeeLink Hersteller&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ PCA301 Sketch] im SVN&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ LaCrosse Sketch] im SVN&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ EC3000 Sketch] im SVN&lt;br /&gt;
* [http://blog.moneybag.de/hausautomation-fhem-mit-funksteckdose-energiemessung-elv-pca-301/ Blog] zum Thema JeeLink zur Anbindung von PCA301 und von LaCrosse Temperatursensoren an Fhem&lt;br /&gt;
* {{Link2Forum|Topic=23217|LinkText=LevelSender}} Tankfüllstand mit JeeLink empfangen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Wetterstationen]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=JeeLink&amp;diff=18568</id>
		<title>JeeLink</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=JeeLink&amp;diff=18568"/>
		<updated>2017-01-18T18:26:43Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Getestete iT+ Sensoren incl. Wetterstation WS 1600 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;JeeLink&#039;&#039;&#039; ist ein RF-Gerät im Formfaktor eines USB-Sticks mit externer Antenne.&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=JeeLink.jpg&lt;br /&gt;
|Bildbeschreibung=JeeLink mit Drahtantenne&lt;br /&gt;
|HWProtocol=PCA301, EC3000, RoomNode oder LaCrosse und EMT7110&lt;br /&gt;
|HWType=[[Interface]]&lt;br /&gt;
|HWCategory=&lt;br /&gt;
|HWComm=433/868/913 MHz&lt;br /&gt;
|HWChannels=?&lt;br /&gt;
|HWVoltage=5 V&lt;br /&gt;
|HWPowerConsumption=ca. 90 mA&lt;br /&gt;
|HWPoweredBy=USB&lt;br /&gt;
|HWSize=23*67*9mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#JeeLink 36_JeeLink.pm]&lt;br /&gt;
|ModOwner={{Link2FU|430|Andre / justme1968}}&lt;br /&gt;
|HWManufacturer=JeeLabs&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Vergleichbar mit dem [[CUL]] von Busware, ist der JeeLink ein USB-Stick, mit dem Funk-Hausautomations-Komponenten angebunden werden können. CUL und JeeLink unterscheiden sich im Funkmodul (CUL -&amp;gt; CC1101; JeeLink -&amp;gt; RF12B), die nicht miteinander kompatibel sind. Daher kann man auch keinen CUL als JeeLink-Ersatz nutzen!&lt;br /&gt;
&lt;br /&gt;
Den JeeLink gibt es in einer &lt;br /&gt;
* 433 MHz Version&lt;br /&gt;
* 868 MHz Version (Standard)&lt;br /&gt;
* 915 MHz Version (Betrieb in Europa nicht zugelassen)&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung JeeLink == &lt;br /&gt;
Um mit dem JeeLink die jeweils gewünschten Signale empfangen zu können, ist er zunächst mit der passenden Firmware zu versorgen. Dies kann auf zwei Arten geschehen. Entweder durch das selber kompilieren der Software und das Flashen aus der Arduino IDE oder aus Fhem heraus mit einem aktuellen Firmwareimage das per update mit ausgeliefert wird.&lt;br /&gt;
&lt;br /&gt;
=== Selber Kompilieren ===&lt;br /&gt;
[[Datei:JeeLink_flashen_1.jpg|mini|100px|rechts|Vorbereitung: Arduino einrichten]]&lt;br /&gt;
Um den JeeLink mit Fhem benutzen zu können, muss (mit der Arduino Software / Entwicklungsumgebung (IDE)) eine spezifische &amp;quot;Firmware&amp;quot; (ein Sketch) auf dem JeeLink installiert werden. Die generelle Vorbereitung für diese Aktion ist unabhängig vom benötigten Sketch und besteht aus den folgenden Schritten:&lt;br /&gt;
* Für Windows oder Mac OS X den passenden [http://www.ftdichip.com/Drivers/VCP.htm FTDI Treiber] installieren, unter Linux ist dieser meist schon vorhanden&lt;br /&gt;
* Installation der [http://arduino.cc/de/Guide/HomePage Arduino Software] für die benutzte Plattform (verfügbar sind Windows, Mac OS X und Linux)&lt;br /&gt;
* Je nach Sketch einbinden der [https://github.com/jcw/jeelib/archive/master.zip Jeelabs Library] in die Arduino IDE&lt;br /&gt;
* Herunterladen des benötigten Sketches (aus [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino FHEM/contrib])&lt;br /&gt;
* Anschließen des JeeLink an einen USB-Anschluss des Rechners mit der Arduino IDE&lt;br /&gt;
* Start der Arduino Software und JeeLink flashen&lt;br /&gt;
&lt;br /&gt;
=== JeeLink aus Arduino flashen ===&lt;br /&gt;
[[Datei:JeeLink_flashen_2.jpg|mini|100px|rechts|JeeLink Flashen]]&lt;br /&gt;
* Anschließen des JeeLink an einen USB-Anschluss des Rechners mit der Arduino IDE&lt;br /&gt;
* Start der Arduino Software&lt;br /&gt;
* Seriellen Port des JeeLink auswählen&lt;br /&gt;
* Einstellungen: in den Tools als Board &amp;quot;Arduino Uno&amp;quot; auswählen&lt;br /&gt;
* Sketch mit &amp;quot;Datei öffnen&amp;quot; auswählen&lt;br /&gt;
* Upload klicken&lt;br /&gt;
&lt;br /&gt;
=== JeeLink aus Fhem flashen ===&lt;br /&gt;
* Auf dem Fhem System muss &amp;lt;code&amp;gt;avrdude&amp;lt;/code&amp;gt; installiert sein. Das kann z.B. über die &amp;quot;normale&amp;quot; Linux Paketverwaltung geschehen.&lt;br /&gt;
* mit &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; flash [firmware]&amp;lt;/code&amp;gt; wird das Flashen angestossen&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;firmware&amp;lt;/code&amp;gt; kann LaCrosse, PCA301 oder EC3000 sein. Wenn &amp;lt;code&amp;gt;firmware&amp;lt;/code&amp;gt; nicht angegeben wird versucht FHEM den Namen der zu flashenden Firmware aus der zur Zeit installierten Firmware abzuleiten.&lt;br /&gt;
* im Fhem Log kann der Ausgang des Flashvorgangs kontrolliert werden&lt;br /&gt;
* über das &amp;lt;code&amp;gt;flashCommand&amp;lt;/code&amp;gt; Attribut lässt sich das Kommando zum Flashen an besondere Anforderungen anpassen &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorsicht bei Jeelink Clones!&#039;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Jeelink Clones basierend auf dem Arduino Nano haben normalerweise keinen Optibootloader drauf im Gegensatz zum Original JeeLink und JeeNode. &lt;br /&gt;
&lt;br /&gt;
Konsequenz: &lt;br /&gt;
 &lt;br /&gt;
Beim &amp;quot;Nano Clone&amp;quot; und ähnliches muß man zum flashen in FHEM die Baudrate setzen mit &amp;quot;-b 57600&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Original JeeLink, original JeeNode, und alle Arduinos, die einen Optibootloader drauf haben flashen in FHEM ohne &amp;quot;-b 57600&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit Fhem == &lt;br /&gt;
Um den JeeLink (erstmalig) mit Fhem benutzen zu können, muss dieser erfolgreich geflasht worden sein.&lt;br /&gt;
* JeeLink an den Fhem-Rechner anschließen&lt;br /&gt;
* Auf Linux Systemen kann es notwendig sein, mit &amp;lt;code&amp;gt;mknod /dev/ttyUSB0 c 188 0&amp;lt;/code&amp;gt; das Device anzulegen (bitte erst überprüfen, ob der Stick nicht automatisch erkannt wird)&lt;br /&gt;
&lt;br /&gt;
=== Definition in fhem.cfg ===&lt;br /&gt;
Erforderliche Definitionen in Fhem:&lt;br /&gt;
:&amp;lt;code&amp;gt;define myJeeLink JeeLink /dev/ttyUSBx@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;USBx&#039;&#039;&#039; ist anzupassen an die aktuell benutzte Schnittstelle, 0 wenn sonst nichts am USB-Port hängt&lt;br /&gt;
*x=0,1,2, usw.&lt;br /&gt;
&lt;br /&gt;
Die [http://fhem.de/commandref.html#autocreate autocreate-Funktion] sollte aktiv sein. Alle erkannten Devices (PCA301, LaCrosse Sensoren incl. IT+ Wetterstation WS1600, EMT7110, EC3000,  und RoomNodes) werden dann automatisch angelegt, sobald die jeweiligen Daten empfangen werden.&lt;br /&gt;
&lt;br /&gt;
Pro Geräte-Art/Protokoll muss ein eigener JeeLink mit dem passenden Sketch zum Empfang dieser Daten vorhanden sein (es kann jeweils nur ein Sketch im JeeLink aktiv sein und es gibt (zumindest derzeit (04/2014)) keinen Sketch, der mehr als eines der Protokolle abdeckt).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Der LaCrosse Sketch deckt sowohl die LaCrosse Temperatursensoren, die IT+ Wetterstation WS1600 als auch den Energieverbrauchssensor EMT7110 ab.&lt;br /&gt;
&lt;br /&gt;
=== PCA301 Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der &#039;&#039;PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung&#039;&#039; (PCA301-pcaSerial.zip) kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ FHEM-Repository] heruntergeladen werden. Details zur Benutzung finden sich im Artikel zur [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung|PCA301]].&lt;br /&gt;
&lt;br /&gt;
Unter Umständen werden die Signale der PCA301 nicht empfangen. Insbesondere mit selbst erstellten &amp;quot;JeeLinks&amp;quot; durch wahrscheinlich hohe Bauteiltoleranzen der RF12B Sendeeinheiten. Mit dem im Sketch voreingestellten rf12_center_freq = 0xA6FE (868,9500 MHz) bekommt man in diesem Fall keine Steckdose angelernt.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung über modifizierten Sketch ====&lt;br /&gt;
Durch Tests mittels &#039;&#039;set &amp;lt;myJeeLink&amp;gt; raw +&#039;&#039; bzw &#039;&#039;set &amp;lt;myJeeLink&amp;gt; raw -&#039;&#039; kann man dann ermitteln, ob die Funksignale z.B. ab A703 bis A715 empfangen werden. Das entspricht einem Frequenzbereich zwischen 868,9750 MHz und 869,0550 MHz.&lt;br /&gt;
Die Mitte ist die Lösung, die man dann im Sketch ändern muss:&lt;br /&gt;
:&amp;lt;code&amp;gt;static uint16_t rf12_center_freq = 0xA70C;&amp;lt;/code&amp;gt;&lt;br /&gt;
Anschließend auf den JeeLink neu flashen.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung über Attribut initCommands ====&lt;br /&gt;
Über das &amp;lt;code&amp;gt;initCommands&amp;lt;/code&amp;gt; lässt sich die gefundene Frequenz einstellen, ohne dass die Firmware verändert werden muss. &lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;JeeLinkDevice&amp;gt; initCommands &amp;lt;hhhh&amp;gt;h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LaCrosse Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der LaCrosse Temperatursensoren, der IT+ Wetterstation WS1600 und des Energieverbrauchssensors EMT7110 so wie auch TechnoLine Sensoren (Temperatur, Luftfeuchte,...).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Er kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino FHEM-Repository] heruntergeladen werden.&lt;br /&gt;
* Alternative ist den Sketch direkt über Fhem zu flashen &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; flash LaCrosse&amp;lt;/code&amp;gt; z.B.: &amp;lt;code&amp;gt;set myJeeLink flash LaCrosse&amp;lt;/code&amp;gt; zuvor sollte aber ein Fhem update mit &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; durchgeführt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sensoren anlernen:&lt;br /&gt;
Mit folgenden Befehl hat man die Möglichkeit 60 Sekunden ein Gerät anzulernen. Das Gerät erscheint dann unter der Rubrik LaCrosse. &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; LaCrossePairForSec 60&amp;lt;/code&amp;gt; zum Beispiel: &amp;lt;code&amp;gt;set myJeeLink LaCrossePairForSec 60&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In der neuesten Version unterstützt er auch den SuperJee&#039;&#039;&#039; (siehe auch diesen {{Link2Forum|Topic=14786|Message=316924|LinkText=Forenbeitrag}}) mit folgenden Optionen:  &lt;br /&gt;
&lt;br /&gt;
* Option 1 (Dual RFM): &lt;br /&gt;
:Es kann ein zweiter RFM12B oder RFM69CW angeschlossen werden. Somit können zwei data rates (z.B. 17241 für TX29DTH und 8842 für WS 1600) gleichzeitig empfangen werden. Das geht natürlich auch mit dem toggle mode, nur ist es bei der Wetterstation ärgerlich, wenn man 30 Sekunden lang nichts empfängt und dadurch die alles entscheidende Windböe verpasst.&lt;br /&gt;
* Option 2 (BMP180): &lt;br /&gt;
:Da der Luftdruck in den Basisstationen gemessen wird, steht er für FHEM nicht zur Verfügung.&lt;br /&gt;
Deshalb kann nun optional ein BMP180 oder BMP085 angeschlossen werden. Auch hier wird automatisch erkannt, ob er vorhanden ist. &lt;br /&gt;
:Der BMP180 wird mit 3,3V versorgt und SDA mit PC4 und SCL mit PC5 verbunden (siehe die in diesem {{Link2Forum|Topic=14786|Message=316924|LinkText=Forenbeitrag}} angehängte SuperJee-CL.png) &lt;br /&gt;
&lt;br /&gt;
==== Übersicht Kommandos ====&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;f     initial frequency in kHz (5 kHz steps, 860480 ... 879515)  (for RFM #1)&lt;br /&gt;
 &amp;lt;n&amp;gt;F     initial frequency in kHz (5 kHz steps, 860480 ... 879515)  (for RFM #2)&lt;br /&gt;
 &amp;lt;n&amp;gt;h     altituide above sea level&lt;br /&gt;
 &amp;lt;n&amp;gt;m     bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 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 (for RFM #2)&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;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;
    v     show version&lt;br /&gt;
 &amp;lt;n&amp;gt;y     if 1 all received packets will be retransmitted  (Relay mode)&lt;br /&gt;
&lt;br /&gt;
==== Relay-Betrieb ====&lt;br /&gt;
Der LaCrosse Sketch ermöglicht auch den Relay-Betrieb zur Reichweitenverbesserung. Er funktioniert damit ähnlich wie z.&amp;amp;nbsp;B. ein WLAN Range Extender. Wenn der Sketch für den Relay-Betrieb konfiguriert ist, wird jedes empfangene IT+ Datenpaket, das eine gültige Prüfsumme hat, direkt nach dem Empfang wieder gesendet.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip ist generell recht einfach:&lt;br /&gt;
# JeeLink im Sketch als Relais konfigurieren und flashen.&lt;br /&gt;
# Auf &amp;quot;halber Strecke&amp;quot; (d.h. irgendwo zwischen dem primären Sender und dem entfernten Empfänger) auf ein USB-Steckernetzteil stecken. Der JeeLink arbeitet in diesem Modus &amp;quot;autonom&amp;quot;, er benötigt also lediglich einen Spannungsversorgung.&lt;br /&gt;
&lt;br /&gt;
Der JeeLink empfängt und decodiert alle Protokolle, die er auch für FHEM unterstützt. Wenn er ein Paket empfangen hat (egal von welchem Sensor) und CRC OK war, dann sendet er es wieder aus. Der JeeLink am FHEM merkt keinen Unterschied. Falls ein Paket es doch bis zum FHEM direkt geschafft hat, kommt es dort zweimal an. Diese Situation muss in Fhem behandelt werden.&lt;br /&gt;
&lt;br /&gt;
Details zu diesem Betriebsmodus sind in diesen Forenbeiträgen ({{Link2Forum|Topic=14786|Message=165153|LinkText=LaCrosse}} bzw. {{Link2Forum|Topic=26494|Message=196648|LinkText=EMT7110}}) zu finden.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung ====&lt;br /&gt;
Ab Version LaCrosseITPlusReader.10.1e wurde der  Sketch so erweitert, dass man von FHEM aus die Frequenz setzen kann. Dazu versteht der Sketch das neue Kommando &amp;quot;f&amp;quot;:&lt;br /&gt;
:&amp;lt;code&amp;gt;set myJeeLink raw 868295f&amp;lt;/code&amp;gt;&lt;br /&gt;
setzt die Frequenz auf 868295 kHz.&lt;br /&gt;
&lt;br /&gt;
Die Frequenz kann im Bereich von 860480 kHz bis 879515 kHz in 5kHz -Schritten eingestellt werden.&lt;br /&gt;
Details dazu in diesem {{Link2Forum|Topic=14786|Message=222541}} im Forum. Die Frequenzanpassung ist insbesondere beim 30.3155.WD häufig erforderlich, weshalb er als kritisch einzustufen und nicht zu empfehlen ist (siehe {{Link2Forum|Topic=14786|Message=352550|LinkText=Forenbeitrag}}).&lt;br /&gt;
&lt;br /&gt;
==== Toggle und Datenrate ====&lt;br /&gt;
Toggle&lt;br /&gt;
 t: toggle time&lt;br /&gt;
 20t = alle 20 Sekunden die Datenrate wechseln&lt;br /&gt;
&lt;br /&gt;
Datenrate&lt;br /&gt;
 m: toggle mode&lt;br /&gt;
 bits:  1= 17.241 kbps, 2= 9.579 kbps, 4= 8.842 kbps&lt;br /&gt;
 3m ist 17.241 kbps (TX29) und 9.579 kbps (TX35)&lt;br /&gt;
&lt;br /&gt;
Beispiel initCommands&lt;br /&gt;
 6m 30t v&lt;br /&gt;
 Zwischen 8.842 kbps und 9.579 kbps wechseln (4+2=6), alle 30 Sekunden&lt;br /&gt;
&lt;br /&gt;
==== Unterstützte Sensoren und Aktoren incl. Wetterstation WS 1600 ====&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Die Ausführungen in diesem Abschnitt gelten ab der Version 10.1q auch für die Wetterstation WS1080.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig WS1800&#039;&#039;&#039;: die WS1080 gibt es (unter gleichem Namen) in einer &amp;quot;OOK&amp;quot;- und in einer &amp;quot;FSK&amp;quot;-Version.&lt;br /&gt;
* Der LaCrosse Sketch und das LaCrosseGateway können nur die FSK-Version empfangen, die OOK-Version wird  nicht unterstützt.&lt;br /&gt;
* Die FSK-Version ist zu erkennen an einem runden grünen Aufkleber im Batteriefach der Station mit dem Aufdruck &amp;quot;PASS 7&amp;quot;. Details dazu in {{Link2Forum|Topic=14786|Message=363766|LinkText=diesem Forenbeitrag}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Die in der folgenden Liste (Quelle: {{Link2Forum|Topic=14786|Message=164801|LinkText=Fhem Forum}}) aufgeführten Sensoren wurden bisher erfolgreich getestet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung     !! Datenrate   !! Link / Hinweise&lt;br /&gt;
|-&lt;br /&gt;
| TX21IT         || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX25-IT        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX27-IT        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX29-IT        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX29DTH-IT     || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX37           || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX35TH-IT      ||  9.579 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX35DTH-IT     ||  9.579 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3143.IT     || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3144.IT     || 17.241 kbps || ({{Link2Forum|Topic=17662|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| 30.3147.IT     || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3155WD      ||  9.579 kbps || kritisch; nicht zu empfehlen; siehe {{Link2Forum|Topic=14786|Message=352550|LinkText=Forenbeitrag}}&lt;br /&gt;
|-&lt;br /&gt;
| 30.3156WD      ||  9.579 kbps || Batterie-kritisch. Funktioniert schlecht mit Akkus!&lt;br /&gt;
|-&lt;br /&gt;
| 30.3187.IT     || 17.241 kbps || haben alle die gleiche ID, daher nur einzeln verwendbar ({{Link2Forum|Topic=64636|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| WT440XH        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| WS 1600 (TX22) ||  8.842 kbps || ({{Link2Forum|Topic=14786|Message=297293|LinkText=Forenbeitrag}})&lt;br /&gt;
|-&lt;br /&gt;
| WS 1080        || 17.241 kbps || Bitte Hinweise beachten! ({{Link2Forum|Topic=14786|Message=363766|LinkText=Forenbeitrag}})&lt;br /&gt;
|-&lt;br /&gt;
| [[EMT7110]]    ||  9.579 kbps || ({{Link2Forum|Topic=26494|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| LevelSender    || 17.241 kbps || ({{Link2Forum|Topic=23217|LinkText=Forenthread}})&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== EMT7110 ====&lt;br /&gt;
Der [[EMT7110]] läuft mit einer Datenrate von 9.579 kbps (Details dazu in diesem {{Link2Forum|Topic=26494|LinkText=Forenthread}}).&lt;br /&gt;
&lt;br /&gt;
Werden Sensoren mit unterschiedlichen Datenraten gleichzeitig betrieben, ist der Toggle Modus einzustellen, z.B. mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;initCommands 30t v &amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;30t&#039;&#039; für &amp;quot;Toggle Modus, alle 30 Sekunden&amp;quot; steht.&lt;br /&gt;
&lt;br /&gt;
=== Energy Count 3000 Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der Energy Count 3000 Zwischenstecker kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ FHEM-Repository] heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Das Fhem Modul dazu (36_EC3000.pm) ist genau wie die Module für JeeLink (36_JeeLink.pm) und PCA301 (36_PCA301.pm) mittlerweile im aktuellen Fhem enthalten.&lt;br /&gt;
&lt;br /&gt;
=== JeeLabs RoomNode ===&lt;br /&gt;
Eine Beschreibung zum Empfang der JeeLabs RoomNodes ist in {{Link2Forum|Topic=11648|Message=92037|LinkText=diesem Forenbeitrag}} enthalten.&lt;br /&gt;
&lt;br /&gt;
=== JeeLink LED deaktivieren ===&lt;br /&gt;
Ein &amp;quot;dauerhaftes&amp;quot; Deaktivieren der LED des JeeLink ist möglich mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define not.global notify global:INITIALIZED set myJeeLink led off&amp;lt;/code&amp;gt;&lt;br /&gt;
damit wird, sobald Fhem komplett gestartet ist, von Fhem der Befehl zum Ausschalten der LED gesendet. Alternativ kann mit &lt;br /&gt;
:&amp;lt;code&amp;gt;attr myJeeLink initCommands 0a v&amp;lt;/code&amp;gt;&lt;br /&gt;
dem Sketch die Anweisung gegeben werden, bei der Initialisierung die LED zu deaktivieren.&lt;br /&gt;
&#039;&#039;Quelle: dieser {{Link2Forum|Topic=27161|LinkText=Forenthread}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Weitergehende Informationen ===&lt;br /&gt;
Hinweise zum Betrieb eines JeeLink mit Fhem finden sich aktuell in größerer Anzahl in verschiedenen Diskussionen im Forum:&lt;br /&gt;
* {{Link2Forum|Topic=11648|LinkText=JeeLink / PCA301}} - Analyse des Funkprotokolls; Anfänge der Entstehung der PCA301 Unterstützung in Fhem.&lt;br /&gt;
* {{Link2Forum|Topic=14786|LinkText=JeeLink / LaCrosse}} - JeeLink Modul zur Einbindung von La Crosse&lt;br /&gt;
* {{Link2Forum|Topic=11648|Message=92019|LinkText=JeeLink / EC3000}} - Anfänge der Entstehung der EC3000 Unterstützung in Fhem.&lt;br /&gt;
* Hinweise zu {{Link2Forum|Topic=11648|Message=92037|LinkText=JeeLabs RoomNode}} und anderen JeeLab Nodes&lt;br /&gt;
* {{Link2Forum|Topic=25399|Message=183910|LinkText=JeeLink mit FHEM2FHEM nutzen}}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Beim Betrieb an einer [[AVM Fritz!Box|FritzBox]] wird der JeeLink unter Umständen als &#039;&#039;Für die Nutzung mit dem USB-Fernanschluss reserviert&#039;&#039; angezeigt. In diesem Fall muss die Reservierung deaktiviert/aufgehoben werden (Details dazu in diesem {{Link2Forum|Topic=16579|LinkText=Forenthread}}).&lt;br /&gt;
* Die Version &#039;&#039;v3c&#039;&#039; des JeeLink funktioniert (Stand 06/2015) nur mit dem LaCrosse Sketch. PCA301 und EC3000 Sketch sind auf den JeeLink Classic beschränkt (siehe unter anderem Diskussion im Forum, startend {{Link2Forum|Topic=11648|Message=308267|LinkText=hier}}).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://jeelabs.com/products/jeelink JeeLabs], JeeLink Hersteller&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ PCA301 Sketch] im SVN&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ LaCrosse Sketch] im SVN&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ EC3000 Sketch] im SVN&lt;br /&gt;
* [http://blog.moneybag.de/hausautomation-fhem-mit-funksteckdose-energiemessung-elv-pca-301/ Blog] zum Thema JeeLink zur Anbindung von PCA301 und von LaCrosse Temperatursensoren an Fhem&lt;br /&gt;
* {{Link2Forum|Topic=23217|LinkText=LevelSender}} Tankfüllstand mit JeeLink empfangen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Wetterstationen]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=JeeLink&amp;diff=18566</id>
		<title>JeeLink</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=JeeLink&amp;diff=18566"/>
		<updated>2017-01-18T18:24:44Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Getestete iT+ Sensoren incl. Wetterstation WS 1600 */ Abgleich mit Einträgen in LaCrosseGateway&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;JeeLink&#039;&#039;&#039; ist ein RF-Gerät im Formfaktor eines USB-Sticks mit externer Antenne.&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=JeeLink.jpg&lt;br /&gt;
|Bildbeschreibung=JeeLink mit Drahtantenne&lt;br /&gt;
|HWProtocol=PCA301, EC3000, RoomNode oder LaCrosse und EMT7110&lt;br /&gt;
|HWType=[[Interface]]&lt;br /&gt;
|HWCategory=&lt;br /&gt;
|HWComm=433/868/913 MHz&lt;br /&gt;
|HWChannels=?&lt;br /&gt;
|HWVoltage=5 V&lt;br /&gt;
|HWPowerConsumption=ca. 90 mA&lt;br /&gt;
|HWPoweredBy=USB&lt;br /&gt;
|HWSize=23*67*9mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#JeeLink 36_JeeLink.pm]&lt;br /&gt;
|ModOwner={{Link2FU|430|Andre / justme1968}}&lt;br /&gt;
|HWManufacturer=JeeLabs&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Vergleichbar mit dem [[CUL]] von Busware, ist der JeeLink ein USB-Stick, mit dem Funk-Hausautomations-Komponenten angebunden werden können. CUL und JeeLink unterscheiden sich im Funkmodul (CUL -&amp;gt; CC1101; JeeLink -&amp;gt; RF12B), die nicht miteinander kompatibel sind. Daher kann man auch keinen CUL als JeeLink-Ersatz nutzen!&lt;br /&gt;
&lt;br /&gt;
Den JeeLink gibt es in einer &lt;br /&gt;
* 433 MHz Version&lt;br /&gt;
* 868 MHz Version (Standard)&lt;br /&gt;
* 915 MHz Version (Betrieb in Europa nicht zugelassen)&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung JeeLink == &lt;br /&gt;
Um mit dem JeeLink die jeweils gewünschten Signale empfangen zu können, ist er zunächst mit der passenden Firmware zu versorgen. Dies kann auf zwei Arten geschehen. Entweder durch das selber kompilieren der Software und das Flashen aus der Arduino IDE oder aus Fhem heraus mit einem aktuellen Firmwareimage das per update mit ausgeliefert wird.&lt;br /&gt;
&lt;br /&gt;
=== Selber Kompilieren ===&lt;br /&gt;
[[Datei:JeeLink_flashen_1.jpg|mini|100px|rechts|Vorbereitung: Arduino einrichten]]&lt;br /&gt;
Um den JeeLink mit Fhem benutzen zu können, muss (mit der Arduino Software / Entwicklungsumgebung (IDE)) eine spezifische &amp;quot;Firmware&amp;quot; (ein Sketch) auf dem JeeLink installiert werden. Die generelle Vorbereitung für diese Aktion ist unabhängig vom benötigten Sketch und besteht aus den folgenden Schritten:&lt;br /&gt;
* Für Windows oder Mac OS X den passenden [http://www.ftdichip.com/Drivers/VCP.htm FTDI Treiber] installieren, unter Linux ist dieser meist schon vorhanden&lt;br /&gt;
* Installation der [http://arduino.cc/de/Guide/HomePage Arduino Software] für die benutzte Plattform (verfügbar sind Windows, Mac OS X und Linux)&lt;br /&gt;
* Je nach Sketch einbinden der [https://github.com/jcw/jeelib/archive/master.zip Jeelabs Library] in die Arduino IDE&lt;br /&gt;
* Herunterladen des benötigten Sketches (aus [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino FHEM/contrib])&lt;br /&gt;
* Anschließen des JeeLink an einen USB-Anschluss des Rechners mit der Arduino IDE&lt;br /&gt;
* Start der Arduino Software und JeeLink flashen&lt;br /&gt;
&lt;br /&gt;
=== JeeLink aus Arduino flashen ===&lt;br /&gt;
[[Datei:JeeLink_flashen_2.jpg|mini|100px|rechts|JeeLink Flashen]]&lt;br /&gt;
* Anschließen des JeeLink an einen USB-Anschluss des Rechners mit der Arduino IDE&lt;br /&gt;
* Start der Arduino Software&lt;br /&gt;
* Seriellen Port des JeeLink auswählen&lt;br /&gt;
* Einstellungen: in den Tools als Board &amp;quot;Arduino Uno&amp;quot; auswählen&lt;br /&gt;
* Sketch mit &amp;quot;Datei öffnen&amp;quot; auswählen&lt;br /&gt;
* Upload klicken&lt;br /&gt;
&lt;br /&gt;
=== JeeLink aus Fhem flashen ===&lt;br /&gt;
* Auf dem Fhem System muss &amp;lt;code&amp;gt;avrdude&amp;lt;/code&amp;gt; installiert sein. Das kann z.B. über die &amp;quot;normale&amp;quot; Linux Paketverwaltung geschehen.&lt;br /&gt;
* mit &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; flash [firmware]&amp;lt;/code&amp;gt; wird das Flashen angestossen&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;firmware&amp;lt;/code&amp;gt; kann LaCrosse, PCA301 oder EC3000 sein. Wenn &amp;lt;code&amp;gt;firmware&amp;lt;/code&amp;gt; nicht angegeben wird versucht FHEM den Namen der zu flashenden Firmware aus der zur Zeit installierten Firmware abzuleiten.&lt;br /&gt;
* im Fhem Log kann der Ausgang des Flashvorgangs kontrolliert werden&lt;br /&gt;
* über das &amp;lt;code&amp;gt;flashCommand&amp;lt;/code&amp;gt; Attribut lässt sich das Kommando zum Flashen an besondere Anforderungen anpassen &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorsicht bei Jeelink Clones!&#039;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Jeelink Clones basierend auf dem Arduino Nano haben normalerweise keinen Optibootloader drauf im Gegensatz zum Original JeeLink und JeeNode. &lt;br /&gt;
&lt;br /&gt;
Konsequenz: &lt;br /&gt;
 &lt;br /&gt;
Beim &amp;quot;Nano Clone&amp;quot; und ähnliches muß man zum flashen in FHEM die Baudrate setzen mit &amp;quot;-b 57600&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Original JeeLink, original JeeNode, und alle Arduinos, die einen Optibootloader drauf haben flashen in FHEM ohne &amp;quot;-b 57600&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit Fhem == &lt;br /&gt;
Um den JeeLink (erstmalig) mit Fhem benutzen zu können, muss dieser erfolgreich geflasht worden sein.&lt;br /&gt;
* JeeLink an den Fhem-Rechner anschließen&lt;br /&gt;
* Auf Linux Systemen kann es notwendig sein, mit &amp;lt;code&amp;gt;mknod /dev/ttyUSB0 c 188 0&amp;lt;/code&amp;gt; das Device anzulegen (bitte erst überprüfen, ob der Stick nicht automatisch erkannt wird)&lt;br /&gt;
&lt;br /&gt;
=== Definition in fhem.cfg ===&lt;br /&gt;
Erforderliche Definitionen in Fhem:&lt;br /&gt;
:&amp;lt;code&amp;gt;define myJeeLink JeeLink /dev/ttyUSBx@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;USBx&#039;&#039;&#039; ist anzupassen an die aktuell benutzte Schnittstelle, 0 wenn sonst nichts am USB-Port hängt&lt;br /&gt;
*x=0,1,2, usw.&lt;br /&gt;
&lt;br /&gt;
Die [http://fhem.de/commandref.html#autocreate autocreate-Funktion] sollte aktiv sein. Alle erkannten Devices (PCA301, LaCrosse Sensoren incl. IT+ Wetterstation WS1600, EMT7110, EC3000,  und RoomNodes) werden dann automatisch angelegt, sobald die jeweiligen Daten empfangen werden.&lt;br /&gt;
&lt;br /&gt;
Pro Geräte-Art/Protokoll muss ein eigener JeeLink mit dem passenden Sketch zum Empfang dieser Daten vorhanden sein (es kann jeweils nur ein Sketch im JeeLink aktiv sein und es gibt (zumindest derzeit (04/2014)) keinen Sketch, der mehr als eines der Protokolle abdeckt).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Der LaCrosse Sketch deckt sowohl die LaCrosse Temperatursensoren, die IT+ Wetterstation WS1600 als auch den Energieverbrauchssensor EMT7110 ab.&lt;br /&gt;
&lt;br /&gt;
=== PCA301 Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der &#039;&#039;PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung&#039;&#039; (PCA301-pcaSerial.zip) kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ FHEM-Repository] heruntergeladen werden. Details zur Benutzung finden sich im Artikel zur [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung|PCA301]].&lt;br /&gt;
&lt;br /&gt;
Unter Umständen werden die Signale der PCA301 nicht empfangen. Insbesondere mit selbst erstellten &amp;quot;JeeLinks&amp;quot; durch wahrscheinlich hohe Bauteiltoleranzen der RF12B Sendeeinheiten. Mit dem im Sketch voreingestellten rf12_center_freq = 0xA6FE (868,9500 MHz) bekommt man in diesem Fall keine Steckdose angelernt.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung über modifizierten Sketch ====&lt;br /&gt;
Durch Tests mittels &#039;&#039;set &amp;lt;myJeeLink&amp;gt; raw +&#039;&#039; bzw &#039;&#039;set &amp;lt;myJeeLink&amp;gt; raw -&#039;&#039; kann man dann ermitteln, ob die Funksignale z.B. ab A703 bis A715 empfangen werden. Das entspricht einem Frequenzbereich zwischen 868,9750 MHz und 869,0550 MHz.&lt;br /&gt;
Die Mitte ist die Lösung, die man dann im Sketch ändern muss:&lt;br /&gt;
:&amp;lt;code&amp;gt;static uint16_t rf12_center_freq = 0xA70C;&amp;lt;/code&amp;gt;&lt;br /&gt;
Anschließend auf den JeeLink neu flashen.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung über Attribut initCommands ====&lt;br /&gt;
Über das &amp;lt;code&amp;gt;initCommands&amp;lt;/code&amp;gt; lässt sich die gefundene Frequenz einstellen, ohne dass die Firmware verändert werden muss. &lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;JeeLinkDevice&amp;gt; initCommands &amp;lt;hhhh&amp;gt;h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LaCrosse Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der LaCrosse Temperatursensoren, der IT+ Wetterstation WS1600 und des Energieverbrauchssensors EMT7110 so wie auch TechnoLine Sensoren (Temperatur, Luftfeuchte,...).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Er kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino FHEM-Repository] heruntergeladen werden.&lt;br /&gt;
* Alternative ist den Sketch direkt über Fhem zu flashen &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; flash LaCrosse&amp;lt;/code&amp;gt; z.B.: &amp;lt;code&amp;gt;set myJeeLink flash LaCrosse&amp;lt;/code&amp;gt; zuvor sollte aber ein Fhem update mit &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; durchgeführt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sensoren anlernen:&lt;br /&gt;
Mit folgenden Befehl hat man die Möglichkeit 60 Sekunden ein Gerät anzulernen. Das Gerät erscheint dann unter der Rubrik LaCrosse. &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; LaCrossePairForSec 60&amp;lt;/code&amp;gt; zum Beispiel: &amp;lt;code&amp;gt;set myJeeLink LaCrossePairForSec 60&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In der neuesten Version unterstützt er auch den SuperJee&#039;&#039;&#039; (siehe auch diesen {{Link2Forum|Topic=14786|Message=316924|LinkText=Forenbeitrag}}) mit folgenden Optionen:  &lt;br /&gt;
&lt;br /&gt;
* Option 1 (Dual RFM): &lt;br /&gt;
:Es kann ein zweiter RFM12B oder RFM69CW angeschlossen werden. Somit können zwei data rates (z.B. 17241 für TX29DTH und 8842 für WS 1600) gleichzeitig empfangen werden. Das geht natürlich auch mit dem toggle mode, nur ist es bei der Wetterstation ärgerlich, wenn man 30 Sekunden lang nichts empfängt und dadurch die alles entscheidende Windböe verpasst.&lt;br /&gt;
* Option 2 (BMP180): &lt;br /&gt;
:Da der Luftdruck in den Basisstationen gemessen wird, steht er für FHEM nicht zur Verfügung.&lt;br /&gt;
Deshalb kann nun optional ein BMP180 oder BMP085 angeschlossen werden. Auch hier wird automatisch erkannt, ob er vorhanden ist. &lt;br /&gt;
:Der BMP180 wird mit 3,3V versorgt und SDA mit PC4 und SCL mit PC5 verbunden (siehe die in diesem {{Link2Forum|Topic=14786|Message=316924|LinkText=Forenbeitrag}} angehängte SuperJee-CL.png) &lt;br /&gt;
&lt;br /&gt;
==== Übersicht Kommandos ====&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;f     initial frequency in kHz (5 kHz steps, 860480 ... 879515)  (for RFM #1)&lt;br /&gt;
 &amp;lt;n&amp;gt;F     initial frequency in kHz (5 kHz steps, 860480 ... 879515)  (for RFM #2)&lt;br /&gt;
 &amp;lt;n&amp;gt;h     altituide above sea level&lt;br /&gt;
 &amp;lt;n&amp;gt;m     bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 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 (for RFM #2)&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;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;
    v     show version&lt;br /&gt;
 &amp;lt;n&amp;gt;y     if 1 all received packets will be retransmitted  (Relay mode)&lt;br /&gt;
&lt;br /&gt;
==== Relay-Betrieb ====&lt;br /&gt;
Der LaCrosse Sketch ermöglicht auch den Relay-Betrieb zur Reichweitenverbesserung. Er funktioniert damit ähnlich wie z.&amp;amp;nbsp;B. ein WLAN Range Extender. Wenn der Sketch für den Relay-Betrieb konfiguriert ist, wird jedes empfangene IT+ Datenpaket, das eine gültige Prüfsumme hat, direkt nach dem Empfang wieder gesendet.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip ist generell recht einfach:&lt;br /&gt;
# JeeLink im Sketch als Relais konfigurieren und flashen.&lt;br /&gt;
# Auf &amp;quot;halber Strecke&amp;quot; (d.h. irgendwo zwischen dem primären Sender und dem entfernten Empfänger) auf ein USB-Steckernetzteil stecken. Der JeeLink arbeitet in diesem Modus &amp;quot;autonom&amp;quot;, er benötigt also lediglich einen Spannungsversorgung.&lt;br /&gt;
&lt;br /&gt;
Der JeeLink empfängt und decodiert alle Protokolle, die er auch für FHEM unterstützt. Wenn er ein Paket empfangen hat (egal von welchem Sensor) und CRC OK war, dann sendet er es wieder aus. Der JeeLink am FHEM merkt keinen Unterschied. Falls ein Paket es doch bis zum FHEM direkt geschafft hat, kommt es dort zweimal an. Diese Situation muss in Fhem behandelt werden.&lt;br /&gt;
&lt;br /&gt;
Details zu diesem Betriebsmodus sind in diesen Forenbeiträgen ({{Link2Forum|Topic=14786|Message=165153|LinkText=LaCrosse}} bzw. {{Link2Forum|Topic=26494|Message=196648|LinkText=EMT7110}}) zu finden.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung ====&lt;br /&gt;
Ab Version LaCrosseITPlusReader.10.1e wurde der  Sketch so erweitert, dass man von FHEM aus die Frequenz setzen kann. Dazu versteht der Sketch das neue Kommando &amp;quot;f&amp;quot;:&lt;br /&gt;
:&amp;lt;code&amp;gt;set myJeeLink raw 868295f&amp;lt;/code&amp;gt;&lt;br /&gt;
setzt die Frequenz auf 868295 kHz.&lt;br /&gt;
&lt;br /&gt;
Die Frequenz kann im Bereich von 860480 kHz bis 879515 kHz in 5kHz -Schritten eingestellt werden.&lt;br /&gt;
Details dazu in diesem {{Link2Forum|Topic=14786|Message=222541}} im Forum. Die Frequenzanpassung ist insbesondere beim 30.3155.WD häufig erforderlich, weshalb er als kritisch einzustufen und nicht zu empfehlen ist (siehe {{Link2Forum|Topic=14786|Message=352550|LinkText=Forenbeitrag}}).&lt;br /&gt;
&lt;br /&gt;
==== Toggle und Datenrate ====&lt;br /&gt;
Toggle&lt;br /&gt;
 t: toggle time&lt;br /&gt;
 20t = alle 20 Sekunden die Datenrate wechseln&lt;br /&gt;
&lt;br /&gt;
Datenrate&lt;br /&gt;
 m: toggle mode&lt;br /&gt;
 bits:  1= 17.241 kbps, 2= 9.579 kbps, 4= 8.842 kbps&lt;br /&gt;
 3m ist 17.241 kbps (TX29) und 9.579 kbps (TX35)&lt;br /&gt;
&lt;br /&gt;
Beispiel initCommands&lt;br /&gt;
 6m 30t v&lt;br /&gt;
 Zwischen 8.842 kbps und 9.579 kbps wechseln (4+2=6), alle 30 Sekunden&lt;br /&gt;
&lt;br /&gt;
==== Getestete iT+ Sensoren incl. Wetterstation WS 1600 ====&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Die Ausführungen in diesem Abschnitt gelten ab der Version 10.1q auch für die Wetterstation WS1080.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig WS1800&#039;&#039;&#039;: die WS1080 gibt es (unter gleichem Namen) in einer &amp;quot;OOK&amp;quot;- und in einer &amp;quot;FSK&amp;quot;-Version.&lt;br /&gt;
* Der LaCrosse Sketch und das LaCrosseGateway können nur die FSK-Version empfangen, die OOK-Version wird  nicht unterstützt.&lt;br /&gt;
* Die FSK-Version ist zu erkennen an einem runden grünen Aufkleber im Batteriefach der Station mit dem Aufdruck &amp;quot;PASS 7&amp;quot;. Details dazu in {{Link2Forum|Topic=14786|Message=363766|LinkText=diesem Forenbeitrag}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Die in der folgenden Liste (Quelle: {{Link2Forum|Topic=14786|Message=164801|LinkText=Fhem Forum}}) aufgeführten Sensoren wurden bisher erfolgreich getestet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung     !! Datenrate   !! Link / Hinweise&lt;br /&gt;
|-&lt;br /&gt;
| TX21IT         || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX25-IT        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX27-IT        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX29-IT        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX29DTH-IT     || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX37           || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX35TH-IT      ||  9.579 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| TX35DTH-IT     ||  9.579 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3143.IT     || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3144.IT     || 17.241 kbps || ({{Link2Forum|Topic=17662|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| 30.3147.IT     || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3155WD      ||  9.579 kbps || kritisch; nicht zu empfehlen; siehe {{Link2Forum|Topic=14786|Message=352550|LinkText=Forenbeitrag}}&lt;br /&gt;
|-&lt;br /&gt;
| 30.3156WD      ||  9.579 kbps || Batterie-kritisch. Funktioniert schlecht mit Akkus!&lt;br /&gt;
|-&lt;br /&gt;
| 30.3187.IT     || 17.241 kbps || haben alle die gleiche ID, daher nur einzeln verwendbar ({{Link2Forum|Topic=64636|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| WT440XH        || 17.241 kbps ||&lt;br /&gt;
|-&lt;br /&gt;
| WS 1600 (TX22) ||  8.842 kbps || ({{Link2Forum|Topic=14786|Message=297293|LinkText=Forenbeitrag}})&lt;br /&gt;
|-&lt;br /&gt;
| WS 1080        || 17.241 kbps || Bitte Hinweise beachten! ({{Link2Forum|Topic=14786|Message=363766|LinkText=Forenbeitrag}})&lt;br /&gt;
|-&lt;br /&gt;
| [[EMT7110]]    ||  9.579 kbps || ({{Link2Forum|Topic=26494|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| LevelSender    || 17.241 kbps || ({{Link2Forum|Topic=23217|LinkText=Forenthread}})&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== EMT7110 ====&lt;br /&gt;
Der [[EMT7110]] läuft mit einer Datenrate von 9.579 kbps (Details dazu in diesem {{Link2Forum|Topic=26494|LinkText=Forenthread}}).&lt;br /&gt;
&lt;br /&gt;
Werden Sensoren mit unterschiedlichen Datenraten gleichzeitig betrieben, ist der Toggle Modus einzustellen, z.B. mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;initCommands 30t v &amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;30t&#039;&#039; für &amp;quot;Toggle Modus, alle 30 Sekunden&amp;quot; steht.&lt;br /&gt;
&lt;br /&gt;
=== Energy Count 3000 Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der Energy Count 3000 Zwischenstecker kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ FHEM-Repository] heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Das Fhem Modul dazu (36_EC3000.pm) ist genau wie die Module für JeeLink (36_JeeLink.pm) und PCA301 (36_PCA301.pm) mittlerweile im aktuellen Fhem enthalten.&lt;br /&gt;
&lt;br /&gt;
=== JeeLabs RoomNode ===&lt;br /&gt;
Eine Beschreibung zum Empfang der JeeLabs RoomNodes ist in {{Link2Forum|Topic=11648|Message=92037|LinkText=diesem Forenbeitrag}} enthalten.&lt;br /&gt;
&lt;br /&gt;
=== JeeLink LED deaktivieren ===&lt;br /&gt;
Ein &amp;quot;dauerhaftes&amp;quot; Deaktivieren der LED des JeeLink ist möglich mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define not.global notify global:INITIALIZED set myJeeLink led off&amp;lt;/code&amp;gt;&lt;br /&gt;
damit wird, sobald Fhem komplett gestartet ist, von Fhem der Befehl zum Ausschalten der LED gesendet. Alternativ kann mit &lt;br /&gt;
:&amp;lt;code&amp;gt;attr myJeeLink initCommands 0a v&amp;lt;/code&amp;gt;&lt;br /&gt;
dem Sketch die Anweisung gegeben werden, bei der Initialisierung die LED zu deaktivieren.&lt;br /&gt;
&#039;&#039;Quelle: dieser {{Link2Forum|Topic=27161|LinkText=Forenthread}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Weitergehende Informationen ===&lt;br /&gt;
Hinweise zum Betrieb eines JeeLink mit Fhem finden sich aktuell in größerer Anzahl in verschiedenen Diskussionen im Forum:&lt;br /&gt;
* {{Link2Forum|Topic=11648|LinkText=JeeLink / PCA301}} - Analyse des Funkprotokolls; Anfänge der Entstehung der PCA301 Unterstützung in Fhem.&lt;br /&gt;
* {{Link2Forum|Topic=14786|LinkText=JeeLink / LaCrosse}} - JeeLink Modul zur Einbindung von La Crosse&lt;br /&gt;
* {{Link2Forum|Topic=11648|Message=92019|LinkText=JeeLink / EC3000}} - Anfänge der Entstehung der EC3000 Unterstützung in Fhem.&lt;br /&gt;
* Hinweise zu {{Link2Forum|Topic=11648|Message=92037|LinkText=JeeLabs RoomNode}} und anderen JeeLab Nodes&lt;br /&gt;
* {{Link2Forum|Topic=25399|Message=183910|LinkText=JeeLink mit FHEM2FHEM nutzen}}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Beim Betrieb an einer [[AVM Fritz!Box|FritzBox]] wird der JeeLink unter Umständen als &#039;&#039;Für die Nutzung mit dem USB-Fernanschluss reserviert&#039;&#039; angezeigt. In diesem Fall muss die Reservierung deaktiviert/aufgehoben werden (Details dazu in diesem {{Link2Forum|Topic=16579|LinkText=Forenthread}}).&lt;br /&gt;
* Die Version &#039;&#039;v3c&#039;&#039; des JeeLink funktioniert (Stand 06/2015) nur mit dem LaCrosse Sketch. PCA301 und EC3000 Sketch sind auf den JeeLink Classic beschränkt (siehe unter anderem Diskussion im Forum, startend {{Link2Forum|Topic=11648|Message=308267|LinkText=hier}}).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://jeelabs.com/products/jeelink JeeLabs], JeeLink Hersteller&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ PCA301 Sketch] im SVN&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ LaCrosse Sketch] im SVN&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ EC3000 Sketch] im SVN&lt;br /&gt;
* [http://blog.moneybag.de/hausautomation-fhem-mit-funksteckdose-energiemessung-elv-pca-301/ Blog] zum Thema JeeLink zur Anbindung von PCA301 und von LaCrosse Temperatursensoren an Fhem&lt;br /&gt;
* {{Link2Forum|Topic=23217|LinkText=LevelSender}} Tankfüllstand mit JeeLink empfangen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Wetterstationen]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=JeeLink&amp;diff=18564</id>
		<title>JeeLink</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=JeeLink&amp;diff=18564"/>
		<updated>2017-01-18T17:50:34Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Weblinks */  Kategorien analog zum LaCrosseGateway hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;JeeLink&#039;&#039;&#039; ist ein RF-Gerät im Formfaktor eines USB-Sticks mit externer Antenne.&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=JeeLink.jpg&lt;br /&gt;
|Bildbeschreibung=JeeLink mit Drahtantenne&lt;br /&gt;
|HWProtocol=PCA301, EC3000, RoomNode oder LaCrosse und EMT7110&lt;br /&gt;
|HWType=[[Interface]]&lt;br /&gt;
|HWCategory=&lt;br /&gt;
|HWComm=433/868/913 MHz&lt;br /&gt;
|HWChannels=?&lt;br /&gt;
|HWVoltage=5 V&lt;br /&gt;
|HWPowerConsumption=ca. 90 mA&lt;br /&gt;
|HWPoweredBy=USB&lt;br /&gt;
|HWSize=23*67*9mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#JeeLink 36_JeeLink.pm]&lt;br /&gt;
|ModOwner={{Link2FU|430|Andre / justme1968}}&lt;br /&gt;
|HWManufacturer=JeeLabs&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Vergleichbar mit dem [[CUL]] von Busware, ist der JeeLink ein USB-Stick, mit dem Funk-Hausautomations-Komponenten angebunden werden können. CUL und JeeLink unterscheiden sich im Funkmodul (CUL -&amp;gt; CC1101; JeeLink -&amp;gt; RF12B), die nicht miteinander kompatibel sind. Daher kann man auch keinen CUL als JeeLink-Ersatz nutzen!&lt;br /&gt;
&lt;br /&gt;
Den JeeLink gibt es in einer &lt;br /&gt;
* 433 MHz Version&lt;br /&gt;
* 868 MHz Version (Standard)&lt;br /&gt;
* 915 MHz Version (Betrieb in Europa nicht zugelassen)&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung JeeLink == &lt;br /&gt;
Um mit dem JeeLink die jeweils gewünschten Signale empfangen zu können, ist er zunächst mit der passenden Firmware zu versorgen. Dies kann auf zwei Arten geschehen. Entweder durch das selber kompilieren der Software und das Flashen aus der Arduino IDE oder aus Fhem heraus mit einem aktuellen Firmwareimage das per update mit ausgeliefert wird.&lt;br /&gt;
&lt;br /&gt;
=== Selber Kompilieren ===&lt;br /&gt;
[[Datei:JeeLink_flashen_1.jpg|mini|100px|rechts|Vorbereitung: Arduino einrichten]]&lt;br /&gt;
Um den JeeLink mit Fhem benutzen zu können, muss (mit der Arduino Software / Entwicklungsumgebung (IDE)) eine spezifische &amp;quot;Firmware&amp;quot; (ein Sketch) auf dem JeeLink installiert werden. Die generelle Vorbereitung für diese Aktion ist unabhängig vom benötigten Sketch und besteht aus den folgenden Schritten:&lt;br /&gt;
* Für Windows oder Mac OS X den passenden [http://www.ftdichip.com/Drivers/VCP.htm FTDI Treiber] installieren, unter Linux ist dieser meist schon vorhanden&lt;br /&gt;
* Installation der [http://arduino.cc/de/Guide/HomePage Arduino Software] für die benutzte Plattform (verfügbar sind Windows, Mac OS X und Linux)&lt;br /&gt;
* Je nach Sketch einbinden der [https://github.com/jcw/jeelib/archive/master.zip Jeelabs Library] in die Arduino IDE&lt;br /&gt;
* Herunterladen des benötigten Sketches (aus [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino FHEM/contrib])&lt;br /&gt;
* Anschließen des JeeLink an einen USB-Anschluss des Rechners mit der Arduino IDE&lt;br /&gt;
* Start der Arduino Software und JeeLink flashen&lt;br /&gt;
&lt;br /&gt;
=== JeeLink aus Arduino flashen ===&lt;br /&gt;
[[Datei:JeeLink_flashen_2.jpg|mini|100px|rechts|JeeLink Flashen]]&lt;br /&gt;
* Anschließen des JeeLink an einen USB-Anschluss des Rechners mit der Arduino IDE&lt;br /&gt;
* Start der Arduino Software&lt;br /&gt;
* Seriellen Port des JeeLink auswählen&lt;br /&gt;
* Einstellungen: in den Tools als Board &amp;quot;Arduino Uno&amp;quot; auswählen&lt;br /&gt;
* Sketch mit &amp;quot;Datei öffnen&amp;quot; auswählen&lt;br /&gt;
* Upload klicken&lt;br /&gt;
&lt;br /&gt;
=== JeeLink aus Fhem flashen ===&lt;br /&gt;
* Auf dem Fhem System muss &amp;lt;code&amp;gt;avrdude&amp;lt;/code&amp;gt; installiert sein. Das kann z.B. über die &amp;quot;normale&amp;quot; Linux Paketverwaltung geschehen.&lt;br /&gt;
* mit &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; flash [firmware]&amp;lt;/code&amp;gt; wird das Flashen angestossen&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;firmware&amp;lt;/code&amp;gt; kann LaCrosse, PCA301 oder EC3000 sein. Wenn &amp;lt;code&amp;gt;firmware&amp;lt;/code&amp;gt; nicht angegeben wird versucht FHEM den Namen der zu flashenden Firmware aus der zur Zeit installierten Firmware abzuleiten.&lt;br /&gt;
* im Fhem Log kann der Ausgang des Flashvorgangs kontrolliert werden&lt;br /&gt;
* über das &amp;lt;code&amp;gt;flashCommand&amp;lt;/code&amp;gt; Attribut lässt sich das Kommando zum Flashen an besondere Anforderungen anpassen &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorsicht bei Jeelink Clones!&#039;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Jeelink Clones basierend auf dem Arduino Nano haben normalerweise keinen Optibootloader drauf im Gegensatz zum Original JeeLink und JeeNode. &lt;br /&gt;
&lt;br /&gt;
Konsequenz: &lt;br /&gt;
 &lt;br /&gt;
Beim &amp;quot;Nano Clone&amp;quot; und ähnliches muß man zum flashen in FHEM die Baudrate setzen mit &amp;quot;-b 57600&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Original JeeLink, original JeeNode, und alle Arduinos, die einen Optibootloader drauf haben flashen in FHEM ohne &amp;quot;-b 57600&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit Fhem == &lt;br /&gt;
Um den JeeLink (erstmalig) mit Fhem benutzen zu können, muss dieser erfolgreich geflasht worden sein.&lt;br /&gt;
* JeeLink an den Fhem-Rechner anschließen&lt;br /&gt;
* Auf Linux Systemen kann es notwendig sein, mit &amp;lt;code&amp;gt;mknod /dev/ttyUSB0 c 188 0&amp;lt;/code&amp;gt; das Device anzulegen (bitte erst überprüfen, ob der Stick nicht automatisch erkannt wird)&lt;br /&gt;
&lt;br /&gt;
=== Definition in fhem.cfg ===&lt;br /&gt;
Erforderliche Definitionen in Fhem:&lt;br /&gt;
:&amp;lt;code&amp;gt;define myJeeLink JeeLink /dev/ttyUSBx@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;USBx&#039;&#039;&#039; ist anzupassen an die aktuell benutzte Schnittstelle, 0 wenn sonst nichts am USB-Port hängt&lt;br /&gt;
*x=0,1,2, usw.&lt;br /&gt;
&lt;br /&gt;
Die [http://fhem.de/commandref.html#autocreate autocreate-Funktion] sollte aktiv sein. Alle erkannten Devices (PCA301, LaCrosse Sensoren incl. IT+ Wetterstation WS1600, EMT7110, EC3000,  und RoomNodes) werden dann automatisch angelegt, sobald die jeweiligen Daten empfangen werden.&lt;br /&gt;
&lt;br /&gt;
Pro Geräte-Art/Protokoll muss ein eigener JeeLink mit dem passenden Sketch zum Empfang dieser Daten vorhanden sein (es kann jeweils nur ein Sketch im JeeLink aktiv sein und es gibt (zumindest derzeit (04/2014)) keinen Sketch, der mehr als eines der Protokolle abdeckt).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Der LaCrosse Sketch deckt sowohl die LaCrosse Temperatursensoren, die IT+ Wetterstation WS1600 als auch den Energieverbrauchssensor EMT7110 ab.&lt;br /&gt;
&lt;br /&gt;
=== PCA301 Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der &#039;&#039;PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung&#039;&#039; (PCA301-pcaSerial.zip) kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ FHEM-Repository] heruntergeladen werden. Details zur Benutzung finden sich im Artikel zur [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung|PCA301]].&lt;br /&gt;
&lt;br /&gt;
Unter Umständen werden die Signale der PCA301 nicht empfangen. Insbesondere mit selbst erstellten &amp;quot;JeeLinks&amp;quot; durch wahrscheinlich hohe Bauteiltoleranzen der RF12B Sendeeinheiten. Mit dem im Sketch voreingestellten rf12_center_freq = 0xA6FE (868,9500 MHz) bekommt man in diesem Fall keine Steckdose angelernt.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung über modifizierten Sketch ====&lt;br /&gt;
Durch Tests mittels &#039;&#039;set &amp;lt;myJeeLink&amp;gt; raw +&#039;&#039; bzw &#039;&#039;set &amp;lt;myJeeLink&amp;gt; raw -&#039;&#039; kann man dann ermitteln, ob die Funksignale z.B. ab A703 bis A715 empfangen werden. Das entspricht einem Frequenzbereich zwischen 868,9750 MHz und 869,0550 MHz.&lt;br /&gt;
Die Mitte ist die Lösung, die man dann im Sketch ändern muss:&lt;br /&gt;
:&amp;lt;code&amp;gt;static uint16_t rf12_center_freq = 0xA70C;&amp;lt;/code&amp;gt;&lt;br /&gt;
Anschließend auf den JeeLink neu flashen.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung über Attribut initCommands ====&lt;br /&gt;
Über das &amp;lt;code&amp;gt;initCommands&amp;lt;/code&amp;gt; lässt sich die gefundene Frequenz einstellen, ohne dass die Firmware verändert werden muss. &lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;JeeLinkDevice&amp;gt; initCommands &amp;lt;hhhh&amp;gt;h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LaCrosse Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der LaCrosse Temperatursensoren, der IT+ Wetterstation WS1600 und des Energieverbrauchssensors EMT7110 so wie auch TechnoLine Sensoren (Temperatur, Luftfeuchte,...).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Er kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino FHEM-Repository] heruntergeladen werden.&lt;br /&gt;
* Alternative ist den Sketch direkt über Fhem zu flashen &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; flash LaCrosse&amp;lt;/code&amp;gt; z.B.: &amp;lt;code&amp;gt;set myJeeLink flash LaCrosse&amp;lt;/code&amp;gt; zuvor sollte aber ein Fhem update mit &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; durchgeführt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sensoren anlernen:&lt;br /&gt;
Mit folgenden Befehl hat man die Möglichkeit 60 Sekunden ein Gerät anzulernen. Das Gerät erscheint dann unter der Rubrik LaCrosse. &amp;lt;code&amp;gt;set &amp;lt;JeeLinkDevice&amp;gt; LaCrossePairForSec 60&amp;lt;/code&amp;gt; zum Beispiel: &amp;lt;code&amp;gt;set myJeeLink LaCrossePairForSec 60&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In der neuesten Version unterstützt er auch den SuperJee&#039;&#039;&#039; (siehe auch diesen {{Link2Forum|Topic=14786|Message=316924|LinkText=Forenbeitrag}}) mit folgenden Optionen:  &lt;br /&gt;
&lt;br /&gt;
* Option 1 (Dual RFM): &lt;br /&gt;
:Es kann ein zweiter RFM12B oder RFM69CW angeschlossen werden. Somit können zwei data rates (z.B. 17241 für TX29DTH und 8842 für WS 1600) gleichzeitig empfangen werden. Das geht natürlich auch mit dem toggle mode, nur ist es bei der Wetterstation ärgerlich, wenn man 30 Sekunden lang nichts empfängt und dadurch die alles entscheidende Windböe verpasst.&lt;br /&gt;
* Option 2 (BMP180): &lt;br /&gt;
:Da der Luftdruck in den Basisstationen gemessen wird, steht er für FHEM nicht zur Verfügung.&lt;br /&gt;
Deshalb kann nun optional ein BMP180 oder BMP085 angeschlossen werden. Auch hier wird automatisch erkannt, ob er vorhanden ist. &lt;br /&gt;
:Der BMP180 wird mit 3,3V versorgt und SDA mit PC4 und SCL mit PC5 verbunden (siehe die in diesem {{Link2Forum|Topic=14786|Message=316924|LinkText=Forenbeitrag}} angehängte SuperJee-CL.png) &lt;br /&gt;
&lt;br /&gt;
==== Übersicht Kommandos ====&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;f     initial frequency in kHz (5 kHz steps, 860480 ... 879515)  (for RFM #1)&lt;br /&gt;
 &amp;lt;n&amp;gt;F     initial frequency in kHz (5 kHz steps, 860480 ... 879515)  (for RFM #2)&lt;br /&gt;
 &amp;lt;n&amp;gt;h     altituide above sea level&lt;br /&gt;
 &amp;lt;n&amp;gt;m     bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 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 (for RFM #2)&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;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;
    v     show version&lt;br /&gt;
 &amp;lt;n&amp;gt;y     if 1 all received packets will be retransmitted  (Relay mode)&lt;br /&gt;
&lt;br /&gt;
==== Relay-Betrieb ====&lt;br /&gt;
Der LaCrosse Sketch ermöglicht auch den Relay-Betrieb zur Reichweitenverbesserung. Er funktioniert damit ähnlich wie z.&amp;amp;nbsp;B. ein WLAN Range Extender. Wenn der Sketch für den Relay-Betrieb konfiguriert ist, wird jedes empfangene IT+ Datenpaket, das eine gültige Prüfsumme hat, direkt nach dem Empfang wieder gesendet.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip ist generell recht einfach:&lt;br /&gt;
# JeeLink im Sketch als Relais konfigurieren und flashen.&lt;br /&gt;
# Auf &amp;quot;halber Strecke&amp;quot; (d.h. irgendwo zwischen dem primären Sender und dem entfernten Empfänger) auf ein USB-Steckernetzteil stecken. Der JeeLink arbeitet in diesem Modus &amp;quot;autonom&amp;quot;, er benötigt also lediglich einen Spannungsversorgung.&lt;br /&gt;
&lt;br /&gt;
Der JeeLink empfängt und decodiert alle Protokolle, die er auch für FHEM unterstützt. Wenn er ein Paket empfangen hat (egal von welchem Sensor) und CRC OK war, dann sendet er es wieder aus. Der JeeLink am FHEM merkt keinen Unterschied. Falls ein Paket es doch bis zum FHEM direkt geschafft hat, kommt es dort zweimal an. Diese Situation muss in Fhem behandelt werden.&lt;br /&gt;
&lt;br /&gt;
Details zu diesem Betriebsmodus sind in diesen Forenbeiträgen ({{Link2Forum|Topic=14786|Message=165153|LinkText=LaCrosse}} bzw. {{Link2Forum|Topic=26494|Message=196648|LinkText=EMT7110}}) zu finden.&lt;br /&gt;
&lt;br /&gt;
==== Frequenzanpassung ====&lt;br /&gt;
Ab Version LaCrosseITPlusReader.10.1e wurde der  Sketch so erweitert, dass man von FHEM aus die Frequenz setzen kann. Dazu versteht der Sketch das neue Kommando &amp;quot;f&amp;quot;:&lt;br /&gt;
:&amp;lt;code&amp;gt;set myJeeLink raw 868295f&amp;lt;/code&amp;gt;&lt;br /&gt;
setzt die Frequenz auf 868295 kHz.&lt;br /&gt;
&lt;br /&gt;
Die Frequenz kann im Bereich von 860480 kHz bis 879515 kHz in 5kHz -Schritten eingestellt werden.&lt;br /&gt;
Details dazu in diesem {{Link2Forum|Topic=14786|Message=222541}} im Forum. Die Frequenzanpassung ist insbesondere beim 30.3155.WD häufig erforderlich, weshalb er als kritisch einzustufen und nicht zu empfehlen ist (siehe {{Link2Forum|Topic=14786|Message=352550|LinkText=Forenbeitrag}}).&lt;br /&gt;
&lt;br /&gt;
==== Toggle und Datenrate ====&lt;br /&gt;
Toggle&lt;br /&gt;
 t: toggle time&lt;br /&gt;
 20t = alle 20 Sekunden die Datenrate wechseln&lt;br /&gt;
&lt;br /&gt;
Datenrate&lt;br /&gt;
 m: toggle mode&lt;br /&gt;
 bits:  1= 17.241 kbps, 2= 9.579 kbps, 4= 8.842 kbps&lt;br /&gt;
 3m ist 17.241 kbps (TX29) und 9.579 kbps (TX35)&lt;br /&gt;
&lt;br /&gt;
Beispiel initCommands&lt;br /&gt;
 6m 30t v&lt;br /&gt;
 Zwischen 8.842 kbps und 9.579 kbps wechseln (4+2=6), alle 30 Sekunden&lt;br /&gt;
&lt;br /&gt;
==== Getestete iT+ Sensoren incl. Wetterstation WS 1600 ====&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Die Ausführungen in diesem Abschnitt gelten ab der Version 10.1q auch für die Wetterstation WS1080.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig WS1800&#039;&#039;&#039;: die WS1080 gibt es (unter gleichem Namen) in einer &amp;quot;OOK&amp;quot;- und in einer &amp;quot;FSK&amp;quot;-Version.&lt;br /&gt;
* Der LaCrosse Sketch und das LaCrosseGateway können nur die FSK-Version empfangen, die OOK-Version wird  nicht unterstützt.&lt;br /&gt;
* Die FSK-Version ist zu erkennen an einem runden grünen Aufkleber im Batteriefach der Station mit dem Aufdruck &amp;quot;PASS 7&amp;quot;. Details dazu in {{Link2Forum|Topic=14786|Message=363766|LinkText=diesem Forenbeitrag}}&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&#039;&#039;&#039;Wichtig: TFA 30.3187.IT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Es wird von Anwendern berichtet, dass sie mehrere TFA 30.3187.IT gekauft haben, die alle die gleiche ID hatten. Dieser Sensor ist also nicht zu empfehlen, wenn man mehrere davon verwenden will.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Die in der folgenden Liste (Quelle: {{Link2Forum|Topic=14786|Message=164801|LinkText=Fhem Forum}}) aufgeführten Sensoren wurden bisher erfolgreich getestet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung !! Datenrate !! Link&lt;br /&gt;
|-&lt;br /&gt;
| TX21IT     || 17.241 kbps &lt;br /&gt;
|-&lt;br /&gt;
| TX25-IT    || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX27-IT    || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX29-IT    || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX29DTH-IT || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX37       || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX35TH-IT  ||  9.579 kbps&lt;br /&gt;
|-&lt;br /&gt;
| TX35DTH-IT ||  9.579 kbps&lt;br /&gt;
|-&lt;br /&gt;
| 30.3143.IT || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| 30.3144.IT || 17.241 kbps || ({{Link2Forum|Topic=17662|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| 30.3147.IT || 17.241 kbps&lt;br /&gt;
|-&lt;br /&gt;
| 30.3155WD  ||  9.579 kbps || kritisch; nicht zu empfehlen; siehe {{Link2Forum|Topic=14786|Message=352550|LinkText=Forenbeitrag}}&lt;br /&gt;
|-&lt;br /&gt;
| 30.3156WD  ||  9.579 kbps || Batterie-kritisch. Funktioniert schlecht mit Akkus!&lt;br /&gt;
|-&lt;br /&gt;
| 30.3187.IT || 17.241 kbps || kritisch, siehe Randnotiz&lt;br /&gt;
|-&lt;br /&gt;
|| WS 1600   ||  8.842 kbps || ({{Link2Forum|Topic=14786|Message=297293|LinkText=Forenbeitrag}})&lt;br /&gt;
|-&lt;br /&gt;
|| WS 1080   || 17.241 kbps || ({{Link2Forum|Topic=14786|Message=363766|LinkText=Forenbeitrag}})&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== EMT7110 ====&lt;br /&gt;
Der [[EMT7110]] läuft mit einer Datenrate von 9.579 kbps (Details dazu in diesem {{Link2Forum|Topic=26494|LinkText=Forenthread}}).&lt;br /&gt;
&lt;br /&gt;
Werden Sensoren mit unterschiedlichen Datenraten gleichzeitig betrieben, ist der Toggle Modus einzustellen, z.B. mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;initCommands 30t v &amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;30t&#039;&#039; für &amp;quot;Toggle Modus, alle 30 Sekunden&amp;quot; steht.&lt;br /&gt;
&lt;br /&gt;
=== Energy Count 3000 Sketch ===&lt;br /&gt;
Der Sketch für die Unterstützung der Energy Count 3000 Zwischenstecker kann aus dem [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ FHEM-Repository] heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Das Fhem Modul dazu (36_EC3000.pm) ist genau wie die Module für JeeLink (36_JeeLink.pm) und PCA301 (36_PCA301.pm) mittlerweile im aktuellen Fhem enthalten.&lt;br /&gt;
&lt;br /&gt;
=== JeeLabs RoomNode ===&lt;br /&gt;
Eine Beschreibung zum Empfang der JeeLabs RoomNodes ist in {{Link2Forum|Topic=11648|Message=92037|LinkText=diesem Forenbeitrag}} enthalten.&lt;br /&gt;
&lt;br /&gt;
=== JeeLink LED deaktivieren ===&lt;br /&gt;
Ein &amp;quot;dauerhaftes&amp;quot; Deaktivieren der LED des JeeLink ist möglich mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define not.global notify global:INITIALIZED set myJeeLink led off&amp;lt;/code&amp;gt;&lt;br /&gt;
damit wird, sobald Fhem komplett gestartet ist, von Fhem der Befehl zum Ausschalten der LED gesendet. Alternativ kann mit &lt;br /&gt;
:&amp;lt;code&amp;gt;attr myJeeLink initCommands 0a v&amp;lt;/code&amp;gt;&lt;br /&gt;
dem Sketch die Anweisung gegeben werden, bei der Initialisierung die LED zu deaktivieren.&lt;br /&gt;
&#039;&#039;Quelle: dieser {{Link2Forum|Topic=27161|LinkText=Forenthread}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Weitergehende Informationen ===&lt;br /&gt;
Hinweise zum Betrieb eines JeeLink mit Fhem finden sich aktuell in größerer Anzahl in verschiedenen Diskussionen im Forum:&lt;br /&gt;
* {{Link2Forum|Topic=11648|LinkText=JeeLink / PCA301}} - Analyse des Funkprotokolls; Anfänge der Entstehung der PCA301 Unterstützung in Fhem.&lt;br /&gt;
* {{Link2Forum|Topic=14786|LinkText=JeeLink / LaCrosse}} - JeeLink Modul zur Einbindung von La Crosse&lt;br /&gt;
* {{Link2Forum|Topic=11648|Message=92019|LinkText=JeeLink / EC3000}} - Anfänge der Entstehung der EC3000 Unterstützung in Fhem.&lt;br /&gt;
* Hinweise zu {{Link2Forum|Topic=11648|Message=92037|LinkText=JeeLabs RoomNode}} und anderen JeeLab Nodes&lt;br /&gt;
* {{Link2Forum|Topic=25399|Message=183910|LinkText=JeeLink mit FHEM2FHEM nutzen}}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Beim Betrieb an einer [[AVM Fritz!Box|FritzBox]] wird der JeeLink unter Umständen als &#039;&#039;Für die Nutzung mit dem USB-Fernanschluss reserviert&#039;&#039; angezeigt. In diesem Fall muss die Reservierung deaktiviert/aufgehoben werden (Details dazu in diesem {{Link2Forum|Topic=16579|LinkText=Forenthread}}).&lt;br /&gt;
* Die Version &#039;&#039;v3c&#039;&#039; des JeeLink funktioniert (Stand 06/2015) nur mit dem LaCrosse Sketch. PCA301 und EC3000 Sketch sind auf den JeeLink Classic beschränkt (siehe unter anderem Diskussion im Forum, startend {{Link2Forum|Topic=11648|Message=308267|LinkText=hier}}).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://jeelabs.com/products/jeelink JeeLabs], JeeLink Hersteller&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ PCA301 Sketch] im SVN&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ LaCrosse Sketch] im SVN&lt;br /&gt;
* [https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/ EC3000 Sketch] im SVN&lt;br /&gt;
* [http://blog.moneybag.de/hausautomation-fhem-mit-funksteckdose-energiemessung-elv-pca-301/ Blog] zum Thema JeeLink zur Anbindung von PCA301 und von LaCrosse Temperatursensoren an Fhem&lt;br /&gt;
* {{Link2Forum|Topic=23217|LinkText=LevelSender}} Tankfüllstand mit JeeLink empfangen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Wetterstationen]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=LaCrosse&amp;diff=18563</id>
		<title>LaCrosse</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=LaCrosse&amp;diff=18563"/>
		<updated>2017-01-18T17:47:18Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Voraussetzungen */  Hinweis auf LaCrosseGateway als IODev&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Unterstützung von La Crosse Sensoren&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=LaCrosse&lt;br /&gt;
|ModForumArea=Sonstige Systeme&lt;br /&gt;
|ModTechName=36_LaCrosse.pm&lt;br /&gt;
|ModOwner=HCS ({{Link2FU|6609|Forum}}) }}&lt;br /&gt;
Das Modul [[LaCrosse]] unterstützt [https://www.lacrossetechnology.com/sensors.php La Crosse] Temperatur- und (Luft)Feuchtesensoren und Wetterstationen wie die WS 1600 (TX22 Sensoren).&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Um &#039;&#039;LaCrosse&#039;&#039;-Geräte nutzen zu können, wird ein [[JeeLink]] [[Interface]] oder ein [[LaCrosseGateway]] als IODevice benötigt, auf dem der LaCrosse Sketch installiert ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Neue Sensoren werden nur automatisch angelegt, wenn &#039;&#039;LaCrossePairForSec&#039;&#039; auf dem IODevice aktiviert ist.&lt;br /&gt;
&lt;br /&gt;
=== Define ===&lt;br /&gt;
Die Syntax für das manuelle Anlegen eines Sensors ist der commandref zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Temperatursensoren]]&lt;br /&gt;
[[Kategorie:Feuchtesensoren]]&lt;br /&gt;
[[Kategorie:Wetterstationen]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=LaCrosseGateway_V1.x&amp;diff=18428</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=18428"/>
		<updated>2017-01-11T22:10:12Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Unterstützte Sensoren und Aktoren */  Hinweis zu 30.3187.IT hinzugefügt&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.25}}&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;[https://forum.fhem.de/index.php/topic,45594.msg430183.html#msg430183 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;
*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===&lt;br /&gt;
[[Datei:lgw_Schaltplan_Devkit.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: ESP8266-12E===&lt;br /&gt;
[[Datei:lgw_Schaltplan_FTDI.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;
[[Datei:lgw_Schaltplan_Platine.png|400px|thumb|left|Variante: Platine (PeMue)]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Addon Schaltung=== &lt;br /&gt;
[[Datei:lgw_Addon-with-example.png|400px|thumb|left|Die Schaltung des kompletten AddOn mit allen aktuell möglichen Optionen]]&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;
===MCP2308=== &lt;br /&gt;
I2C Adresse 0x27 -&amp;gt; A0,A1,A2 = 3.3V&lt;br /&gt;
&amp;lt;source 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;/source&amp;gt;&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.&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;source 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;/source&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;source 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;/source&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;source 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;/source&amp;gt;&lt;br /&gt;
Beispiel:&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;KV DHT 01 Temperature=21.5,Humidity=62&amp;lt;/source&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;source 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;/source&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;LC 9F T=21.5,H=62&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;LC 9F T=21.5&amp;lt;/source&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, die auch vom &amp;quot;LaCrosse Arduino&amp;quot; Sketch unterstützt werden, incl. WS 1600 und WS 1080 (Hinweis beachten)&lt;br /&gt;
siehe [[JeeLink#LaCrosse_Sketch |LaCrosse Sketch]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung !! Datenrate !! Sonstiges !!Funktion !!Link / Hinweise&lt;br /&gt;
|-&lt;br /&gt;
| TX21IT     || 17.241 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| TX25-IT    || 17.241 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| TX27-IT    || 17.241 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| TX29-IT    || 17.241 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| TX29DTH-IT || 17.241 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| TX37       || 17.241 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| TX35TH-IT  ||  9.579 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| TX35DTH-IT ||  9.579 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3143.IT || 17.241 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3144.IT || 17.241 kbps ||extern|||| ({{Link2Forum|Topic=17662|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| 30.3147.IT || 17.241 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| 30.3155WD  ||  9.579 kbps ||extern|||| kritisch; nicht zu empfehlen; siehe {{Link2Forum|Topic=14786|Message=352550|LinkText=Forenbeitrag}}&lt;br /&gt;
|-&lt;br /&gt;
| 30.3156WD  ||  9.579 kbps ||extern|||| Batterie-kritisch. Funktioniert schlecht mit Akkus!&lt;br /&gt;
|-&lt;br /&gt;
| 30.3187.IT || 17.241 kbps ||extern|||| haben alle die gleiche ID, daher nur einzeln verwendbar ({{Link2Forum|Topic=64636|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| WT440XH || 17.241 kbps ||extern||||&lt;br /&gt;
|-&lt;br /&gt;
| WS 1600 (TX22) ||  8.842 kbps || extern |||| ({{Link2Forum|Topic=14786|Message=297293|LinkText=Forenbeitrag}})&lt;br /&gt;
|-&lt;br /&gt;
| WS 1080   || 17.241 kbps || extern |||| Bitte Hinweise beachten! ({{Link2Forum|Topic=14786|Message=363766|LinkText=Forenbeitrag}})&lt;br /&gt;
|-&lt;br /&gt;
| [[EMT7110]]   ||  9.579 kbps || extern |||| ({{Link2Forum|Topic=26494|LinkText=Forenthread}})&lt;br /&gt;
|-&lt;br /&gt;
| LevelSender || 17.241 kbps || extern ||||&lt;br /&gt;
|-&lt;br /&gt;
| PCA301 ||868950 kHz (868,970 und 868,990 ) 6.631 kbps || extern || Energiemess-Steckdose (Unterstützung 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;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweis zur WS 1080: Die WS 1080 gibt es (unter gleichem Namen) in einer OOK- und in einer FSK-Version&lt;br /&gt;
Der LaCrosse Sketch und das LaCrosseGateway können nur die FSK-Version empfangen, die OOK-Version nicht.&lt;br /&gt;
Die FSK-Version erkennt man an dem grünen Aufkleber im Batteriefach der Station mit dem Aufdruck &amp;quot;PASS 7&amp;quot;. Nur diese Version kann empfangen werden.&lt;br /&gt;
Die OOK-Version erkennt man an dem grünen Aufkleber im Batteriefach der Station mit dem Aufdruck &amp;quot;PASS A14C&amp;quot;. &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;
&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;source 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;/source&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;source 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;/source&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;
===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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway flash&amp;lt;/source&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 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;source 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;/source&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;
===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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;http://&amp;lt;LGW-IP&amp;gt;/getLogData&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;http://192.168.31.211/getLogData&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Ergebnis sieht wie folgt aus:&lt;br /&gt;
&amp;lt;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;sudo apt-get install libwww-perl&amp;lt;/source&amp;gt;&lt;br /&gt;
alternativ auch mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;sudo cpan LWP::UserAgent&amp;lt;/source&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;
==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;source lang=&amp;quot;php&amp;quot;&amp;gt;define myLaCrosseGateway LaCrosseGateway 192.168.22.33:81&amp;lt;/source&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;source 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;/source&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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway timeout 120,30&amp;lt;/source&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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;8266e&amp;lt;/source&amp;gt;&lt;br /&gt;
Er kann mit einem Terminalprogramm, von FHEM aus mit &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set &amp;lt;myLaCrosseGateway&amp;gt; raw 8266e&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;define &amp;lt;name&amp;gt; LaCrosse 00&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 220h&amp;lt;/source&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;source 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;/source&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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 0#1r v&amp;lt;/source&amp;gt;&lt;br /&gt;
| DataRate des ersten RFM setzen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 8842#3r v &amp;lt;/source&amp;gt;&lt;br /&gt;
| DataRate des dritten RFM setzen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868300#2f v&amp;lt;/source&amp;gt;&lt;br /&gt;
| Frequenz des zweiten RFM setzten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 868295#3f v&amp;lt;/source&amp;gt;&lt;br /&gt;
| Frequenz des dritten RFM setzten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 17241#1r 8842#2r v&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zwei RFM69CW mit DataRate 17241 und 8842&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 3#1m 20#1t 8842#2r v&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 220h 868295#1f 868310#2f v&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zwei RFMs Frequenz 868295 und 868310 sowie Höhe über NN&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands 9#2m 20#2t v&amp;lt;/source&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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;MCP GP0=1,GP1=0&amp;quot;&amp;lt;/source&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;
Um auf dem 1.3&amp;quot; Display eine korrekte Darstellung zu erhalten, muss man die Checkbox 1.3&amp;quot; ankreuzen.&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED On&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Schaltet ein angeschlossenes Display ein &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED Off&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Schaltet ein angeschlossenes Display aus &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED interval=20&amp;quot;&amp;lt;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=ths&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte und Systemdaten an &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=thp&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte und Luftdruck an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=thps&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zeigt ausschließlich den von FHEM festgeleget Text an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED mode=s&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
| Zeigt ausschließlich die Systemdaten an&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;set myLaCrosseGateway raw &amp;quot;OLED show=55%,,,h&amp;quot;&amp;lt;/source&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;source 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;/source&amp;gt;&lt;br /&gt;
| Zeigt drei Texte aber kein Symbol an.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;attr myLaCrosseGateway initCommands &amp;quot;OLED mode=thps&amp;quot;&amp;lt;/source&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;
==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;source lang=&amp;quot;php&amp;quot;&amp;gt;define CULXYZ CUL &amp;lt;IP-Adresse&amp;gt;:85 0000&amp;lt;/source&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;source 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;/source&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;source lang=&amp;quot;php&amp;quot;&amp;gt;./esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 115200 -ca 0x00000 -cd nodemcu -ce&amp;lt;/source&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;
[https://forum.fhem.de/index.php/topic,43672.0.html LaCrosseGateway - LaCrosse, PCA301 und EC3000 über wifi mit ESP8266 ohne Arduino]&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,45594.0.html Platine für LaCrosseGateway: Platinenbestellung]&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,51329.30.html Platine für nanoLGW (LaCrosse Gateway): Layout]&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,52921.0.html Display für LaCrosseGateway]&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,52895.0.html SC16IS750-Software-Clone]&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;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=OpenWRT&amp;diff=17690</id>
		<title>OpenWRT</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=OpenWRT&amp;diff=17690"/>
		<updated>2016-12-06T18:26:50Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Voraussetzungen für &amp;quot;make menuconfig&amp;quot; hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Hier sind zwei alternative Installationswege beschrieben.&lt;br /&gt;
&lt;br /&gt;
* Im ersten Kapitel wird beschrieben, wie Openwrt auf einem Gerät mit wenig(er) internem Speicher eingerichtet werden kann. Hier wird OpenWRT zuerst aus den Sourcen erstellt und ein Overlay für die PERL-Pakete eingerichtet.&lt;br /&gt;
* Das zweite Kapitel beschreibt, wie OpenWRT mit PERL im internen Speicher (6MB) installiert wird. Es werden keine Pakete selbst gebaut, sondern die Nightly-Snapshots verwendet. FHEM wird auf einem USB-Stick eingerichtet.&lt;br /&gt;
&lt;br /&gt;
== Installation von FHEM incl. OpenWRT auf einem Router/Kleinstcomputer z.B. TP-LINK MR3020 ==&lt;br /&gt;
Wer nicht unbedingt eine Fritz!Box braucht sondern einfach nur FHEM ohne laufenden PC betreiben will, kann auch OpenWRT auf einem Router nutzen, z.B. dem sehr günstigen (25 Euro März 2012) und stromsparenden (ca. 1 Watt) TP-LINK MR3020.&lt;br /&gt;
&lt;br /&gt;
Bitte beachten: Es kann keine Garantie übernommen werden, dass der Router bei Befolgung dieser Anleitung &amp;quot;kaputt&amp;quot; geht, z.B. dadurch, dass er bei Fehlkonfiguration im Netz nicht mehr erreichbar ist. Der Umbau erfolgt auf eigene Gefahr.&lt;br /&gt;
&lt;br /&gt;
=== Vorraussetzungen ===&lt;br /&gt;
* Der Router (in diesem Howto ist der TP-LINK MR3020 verwendet worden, OpenWRT wird aber prinzipiell immer gleich aufgesetzt&lt;br /&gt;
* Ein USB Stick, da die Flash-Speicher der Router zu klein sind&lt;br /&gt;
* optional ein passiver USB-Hub (wenn der Router nur einen USB Port hat und ein CUL Stick betrieben werden soll)&lt;br /&gt;
* Ein Linux-PC zum Erstellen des Images. Dies kann auch eine virtuelle Maschine sein. Der Autor hat Ubuntu 10.11 verwendet.&lt;br /&gt;
=== Vorbereiten des USB-Sticks ===&lt;br /&gt;
Auf einem USB Stick müssen zwei Partitionen angelegt werden, eine als Auslagerungsspeicher für den RAM und eine für das Dateisystem auf dem später auch Perl und FHEM installiert werden. Das geht am besten mit dem Tool &amp;lt;code&amp;gt;fdisk&amp;lt;/code&amp;gt; auf dem vorbereiteten Linux-PC. Dazu den Stick anstöpseln und per Aufruf von &amp;lt;code&amp;gt;fdisk -l&amp;lt;/code&amp;gt; die Lister der gefundenen &amp;quot;Festplatten&amp;quot; anzeigen lassen. Eine davon ist der USB-Stick, z.B. an seiner Größe zu erkennen (500Mb reichen locker aus). In der Ausgabe z.B. nach einer Zeile suchen, die sinngemäß so aussieht: &amp;lt;code&amp;gt;Disk /dev/sdc: 484 MB, 484442112 bytes&amp;lt;/code&amp;gt;. In diesem Fall ist der USB-Stick das Gerät &amp;quot;/dev/sdc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Daraufhin kann fdisk für das Gerät aufgerufen werden. Detaillierte ANleitungen für fdisk finden sich im Internet. Vereinfacht ist folgender Vorgang auszuführen (alle Daten gehen auf dem Stick verloren!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
fdisk /dev/sdc&lt;br /&gt;
o&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
1&lt;br /&gt;
1&lt;br /&gt;
+64M&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
2 (drei mal Enter drücken)&lt;br /&gt;
t&lt;br /&gt;
1&lt;br /&gt;
82&lt;br /&gt;
w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach ist der Stick partitioniert. Ein erneuter Aufruf von &amp;lt;code&amp;gt;fdisk -l&amp;lt;/code&amp;gt; sollte ungefähr folgendes ERgebnis liefern:&lt;br /&gt;
&lt;br /&gt;
 Disk /dev/sdc: 484 MB, 484442112 bytes&lt;br /&gt;
 2 heads, 63 sectors/track, 7509 cylinders&lt;br /&gt;
 Units = cylinders of 126 * 512 = 64512 bytes&lt;br /&gt;
 Disk identifier: 0x8c5e341e&lt;br /&gt;
   Device Boot   Start     End   Blocks  Id System&lt;br /&gt;
 /dev/sdc1        1     993    62527+ 82 Linux swap / Solaris&lt;br /&gt;
 /dev/sdc2       994    7509   410508  83 Linux&lt;br /&gt;
&lt;br /&gt;
Jetzt müssen die Partitionen noch formatiert werden. Vorsicht: Nur hier heisst der Stick /dev/sdc. Er kann auch anders heissen! Wenn ihr die falschen Namen verwendet, könntet ihr eure Festplatte löschen! /dev/sdc1 ist durch /dev/&amp;amp;lt;euer-sdx&amp;amp;gt;1 zu ersetzen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
mkswap /dev/sdc1&lt;br /&gt;
mkfs.ext4 /dev/sdc2&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Stick ist nun fertig vorbereitet und wird im Linux-PC nicht mehr benötigt. Er kann jetzt in den Router&lt;br /&gt;
&lt;br /&gt;
=== Bauen des OpenWRT-Images ===&lt;br /&gt;
Um OpenWRT zu bauen, müssen die entsprechenden Werkzeuge auf dem Linux-PC installiert sein. Unter Ubuntu geht das so:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
sudo apt-get -y install build-essential libncurses5-dev zlib-dev libssl-dev git-core&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenWRT kann am besten von GitHub ausgecheckt werden.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
git clone git://github.com/openwrt/openwrt.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Auschecken dauert eine Weile, aber das ist noch gar nichts, das Bauen dauert noch viel länger. Sobald alles runtergeladen ist, wird in das Verzeichnis gewechselt und die Konfiguration vorgenommen&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
cd openwrt&lt;br /&gt;
make menuconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Konfiguration muss die Architektur des Routers bekannt sein. Diese kann auf der [http://www.openwrt.org OpenWRT-Seite] nachgeschlagen werden. der TP-LINK MR3020 hat eine &amp;lt;code&amp;gt;ar71xx&amp;lt;/code&amp;gt;-Architektur.&lt;br /&gt;
&lt;br /&gt;
Als erstes also die Architektur auswählen (Hier: &amp;lt;code&amp;gt;ar71xxx/ar91xxx&amp;lt;/code&amp;gt;)&lt;br /&gt;
Zweitens kann beim Target-Profile meinst genau der Router ausgewählt werden (Notfalls auf der OpenWRT-Seite nachlesen)&lt;br /&gt;
&lt;br /&gt;
Optional kann nun unter &amp;lt;code&amp;gt;Image-Configuration&amp;lt;/code&amp;gt; bereits eine Netzwerkkonfiguration eingestellt werden, die der Router dann nach seinem Hochfahren hat. Wenn der Router in ein bestehendes Netz mit bestehenden DHCP-Server und Adressraum eingebunden wird, ist das sinnvoll. Wer das hat, weiss auch, was hier einzustellen ist. Standardmäßig ist die Adresse 192.168.1.1 vorgegeben. Die Konfiguration kann auch später jederzeit geändert werden.&lt;br /&gt;
&lt;br /&gt;
Nun zu den Kernel-Modules. Hier sollte folgendes aktiviert werden (Einiges ist ggf. nicht nötig, aber so geht es). Die Einträge müssen mit &amp;quot;*&amp;quot; und nicht mit &amp;quot;M&amp;quot; selektiert sein, sonst kommen sie nicht ins Image.&lt;br /&gt;
&lt;br /&gt;
* Block-Devices&lt;br /&gt;
** kmod-ide-core&lt;br /&gt;
** kmod-ide-generic&lt;br /&gt;
** kmod-loop (kann man immer mal brauchen)&lt;br /&gt;
** kmod-scsi-generic&lt;br /&gt;
* Filesystems&lt;br /&gt;
** kmod-fs-ext4 &#039;&#039;(davon wollen wir später vom USB-Stick booten)&#039;&#039;&lt;br /&gt;
* USB-Support&lt;br /&gt;
** kmod-usb-acm &#039;&#039;(für CUL)&#039;&#039;&lt;br /&gt;
** kmod-usb-hid&lt;br /&gt;
** kmod-usb-ohci&lt;br /&gt;
** kmod-usb-serial&lt;br /&gt;
** kmod-usb-serial-ftdi&lt;br /&gt;
** kmod-usb-storage-extras&lt;br /&gt;
** kmod-usb-uhci&lt;br /&gt;
** kmod-usb2&lt;br /&gt;
&lt;br /&gt;
Unter Utilities noch folgendes aktivieren&lt;br /&gt;
* Filesystem&lt;br /&gt;
** e2fsprogs&lt;br /&gt;
* disc&lt;br /&gt;
** fdisk &#039;&#039;(für Analysezwecke sinnvoll)&#039;&#039;&lt;br /&gt;
** swap-utils&lt;br /&gt;
&lt;br /&gt;
Nun kann - in aller Ruhe - alles gebaut werden durch Eingabe von&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereiten des Routers ===&lt;br /&gt;
Das ganze kann bis zu mehrere Stunden laufen. Nun ist Zeit, den Router ins Netzwerk einzubinden. Wie genau, hängt von der persönlichen Konstellation ab. Der TP-Link MR3020 hat standardmäßig die IP-Adresse 192.168.0.254. Viele andere Router haben z.B. 192.168.0.1. Ich empfehle, das Update auf jeden Fall nicht über WLAN sondern ein Netzwerkkabel zu machen. Die meisten Router haben einen aktivierten DHCP-Server. Ein angestöpselter Windows-PC bekommt dann von ihm eine IP-Adresse zugewiesen. Beim MR3020 kann dann die Weboberfläche über [http://192.168.0.254 http://192.168.0.254] erreicht werden. (User/Passwort: admin/admin)&lt;br /&gt;
&lt;br /&gt;
=== Installation von OpenWRT auf dem Router ===&lt;br /&gt;
In der Weboberfläche des Routers gibt es irgendwo einen Menüpunkt zum Firmware-Upgrade. Beim MR3020 erreichbar unter System Tools / Firmware Upgrade. Sobald das Bauen von OpenWRT fertig ist, liegt das Image im Unterordner &amp;lt;code&amp;gt;bin/&amp;lt;architektur&amp;gt;/&amp;lt;/code&amp;gt;. Es sollte das Image genommen werden, was den Namen des Routers sowie &amp;quot;squashfs&amp;quot; sowie &amp;quot;factory&amp;quot; im Dateinamen enthält. Dieses muss jetzt im Webinterface wie beschrieben ausgewählt werden und hochgeladen werden. Alle Bestätigungsmeldungen und &amp;quot;Wollen-Sie-Das-auch-Wirklich&amp;quot;-Fragen natürlich bestätigen. &lt;br /&gt;
&lt;br /&gt;
Nach einer Weile sollte dann der Router unter 192.168.1.1 anpingbar sein (von Linux aus: &amp;lt;code&amp;gt;ping 192.168.1.1&amp;lt;/code&amp;gt;) bzw. unter der in der Image Configuration eingestellten IP. Wenn das nicht geht, kann man den Router auch ein 2. mal starten, da sollte man dann aber nach dem Flashen mal 10 Minuten Geduld haben (also Stecker raus/rein). Auf keinen Fall zu früh machen, dann könnte es sein, dass er gar nicht mehr hochfährt!&lt;br /&gt;
&lt;br /&gt;
Zunächst muss man sich nun per telnet verbinden. &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
telnet 192.168.1.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun ist man schon im OpenWRT eingeloggt. Das erste und einzige, was in diesem Login nun gemacht wird, ist, per&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
passwd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ein Passwort zu setzen. Danach kann man sich mit&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ausloggen. Ab jetzt ist &amp;lt;code&amp;gt;telnet&amp;lt;/code&amp;gt; zur Sicherheit deaktiviert und man kann per &amp;lt;code&amp;gt;ssh&amp;lt;/code&amp;gt; eine Verbindung herstellen, da ja jetzt ein Passwort gesetzt ist&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
ssh root@192.168.1.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Für den weiteren Verlauf ist es notwendig, dass der Router Internetzugang hat. Dazu muss man ggf. von Hand in der Datei &amp;lt;code&amp;gt;/etc/config/network&amp;lt;/code&amp;gt; die Netzwerkeinstellungen entsprechend anpassen.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
vi /etc/config/network&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Zur Bedienung von vi z.B. [http://wiki.openwrt.org/doc/uci/network hier]&lt;br /&gt;
&lt;br /&gt;
Wichtig ist die IP-Adresse, die Netzmaske, das Gateway und der DNS-Server. Bitte genau auf Tippfehler achten. Bei einer fehlenden Konfiguration ist der Router nicht mehr erreichbar. Nach abspeichern kann die neue Konfiguration aktiviert werden&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
/etc/init.d/network restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Falls sich auch die IP-Adresse geändert hat, mit ssh wie oben neu anmelden. Als nächstes soll der USB-Stick eingebunden werden, dazu sind einige Pakete zu installieren. OpenWRT hat einen eingebauten Paketmanager zur Nachinstallation von Software direkt aus dem Netz. Zunächst wird nur das installiert, was in den internen Speicher des Routers muss. Das Root-Dateisystem soll anschließend durch den USB-Stick erweitert werden, um dann dorthin die meiste Software zu installieren. Viele Details hierzu finden sich [http://wiki.openwrt.org/doc/howto/extroot hier]&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install block-mount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Bei einem Aufruf von &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
fdisk -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
sollte der an dem Router angeschlossene Stick bereits zu sehen sein (analog zu oben). Hiermit lässt sich dann auch rausfinden, wie das Gerät auf dem Router heisst. In den meisten Fällen dürfte dies &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; sein. In diesem Fall können wir nun das Dateisystem einbinden und dann die Dateien aus dem internen Speicher dorthin kopieren.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
mkdir /mnt/sda2&lt;br /&gt;
mount /dev/sda2 /mnt/sda2&lt;br /&gt;
tar -C /overlay -cvf - . | tar -C /mnt/sda2 -xf -&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun kann auch schon die Konfiguration so umgestellt werden, dass beim nächsten Neustart der USB-Stick mit ins Root-Filesystem eingebunden wird. Dazu ist die Konfigurationsdatei &amp;lt;code&amp;gt;/etc/config/fstab&amp;lt;/code&amp;gt; zu editieren.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
vi /etc/config/fstab&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Diese sollte danach ungefähr so aussehen, wobei das von Router zu Router abweichen kann. Der automatische Block für &amp;quot;home&amp;quot; kann bearbeitet werden und der Spap-Block ebenfalls auf (hier) /dev/sda1 angepasst werden&lt;br /&gt;
&lt;br /&gt;
 config global automount&lt;br /&gt;
    option from_fstab 1&lt;br /&gt;
    option anon_mount 1&lt;br /&gt;
 config global autoswap&lt;br /&gt;
    option from_fstab 1&lt;br /&gt;
    option anon_swap 1&lt;br /&gt;
 config mount&lt;br /&gt;
    option target  /overlay&lt;br /&gt;
    option device  /dev/sda2&lt;br /&gt;
    option fstype  ext4&lt;br /&gt;
    option options rw,sync&lt;br /&gt;
    option enabled 1&lt;br /&gt;
    option enabled_fsck 1&lt;br /&gt;
 config swap&lt;br /&gt;
    option device  /dev/sda1&lt;br /&gt;
    option enabled 1&lt;br /&gt;
&lt;br /&gt;
Nun kann die Konfiguration aktiviert und die Box mit eingestecktem Stick neu gestartet werden&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
/etc/init.d/fstab enable&lt;br /&gt;
reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun sollte überprüft werden, ob der Stick richtig eingebunden ist&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Die Ausgabe sollte sinngemäß folgende Zeilen enthalten&lt;br /&gt;
&lt;br /&gt;
 /dev/sda2        397.7M   19.8M  357.9M  5% /overlay&lt;br /&gt;
 overlayfs:/overlay   397.7M   19.8M  357.9M  5%&lt;br /&gt;
&lt;br /&gt;
Ist dies nicht der Fall, kann auf der OpenWRT Seite nach Troubleshooting-Möglichkeiten gesucht werden und dann hier fortgesetzt werden.&lt;br /&gt;
Nachdem nun der Stick erfolgreiche eingebunden werden, können die ganzen Pakete installiert werden, die zum Betrieb von FHEM notwendig sind. Da dies eine Vielzahl der perlbase-Pakete ist, sind hier schlichtweg alle verfügbaren perl-Pakete installiert worden. Ebenfalls einige andere nützliche Werkzeuge. Speichermäßig ist das auf dem USB-Stick nicht entscheidend.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install usbutils luci ntpclient uhttpd perl perl-compress-bzip2 perl-dbi perl-html-parser perl-html-tagset perl-html-tree perl-lockfile-simple \&lt;br /&gt;
perl-net-telnet perl-uri perl-www perl-www-curl perl-www-mechanize perlbase-abbrev perlbase-anydbm-file perlbase-archive perlbase-assert perlbase-attribute \&lt;br /&gt;
perlbase-attributes perlbase-attrs perlbase-autoloader perlbase-autosplit perlbase-autouse perlbase-b perlbase-base perlbase-benchmark perlbase-bigfloat \&lt;br /&gt;
perlbase-bigint perlbase-bignum perlbase-bigrat perlbase-blib perlbase-bytes perlbase-cacheout perlbase-cgi perlbase-charnames perlbase-class \&lt;br /&gt;
perlbase-complete perlbase-compress perlbase-config perlbase-cpan perlbase-cpanplus perlbase-ctime perlbase-cwd perlbase-data perlbase-db \&lt;br /&gt;
perlbase-db-file perlbase-dbm-filter perlbase-devel perlbase-diagnostics perlbase-digest perlbase-dirhandle perlbase-dotsh perlbase-dumpvalue \&lt;br /&gt;
perlbase-dumpvar perlbase-dynaloader perlbase-encode perlbase-encoding perlbase-english perlbase-env perlbase-errno perlbase-essential perlbase-exceptions \&lt;br /&gt;
perlbase-extutils perlbase-fastcwd perlbase-fatal perlbase-fcntl perlbase-feature perlbase-fields perlbase-file perlbase-filecache perlbase-filehandle \&lt;br /&gt;
perlbase-filetest perlbase-filter perlbase-find perlbase-findbin perlbase-finddepth perlbase-flush perlbase-gdbm-file perlbase-getcwd perlbase-getopt \&lt;br /&gt;
perlbase-getoptpl perlbase-hash perlbase-hostname perlbase-i18n perlbase-if perlbase-importenv perlbase-integer perlbase-io perlbase-ipc perlbase-less \&lt;br /&gt;
perlbase-list perlbase-locale perlbase-log perlbase-look perlbase-math perlbase-memoize perlbase-mime perlbase-module perlbase-mro perlbase-net \&lt;br /&gt;
perlbase-next perlbase-o perlbase-object perlbase-opcode perlbase-open perlbase-ops perlbase-package perlbase-params perlbase-perl5db perlbase-perlio \&lt;br /&gt;
perlbase-pod perlbase-posix perlbase-pwd perlbase-re perlbase-safe perlbase-scalar perlbase-sdbm-file perlbase-search perlbase-selectsaver \&lt;br /&gt;
perlbase-selfloader perlbase-shell perlbase-shellwords perlbase-sigtrap perlbase-socket perlbase-sort perlbase-stat perlbase-storable perlbase-switch \&lt;br /&gt;
perlbase-symbol perlbase-sys perlbase-syslog perlbase-tainted perlbase-term perlbase-termcap perlbase-test perlbase-text perlbase-thread perlbase-threads \&lt;br /&gt;
perlbase-tie perlbase-time perlbase-unicode perlbase-unicore perlbase-user perlbase-xsloader&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Das Webinterface &amp;quot;Luci&amp;quot; ist mitinstalliert worden und bietet komfortable Einstellmöglichkeiten für den Router allgemein. Nach einem &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
/etc/init.d/uhttpd enable&lt;br /&gt;
/etc/init.d/uhttpd start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ist es unter &amp;lt;code&amp;gt;[http://192.168.1.1/ http://192.168.1.1/]&amp;lt;/code&amp;gt; bzw. der entsprechenden Router-IP erreichbar. Wichtig ist es ggf. den DHCP-Server zu deaktivieren. Die meisten Router können auch als WLAN-Clients konfiguriert werden, sie brauchen also nicht zwangsweise ein Netzwerkkabel. All dies geht über die Weboberfläche.&lt;br /&gt;
Nun kann FHEM auf den Router/Stick kopiert werden. In diesem Beispiel benutzen wir das SVN-Repository&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg install subversion-client make libelf&lt;br /&gt;
mkdir /usr/src&lt;br /&gt;
cd /usr/src&lt;br /&gt;
svn co https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem&lt;br /&gt;
cd fhem&lt;br /&gt;
make install-pgm2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Die Bearbeitung der &amp;lt;code&amp;gt;/etc/fhem.cfg&amp;lt;/code&amp;gt; ist nun so durchzuführen, wie bei jeder anderen FHEM-Installation auch. &lt;br /&gt;
&lt;br /&gt;
==== CUL ====&lt;br /&gt;
Wenn ein [[CUL]] am Router verwendet werden soll, dann geht dies über den Umweg &amp;lt;code&amp;gt;ser2net&amp;lt;/code&amp;gt;, da das CPAN Modul &amp;lt;code&amp;gt;Device::Serial&amp;lt;/code&amp;gt; in OpenWRT nicht standardmäßig zur Verfügung steht.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg install ser2net&lt;br /&gt;
vi /etc/ser2net.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In der Datei kann alles gelöscht werden und dann genau diese Zeile eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 27073:raw:300:/dev/ttyACM0:115200 NONE 1STOPBIT 7DATABITS&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg ist die Definition des CUL-Sticks dann folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
 define MyCUL CUL 127.0.0.1:27073 3333&lt;br /&gt;
&lt;br /&gt;
Wenn man CUL doch per Device::Serial ansprechen oder andere FHEM Module verwenden will, die auf Device::Serial angewiesen sind, kann man das entsprechende OpenWRT Paket auch selber erstellen.&lt;br /&gt;
Hinweise dazu gibt es [http://tcb.udarknet.com/dokuwiki/doku.php/projects/securouter/openwrt hier].&lt;br /&gt;
&lt;br /&gt;
Nun muss nur noch der Autostart von ser2net und fhem eingebaut werden und die integrierte, stromsparende FHEM-Kiste ist fertig.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
vi /etc/init.d/ser2net&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
mit folgendem Inhalt&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh /etc/rc.common&lt;br /&gt;
# Ser2Net Init Script&lt;br /&gt;
START=10&lt;br /&gt;
STOP=15&lt;br /&gt;
start() {&lt;br /&gt;
    ser2net&lt;br /&gt;
}&lt;br /&gt;
stop(){&lt;br /&gt;
    killall ser2net&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Danach Ser2Net aktivieren und starten:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
chmod +x /etc/init.d/ser2net&lt;br /&gt;
/etc/init.d/ser2net enable&lt;br /&gt;
/etc/init.d/ser2net start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== FHEM beim Systemstart ====&lt;br /&gt;
Nun noch die Konfiguration für fhem selbst&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh /etc/rc.common&lt;br /&gt;
# FHEM Init Script&lt;br /&gt;
START=11&lt;br /&gt;
STOP=15&lt;br /&gt;
start() {&lt;br /&gt;
    /usr/bin/fhem.pl /etc/fhem.cfg&lt;br /&gt;
}&lt;br /&gt;
stop(){&lt;br /&gt;
    echo &amp;amp;quot;shutdown&amp;amp;quot; | nc localhost 7072&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Und auch hier aktivieren:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
chmod +x /etc/init.d/fhem&lt;br /&gt;
/etc/init.d/fhem enable&lt;br /&gt;
/etc/init.d/fhem start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Logfiles nicht auf USB-Stick ====&lt;br /&gt;
Da das ständige Schreiben 1. langsam und 2. den meisten USB-Sticks nicht gut tut, sollten die Logfiles ins RAM geschrieben werden, also ein Pfad unterhalb von &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt;. Der Speicher ist allerdings begrenzt. Je nach persönlichen Anforderungen muss dann regelmäßig das Log aus dem Speicher gelöscht oder archiviert werden. Z.b. wöchentlich auf den USB Stick oder auf Netzlaufwerke etc. Dies ist mit dem FileLog von alleine möglich (siehe [http://fhem.de/commandref.html#archivecmd]).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Alternative Installation aus den Kompilierten Quellen bei einem Speicher größer 6MB ==&lt;br /&gt;
Zunächst wird OpenWRT auf den Router installiert. Auf die Installation des WEB-Interfaces „luci“ kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
=== Netzwerk einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der erste Login erfolgt mit &amp;lt;code&amp;gt;telnet&amp;lt;/code&amp;gt; (nicht SSH) auf die IP 192.168.1.1 ohne Passwort.&lt;br /&gt;
Als erstes sollte mit dem Befehl &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; ein Passwort eingestellt werden.&lt;br /&gt;
Sobald das geschehen ist, wird der Telnet-Dienst abgestellt.&lt;br /&gt;
Ab jetzt sollte über den SSH-Dienst mit dem eben eingestellten Passwort gearbeitet werden.&lt;br /&gt;
Mittels &amp;lt;code&amp;gt;vi&amp;lt;/code&amp;gt; kann die LAN-IP-Adresse in der Datei &amp;lt;code&amp;gt;/etc/config/network&amp;lt;/code&amp;gt; angepasst werden.&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
config interface &#039;lan&#039;&lt;br /&gt;
...&lt;br /&gt;
      option ipaddr &#039;192.168.178.4&#039;&lt;br /&gt;
      option netmask &#039;255.255.255.0&#039;&lt;br /&gt;
      option gateway &#039;192.168.178.1&#039;&lt;br /&gt;
      option dns &#039;192.168.178.1&#039;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration wird mit dem Aufruf von &amp;lt;code&amp;gt;/etc/init.d/network restart&amp;lt;/code&amp;gt; übernommen.&lt;br /&gt;
&lt;br /&gt;
Zeitzone in der Datei &amp;lt;code&amp;gt;/etc/config/system&amp;lt;/code&amp;gt; einstellen:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
config system&lt;br /&gt;
...&lt;br /&gt;
        option timezone &#039;CET-1CEST,M3.5.0,M10.5.0/3&#039;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PERL installieren ===&lt;br /&gt;
&lt;br /&gt;
Perl kann wie folgt eingerichtet werden. Je nach verwendetet FHEM-Module müssen weitere PERL-Pakete installiert werden. Für MAX_LAN, HM-CFG-LAN und ECMD reicht die folgende Auswahl:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install perl perl-html-parser perl-html-tagset perl-uri perl-www perlbase-autoloader perlbase-config \&lt;br /&gt;
perlbase-ctime perlbase-digest perlbase-dynaloader perlbase-errno perlbase-essential perlbase-fcntl \&lt;br /&gt;
perlbase-file perlbase-integer perlbase-io perlbase-math perlbase-mime perlbase-posix perlbase-selectsaver \&lt;br /&gt;
perlbase-socket perlbase-symbol perlbase-tie perlbase-time perlbase-timelocal perlbase-xsloader&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einbinden der Partitionen per UUID ===&lt;br /&gt;
&lt;br /&gt;
Für die Verwendung eines USB-Sticks müssen weitere Pakete installiert werden:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install kmod-usb-storage block-mount kmod-fs-ext4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der USB-Stick benötigt eine Datenpartition, optional kann eine zusätzliche SWAP-Partition eingerichtet werden.&lt;br /&gt;
Hierfür kann der Abschnitt &amp;quot;[[#Vorbereiten des USB-Sticks|Vorbereiten des USB-Sticks]]&amp;quot; aus dem vorherigen Kapitel verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Erstellen eines Verzeichnisses für den FHEM-Daten-Stick:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
mkdir /mnt/opt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels des Befehls &amp;lt;code&amp;gt;block&amp;lt;/code&amp;gt; kann eine brauchbare fstab-Konfiguration erstellt werden.&lt;br /&gt;
An dieser Stelle wird mit den eindeutigen UUIDs gearbeitet.&lt;br /&gt;
So ist es beim Betrieb von mehreren Datenspeichern unerheblich, in welcher Reihenfolge diese eingebunden werden.&lt;br /&gt;
Dies kann etwas Ärger ersparen.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
block detect &amp;gt; /etc/config/fstab&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;lt;code&amp;gt;/etc/config/fstab&amp;lt;/code&amp;gt; muss angepasst werden.&lt;br /&gt;
Zunächst sind die Mount-Punkte nicht aktiviert und das Verzeichnis für die Datenpartition muss noch angepasst werden.&lt;br /&gt;
Die Option &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt; muss unverändert bleiben. &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
vi /etc/config/fstab&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Darin&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
config &#039;global&#039;&lt;br /&gt;
        ...&lt;br /&gt;
config &#039;mount&#039;&lt;br /&gt;
        option  target  &#039;/mnt/opt&#039;&lt;br /&gt;
        option  uuid    &#039;...&#039;&lt;br /&gt;
        option  enabled &#039;1&#039;&lt;br /&gt;
config &#039;swap&#039;&lt;br /&gt;
        option  uuid    &#039;...&#039;&lt;br /&gt;
        option  enabled &#039;1&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über einen Neustart oder &amp;lt;code&amp;gt;/sbin/block mount&amp;lt;/code&amp;gt; werden die Partitionen eingebunden.&lt;br /&gt;
&lt;br /&gt;
=== Installation von FHEM ===&lt;br /&gt;
Die Installation von FHEM ist an vielen Stellen sehr gut beschrieben.&lt;br /&gt;
Hier nur die Quick&amp;amp;Dirty Variante.&lt;br /&gt;
Die [http://fhem.de/fhem.html#Download aktuellste, stabile Version] herunter laden.&lt;br /&gt;
Die Version &#039;&#039;X.Y&#039;&#039; in den folgenden Befehlen bitte entsprechend anpassen:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
cd /mnt/opt/&lt;br /&gt;
wget http://fhem.de/fhem-X.Y.tar.gz&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install tar&lt;br /&gt;
tar xfz fhem-X.Y.tar.gz&lt;br /&gt;
mv fhem-X.Y fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Startskript anlegen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
touch /etc/init.d/fhem&lt;br /&gt;
chmod +x  /etc/init.d/fhem&lt;br /&gt;
vi /etc/init.d/fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Darin&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh /etc/rc.common&lt;br /&gt;
# FHEM Init Script&lt;br /&gt;
&lt;br /&gt;
START=11&lt;br /&gt;
STOP=15&lt;br /&gt;
&lt;br /&gt;
cd /mnt/opt/fhem/&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
  if [ -f /mnt/opt/fhem-X.Y/log ]; then&lt;br /&gt;
    mkdir -p /mnt/opt/fhem-X.Y/log&lt;br /&gt;
  fi&lt;br /&gt;
  /mnt/opt/fhem/fhem.pl /mnt/opt/fhem/fhem.cfg&lt;br /&gt;
}&lt;br /&gt;
stop(){&lt;br /&gt;
  echo &amp;quot;stopping fhem&amp;quot;&lt;br /&gt;
  /mnt/opt/fhem/fhem.pl 7072 &amp;quot;shutdown&amp;quot;&lt;br /&gt;
  #kill -TERM $(cat /var/run/fhem.pid)&lt;br /&gt;
}&lt;br /&gt;
restart(){&lt;br /&gt;
  echo &amp;quot;restarting&amp;quot;&lt;br /&gt;
  mnt/opt/fhem/fhem.pl 7072 &amp;quot;shutdown&amp;quot;&lt;br /&gt;
  #kill -TERM $(cat /var/run/fhem.pid)&lt;br /&gt;
  /mnt/opt/fhem/fhem.pl /mnt/opt/fhem/fhem.cfg&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Init.d-Script aktivieren:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
/etc/init.d/fhem start&lt;br /&gt;
/etc/init.d/fhem enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab jetzt sollte FHEM bei jedem Bootvorgang automatisch gestartet werden.&lt;br /&gt;
&lt;br /&gt;
=== Anmerkungen ===&lt;br /&gt;
* Es sollte sichergestellt werden, dass keine Dateien außerhalb von &amp;lt;code&amp;gt;/mnt/opt/&amp;lt;/code&amp;gt; geschrieben werden.&lt;br /&gt;
* Die PERL-Version ist leider etwas älter (Version 5.10) an einigen Stellen muss der FHEM-Code angepasst werden. Besonders wenn mit dem „~~“ Operator gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;br /&gt;
[[Kategorie:CUL]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=OpenWRT&amp;diff=17689</id>
		<title>OpenWRT</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=OpenWRT&amp;diff=17689"/>
		<updated>2016-12-06T18:15:28Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Die Quellen zu OpenWRT liegen jetzt auf GitHub&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Hier sind zwei alternative Installationswege beschrieben.&lt;br /&gt;
&lt;br /&gt;
* Im ersten Kapitel wird beschrieben, wie Openwrt auf einem Gerät mit wenig(er) internem Speicher eingerichtet werden kann. Hier wird OpenWRT zuerst aus den Sourcen erstellt und ein Overlay für die PERL-Pakete eingerichtet.&lt;br /&gt;
* Das zweite Kapitel beschreibt, wie OpenWRT mit PERL im internen Speicher (6MB) installiert wird. Es werden keine Pakete selbst gebaut, sondern die Nightly-Snapshots verwendet. FHEM wird auf einem USB-Stick eingerichtet.&lt;br /&gt;
&lt;br /&gt;
== Installation von FHEM incl. OpenWRT auf einem Router/Kleinstcomputer z.B. TP-LINK MR3020 ==&lt;br /&gt;
Wer nicht unbedingt eine Fritz!Box braucht sondern einfach nur FHEM ohne laufenden PC betreiben will, kann auch OpenWRT auf einem Router nutzen, z.B. dem sehr günstigen (25 Euro März 2012) und stromsparenden (ca. 1 Watt) TP-LINK MR3020.&lt;br /&gt;
&lt;br /&gt;
Bitte beachten: Es kann keine Garantie übernommen werden, dass der Router bei Befolgung dieser Anleitung &amp;quot;kaputt&amp;quot; geht, z.B. dadurch, dass er bei Fehlkonfiguration im Netz nicht mehr erreichbar ist. Der Umbau erfolgt auf eigene Gefahr.&lt;br /&gt;
&lt;br /&gt;
=== Vorraussetzungen ===&lt;br /&gt;
* Der Router (in diesem Howto ist der TP-LINK MR3020 verwendet worden, OpenWRT wird aber prinzipiell immer gleich aufgesetzt&lt;br /&gt;
* Ein USB Stick, da die Flash-Speicher der Router zu klein sind&lt;br /&gt;
* optional ein passiver USB-Hub (wenn der Router nur einen USB Port hat und ein CUL Stick betrieben werden soll)&lt;br /&gt;
* Ein Linux-PC zum Erstellen des Images. Dies kann auch eine virtuelle Maschine sein. Der Autor hat Ubuntu 10.11 verwendet.&lt;br /&gt;
=== Vorbereiten des USB-Sticks ===&lt;br /&gt;
Auf einem USB Stick müssen zwei Partitionen angelegt werden, eine als Auslagerungsspeicher für den RAM und eine für das Dateisystem auf dem später auch Perl und FHEM installiert werden. Das geht am besten mit dem Tool &amp;lt;code&amp;gt;fdisk&amp;lt;/code&amp;gt; auf dem vorbereiteten Linux-PC. Dazu den Stick anstöpseln und per Aufruf von &amp;lt;code&amp;gt;fdisk -l&amp;lt;/code&amp;gt; die Lister der gefundenen &amp;quot;Festplatten&amp;quot; anzeigen lassen. Eine davon ist der USB-Stick, z.B. an seiner Größe zu erkennen (500Mb reichen locker aus). In der Ausgabe z.B. nach einer Zeile suchen, die sinngemäß so aussieht: &amp;lt;code&amp;gt;Disk /dev/sdc: 484 MB, 484442112 bytes&amp;lt;/code&amp;gt;. In diesem Fall ist der USB-Stick das Gerät &amp;quot;/dev/sdc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Daraufhin kann fdisk für das Gerät aufgerufen werden. Detaillierte ANleitungen für fdisk finden sich im Internet. Vereinfacht ist folgender Vorgang auszuführen (alle Daten gehen auf dem Stick verloren!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
fdisk /dev/sdc&lt;br /&gt;
o&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
1&lt;br /&gt;
1&lt;br /&gt;
+64M&lt;br /&gt;
n&lt;br /&gt;
p&lt;br /&gt;
2 (drei mal Enter drücken)&lt;br /&gt;
t&lt;br /&gt;
1&lt;br /&gt;
82&lt;br /&gt;
w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach ist der Stick partitioniert. Ein erneuter Aufruf von &amp;lt;code&amp;gt;fdisk -l&amp;lt;/code&amp;gt; sollte ungefähr folgendes ERgebnis liefern:&lt;br /&gt;
&lt;br /&gt;
 Disk /dev/sdc: 484 MB, 484442112 bytes&lt;br /&gt;
 2 heads, 63 sectors/track, 7509 cylinders&lt;br /&gt;
 Units = cylinders of 126 * 512 = 64512 bytes&lt;br /&gt;
 Disk identifier: 0x8c5e341e&lt;br /&gt;
   Device Boot   Start     End   Blocks  Id System&lt;br /&gt;
 /dev/sdc1        1     993    62527+ 82 Linux swap / Solaris&lt;br /&gt;
 /dev/sdc2       994    7509   410508  83 Linux&lt;br /&gt;
&lt;br /&gt;
Jetzt müssen die Partitionen noch formatiert werden. Vorsicht: Nur hier heisst der Stick /dev/sdc. Er kann auch anders heissen! Wenn ihr die falschen Namen verwendet, könntet ihr eure Festplatte löschen! /dev/sdc1 ist durch /dev/&amp;amp;lt;euer-sdx&amp;amp;gt;1 zu ersetzen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
mkswap /dev/sdc1&lt;br /&gt;
mkfs.ext4 /dev/sdc2&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Stick ist nun fertig vorbereitet und wird im Linux-PC nicht mehr benötigt. Er kann jetzt in den Router&lt;br /&gt;
&lt;br /&gt;
=== Bauen des OpenWRT-Images ===&lt;br /&gt;
Um OpenWRT zu bauen, müssen die entsprechenden Werkzeuge auf dem Linux-PC installiert sein. Unter Ubuntu geht das so:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
sudo apt-get -y install subversion git-core&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenWRT kann am besten von GitHub ausgecheckt werden.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
git clone git://github.com/openwrt/openwrt.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Auschecken dauert eine Weile, aber das ist noch gar nichts, das Bauen dauert noch viel länger. Sobald alles runtergeladen ist, wird in das Verzeichnis gewechselt und die Konfiguration vorgenommen&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
cd openwrt&lt;br /&gt;
make menuconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Konfiguration muss die Architektur des Routers bekannt sein. Diese kann auf der [http://www.openwrt.org OpenWRT-Seite] nachgeschlagen werden. der TP-LINK MR3020 hat eine &amp;lt;code&amp;gt;ar71xx&amp;lt;/code&amp;gt;-Architektur.&lt;br /&gt;
&lt;br /&gt;
Als erstes also die Architektur auswählen (Hier: &amp;lt;code&amp;gt;ar71xxx/ar91xxx&amp;lt;/code&amp;gt;)&lt;br /&gt;
Zweitens kann beim Target-Profile meinst genau der Router ausgewählt werden (Notfalls auf der OpenWRT-Seite nachlesen)&lt;br /&gt;
&lt;br /&gt;
Optional kann nun unter &amp;lt;code&amp;gt;Image-Configuration&amp;lt;/code&amp;gt; bereits eine Netzwerkkonfiguration eingestellt werden, die der Router dann nach seinem Hochfahren hat. Wenn der Router in ein bestehendes Netz mit bestehenden DHCP-Server und Adressraum eingebunden wird, ist das sinnvoll. Wer das hat, weiss auch, was hier einzustellen ist. Standardmäßig ist die Adresse 192.168.1.1 vorgegeben. Die Konfiguration kann auch später jederzeit geändert werden.&lt;br /&gt;
&lt;br /&gt;
Nun zu den Kernel-Modules. Hier sollte folgendes aktiviert werden (Einiges ist ggf. nicht nötig, aber so geht es). Die Einträge müssen mit &amp;quot;*&amp;quot; und nicht mit &amp;quot;M&amp;quot; selektiert sein, sonst kommen sie nicht ins Image.&lt;br /&gt;
&lt;br /&gt;
* Block-Devices&lt;br /&gt;
** kmod-ide-core&lt;br /&gt;
** kmod-ide-generic&lt;br /&gt;
** kmod-loop (kann man immer mal brauchen)&lt;br /&gt;
** kmod-scsi-generic&lt;br /&gt;
* Filesystems&lt;br /&gt;
** kmod-fs-ext4 &#039;&#039;(davon wollen wir später vom USB-Stick booten)&#039;&#039;&lt;br /&gt;
* USB-Support&lt;br /&gt;
** kmod-usb-acm &#039;&#039;(für CUL)&#039;&#039;&lt;br /&gt;
** kmod-usb-hid&lt;br /&gt;
** kmod-usb-ohci&lt;br /&gt;
** kmod-usb-serial&lt;br /&gt;
** kmod-usb-serial-ftdi&lt;br /&gt;
** kmod-usb-storage-extras&lt;br /&gt;
** kmod-usb-uhci&lt;br /&gt;
** kmod-usb2&lt;br /&gt;
&lt;br /&gt;
Unter Utilities noch folgendes aktivieren&lt;br /&gt;
* Filesystem&lt;br /&gt;
** e2fsprogs&lt;br /&gt;
* disc&lt;br /&gt;
** fdisk &#039;&#039;(für Analysezwecke sinnvoll)&#039;&#039;&lt;br /&gt;
** swap-utils&lt;br /&gt;
&lt;br /&gt;
Nun kann - in aller Ruhe - alles gebaut werden durch Eingabe von&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereiten des Routers ===&lt;br /&gt;
Das ganze kann bis zu mehrere Stunden laufen. Nun ist Zeit, den Router ins Netzwerk einzubinden. Wie genau, hängt von der persönlichen Konstellation ab. Der TP-Link MR3020 hat standardmäßig die IP-Adresse 192.168.0.254. Viele andere Router haben z.B. 192.168.0.1. Ich empfehle, das Update auf jeden Fall nicht über WLAN sondern ein Netzwerkkabel zu machen. Die meisten Router haben einen aktivierten DHCP-Server. Ein angestöpselter Windows-PC bekommt dann von ihm eine IP-Adresse zugewiesen. Beim MR3020 kann dann die Weboberfläche über [http://192.168.0.254 http://192.168.0.254] erreicht werden. (User/Passwort: admin/admin)&lt;br /&gt;
&lt;br /&gt;
=== Installation von OpenWRT auf dem Router ===&lt;br /&gt;
In der Weboberfläche des Routers gibt es irgendwo einen Menüpunkt zum Firmware-Upgrade. Beim MR3020 erreichbar unter System Tools / Firmware Upgrade. Sobald das Bauen von OpenWRT fertig ist, liegt das Image im Unterordner &amp;lt;code&amp;gt;bin/&amp;lt;architektur&amp;gt;/&amp;lt;/code&amp;gt;. Es sollte das Image genommen werden, was den Namen des Routers sowie &amp;quot;squashfs&amp;quot; sowie &amp;quot;factory&amp;quot; im Dateinamen enthält. Dieses muss jetzt im Webinterface wie beschrieben ausgewählt werden und hochgeladen werden. Alle Bestätigungsmeldungen und &amp;quot;Wollen-Sie-Das-auch-Wirklich&amp;quot;-Fragen natürlich bestätigen. &lt;br /&gt;
&lt;br /&gt;
Nach einer Weile sollte dann der Router unter 192.168.1.1 anpingbar sein (von Linux aus: &amp;lt;code&amp;gt;ping 192.168.1.1&amp;lt;/code&amp;gt;) bzw. unter der in der Image Configuration eingestellten IP. Wenn das nicht geht, kann man den Router auch ein 2. mal starten, da sollte man dann aber nach dem Flashen mal 10 Minuten Geduld haben (also Stecker raus/rein). Auf keinen Fall zu früh machen, dann könnte es sein, dass er gar nicht mehr hochfährt!&lt;br /&gt;
&lt;br /&gt;
Zunächst muss man sich nun per telnet verbinden. &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
telnet 192.168.1.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun ist man schon im OpenWRT eingeloggt. Das erste und einzige, was in diesem Login nun gemacht wird, ist, per&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
passwd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ein Passwort zu setzen. Danach kann man sich mit&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ausloggen. Ab jetzt ist &amp;lt;code&amp;gt;telnet&amp;lt;/code&amp;gt; zur Sicherheit deaktiviert und man kann per &amp;lt;code&amp;gt;ssh&amp;lt;/code&amp;gt; eine Verbindung herstellen, da ja jetzt ein Passwort gesetzt ist&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
ssh root@192.168.1.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Für den weiteren Verlauf ist es notwendig, dass der Router Internetzugang hat. Dazu muss man ggf. von Hand in der Datei &amp;lt;code&amp;gt;/etc/config/network&amp;lt;/code&amp;gt; die Netzwerkeinstellungen entsprechend anpassen.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
vi /etc/config/network&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Zur Bedienung von vi z.B. [http://wiki.openwrt.org/doc/uci/network hier]&lt;br /&gt;
&lt;br /&gt;
Wichtig ist die IP-Adresse, die Netzmaske, das Gateway und der DNS-Server. Bitte genau auf Tippfehler achten. Bei einer fehlenden Konfiguration ist der Router nicht mehr erreichbar. Nach abspeichern kann die neue Konfiguration aktiviert werden&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
/etc/init.d/network restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Falls sich auch die IP-Adresse geändert hat, mit ssh wie oben neu anmelden. Als nächstes soll der USB-Stick eingebunden werden, dazu sind einige Pakete zu installieren. OpenWRT hat einen eingebauten Paketmanager zur Nachinstallation von Software direkt aus dem Netz. Zunächst wird nur das installiert, was in den internen Speicher des Routers muss. Das Root-Dateisystem soll anschließend durch den USB-Stick erweitert werden, um dann dorthin die meiste Software zu installieren. Viele Details hierzu finden sich [http://wiki.openwrt.org/doc/howto/extroot hier]&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install block-mount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Bei einem Aufruf von &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
fdisk -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
sollte der an dem Router angeschlossene Stick bereits zu sehen sein (analog zu oben). Hiermit lässt sich dann auch rausfinden, wie das Gerät auf dem Router heisst. In den meisten Fällen dürfte dies &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; sein. In diesem Fall können wir nun das Dateisystem einbinden und dann die Dateien aus dem internen Speicher dorthin kopieren.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
mkdir /mnt/sda2&lt;br /&gt;
mount /dev/sda2 /mnt/sda2&lt;br /&gt;
tar -C /overlay -cvf - . | tar -C /mnt/sda2 -xf -&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun kann auch schon die Konfiguration so umgestellt werden, dass beim nächsten Neustart der USB-Stick mit ins Root-Filesystem eingebunden wird. Dazu ist die Konfigurationsdatei &amp;lt;code&amp;gt;/etc/config/fstab&amp;lt;/code&amp;gt; zu editieren.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
vi /etc/config/fstab&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Diese sollte danach ungefähr so aussehen, wobei das von Router zu Router abweichen kann. Der automatische Block für &amp;quot;home&amp;quot; kann bearbeitet werden und der Spap-Block ebenfalls auf (hier) /dev/sda1 angepasst werden&lt;br /&gt;
&lt;br /&gt;
 config global automount&lt;br /&gt;
    option from_fstab 1&lt;br /&gt;
    option anon_mount 1&lt;br /&gt;
 config global autoswap&lt;br /&gt;
    option from_fstab 1&lt;br /&gt;
    option anon_swap 1&lt;br /&gt;
 config mount&lt;br /&gt;
    option target  /overlay&lt;br /&gt;
    option device  /dev/sda2&lt;br /&gt;
    option fstype  ext4&lt;br /&gt;
    option options rw,sync&lt;br /&gt;
    option enabled 1&lt;br /&gt;
    option enabled_fsck 1&lt;br /&gt;
 config swap&lt;br /&gt;
    option device  /dev/sda1&lt;br /&gt;
    option enabled 1&lt;br /&gt;
&lt;br /&gt;
Nun kann die Konfiguration aktiviert und die Box mit eingestecktem Stick neu gestartet werden&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
/etc/init.d/fstab enable&lt;br /&gt;
reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun sollte überprüft werden, ob der Stick richtig eingebunden ist&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Die Ausgabe sollte sinngemäß folgende Zeilen enthalten&lt;br /&gt;
&lt;br /&gt;
 /dev/sda2        397.7M   19.8M  357.9M  5% /overlay&lt;br /&gt;
 overlayfs:/overlay   397.7M   19.8M  357.9M  5%&lt;br /&gt;
&lt;br /&gt;
Ist dies nicht der Fall, kann auf der OpenWRT Seite nach Troubleshooting-Möglichkeiten gesucht werden und dann hier fortgesetzt werden.&lt;br /&gt;
Nachdem nun der Stick erfolgreiche eingebunden werden, können die ganzen Pakete installiert werden, die zum Betrieb von FHEM notwendig sind. Da dies eine Vielzahl der perlbase-Pakete ist, sind hier schlichtweg alle verfügbaren perl-Pakete installiert worden. Ebenfalls einige andere nützliche Werkzeuge. Speichermäßig ist das auf dem USB-Stick nicht entscheidend.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install usbutils luci ntpclient uhttpd perl perl-compress-bzip2 perl-dbi perl-html-parser perl-html-tagset perl-html-tree perl-lockfile-simple \&lt;br /&gt;
perl-net-telnet perl-uri perl-www perl-www-curl perl-www-mechanize perlbase-abbrev perlbase-anydbm-file perlbase-archive perlbase-assert perlbase-attribute \&lt;br /&gt;
perlbase-attributes perlbase-attrs perlbase-autoloader perlbase-autosplit perlbase-autouse perlbase-b perlbase-base perlbase-benchmark perlbase-bigfloat \&lt;br /&gt;
perlbase-bigint perlbase-bignum perlbase-bigrat perlbase-blib perlbase-bytes perlbase-cacheout perlbase-cgi perlbase-charnames perlbase-class \&lt;br /&gt;
perlbase-complete perlbase-compress perlbase-config perlbase-cpan perlbase-cpanplus perlbase-ctime perlbase-cwd perlbase-data perlbase-db \&lt;br /&gt;
perlbase-db-file perlbase-dbm-filter perlbase-devel perlbase-diagnostics perlbase-digest perlbase-dirhandle perlbase-dotsh perlbase-dumpvalue \&lt;br /&gt;
perlbase-dumpvar perlbase-dynaloader perlbase-encode perlbase-encoding perlbase-english perlbase-env perlbase-errno perlbase-essential perlbase-exceptions \&lt;br /&gt;
perlbase-extutils perlbase-fastcwd perlbase-fatal perlbase-fcntl perlbase-feature perlbase-fields perlbase-file perlbase-filecache perlbase-filehandle \&lt;br /&gt;
perlbase-filetest perlbase-filter perlbase-find perlbase-findbin perlbase-finddepth perlbase-flush perlbase-gdbm-file perlbase-getcwd perlbase-getopt \&lt;br /&gt;
perlbase-getoptpl perlbase-hash perlbase-hostname perlbase-i18n perlbase-if perlbase-importenv perlbase-integer perlbase-io perlbase-ipc perlbase-less \&lt;br /&gt;
perlbase-list perlbase-locale perlbase-log perlbase-look perlbase-math perlbase-memoize perlbase-mime perlbase-module perlbase-mro perlbase-net \&lt;br /&gt;
perlbase-next perlbase-o perlbase-object perlbase-opcode perlbase-open perlbase-ops perlbase-package perlbase-params perlbase-perl5db perlbase-perlio \&lt;br /&gt;
perlbase-pod perlbase-posix perlbase-pwd perlbase-re perlbase-safe perlbase-scalar perlbase-sdbm-file perlbase-search perlbase-selectsaver \&lt;br /&gt;
perlbase-selfloader perlbase-shell perlbase-shellwords perlbase-sigtrap perlbase-socket perlbase-sort perlbase-stat perlbase-storable perlbase-switch \&lt;br /&gt;
perlbase-symbol perlbase-sys perlbase-syslog perlbase-tainted perlbase-term perlbase-termcap perlbase-test perlbase-text perlbase-thread perlbase-threads \&lt;br /&gt;
perlbase-tie perlbase-time perlbase-unicode perlbase-unicore perlbase-user perlbase-xsloader&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Das Webinterface &amp;quot;Luci&amp;quot; ist mitinstalliert worden und bietet komfortable Einstellmöglichkeiten für den Router allgemein. Nach einem &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
/etc/init.d/uhttpd enable&lt;br /&gt;
/etc/init.d/uhttpd start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ist es unter &amp;lt;code&amp;gt;[http://192.168.1.1/ http://192.168.1.1/]&amp;lt;/code&amp;gt; bzw. der entsprechenden Router-IP erreichbar. Wichtig ist es ggf. den DHCP-Server zu deaktivieren. Die meisten Router können auch als WLAN-Clients konfiguriert werden, sie brauchen also nicht zwangsweise ein Netzwerkkabel. All dies geht über die Weboberfläche.&lt;br /&gt;
Nun kann FHEM auf den Router/Stick kopiert werden. In diesem Beispiel benutzen wir das SVN-Repository&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg install subversion-client make libelf&lt;br /&gt;
mkdir /usr/src&lt;br /&gt;
cd /usr/src&lt;br /&gt;
svn co https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem&lt;br /&gt;
cd fhem&lt;br /&gt;
make install-pgm2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Die Bearbeitung der &amp;lt;code&amp;gt;/etc/fhem.cfg&amp;lt;/code&amp;gt; ist nun so durchzuführen, wie bei jeder anderen FHEM-Installation auch. &lt;br /&gt;
&lt;br /&gt;
==== CUL ====&lt;br /&gt;
Wenn ein [[CUL]] am Router verwendet werden soll, dann geht dies über den Umweg &amp;lt;code&amp;gt;ser2net&amp;lt;/code&amp;gt;, da das CPAN Modul &amp;lt;code&amp;gt;Device::Serial&amp;lt;/code&amp;gt; in OpenWRT nicht standardmäßig zur Verfügung steht.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg install ser2net&lt;br /&gt;
vi /etc/ser2net.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In der Datei kann alles gelöscht werden und dann genau diese Zeile eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 27073:raw:300:/dev/ttyACM0:115200 NONE 1STOPBIT 7DATABITS&lt;br /&gt;
&lt;br /&gt;
In der fhem.cfg ist die Definition des CUL-Sticks dann folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
 define MyCUL CUL 127.0.0.1:27073 3333&lt;br /&gt;
&lt;br /&gt;
Wenn man CUL doch per Device::Serial ansprechen oder andere FHEM Module verwenden will, die auf Device::Serial angewiesen sind, kann man das entsprechende OpenWRT Paket auch selber erstellen.&lt;br /&gt;
Hinweise dazu gibt es [http://tcb.udarknet.com/dokuwiki/doku.php/projects/securouter/openwrt hier].&lt;br /&gt;
&lt;br /&gt;
Nun muss nur noch der Autostart von ser2net und fhem eingebaut werden und die integrierte, stromsparende FHEM-Kiste ist fertig.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
vi /etc/init.d/ser2net&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
mit folgendem Inhalt&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh /etc/rc.common&lt;br /&gt;
# Ser2Net Init Script&lt;br /&gt;
START=10&lt;br /&gt;
STOP=15&lt;br /&gt;
start() {&lt;br /&gt;
    ser2net&lt;br /&gt;
}&lt;br /&gt;
stop(){&lt;br /&gt;
    killall ser2net&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Danach Ser2Net aktivieren und starten:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
chmod +x /etc/init.d/ser2net&lt;br /&gt;
/etc/init.d/ser2net enable&lt;br /&gt;
/etc/init.d/ser2net start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== FHEM beim Systemstart ====&lt;br /&gt;
Nun noch die Konfiguration für fhem selbst&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh /etc/rc.common&lt;br /&gt;
# FHEM Init Script&lt;br /&gt;
START=11&lt;br /&gt;
STOP=15&lt;br /&gt;
start() {&lt;br /&gt;
    /usr/bin/fhem.pl /etc/fhem.cfg&lt;br /&gt;
}&lt;br /&gt;
stop(){&lt;br /&gt;
    echo &amp;amp;quot;shutdown&amp;amp;quot; | nc localhost 7072&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Und auch hier aktivieren:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
chmod +x /etc/init.d/fhem&lt;br /&gt;
/etc/init.d/fhem enable&lt;br /&gt;
/etc/init.d/fhem start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Logfiles nicht auf USB-Stick ====&lt;br /&gt;
Da das ständige Schreiben 1. langsam und 2. den meisten USB-Sticks nicht gut tut, sollten die Logfiles ins RAM geschrieben werden, also ein Pfad unterhalb von &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt;. Der Speicher ist allerdings begrenzt. Je nach persönlichen Anforderungen muss dann regelmäßig das Log aus dem Speicher gelöscht oder archiviert werden. Z.b. wöchentlich auf den USB Stick oder auf Netzlaufwerke etc. Dies ist mit dem FileLog von alleine möglich (siehe [http://fhem.de/commandref.html#archivecmd]).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Alternative Installation aus den Kompilierten Quellen bei einem Speicher größer 6MB ==&lt;br /&gt;
Zunächst wird OpenWRT auf den Router installiert. Auf die Installation des WEB-Interfaces „luci“ kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
=== Netzwerk einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der erste Login erfolgt mit &amp;lt;code&amp;gt;telnet&amp;lt;/code&amp;gt; (nicht SSH) auf die IP 192.168.1.1 ohne Passwort.&lt;br /&gt;
Als erstes sollte mit dem Befehl &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; ein Passwort eingestellt werden.&lt;br /&gt;
Sobald das geschehen ist, wird der Telnet-Dienst abgestellt.&lt;br /&gt;
Ab jetzt sollte über den SSH-Dienst mit dem eben eingestellten Passwort gearbeitet werden.&lt;br /&gt;
Mittels &amp;lt;code&amp;gt;vi&amp;lt;/code&amp;gt; kann die LAN-IP-Adresse in der Datei &amp;lt;code&amp;gt;/etc/config/network&amp;lt;/code&amp;gt; angepasst werden.&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
config interface &#039;lan&#039;&lt;br /&gt;
...&lt;br /&gt;
      option ipaddr &#039;192.168.178.4&#039;&lt;br /&gt;
      option netmask &#039;255.255.255.0&#039;&lt;br /&gt;
      option gateway &#039;192.168.178.1&#039;&lt;br /&gt;
      option dns &#039;192.168.178.1&#039;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration wird mit dem Aufruf von &amp;lt;code&amp;gt;/etc/init.d/network restart&amp;lt;/code&amp;gt; übernommen.&lt;br /&gt;
&lt;br /&gt;
Zeitzone in der Datei &amp;lt;code&amp;gt;/etc/config/system&amp;lt;/code&amp;gt; einstellen:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
config system&lt;br /&gt;
...&lt;br /&gt;
        option timezone &#039;CET-1CEST,M3.5.0,M10.5.0/3&#039;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PERL installieren ===&lt;br /&gt;
&lt;br /&gt;
Perl kann wie folgt eingerichtet werden. Je nach verwendetet FHEM-Module müssen weitere PERL-Pakete installiert werden. Für MAX_LAN, HM-CFG-LAN und ECMD reicht die folgende Auswahl:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install perl perl-html-parser perl-html-tagset perl-uri perl-www perlbase-autoloader perlbase-config \&lt;br /&gt;
perlbase-ctime perlbase-digest perlbase-dynaloader perlbase-errno perlbase-essential perlbase-fcntl \&lt;br /&gt;
perlbase-file perlbase-integer perlbase-io perlbase-math perlbase-mime perlbase-posix perlbase-selectsaver \&lt;br /&gt;
perlbase-socket perlbase-symbol perlbase-tie perlbase-time perlbase-timelocal perlbase-xsloader&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einbinden der Partitionen per UUID ===&lt;br /&gt;
&lt;br /&gt;
Für die Verwendung eines USB-Sticks müssen weitere Pakete installiert werden:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install kmod-usb-storage block-mount kmod-fs-ext4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der USB-Stick benötigt eine Datenpartition, optional kann eine zusätzliche SWAP-Partition eingerichtet werden.&lt;br /&gt;
Hierfür kann der Abschnitt &amp;quot;[[#Vorbereiten des USB-Sticks|Vorbereiten des USB-Sticks]]&amp;quot; aus dem vorherigen Kapitel verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Erstellen eines Verzeichnisses für den FHEM-Daten-Stick:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
mkdir /mnt/opt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels des Befehls &amp;lt;code&amp;gt;block&amp;lt;/code&amp;gt; kann eine brauchbare fstab-Konfiguration erstellt werden.&lt;br /&gt;
An dieser Stelle wird mit den eindeutigen UUIDs gearbeitet.&lt;br /&gt;
So ist es beim Betrieb von mehreren Datenspeichern unerheblich, in welcher Reihenfolge diese eingebunden werden.&lt;br /&gt;
Dies kann etwas Ärger ersparen.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
block detect &amp;gt; /etc/config/fstab&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;lt;code&amp;gt;/etc/config/fstab&amp;lt;/code&amp;gt; muss angepasst werden.&lt;br /&gt;
Zunächst sind die Mount-Punkte nicht aktiviert und das Verzeichnis für die Datenpartition muss noch angepasst werden.&lt;br /&gt;
Die Option &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt; muss unverändert bleiben. &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
vi /etc/config/fstab&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Darin&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
config &#039;global&#039;&lt;br /&gt;
        ...&lt;br /&gt;
config &#039;mount&#039;&lt;br /&gt;
        option  target  &#039;/mnt/opt&#039;&lt;br /&gt;
        option  uuid    &#039;...&#039;&lt;br /&gt;
        option  enabled &#039;1&#039;&lt;br /&gt;
config &#039;swap&#039;&lt;br /&gt;
        option  uuid    &#039;...&#039;&lt;br /&gt;
        option  enabled &#039;1&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über einen Neustart oder &amp;lt;code&amp;gt;/sbin/block mount&amp;lt;/code&amp;gt; werden die Partitionen eingebunden.&lt;br /&gt;
&lt;br /&gt;
=== Installation von FHEM ===&lt;br /&gt;
Die Installation von FHEM ist an vielen Stellen sehr gut beschrieben.&lt;br /&gt;
Hier nur die Quick&amp;amp;Dirty Variante.&lt;br /&gt;
Die [http://fhem.de/fhem.html#Download aktuellste, stabile Version] herunter laden.&lt;br /&gt;
Die Version &#039;&#039;X.Y&#039;&#039; in den folgenden Befehlen bitte entsprechend anpassen:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
cd /mnt/opt/&lt;br /&gt;
wget http://fhem.de/fhem-X.Y.tar.gz&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install tar&lt;br /&gt;
tar xfz fhem-X.Y.tar.gz&lt;br /&gt;
mv fhem-X.Y fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Startskript anlegen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
touch /etc/init.d/fhem&lt;br /&gt;
chmod +x  /etc/init.d/fhem&lt;br /&gt;
vi /etc/init.d/fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Darin&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh /etc/rc.common&lt;br /&gt;
# FHEM Init Script&lt;br /&gt;
&lt;br /&gt;
START=11&lt;br /&gt;
STOP=15&lt;br /&gt;
&lt;br /&gt;
cd /mnt/opt/fhem/&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
  if [ -f /mnt/opt/fhem-X.Y/log ]; then&lt;br /&gt;
    mkdir -p /mnt/opt/fhem-X.Y/log&lt;br /&gt;
  fi&lt;br /&gt;
  /mnt/opt/fhem/fhem.pl /mnt/opt/fhem/fhem.cfg&lt;br /&gt;
}&lt;br /&gt;
stop(){&lt;br /&gt;
  echo &amp;quot;stopping fhem&amp;quot;&lt;br /&gt;
  /mnt/opt/fhem/fhem.pl 7072 &amp;quot;shutdown&amp;quot;&lt;br /&gt;
  #kill -TERM $(cat /var/run/fhem.pid)&lt;br /&gt;
}&lt;br /&gt;
restart(){&lt;br /&gt;
  echo &amp;quot;restarting&amp;quot;&lt;br /&gt;
  mnt/opt/fhem/fhem.pl 7072 &amp;quot;shutdown&amp;quot;&lt;br /&gt;
  #kill -TERM $(cat /var/run/fhem.pid)&lt;br /&gt;
  /mnt/opt/fhem/fhem.pl /mnt/opt/fhem/fhem.cfg&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Init.d-Script aktivieren:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
/etc/init.d/fhem start&lt;br /&gt;
/etc/init.d/fhem enable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab jetzt sollte FHEM bei jedem Bootvorgang automatisch gestartet werden.&lt;br /&gt;
&lt;br /&gt;
=== Anmerkungen ===&lt;br /&gt;
* Es sollte sichergestellt werden, dass keine Dateien außerhalb von &amp;lt;code&amp;gt;/mnt/opt/&amp;lt;/code&amp;gt; geschrieben werden.&lt;br /&gt;
* Die PERL-Version ist leider etwas älter (Version 5.10) an einigen Stellen muss der FHEM-Code angepasst werden. Besonders wenn mit dem „~~“ Operator gearbeitet wurde.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;br /&gt;
[[Kategorie:CUL]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_einrichten&amp;diff=14557</id>
		<title>Homebridge einrichten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_einrichten&amp;diff=14557"/>
		<updated>2016-03-07T19:53:24Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: fehlendes Paket libavahi-compat-libdnssd-dev ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieses HOWTO zeigt die Installation und Erstinbetriebnahme von Homebridge. &lt;br /&gt;
&lt;br /&gt;
Damit kann Siri benutzt werden, um FHEM-Devices zu steuern. So können Devices angesprochen werden, die offiziell HomeKit nicht unterstützen (die Vorgehensweise wurde auf einem Intel NUC mit Ubuntu Server 14.04 LTS und auf einem Raspberry Pi mit Raspian getestet). Der WIKI-Eintrag bezieht sich hauptsächlich auf eine {{Link2Forum|Topic=32652|LinkText=Diskussion im FHEM-Forum}}. Ein Riesendank gilt vor allem {{Link2FU|430|Andre (justme1968)}}.&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration der inzwischen aktuellen zweiten Version des Homekot-Plugins ist in einem neuen {{Link2Forum|Topic= 48558 |LinkText=Thread im FHEM-Forum}} beschrieben. Hinzugekommen ist vor allem die freie Konfigurierbarkeit der Zuordnung zwischen FHEM Device und Homekit Accessory/Service, zwischen FHEM Reading und Homekit Characteristic, das mapping vom FHEM Readingwerten zu Homekit Werten sowie das Mapping von Homekit Werten zu FHEM Set-Kommandos und Werten.&lt;br /&gt;
&lt;br /&gt;
Eine Sammlung funktionsfähiger Homebridge FHEM Konfiguration kann hier gefunden werden: [[Homebridge User Configs]]. Die Sammlung befindet sich noch im Aufbau.&lt;br /&gt;
&lt;br /&gt;
= Vorbereitung der Umgebung =&lt;br /&gt;
&lt;br /&gt;
== NodeJS installieren ==&lt;br /&gt;
&#039;&#039;Die nachfolgenden Befehle sind alle mit &amp;quot;sudo&amp;quot; prefixed. Wenn du unter &amp;quot;root&amp;quot; arbeitest oder deine Distribution einen anderen Mechanismus verwendet, so kannst du dies natürlich weglassen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Zunächst wird das Betriebssystem (in diesem Falle Debian oder Ubuntu) auf den aktuellen Stand gebracht:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
sudo apt-get install build-essential libssl-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun muss NodeJS installiert werden. Leider ist die Version im Debian Repository deutlich zu alt, daher wird mit den folgenden Befehlen das Node Repository hinzugefügt und NodeJS (in der LTS Version) entsprechend installiert:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NodeJS V4&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -&lt;br /&gt;
sudo apt-get install -y nodejs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Bei Installation von NodeJS auf einem &amp;quot;alten&amp;quot; RasPi (B) bitte die besonderen Hinweise in {{Link2Forum|Topic=32652|Message=419325|LinkText=diesem Forenbeitrag}} beachten.}}&lt;br /&gt;
&#039;&#039;&#039;NodeJS V5&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%&amp;quot;&amp;gt;&lt;br /&gt;
curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -&lt;br /&gt;
sudo apt-get install -y nodejs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist NodeJS installiert.&lt;br /&gt;
&lt;br /&gt;
== Python, g++, MDNS installieren ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install python g++ libavahi-compat-libdnssd-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun sind alle Voraussetzungen geschaffen.&lt;br /&gt;
&lt;br /&gt;
= Installation von Homebridge &amp;amp; notwendiger Shims =&lt;br /&gt;
Im Nachfolgenden Absatz wird die Installation von Homebridge sowie des notwendigen Plugins (Shim) für FHEM erläutert.&lt;br /&gt;
&lt;br /&gt;
== Homebridge installieren ==&lt;br /&gt;
Die aktuelle Homebridge version wird mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
npm install -g homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
installiert, was eine Weile dauert. Anschließend wird der FHEM platform shim mit:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:60%;&amp;quot;&amp;gt;&lt;br /&gt;
npm install -g homebridge-fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
installiert.&lt;br /&gt;
&lt;br /&gt;
== Homebridge aktualisieren ==&lt;br /&gt;
Die aktuelle Homebridge version wird mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
npm update -g homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
installiert, was eine Weile dauert. Anschließend wird der FHEM platform shim mit:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:60%;&amp;quot;&amp;gt;&lt;br /&gt;
npm update -g homebridge-fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
installiert.&lt;br /&gt;
&lt;br /&gt;
=== Fehler während der Installation ===&lt;br /&gt;
Bei folgendem Fehler ist das abrufen von Github nicht möglich.&lt;br /&gt;
&amp;lt;pre&amp;gt;npm ERR! git clone --template=/home/hs-server-admin/.npm/_git-remotes/_templates --mirror &lt;br /&gt;
git://github.com/KhaosT/ed25519.git /home/hs-server-admin/.npm/_git-remotes/git-github-com-KhaosT-ed25519-git-d8bdee1d: &lt;br /&gt;
github.com[0: 192.30.252.128]: errno=Die Wartezeit für die Verbindung ist abgelaufen&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fehlerursache konnte hier durch eine aktive Firewall verursacht werden.&lt;br /&gt;
&lt;br /&gt;
Kommt eine DNS Fehlermeldung fehlt meistens der AVAHI-DAEMON, zu installieren via&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width=50%&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install avahi-daemon&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn npm beim Kompilieren von mdns mit der Meldung abbricht, daß &amp;quot;dns_sd.h&amp;quot; nicht gefunden wird, fehlt das Paket libavahi-compat-libdnssd-dev, zu installieren via&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width=50%&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libavahi-compat-libdnssd-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Homebridge konfigurieren =&lt;br /&gt;
&#039;&#039;Wichtig: Für die weiteren Schritte sollte man nicht root verwenden, sondern beispielsweise einen dedizieren Nutzer für homebridge oder der Einfachheit halber den Nutzer unter dem auch FHEM läuft (meist &amp;quot;fhem&amp;quot;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für homebridge ==&lt;br /&gt;
Zunächst wird das Verzeichnis für die Konfigurationsdatei erstellt und in dieses gewechselt:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p ~/.homebridge&lt;br /&gt;
cd ~/.homebridge/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun muss darin noch die config.json erstellt bzw. angepasst werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
nano ~/.homebridge/config.json&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweise zur Konfiguration:&lt;br /&gt;
* &amp;quot;&#039;&#039;bridge&#039;&#039;&amp;quot;:&lt;br /&gt;
** &amp;quot;&#039;&#039;username&#039;&#039;&amp;quot;: Sollte so belassen werden. Sollte später auf dem iOS Device keine Homebridge gefunden werden, so kann man hier beispielsweise den String auf 31 statt 30 enden lassen um so eine neue Homebridge vorzutäuschen.&lt;br /&gt;
** &amp;quot;&#039;&#039;port&#039;&#039;&amp;quot;: Sollte so belassen werden&lt;br /&gt;
** &amp;quot;&#039;&#039;pin&#039;&#039;&amp;quot;: Der PIN kann beliebig in dem Format xxx-xx-xxx angepasst werden. Dieser muss nur einmal bei der Einrichtung in iOS eingegeben werden.&lt;br /&gt;
* &amp;quot;&#039;&#039;platforms&#039;&#039;&amp;quot;: &lt;br /&gt;
** &amp;quot;&#039;&#039;platform&#039;&#039;&amp;quot;: Hier muss &amp;quot;homebridge-fhem.fhem&amp;quot; beibehalten werden.&lt;br /&gt;
** &amp;quot;&#039;&#039;server&#039;&#039;&amp;quot;: Hier muss die IP des FHEM-Servers eingetragen werden. Dabei muss Homebridge nicht auf dem selben Server laufen wie FHEM, kann aber. Wenn es auf dem gleichen Rechner läuft, dann bietet es sich an, die IP 127.0.0.1 zu verwenden.&lt;br /&gt;
** &amp;quot;&#039;&#039;port&#039;&#039;&amp;quot;: Hier muss der Port des gewählten FHEMWEBS eingetragen werden (muss nicht das &amp;quot;normale&amp;quot; sein, kann eine extra Instanz sein)&lt;br /&gt;
** &amp;quot;&#039;&#039;auth&#039;&#039;&amp;quot;: Ist FHEM nicht mit Nutzername/Password abgesichert, so kann man diese Zeile einfach entfernen.&lt;br /&gt;
** &amp;quot;&#039;&#039;filter&#039;&#039;&amp;quot;: Damit nicht alle Devices von Homebridge berücksichtigt werden, bietet es sich an, die Devices zu filtern. In diesem Beispiel wurden alle Devices, die über Siri steuerbar sein sollen, zusätzlich in den Raum Homekit konfiguriert.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;bridge&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;Homebridge&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot;: &amp;quot;CC:22:3D:E3:CE:30&amp;quot;,&lt;br /&gt;
        &amp;quot;port&amp;quot;: 51826,&lt;br /&gt;
        &amp;quot;pin&amp;quot;: &amp;quot;031-45-154&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;platforms&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;platform&amp;quot;: &amp;quot;homebridge-fhem.FHEM&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;FHEM&amp;quot;,&lt;br /&gt;
            &amp;quot;server&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
            &amp;quot;port&amp;quot;: &amp;quot;8083&amp;quot;,&lt;br /&gt;
            &amp;quot;auth&amp;quot;: {&amp;quot;user&amp;quot;: &amp;quot;FhemUser&amp;quot;, &amp;quot;pass&amp;quot;: &amp;quot;XXX&amp;quot;},&lt;br /&gt;
            &amp;quot;filter&amp;quot;: &amp;quot;room=Homekit&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;accessories&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wird FHEM mit SSL abgesichert, so muss zusätzlich in der Sektion &amp;quot;platforms&amp;quot; noch diese Zeile (nach &amp;quot;port&amp;quot;) eingefügt werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;quot;ssl&amp;quot;: true,&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= FHEM konfigurieren =&lt;br /&gt;
Die benötigten Attribute werden inzwischen beim ersten Start des von hombridge-fhem automatisch auf FHEM seite eingetragen.&lt;br /&gt;
&lt;br /&gt;
Mehr zu den inzwischen verfügbaren Konfigurationsmöglichkeiten findet sich auf den github und npmjs Seiten des Plugins und im ersten Beitrag des zugehörigen Thread im {{Link2Forum|Topic= 48558 |LinkText=Diskussion im FHEM-Forum}}&lt;br /&gt;
&lt;br /&gt;
= Start von Homebridge =&lt;br /&gt;
&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
Nach allen Änderungen die in FHEM gemacht werden, welche Homebridge betreffen, muss Homebridge neu gestartet werden. Wie der Neustart erfolgen muss, ist abhängig davon, wie man Homebridge gestartet hat. Bitte den entsprechenden Methoden entnehmen.&lt;br /&gt;
&lt;br /&gt;
== Einmaliger Manueller Start ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Homebridge sollte nun laufen. Hier kann man die Kommunikation nachverfolgen. Abbrechen kann das ganze mit CTRL+c (es dann auch keine Befehle mehr mit Siri möglich). Damit Siri auch Befehle ohne ständig offenes Terminal bearbeiten kann, bitten nächsten Punkt beachten.&lt;br /&gt;
&lt;br /&gt;
== Homebridge automatisch starten ==&lt;br /&gt;
Es gibt verschiedene Methoden, Homebridge automatisch zu starten.&lt;br /&gt;
&lt;br /&gt;
=== Steuerung via FHEM ===&lt;br /&gt;
Auf Basis der unten stehenden &#039;&#039;Alternativen Methode&#039;&#039; wurde eine Version entwickelt, mit der man auch den Status einsehen und den Restart des Dienstes aus FHEM heraus erledigen kann. Diese Version ist auf der Seite [[Homebridge Start und Status in FHEM]] im Detail beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Alternative Methode ===&lt;br /&gt;
Dies startet homebridge als einen Service.&lt;br /&gt;
&lt;br /&gt;
==== Service anlegen ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Code einfügen (startet den Homebridge Server als Benutzer &amp;quot;pi&amp;quot; und nimmt an, dass sich .homebridge/config.json in seinem Homeverzeichnis unter /home/pi/ befindet):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        su - pi -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        $0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge closed&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Autostart aktivieren ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann man mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bzw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Dienst starten&lt;br /&gt;
&lt;br /&gt;
== FHEM Device Einstellungen ==&lt;br /&gt;
Damit die zu schaltenden Geräte überhaupt in der Homebridge aufgenommen werden muss man sie im Raum Homekit hinzufügen.&lt;br /&gt;
&lt;br /&gt;
Um HM-CC-RT-DN Thermostate steuern zu können, muss wie oben beschrieben folgendes attribute gesetzt werden (hier als Beispiel das Device &amp;quot;Heizung&amp;quot;):&lt;br /&gt;
# attr Heizung subtype thermostat&lt;br /&gt;
Für einen Dummy muss man den genericDeviceType setzen, also beispielsweise:&lt;br /&gt;
# attr Dummy genericDeviceType switch&lt;br /&gt;
# attr Dummy setList on off&lt;br /&gt;
&lt;br /&gt;
Wie bereits vorher angemerkt: Fügt man ein Device hinzu oder führt eine Änderung an einem Device durch, so sollte homebridge neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
= HomeKit in iOS =&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
Um FHEM über Homebridge in iOS nutzen zu können, muss HomeKit eingerichtet werden. &lt;br /&gt;
&lt;br /&gt;
Es gibt verschiedene Apps. Im folgenden wird die App EVE von Elgato empfohlen, die aus dem App-Store geladen werden muss.&lt;br /&gt;
In der App auf:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
Gerät hinzufügen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es sollte ein Gerät mit der Bezeichnung &amp;quot;Homebridge&amp;quot; zur Auswahl erscheinen. Zur Ersteinrichtung auf PIN manuell eingeben gehen und (falls in der config.json nicht geändert):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
031-45-154&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
eingeben.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss können die Devices nach Belieben in verschiedene Räume zugeteilt werden, sowie Szenen und Bereiche erstellt werden.&lt;br /&gt;
&lt;br /&gt;
== Schalten mit Siri ==&lt;br /&gt;
&#039;&#039;&#039;HolyMoly&#039;&#039;&#039; aus dem FHEM-Forum hat ein paar Beispiele gegeben, wie man Siri dazu bringt Devices zu schalten:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;Schalte alle Lampen im Obergeschoss ein.&amp;quot;&lt;br /&gt;
&amp;quot;Schalte Chloes Licht aus.&amp;quot;&lt;br /&gt;
&amp;quot;Dimme das Licht in der Küche.&amp;quot;&lt;br /&gt;
&amp;quot;Dimme das Licht im Esszimmer auf 50 %.&amp;quot;&lt;br /&gt;
&amp;quot;Stelle das Licht in der Küche am hellsten ein.&amp;quot;&lt;br /&gt;
&amp;quot;Stelle die Temperatur im Tahoe-Haus auf 22 °C ein.&amp;quot;&lt;br /&gt;
&amp;quot;Stelle das Thermostat im Erdgeschoss auf 21 °C ein.&lt;br /&gt;
&amp;quot;Schalte den Drucker im Büro ein.&amp;quot;&lt;br /&gt;
&amp;quot;Siri, bereite alles für eine Party vor.&amp;quot;&lt;br /&gt;
&amp;quot;Bereite das Ambiente fürs Abendessen vor.&amp;quot;&lt;br /&gt;
&amp;quot;Aktiviere den Nachtruhemodus.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittlerweile kann Siri auch noch die Lichtfarbe von LEDs ändern.&lt;br /&gt;
&lt;br /&gt;
= Hinweise =&lt;br /&gt;
&lt;br /&gt;
== Unterstützte Geräte ==&lt;br /&gt;
Das Fhem Plugin von {{Link2FU|430|Andre (justme1968)}} unterstützt automatisch mindestens die folgenden Geräte:&lt;br /&gt;
&lt;br /&gt;
    switches (devices with set on and set off commands)&lt;br /&gt;
    lights (devices with set on and set off commands)&lt;br /&gt;
    homematc and FS20 dimmers (devices with set on, set off and set dim or set pct commands)&lt;br /&gt;
    HUE, WifiLight, MilightDevice, SWAP_0000002200000003 (hue, sat, bri, rgb)&lt;br /&gt;
    homematic, max and pid20 thermostats&lt;br /&gt;
    homematic, DUOFERN and FS20/IT(?) blinds&lt;br /&gt;
    homematic, MAX and FHTTK contact sensors (door, window)&lt;br /&gt;
    HM-SEC-WIN, HM-SEC-KEY&lt;br /&gt;
    presence, ROOMMATE&lt;br /&gt;
    SONOS (power, volume)&lt;br /&gt;
    harmony scenes&lt;br /&gt;
    temperaturecw and humidity sensors&lt;br /&gt;
    CO20 air quality sensor&lt;br /&gt;
    probably some more ...&lt;br /&gt;
&lt;br /&gt;
Über eine entsprechende Konfiguration lässt sich darüber hinaus jedes mit FHEM steuerbare Gerät auf die unterstützten Homekit typen abbilden. &lt;br /&gt;
&lt;br /&gt;
== Zusätzliche Plugins ==&lt;br /&gt;
Für manche der über FHEM steuerbaren Geräte wie z.b. MiiLight, Harmony Hub, Phillips Hue, Sonos,... gibt es eigene homekit plugins. Wenn immer möglich empfiehlt es sich aber diese NICHT zu verwenden sondern die Steuerung über die FHEM-Integration zu realisieren da&lt;br /&gt;
* diese ist in der Regel sehr viel mächtiger und frei konfigurierbar ist&lt;br /&gt;
* es FHEM erlaubt als zentrale Instanz den Überblick über den aktuellen Gesamtzustand zu haben (wichtig bei Geräten die gepollt werden) &lt;br /&gt;
* die Ressourcen auf den angesteuerten Geräten schont da Werte optimal gecached werden und nur eine einzige Verbindung aufgebaut wird&lt;br /&gt;
&lt;br /&gt;
== Hinweis für alte homebridge Versionen ==&lt;br /&gt;
UPDATE: Homebridge funktioniert mit einer kleinen Einschränkung nun auch mit node 4.0.0. Laut&lt;br /&gt;
[https://github.com/cflurin/homebridge-shims/wiki/Minimalist-Homebridge-on-a-Raspberry-Pi Homebridge on a Raspberry Pi] müssen die folgenden Abhängigkeiten (Dependencies) aus der &#039;&#039;&#039;package.json&#039;&#039;&#039; entfernt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;harmonyhubjs-client&amp;quot;: &amp;quot;^1.1.4&amp;quot;,&lt;br /&gt;
&amp;quot;harmonyhubjs-discover&amp;quot;: &amp;quot;git+https://github.com/swissmanu/harmonyhubjs-discover.git&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hinweis zur Geschwindigkeitsoptimierung auf einem Raspberry PI ==&lt;br /&gt;
&lt;br /&gt;
Damit es auf einem Raspberry schneller läuft, wird darüber hinaus empfohlen auch diverse Abhängigkeiten aus der &#039;&#039;&#039;package.json&#039;&#039;&#039; zu entfernen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;ad2usb&amp;quot;: &amp;quot;git+https://github.com/alistairg/node-ad2usb.git#local&amp;quot;,&lt;br /&gt;
&amp;quot;carwingsjs&amp;quot;: &amp;quot;0.0.x&amp;quot;,&lt;br /&gt;
&amp;quot;chokidar&amp;quot;: &amp;quot;^1.0.5&amp;quot;,&lt;br /&gt;
&amp;quot;eibd&amp;quot;: &amp;quot;^0.3.1&amp;quot;,&lt;br /&gt;
&amp;quot;elkington&amp;quot;: &amp;quot;kevinohara80/elkington&amp;quot;,&lt;br /&gt;
&amp;quot;harmonyhubjs-client&amp;quot;: &amp;quot;^1.1.4&amp;quot;,&lt;br /&gt;
&amp;quot;harmonyhubjs-discover&amp;quot;: &amp;quot;git+https://github.com/swissmanu/harmonyhubjs-discover.git&amp;quot;,&lt;br /&gt;
&amp;quot;lifx-api&amp;quot;: &amp;quot;^1.0.1&amp;quot;,&lt;br /&gt;
&amp;quot;lifx&amp;quot;: &amp;quot;git+https://github.com/magicmonkey/lifxjs.git&amp;quot;,&lt;br /&gt;
&amp;quot;node-hue-api&amp;quot;: &amp;quot;^1.0.5&amp;quot;,&lt;br /&gt;
&amp;quot;node-icontrol&amp;quot;: &amp;quot;^0.1.4&amp;quot;,&lt;br /&gt;
&amp;quot;node-milight-promise&amp;quot;: &amp;quot;0.0.x&amp;quot;,&lt;br /&gt;
&amp;quot;tough-cookie&amp;quot;: &amp;quot;^2.0.0&amp;quot;,&lt;br /&gt;
&amp;quot;sonos&amp;quot;: &amp;quot;0.8.x&amp;quot;,&lt;br /&gt;
&amp;quot;telldus-live&amp;quot;: &amp;quot;0.2.x&amp;quot;,&lt;br /&gt;
&amp;quot;teslams&amp;quot;: &amp;quot;1.0.1&amp;quot;,&lt;br /&gt;
&amp;quot;unofficial-nest-api&amp;quot;: &amp;quot;git+https://github.com/hachidorii/unofficial_nodejs_nest.git#d8d48edc952b049ff6320ef99afa7b2f04cdee98&amp;quot;,&lt;br /&gt;
&amp;quot;wemo&amp;quot;: &amp;quot;0.2.x&amp;quot;,&lt;br /&gt;
&amp;quot;wink-js&amp;quot;: &amp;quot;0.0.5&amp;quot;,&lt;br /&gt;
&amp;quot;komponist&amp;quot; : &amp;quot;0.1.0&amp;quot;,&lt;br /&gt;
&amp;quot;yamaha-nodejs&amp;quot;: &amp;quot;0.4.x&amp;quot;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daher zunächst ein ein Backup der Datei anlegen &lt;br /&gt;
&amp;lt;pre&amp;gt;sudo cp package.json package.json.bkp &amp;lt;/pre&amp;gt;&lt;br /&gt;
Am einfachsten geht das entfernen der Zeilen einem Editor, beispielsweise nano oder vi.&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano package.json&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das config file sollte dann wie folgt aussehen: Achtung vor den letzten zwei &amp;quot;}&amp;quot; am Ende darf kein Komma sein.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;homebridge&amp;quot;,&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;HomeKit support for the impatient&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;0.1.1&amp;quot;,&lt;br /&gt;
  &amp;quot;scripts&amp;quot;: {&lt;br /&gt;
    &amp;quot;start&amp;quot;: &amp;quot;DEBUG=* node app.js || true&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;repository&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;git&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;: &amp;quot;git://github.com/nfarina/homebridge.git&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;license&amp;quot;: &amp;quot;ISC&amp;quot;,&lt;br /&gt;
  &amp;quot;dependencies&amp;quot;: {&lt;br /&gt;
    &amp;quot;async&amp;quot;: &amp;quot;^1.4.2&amp;quot;,&lt;br /&gt;
    &amp;quot;color&amp;quot;: &amp;quot;0.10.x&amp;quot;,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: &amp;quot;^2.2.0&amp;quot;,&lt;br /&gt;
    &amp;quot;hap-nodejs&amp;quot;: &amp;quot;^0.0.2&amp;quot;,&lt;br /&gt;
    &amp;quot;isy-js&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;mdns&amp;quot;: &amp;quot;^2.2.4&amp;quot;,&lt;br /&gt;
    &amp;quot;netatmo&amp;quot;: &amp;quot;1.3.0&amp;quot;,&lt;br /&gt;
    &amp;quot;node-cache&amp;quot;: &amp;quot;3.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;node-persist&amp;quot;: &amp;quot;0.0.x&amp;quot;,&lt;br /&gt;
    &amp;quot;node-xmpp-client&amp;quot;: &amp;quot;1.0.0-alpha23&amp;quot;,&lt;br /&gt;
    &amp;quot;q&amp;quot;: &amp;quot;1.4.x&amp;quot;,&lt;br /&gt;
    &amp;quot;queue&amp;quot;: &amp;quot;^3.1.0&amp;quot;,&lt;br /&gt;
    &amp;quot;request&amp;quot;: &amp;quot;2.49.x&amp;quot;,&lt;br /&gt;
    &amp;quot;xml2js&amp;quot;: &amp;quot;0.4.x&amp;quot;,&lt;br /&gt;
    &amp;quot;xmldoc&amp;quot;: &amp;quot;0.1.x&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SIGNALDuino&amp;diff=13910</id>
		<title>SIGNALDuino</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SIGNALDuino&amp;diff=13910"/>
		<updated>2016-01-28T19:40:36Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Weiterleitung nach SIGNALduino angelegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[SIGNALduino]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Konfiguration&amp;diff=10239</id>
		<title>Konfiguration</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Konfiguration&amp;diff=10239"/>
		<updated>2015-02-18T20:37:33Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Konfiguration in einer SQL Datenbank */ DB-Erstellung etc. werden auf separate Seite ausgelagert.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Konfiguration&#039;&#039;&#039; eines Fhem [[Systemübersicht|Systems]] wird im Normalfall definiert durch Eintragungen in der Konfigurationsdatei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt;, die standardmäßig im Fhem-Installationsverzeichnis abgelegt ist.&lt;br /&gt;
&lt;br /&gt;
Sofern nicht anderweitig erwähnt, beziehen sich alle weiteren Aussagen und Bildschirmfotos auf das [[PGM2|Standard Webinterface]] im Stil &amp;quot;dark&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Grundstruktur ==&lt;br /&gt;
In einer Standardinstallation sind alle Definitionen in der Datei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt; abgelegt; diese Datei befindet sich im Installationsverzeichnis (z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;/opt/fhem&amp;lt;/code&amp;gt;). Soll alternativ eine andere (Start-)Konfigurationsdatei verwendet werden, so ist deren Name beim Start von Fhem mitzugeben.&lt;br /&gt;
&lt;br /&gt;
== Autocreate ==&lt;br /&gt;
Sofern die &amp;quot;Autocreate&amp;quot; Funktion aktiv ist (&amp;lt;code&amp;gt;define autocreate autocreate&amp;lt;/code&amp;gt;), werden unter bestimmten Umständen Objekte automatisch angelegt. Diese Definitionen werden immer in der Start-Konfigurationsdatei abgelegt und abgespeichert. Nach der Erstinstallation von Fhem ist die &amp;quot;Autocreate&amp;quot; Funktion standardmäßig aktiv.&lt;br /&gt;
&lt;br /&gt;
== Bearbeitung der Konfiguration ==&lt;br /&gt;
[[Bild:saveConfig.png|mini|120px|links|&amp;quot;Knopf&amp;quot; zum Speichern der Konfigurationsänderungen]]&lt;br /&gt;
[[Bild:saveConfigChangeList.png|mini|220px|rechts|Beispiel einer Liste der ungesicherten Anderungen der Konfiguration]]&lt;br /&gt;
Die Fhem-Konfiguration kann auf verschiedene Arten bearbeitet werden. Für Einsteiger empfiehlt sich grundsätzlich die Verwendung des &amp;quot;Befehl-Eingabefeld&amp;quot; und der &amp;quot;Objektdetails&amp;quot; mit eingeschalteter Syntaxhervorhebung. Die Methoden &amp;quot;Integrierter Editor&amp;quot; und insbesondere &amp;quot;Externer Editor&amp;quot; sollten als &amp;quot;Expertenmodus&amp;quot; angesehen und nur in begründeten (Ausnahme-)Fällen angewendet werden. Insbesondere beim Mischen der Arten können unerwünschte und/oder unerwartete Effekte auftreten, so beispielsweise, wenn ein benötigtes &amp;quot;Save config&amp;quot; nicht erfolgt ist, bevor ein &amp;quot;rereadcfg&amp;quot; oder Neustart von Fhem durchgeführt wird. &lt;br /&gt;
&lt;br /&gt;
Seit Mitte Januar 2015 ist es, wie im Bild rechts gezeigt, möglich, sich eine Teilliste der ungesicherten Konfigurationsänderungen durch anklicken des roten {{Taste|?}} anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
=== Befehl-Eingabefeld ===&lt;br /&gt;
[[Bild:ConfCommandField.png|thumb|300px|Right|Befehl-Eingabefeld]]&lt;br /&gt;
Eingaben in das Befehl-Eingabefeld (teilweise auch bezeichnet als &amp;quot;Kommando-Eingabefeld&amp;quot; oder kurz &amp;quot;Eingabefeld&amp;quot;), das sich oben auf jeder Seite des Standardinterfaces befindet, stellen einen schnellen und einfachen Weg dar, um z.&amp;amp;nbsp;B. neue Objekte zu definieren (im dargestellten Beispiel die Zuweisung eines (ggf. neuen) Raumes zu einem Objekt). Nach Bestätigung mit der &amp;lt;Enter&amp;gt;-Taste werden die Änderungen unmittelbar wirksam.&lt;br /&gt;
&lt;br /&gt;
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: &amp;quot;Save config&amp;quot; (aus dem Menü in der linken Spalte) anklicken oder den Befehl &amp;quot;save&amp;quot; im Befehl-Eingabefeld eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Objektdetails ===&lt;br /&gt;
Durch Anklicken des Namensfeldes eines Objekts werden die Objektdetails aufgerufen. Je nach Objekttyp stehen auf dieser Seite verschiedene Optionen zur Manipulation von Objekteigenschaften zur Verfügung:&lt;br /&gt;
* [[Bild:ConfModifyDEF.png|300px|right]] &amp;lt;code&amp;gt;DEF&amp;lt;/code&amp;gt; zur Anpassung der Definition &lt;br /&gt;
* [[Bild:ConfAttrDropdown.png|300px|right]] Attribute / Attributwerte aus Auswahllisten (nach Auswahl der Werte ist der &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; Knopf anzuklicken) &lt;br /&gt;
* je nach Objekttyp stehen weitere / andere Aktionen zur &lt;br /&gt;
Nach einem Klick auf &amp;quot;Modify&amp;quot; werden die Änderungen an der Defintion unmittelbar wirksam.&lt;br /&gt;
&lt;br /&gt;
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: &amp;quot;Save config&amp;quot; (aus dem Menü in der linken Spalte) anklicken oder den Befehl &amp;quot;save&amp;quot; im Befehl-Eingabefeld eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Integrierter Editor ===&lt;br /&gt;
[[Bild:ConfEditFiles.png|thumb|300px|links|Aufruf des integrierten Editors]]&lt;br /&gt;
[[Bild:ConfEditSyntaxHighlight.png|mini|300px|rechts|Editfenster (Ausschnitt) mit Syntaxhervorhebung]]&lt;br /&gt;
Sollte ein direktes Editieren der Konfigurationsdatei als nötig erachtet werden, wird der Editor über den entsprechenden Menüeintrag in der linken Spalte erreicht. Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen (&amp;quot;Escapen&amp;quot; von Sonderzeichen, verdoppeln von Semikolon). Mit dem Abspeichern der editierten Datei werden die Änderungen unmittelbar aktiv, korrekte Syntax und Semantik vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
==== Syntaxhervorhebung ====&lt;br /&gt;
[[Bild:ConfEditDEFAutocomplete.png|mini|300px|rechts|Automatische Vervollständigung / Befehlsauswahlfenster (&amp;quot;se&amp;quot; getippt, dann Strg+Leertaste gedrückt)]]&lt;br /&gt;
Seit Anfang April 2014 ist der in Fhem integrierte Editor um Syntaxhervorhebungs-, Befehlsauswahl- und Befehlsvervollständigungsfunktionen erweitert.&lt;br /&gt;
&lt;br /&gt;
Um die Funktionalität zu aktivieren müssen die folgenden zwei Attribute gesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB JavaScripts codemirror/fhem_codemirror.js&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB codemirrorParam { &amp;quot;theme&amp;quot;:&amp;quot;blackboard&amp;quot;, &amp;quot;lineNumbers&amp;quot;:true }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Syntaxhervorhebung / Befehlsvervollständigung, sofern aktiviert, ist wirksam für&lt;br /&gt;
* Bearbeitung der [[Konfiguration#Objektdetails|Objektdetails]]&lt;br /&gt;
* [[Konfiguration#Integrierter Editor|Integrierter Editor]]&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus wird (wie im Bildauschnitt dargestellt) über Strg+Leertaste eine Befehlsauswahl bzw. automatische Befehlsvervollständigung angeboten.&lt;br /&gt;
&lt;br /&gt;
Der Forums-Thread unter der Überschrift [http://forum.fhem.de/index.php/topic,20444.0.html Javascript Editor einbinden] enthält die Diskussion zum Entwicklungsprozess.&lt;br /&gt;
&lt;br /&gt;
=== Externer Editor ===&lt;br /&gt;
Unter bestimmten Umständen kann auch das Editieren der Konfiguration mit einem externen Editor wie z.&amp;amp;nbsp;B.&lt;br /&gt;
* Notepad++ (mit der nppFTP-Erweiterung)&lt;br /&gt;
* nano in einer Telnet Sitzung&lt;br /&gt;
* in wfftp integrierter / integrierbarer Editor&lt;br /&gt;
* ...&lt;br /&gt;
sinnvoll sein (duplizieren von Definitionen, globale Änderungen, umsortieren von Definitionen, etc.). In diesem Fall sollte der Benutzer sich mit der Bedienung des Editors in der gewählten Umgebung hinreichend gut auskennen.&lt;br /&gt;
&lt;br /&gt;
Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen (&amp;quot;Escapen&amp;quot; von Sonderzeichen, verdoppeln von Semikolon). Nach dem Abspeichern der editierten Datei werden die Änderungen erst nach erneutem Einlesen der Konfiguration aktiv, korrekte Syntax und Semantik vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
Notwendige Aktionen nach Durchführung der Änderung: &amp;quot;rereadcfg&amp;quot; oder Neustart von Fhem.&lt;br /&gt;
&lt;br /&gt;
==== Syntaxhervorhebung ====&lt;br /&gt;
&#039;&#039;&#039;Syntax-Highlighting&#039;&#039;&#039; kann bei verschiedenen externen Editoren verwendet werden, näheres s. [[Syntax Highlighting bei externen Editoren]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufteilung der fhem.cfg in mehrere Konfigurationsdateien ==&lt;br /&gt;
Die fhem.cfg kann bei Bedarf mit Hilfe des Befehls [[include]] in mehrere Konfigurationsdateien aufgeteilt werden. Dies ist als &#039;&#039;&#039;&amp;quot;Expertenmodus&amp;quot;&#039;&#039;&#039; zu betrachten und sollte (wenn überhaupt) nur von erfahreneren Usern angewendet werden.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in einer SQL Datenbank ==&lt;br /&gt;
Seit April 2014 (Fhem-Version 5079) können Definitionen alternativ zur Speicherung in einer einfachen Text-Konfigurationsdatei(en) in einer SQL Datenbank abgelegt werden. Hierzu dienen configDB (Hilfsmodul) und configdb (command), die in der [http://fhem.de/commandref.html#configDB commandref] dokumentiert sind.&lt;br /&gt;
&lt;br /&gt;
Weitere Details zu dieser &amp;quot;Alternative&amp;quot;:&lt;br /&gt;
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20194.0.html Tester gesucht]&lt;br /&gt;
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20117.0.html Vorüberlegungen]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:Konfiguration&amp;diff=10235</id>
		<title>Diskussion:Konfiguration</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:Konfiguration&amp;diff=10235"/>
		<updated>2015-02-18T20:28:03Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Auslagerung der Deatils &amp;quot;Konfiguration_in_einer_SQL_Datenbank&amp;quot; auf separate Wiki-Seite? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Umstrukturierung / Umsortierung der Abschnitte ==&lt;br /&gt;
Sollte &amp;quot;Auslagerung von Definitionen&amp;quot; nicht als &amp;quot;Expertenweg&amp;quot; bezeichnet werden? Eigentlich braucht man diese Auslagerung nicht, verwirrt eher und führt bei Einsteigern zu Problemen. (@Ph1959de zweifel daher, ob Verlinkung von EnOcean auf diese Wiki-Seite sinnvoll)--[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 13:10, 30. Jul. 2014 (UTC)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
:Bei der &amp;quot;Auslagerung ... = Expertenmodus&amp;quot; stimme ich Dir zu. Baust Du den Hinweis ein? Bei der Gelegenheit sollte der Abschnitt vielleicht auch gleich ganz an den Schluss der Seite verschoben werden.&lt;br /&gt;
:Die Verlinkung auf [[Konfiguration]] hätte ich persönlich gern auf jeder Seite die &amp;quot;fhem.cfg&amp;quot; erwähnt ... einfach um regelmäßig darauf hinzuweisen, dass das eigentlich nur eine spezielle Art ist, in Fhem Konfigurationsänderungen vorzunehmen. &lt;br /&gt;
:--[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 13:38, 30. Jul. 2014 (UTC)&lt;br /&gt;
::Habe auf die Schnelle &amp;quot;Auslagerung.. = Expertenmodus&amp;quot; gekennzeichnet und diverse kleine Ergänzungen sowie mehrere Umgliederung&#039;&#039;&#039;en&#039;&#039;&#039; vorgenommen. &lt;br /&gt;
::Verlinkung auf [[Konfiguration]] ist in EnOcean im Wesentlichen umgesetzt.&lt;br /&gt;
::--[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 19:26, 30. Jul. 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Ich habe weiter unten unter [[Umbennung &amp;quot;Auslagerung von Definitionen&amp;quot; nach &amp;quot;Aufteilung komplexerer Konfigurationen&amp;quot; sinnvoll?]] einen Kommentar geschrieben, der hierzu passt. Grüße, [[Benutzer:Fabian|Fabian]] ([[Benutzer Diskussion:Fabian|Diskussion]]) 17:21, 15. Feb. 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
== Benennung Eingabefeld ==&lt;br /&gt;
Befehlseingabefenster versus (Command-)Eingabefeld: Das hier als &amp;quot;Befehlseingabefenster&amp;quot; bezeichnete Feld wird an anderer Stelle im Wiki &amp;quot;Eingabefeld&amp;quot; -genau wie in UliM´s Einsteiger-PDF- bezeichnet. Sollte man hier nicht eine Vereinheitlichung herbeiführen? Wenn ja, welche? --[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 05:54, 4. Aug. 2014 (UTC)&lt;br /&gt;
:Eingabefeld finde ich auch besser (als Eingabefenster) ... aber das mit dem &amp;quot;Befehls...&amp;quot; sollte doch irgendwie mit rein, weil es auch andere Eingabefelder gibt. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 07:42, 4. Aug. 2014 (UTC)&lt;br /&gt;
:: UliM nutzt auch &amp;quot;Kommando-Eingabefeld&amp;quot;. Wie wäre es damit? Denglisch &amp;quot;Command-Eingabefeld&amp;quot; finde ich nicht &amp;quot;schön&amp;quot;. &amp;quot;Befehls-Engabefeld&amp;quot; ist wieder etwas neues. Würde es dann hier und in EnOcean ändern. --[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 08:00, 4. Aug. 2014 (UTC)&lt;br /&gt;
::&amp;lt;hr /&amp;gt;&lt;br /&gt;
:::Nachdem das in der deutschen Version der commandref auch &amp;quot;Befehle&amp;quot; heißt (und nicht &amp;quot;Kommandos&amp;quot;) finde ich Befehls-Eingabefeld nicht völlig abwegig ... letztlich denke ich, es sollte beides gehen. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 08:29, 4. Aug. 2014 (UTC)&lt;br /&gt;
::::In der DE-commandref hatte ich nicht nachgesehen; danke für den Hinweis. Passe mich der an und übernehme daher &amp;quot;Befehls-Eingabefeld&amp;quot; Gruß, --[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 08:38, 4. Aug. 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Umbennung &amp;quot;Auslagerung von Definitionen&amp;quot; nach &amp;quot;Aufteilung komplexerer Konfigurationen&amp;quot; sinnvoll? ==&lt;br /&gt;
&lt;br /&gt;
Hallo Fabian!&lt;br /&gt;
Danke für Deine Arbeit im Wiki. Aber mit der obigen Umbennung bin ich ebenso wie mit den Erläuterungen nicht wirklich glücklichn. Wir versuchen seit einiger Zeit von der manuellen Editierei und Zersplitterung der fhem.cfg wegzukommen, damit die dadurch entstehenden unnötigen Probleme vermieden werden. Auf mich macht der Text und besonders die Umbennung den Eindruck, als müsste man komplexe (was ist das?) Konfigurationen aufteilen. Das ist aber definitiv nicht so und ich befürchte, das durch so eine Überschrift Einsteiger in die falsche Richtung gelenkt werden: Wenn ich mein Haus automatisiere, dann muss ich die fhem.cfg aufteilen. Neben der Rückgänigmachung der Überschrift, wäre mir am Liebsten Deinen Text in eine separate Seite auszulagern. -&amp;gt; Seite &amp;quot;Konfiguration&amp;quot; wird von den meisten neuen Modul/Hardwareseiten verlinkt und die nutzen gerade Einsteiger. Gruß,[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 18:51, 14. Feb. 2015 (CET)&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
: Hallo Christian!&lt;br /&gt;
: Ich hoffe ich bin hier nicht zu forsch eingestiegen - sorry, falls ich irgendwem auf die Füße gestiegen bin. Sollte ich für solche Änderungen zukünftig besser erstmal eine Diskussion anstoßen?&lt;br /&gt;
: Meine Ansatz ist folgender:&lt;br /&gt;
: * Bei umfangreicheren Konfigurationen (viele Devices etc) wird die fhem.cfg schnell sehr groß und dadurch unübersichtlich (mein Empfinden). Mir persönlich wird die Konfiguration von 6 FHTs, einem externen fhem-Raspi, versch. Wetterauswertungen, die Einbindung eines Müllkalenders und eine Internet-Überwachung einfach schon zu viel in einer Datei. ;-)&lt;br /&gt;
: * Perfekt wäre natürlich sowas wie eine IDE (mit Abschnittserkennung, Zuklappen, etc). Da das doch ein klein wenig aufwändig zu bauen wäre, trenne ich erstmal lieber die Dateien.&lt;br /&gt;
: * Den gesamten Abschnitt in eine eigene Seite auszulagern, finde ich sehr gut. Dann kann man das auch noch besser ausführen. Ausserdem kann in der Einleitung zum Abschnitt noch deutlicher rausgestellt werden, dass dies schon ein Expertenbereich ist.&lt;br /&gt;
: * Begriffsfrage: Ich finde den Begriff &amp;quot;Definitionen&amp;quot; unglücklich - ist der etabliert? Ich finde Konfigurationen treffender.&lt;br /&gt;
: Gruß, [[Benutzer:Fabian|Fabian]] ([[Benutzer Diskussion:Fabian|Diskussion]]) 17:16, 15. Feb. 2015 (CET)&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
::Hallo Fabian, nein bist aus meiner Sicht nicht zu forsch. Mach ruhig weiter. Zur Sache:&lt;br /&gt;
:: * Nach meiner Meinung sollte die direkte Editierei der fhem.cfg eben gerade von Einsteigern vermieden werden, da dies häufig zu Problemen führt. Details werden gerade mal wieder im Forum im Anfängerbereich (sehr emotional) diskutiert. Rudi hat aktuell auch die Bearbeitung der fhem.cfg als readonly gesperrt. Die Auslagerungen der Konfiguration halte ich für noch eine Stufe komplizierter und sehe persönlich nicht die Notwendigkeit. Ich will und kann das aber niemanden vorschreiben; jeder so wie er mag. Nur hätte ich es halt nicht gerne als Standard in dieser (Einsteiger-)Seite, sondern eben eine Auslagerung auf eine separate Seite (&amp;quot;include&amp;quot; in der Kategorie &amp;quot;FhemBefehl&amp;quot;, die sowieso noch fehlt) mit Verweis von hier.&lt;br /&gt;
:: * Zur Abgrenzung Definition/Konfiguration ist mir keine Etablierung bekannt. Mich stört &amp;quot;nur&amp;quot; das Wort &amp;quot;komplex&amp;quot;.&lt;br /&gt;
:: Gruß, [[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 07:49, 16. Feb. 2015 (CET)&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
::: Da bin ich völlig bei Dir. Ich kann den &amp;quot;komplexen&amp;quot; ;-) Teil ja mal in einen include-Artikel umziehen... Grüße, --[[Benutzer:Fabian|Fabian]] ([[Benutzer Diskussion:Fabian|Diskussion]]) 11:25, 16. Feb. 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
== Auslagerung der Deatils &amp;quot;Konfiguration_in_einer_SQL_Datenbank&amp;quot; auf separate Wiki-Seite? ==&lt;br /&gt;
&lt;br /&gt;
Hallo Mahowi!&lt;br /&gt;
Danke für Deine Ergänzungen und Erläuterungen zu configDB. Ich fände es jedoch besser, wenn diese Details auf eine separaten Wiki-Seite zu configDB abgehandelt werden. Die Seite Konfiguration soll(te) eine Grundlagenseite sein, auf die von vielen Seiten innerhalb des Wikis verlinkt wird. Die Details zur Umstellung configDB und Anlage der Datenbanken sind Einmalgeschichten, die die Aufmerksamkeit auf die eigentlichen Themen nach meiner Meinung überlagern. Danke und Gruß,[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 10:09, 15. Feb. 2015 (CET)&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
: Hallo Christian!&lt;br /&gt;
: Sorry, ich war für ein paar Tage unterwegs.&lt;br /&gt;
: Ich nehme die Details erstmal hier raus. Sobald ich dazu komme, setze ich sie dann auf eine separate Seite. Im Forum gab es auch schon eine Debatte dazu.&lt;br /&gt;
: Gruß, [[Benutzer:Mahowi|Manny]] ([[Benutzer Diskussion:Mahowi|Diskussion]]) 21:27, 18. Feb. 2015 (CET)&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Konfiguration&amp;diff=10061</id>
		<title>Konfiguration</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Konfiguration&amp;diff=10061"/>
		<updated>2015-02-13T14:52:13Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Datenbankerstellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Konfiguration&#039;&#039;&#039; eines Fhem [[Systemübersicht|Systems]] wird im Normalfall definiert durch Eintragungen in der Konfigurationsdatei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt;, die standardmäßig im Fhem-Installationsverzeichnis abgelegt ist.&lt;br /&gt;
&lt;br /&gt;
Sofern nicht anderweitig erwähnt, beziehen sich alle weiteren Aussagen und Bildschirmfotos auf das [[PGM2|Standard Webinterface]] im Stil &amp;quot;dark&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Grundstruktur ==&lt;br /&gt;
In einer Standardinstallation sind alle Definitionen in der Datei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt; abgelegt; diese Datei befindet sich im Installationsverzeichnis (z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;/opt/fhem&amp;lt;/code&amp;gt;). Soll alternativ eine andere (Start-)Konfigurationsdatei verwendet werden, so ist deren Name beim Start von Fhem mitzugeben.&lt;br /&gt;
&lt;br /&gt;
== Autocreate ==&lt;br /&gt;
Sofern die &amp;quot;Autocreate&amp;quot; Funktion aktiv ist (&amp;lt;code&amp;gt;define autocreate autocreate&amp;lt;/code&amp;gt;), werden unter bestimmten Umständen Objekte automatisch angelegt. Diese Definitionen werden immer in der Start-Konfigurationsdatei abgelegt und abgespeichert. Nach der Erstinstallation von Fhem ist die &amp;quot;Autocreate&amp;quot; Funktion standardmäßig aktiv.&lt;br /&gt;
&lt;br /&gt;
== Bearbeitung der Konfiguration ==&lt;br /&gt;
[[Bild:saveConfig.png|mini|120px|links|&amp;quot;Knopf&amp;quot; zum Speichern der Konfigurationsänderungen]]&lt;br /&gt;
[[Bild:saveConfigChangeList.png|mini|220px|rechts|Beispiel einer Liste der ungesicherten Anderungen der Konfiguration]]&lt;br /&gt;
Die Fhem-Konfiguration kann auf verschiedene Arten bearbeitet werden. Für Einsteiger empfiehlt sich grundsätzlich die Verwendung des &amp;quot;Befehl-Eingabefeld&amp;quot; und der &amp;quot;Objektdetails&amp;quot; mit eingeschalteter Syntaxhervorhebung. Die Methoden &amp;quot;Integrierter Editor&amp;quot; und insbesondere &amp;quot;Externer Editor&amp;quot; sollten als &amp;quot;Expertenmodus&amp;quot; angesehen und nur in begründeten (Ausnahme-)Fällen angewendet werden. Insbesondere beim Mischen der Arten können unerwünschte und/oder unerwartete Effekte auftreten, so beispielsweise, wenn ein benötigtes &amp;quot;Save config&amp;quot; nicht erfolgt ist, bevor ein &amp;quot;rereadcfg&amp;quot; oder Neustart von Fhem durchgeführt wird. &lt;br /&gt;
&lt;br /&gt;
Seit Mitte Januar 2015 ist es, wie im Bild rechts gezeigt, möglich, sich eine Teilliste der ungesicherten Konfigurationsänderungen durch anklicken des roten {{Taste|?}} anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
=== Befehl-Eingabefeld ===&lt;br /&gt;
[[Bild:ConfCommandField.png|thumb|300px|Right|Befehl-Eingabefeld]]&lt;br /&gt;
Eingaben in das Befehl-Eingabefeld (teilweise auch bezeichnet als &amp;quot;Kommando-Eingabefeld&amp;quot; oder kurz &amp;quot;Eingabefeld&amp;quot;), das sich oben auf jeder Seite des Standardinterfaces befindet, stellen einen schnellen und einfachen Weg dar, um z.&amp;amp;nbsp;B. neue Objekte zu definieren (im dargestellten Beispiel die Zuweisung eines (ggf. neuen) Raumes zu einem Objekt). Nach Bestätigung mit der &amp;lt;Enter&amp;gt;-Taste werden die Änderungen unmittelbar wirksam.&lt;br /&gt;
&lt;br /&gt;
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: &amp;quot;Save config&amp;quot; (aus dem Menü in der linken Spalte) anklicken oder den Befehl &amp;quot;save&amp;quot; im Befehl-Eingabefeld eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Objektdetails ===&lt;br /&gt;
Durch Anklicken des Namensfeldes eines Objekts werden die Objektdetails aufgerufen. Je nach Objekttyp stehen auf dieser Seite verschiedene Optionen zur Manipulation von Objekteigenschaften zur Verfügung:&lt;br /&gt;
* [[Bild:ConfModifyDEF.png|300px|right]] &amp;lt;code&amp;gt;DEF&amp;lt;/code&amp;gt; zur Anpassung der Definition &lt;br /&gt;
* [[Bild:ConfAttrDropdown.png|300px|right]] Attribute / Attributwerte aus Auswahllisten (nach Auswahl der Werte ist der &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; Knopf anzuklicken) &lt;br /&gt;
* je nach Objekttyp stehen weitere / andere Aktionen zur &lt;br /&gt;
Nach einem Klick auf &amp;quot;Modify&amp;quot; werden die Änderungen an der Defintion unmittelbar wirksam.&lt;br /&gt;
&lt;br /&gt;
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: &amp;quot;Save config&amp;quot; (aus dem Menü in der linken Spalte) anklicken oder den Befehl &amp;quot;save&amp;quot; im Befehl-Eingabefeld eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Integrierter Editor ===&lt;br /&gt;
[[Bild:ConfEditFiles.png|thumb|300px|links|Aufruf des integrierten Editors]]&lt;br /&gt;
[[Bild:ConfEditSyntaxHighlight.png|mini|300px|rechts|Editfenster (Ausschnitt) mit Syntaxhervorhebung]]&lt;br /&gt;
Sollte ein direktes Editieren der Konfigurationsdatei als nötig erachtet werden, wird der Editor über den entsprechenden Menüeintrag in der linken Spalte erreicht. Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen (&amp;quot;Escapen&amp;quot; von Sonderzeichen, verdoppeln von Semikolon). Mit dem Abspeichern der editierten Datei werden die Änderungen unmittelbar aktiv, korrekte Syntax und Semantik vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
=== Syntaxhervorhebung ===&lt;br /&gt;
[[Bild:ConfEditDEFAutocomplete.png|mini|300px|rechts|Automatische Vervollständigung / Befehlsauswahlfenster (&amp;quot;se&amp;quot; getippt, dann Strg+Leertaste gedrückt)]]&lt;br /&gt;
Seit Anfang April 2014 ist der in Fhem integrierte Editor um Syntaxhervorhebungs-, Befehlsauswahl- und Befehlsvervollständigungsfunktionen erweitert.&lt;br /&gt;
&lt;br /&gt;
Um die Funktionalität zu aktivieren müssen die folgenden zwei Attribute gesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB JavaScripts codemirror/fhem_codemirror.js&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB codemirrorParam { &amp;quot;theme&amp;quot;:&amp;quot;blackboard&amp;quot;, &amp;quot;lineNumbers&amp;quot;:true }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Syntaxhervorhebung / Befehlsvervollständigung, sofern aktiviert, ist wirksam für&lt;br /&gt;
* Bearbeitung der [[Konfiguration#Objektdetails|Objektdetails]]&lt;br /&gt;
* [[Konfiguration#Integrierter Editor|Integrierter Editor]]&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus wird (wie im Bildauschnitt dargestellt) über Strg+Leertaste eine Befehlsauswahl bzw. automatische Befehlsvervollständigung angeboten.&lt;br /&gt;
&lt;br /&gt;
Der Forums-Thread unter der Überschrift [http://forum.fhem.de/index.php/topic,20444.0.html Javascript Editor einbinden] enthält die Diskussion zum Entwicklungsprozess.&lt;br /&gt;
&lt;br /&gt;
=== Externer Editor ===&lt;br /&gt;
Unter bestimmten Umständen kann auch das Editieren der Konfiguration mit einem externen Editor wie z.&amp;amp;nbsp;B.&lt;br /&gt;
* Notepad++ (mit der nppFTP-Erweiterung)&lt;br /&gt;
* nano in einer Telnet Sitzung&lt;br /&gt;
* in wfftp integrierter / integrierbarer Editor&lt;br /&gt;
* ...&lt;br /&gt;
sinnvoll sein (duplizieren von Definitionen, globale Änderungen, umsortieren von Definitionen, etc.). In diesem Fall sollte der Benutzer sich mit der Bedienung des Editors in der gewählten Umgebung hinreichend gut auskennen.&lt;br /&gt;
&lt;br /&gt;
Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen (&amp;quot;Escapen&amp;quot; von Sonderzeichen, verdoppeln von Semikolon). Nach dem Abspeichern der editierten Datei werden die Änderungen erst nach erneutem Einlesen der Konfiguration aktiv, korrekte Syntax und Semantik vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
Notwendige Aktionen nach Durchführung der Änderung: &amp;quot;rereadcfg&amp;quot; oder Neustart von Fhem.&lt;br /&gt;
&lt;br /&gt;
== Auslagerung von Definitionen ==&lt;br /&gt;
Die Methode der Auslagerung von Definitionen gehört zum &amp;quot;Expertenmodus&amp;quot;. Sie sollte nur bei detaillierter Kenntnis der Auswirkungen gewählt werden. Selbst einige Entwickler von Fhem wenden diese Methode nicht an. Sofern Definitionen aus der fhem.cfg ausgelagert werden sollen bzw. wurden, können die Dateien mit den ausgelagerten Anweisungen mithilfe von &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; eingebunden werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;include Zimmer1.cfg&amp;lt;/code&amp;gt; (Datei muss in &amp;lt;code&amp;gt;/opt/fhem/FHEM&amp;lt;/code&amp;gt; liegen)&lt;br /&gt;
:&amp;lt;code&amp;gt;include /opt/fhem/eigene/Zimmer1.cfg&amp;lt;/code&amp;gt; (Datei muss im angegebenen Verzeichnis liegen)&lt;br /&gt;
&lt;br /&gt;
Sämtliche &amp;lt;code&amp;gt;attr global&amp;lt;/code&amp;gt; Definitionen &#039;&#039;&#039;müssen&#039;&#039;&#039; in der fhem.cfg bleiben. &lt;br /&gt;
&lt;br /&gt;
Nur Konfigurationsdateien, die im Verzeichnis &amp;lt;installationsverzeichnis&amp;gt;/FHEM liegen, werden unter &amp;quot;Edit files&amp;quot; zur Bearbeitung mit dem integrierten Editor aufgeführt.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in einer SQL Datenbank ==&lt;br /&gt;
Seit April 2014 (Fhem-Version 5079) können Definitionen alternativ zur Speicherung in einer einfachen Text-Konfigurationsdatei(en) in einer SQL Datenbank abgelegt werden. Hierzu dienen configDB (Hilfsmodul) und configdb (command), die in der [http://fhem.de/commandref.html#configDB commandref] dokumentiert sind.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzung ===&lt;br /&gt;
==== Datenbank ====&lt;br /&gt;
Unterstützt werden:&lt;br /&gt;
* [http://www.sqlite.org/ Sqlite]&lt;br /&gt;
* [http://www.mysql.de/ MySQL]&lt;br /&gt;
* [http://www.postgresql.org/ PostgreSQL]&lt;br /&gt;
&lt;br /&gt;
==== Perl-Module ====&lt;br /&gt;
* Text::Diff (libtext-diff-perl)&lt;br /&gt;
* DBI (libdbi-perl)&lt;br /&gt;
* Je nach Datenbank:&lt;br /&gt;
** DBD::SQLite (libdbd-sqlite3-perl)&lt;br /&gt;
** DBD::mysql (libdbd-mysql-perl)&lt;br /&gt;
** DBD::Pg (libdbd-pg-perl)&lt;br /&gt;
&lt;br /&gt;
=== configDB.conf ===&lt;br /&gt;
In einer Datei namens &#039;&#039;&#039;configDB.conf&#039;&#039;&#039; werden die Parameter für eine Verbindung zur Datenbank (host, username, password, etc.) hinterlegt. Diese muß im fhem Hauptverzeichnis liegen (z.B. /opt/fhem).&lt;br /&gt;
* Sqlite&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
        connection =&amp;gt; &amp;quot;SQLite:dbname=/opt/fhem/configDB.db&amp;quot;,&lt;br /&gt;
        user =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;
        password =&amp;gt; &amp;quot;&amp;quot;&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* MySQL&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
       connection =&amp;gt; &amp;quot;mysql:database=configDB;host=localhost;port=3306&amp;quot;,&lt;br /&gt;
       user =&amp;gt; &amp;quot;fhemuser&amp;quot;,&lt;br /&gt;
       password =&amp;gt; &amp;quot;fhempassword&amp;quot;,&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* PostgreSQL:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
        connection =&amp;gt; &amp;quot;Pg:database=configDB;host=localhost&amp;quot;,&lt;br /&gt;
        user =&amp;gt; &amp;quot;fhemuser&amp;quot;,&lt;br /&gt;
        password =&amp;gt; &amp;quot;fhempassword&amp;quot;&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbankerstellung ===&lt;br /&gt;
Es muß zuerst eine leere Datenbank erstellt werden. Die Tabellen werden automatisch erstellt.&lt;br /&gt;
* Sqlite&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;pi@raspberrypi ~ $ sqlite3 configDB.db&lt;br /&gt;
&lt;br /&gt;
SQLite version 3.7.13 2012-07-17 17:46:21&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt; pragma auto_vacuum=2;&lt;br /&gt;
sqlite&amp;gt; .quit&amp;lt;/pre&amp;gt;&lt;br /&gt;
* MySQL&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;pi@raspberrypi ~ $ mysql -u root -p&lt;br /&gt;
Enter password:&lt;br /&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 2937&lt;br /&gt;
Server version: 5.5.41-0+wheezy1 (Debian)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.&lt;br /&gt;
&lt;br /&gt;
Oracle is a registered trademark of Oracle Corporation and/or its&lt;br /&gt;
affiliates. Other names may be trademarks of their respective&lt;br /&gt;
owners.&lt;br /&gt;
&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the current input statement.&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; CREATE DATABASE `configDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;&lt;br /&gt;
Query OK, 1 row affected (0.04 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; GRANT CREATE, SELECT, INSERT, DELETE, UPDATE ON `mahowi`.* TO &#039;fhemuser&#039;@&#039;%&#039;;&lt;br /&gt;
Query OK, 0 rows affected (0.04 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt;  \q&lt;br /&gt;
Bye&amp;lt;/pre&amp;gt;&lt;br /&gt;
* PostgreSQL&amp;lt;br /&amp;gt;&#039;&#039;&#039;&#039;&#039;TBD&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Migration der Konfiguration auf configDB ===&lt;br /&gt;
* Im laufenden fhem &amp;lt;code&amp;gt;configdb migrate&amp;lt;/code&amp;gt; eingeben. Das kann eine Weile dauern. Wenn die Migration beendet ist, werden die Datenbank-Statistiken angezeigt. Die Original fhem.cfg wird nicht verändert.&lt;br /&gt;
* fhem herunterfahren (&amp;lt;code&amp;gt;shutdown&amp;lt;/code&amp;gt;)&lt;br /&gt;
* fhem neu starten mit &amp;lt;code&amp;gt;perl fhem.pl configDB&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Eventuell in &#039;&#039;/etc/init.d/fhem&#039;&#039; die Zeile &amp;lt;code&amp;gt;perl fhem.pl fhem.cfg&amp;lt;/code&amp;gt; auskommentieren und das &#039;&#039;#&#039;&#039; vor der Zeile &amp;lt;code&amp;gt;perl fhem.pl configDB&amp;lt;/code&amp;gt; löschen.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Ab jetzt wird die gesamte Konfiguration in einer Datenbank gespeichert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Details zu dieser &amp;quot;Alternative&amp;quot;:&lt;br /&gt;
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20194.0.html Tester gesucht]&lt;br /&gt;
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20117.0.html Vorüberlegungen]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Konfiguration&amp;diff=10060</id>
		<title>Konfiguration</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Konfiguration&amp;diff=10060"/>
		<updated>2015-02-13T14:52:00Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* configDB.conf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Konfiguration&#039;&#039;&#039; eines Fhem [[Systemübersicht|Systems]] wird im Normalfall definiert durch Eintragungen in der Konfigurationsdatei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt;, die standardmäßig im Fhem-Installationsverzeichnis abgelegt ist.&lt;br /&gt;
&lt;br /&gt;
Sofern nicht anderweitig erwähnt, beziehen sich alle weiteren Aussagen und Bildschirmfotos auf das [[PGM2|Standard Webinterface]] im Stil &amp;quot;dark&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Grundstruktur ==&lt;br /&gt;
In einer Standardinstallation sind alle Definitionen in der Datei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt; abgelegt; diese Datei befindet sich im Installationsverzeichnis (z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;/opt/fhem&amp;lt;/code&amp;gt;). Soll alternativ eine andere (Start-)Konfigurationsdatei verwendet werden, so ist deren Name beim Start von Fhem mitzugeben.&lt;br /&gt;
&lt;br /&gt;
== Autocreate ==&lt;br /&gt;
Sofern die &amp;quot;Autocreate&amp;quot; Funktion aktiv ist (&amp;lt;code&amp;gt;define autocreate autocreate&amp;lt;/code&amp;gt;), werden unter bestimmten Umständen Objekte automatisch angelegt. Diese Definitionen werden immer in der Start-Konfigurationsdatei abgelegt und abgespeichert. Nach der Erstinstallation von Fhem ist die &amp;quot;Autocreate&amp;quot; Funktion standardmäßig aktiv.&lt;br /&gt;
&lt;br /&gt;
== Bearbeitung der Konfiguration ==&lt;br /&gt;
[[Bild:saveConfig.png|mini|120px|links|&amp;quot;Knopf&amp;quot; zum Speichern der Konfigurationsänderungen]]&lt;br /&gt;
[[Bild:saveConfigChangeList.png|mini|220px|rechts|Beispiel einer Liste der ungesicherten Anderungen der Konfiguration]]&lt;br /&gt;
Die Fhem-Konfiguration kann auf verschiedene Arten bearbeitet werden. Für Einsteiger empfiehlt sich grundsätzlich die Verwendung des &amp;quot;Befehl-Eingabefeld&amp;quot; und der &amp;quot;Objektdetails&amp;quot; mit eingeschalteter Syntaxhervorhebung. Die Methoden &amp;quot;Integrierter Editor&amp;quot; und insbesondere &amp;quot;Externer Editor&amp;quot; sollten als &amp;quot;Expertenmodus&amp;quot; angesehen und nur in begründeten (Ausnahme-)Fällen angewendet werden. Insbesondere beim Mischen der Arten können unerwünschte und/oder unerwartete Effekte auftreten, so beispielsweise, wenn ein benötigtes &amp;quot;Save config&amp;quot; nicht erfolgt ist, bevor ein &amp;quot;rereadcfg&amp;quot; oder Neustart von Fhem durchgeführt wird. &lt;br /&gt;
&lt;br /&gt;
Seit Mitte Januar 2015 ist es, wie im Bild rechts gezeigt, möglich, sich eine Teilliste der ungesicherten Konfigurationsänderungen durch anklicken des roten {{Taste|?}} anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
=== Befehl-Eingabefeld ===&lt;br /&gt;
[[Bild:ConfCommandField.png|thumb|300px|Right|Befehl-Eingabefeld]]&lt;br /&gt;
Eingaben in das Befehl-Eingabefeld (teilweise auch bezeichnet als &amp;quot;Kommando-Eingabefeld&amp;quot; oder kurz &amp;quot;Eingabefeld&amp;quot;), das sich oben auf jeder Seite des Standardinterfaces befindet, stellen einen schnellen und einfachen Weg dar, um z.&amp;amp;nbsp;B. neue Objekte zu definieren (im dargestellten Beispiel die Zuweisung eines (ggf. neuen) Raumes zu einem Objekt). Nach Bestätigung mit der &amp;lt;Enter&amp;gt;-Taste werden die Änderungen unmittelbar wirksam.&lt;br /&gt;
&lt;br /&gt;
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: &amp;quot;Save config&amp;quot; (aus dem Menü in der linken Spalte) anklicken oder den Befehl &amp;quot;save&amp;quot; im Befehl-Eingabefeld eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Objektdetails ===&lt;br /&gt;
Durch Anklicken des Namensfeldes eines Objekts werden die Objektdetails aufgerufen. Je nach Objekttyp stehen auf dieser Seite verschiedene Optionen zur Manipulation von Objekteigenschaften zur Verfügung:&lt;br /&gt;
* [[Bild:ConfModifyDEF.png|300px|right]] &amp;lt;code&amp;gt;DEF&amp;lt;/code&amp;gt; zur Anpassung der Definition &lt;br /&gt;
* [[Bild:ConfAttrDropdown.png|300px|right]] Attribute / Attributwerte aus Auswahllisten (nach Auswahl der Werte ist der &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; Knopf anzuklicken) &lt;br /&gt;
* je nach Objekttyp stehen weitere / andere Aktionen zur &lt;br /&gt;
Nach einem Klick auf &amp;quot;Modify&amp;quot; werden die Änderungen an der Defintion unmittelbar wirksam.&lt;br /&gt;
&lt;br /&gt;
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: &amp;quot;Save config&amp;quot; (aus dem Menü in der linken Spalte) anklicken oder den Befehl &amp;quot;save&amp;quot; im Befehl-Eingabefeld eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Integrierter Editor ===&lt;br /&gt;
[[Bild:ConfEditFiles.png|thumb|300px|links|Aufruf des integrierten Editors]]&lt;br /&gt;
[[Bild:ConfEditSyntaxHighlight.png|mini|300px|rechts|Editfenster (Ausschnitt) mit Syntaxhervorhebung]]&lt;br /&gt;
Sollte ein direktes Editieren der Konfigurationsdatei als nötig erachtet werden, wird der Editor über den entsprechenden Menüeintrag in der linken Spalte erreicht. Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen (&amp;quot;Escapen&amp;quot; von Sonderzeichen, verdoppeln von Semikolon). Mit dem Abspeichern der editierten Datei werden die Änderungen unmittelbar aktiv, korrekte Syntax und Semantik vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
=== Syntaxhervorhebung ===&lt;br /&gt;
[[Bild:ConfEditDEFAutocomplete.png|mini|300px|rechts|Automatische Vervollständigung / Befehlsauswahlfenster (&amp;quot;se&amp;quot; getippt, dann Strg+Leertaste gedrückt)]]&lt;br /&gt;
Seit Anfang April 2014 ist der in Fhem integrierte Editor um Syntaxhervorhebungs-, Befehlsauswahl- und Befehlsvervollständigungsfunktionen erweitert.&lt;br /&gt;
&lt;br /&gt;
Um die Funktionalität zu aktivieren müssen die folgenden zwei Attribute gesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB JavaScripts codemirror/fhem_codemirror.js&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB codemirrorParam { &amp;quot;theme&amp;quot;:&amp;quot;blackboard&amp;quot;, &amp;quot;lineNumbers&amp;quot;:true }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Syntaxhervorhebung / Befehlsvervollständigung, sofern aktiviert, ist wirksam für&lt;br /&gt;
* Bearbeitung der [[Konfiguration#Objektdetails|Objektdetails]]&lt;br /&gt;
* [[Konfiguration#Integrierter Editor|Integrierter Editor]]&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus wird (wie im Bildauschnitt dargestellt) über Strg+Leertaste eine Befehlsauswahl bzw. automatische Befehlsvervollständigung angeboten.&lt;br /&gt;
&lt;br /&gt;
Der Forums-Thread unter der Überschrift [http://forum.fhem.de/index.php/topic,20444.0.html Javascript Editor einbinden] enthält die Diskussion zum Entwicklungsprozess.&lt;br /&gt;
&lt;br /&gt;
=== Externer Editor ===&lt;br /&gt;
Unter bestimmten Umständen kann auch das Editieren der Konfiguration mit einem externen Editor wie z.&amp;amp;nbsp;B.&lt;br /&gt;
* Notepad++ (mit der nppFTP-Erweiterung)&lt;br /&gt;
* nano in einer Telnet Sitzung&lt;br /&gt;
* in wfftp integrierter / integrierbarer Editor&lt;br /&gt;
* ...&lt;br /&gt;
sinnvoll sein (duplizieren von Definitionen, globale Änderungen, umsortieren von Definitionen, etc.). In diesem Fall sollte der Benutzer sich mit der Bedienung des Editors in der gewählten Umgebung hinreichend gut auskennen.&lt;br /&gt;
&lt;br /&gt;
Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen (&amp;quot;Escapen&amp;quot; von Sonderzeichen, verdoppeln von Semikolon). Nach dem Abspeichern der editierten Datei werden die Änderungen erst nach erneutem Einlesen der Konfiguration aktiv, korrekte Syntax und Semantik vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
Notwendige Aktionen nach Durchführung der Änderung: &amp;quot;rereadcfg&amp;quot; oder Neustart von Fhem.&lt;br /&gt;
&lt;br /&gt;
== Auslagerung von Definitionen ==&lt;br /&gt;
Die Methode der Auslagerung von Definitionen gehört zum &amp;quot;Expertenmodus&amp;quot;. Sie sollte nur bei detaillierter Kenntnis der Auswirkungen gewählt werden. Selbst einige Entwickler von Fhem wenden diese Methode nicht an. Sofern Definitionen aus der fhem.cfg ausgelagert werden sollen bzw. wurden, können die Dateien mit den ausgelagerten Anweisungen mithilfe von &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; eingebunden werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;include Zimmer1.cfg&amp;lt;/code&amp;gt; (Datei muss in &amp;lt;code&amp;gt;/opt/fhem/FHEM&amp;lt;/code&amp;gt; liegen)&lt;br /&gt;
:&amp;lt;code&amp;gt;include /opt/fhem/eigene/Zimmer1.cfg&amp;lt;/code&amp;gt; (Datei muss im angegebenen Verzeichnis liegen)&lt;br /&gt;
&lt;br /&gt;
Sämtliche &amp;lt;code&amp;gt;attr global&amp;lt;/code&amp;gt; Definitionen &#039;&#039;&#039;müssen&#039;&#039;&#039; in der fhem.cfg bleiben. &lt;br /&gt;
&lt;br /&gt;
Nur Konfigurationsdateien, die im Verzeichnis &amp;lt;installationsverzeichnis&amp;gt;/FHEM liegen, werden unter &amp;quot;Edit files&amp;quot; zur Bearbeitung mit dem integrierten Editor aufgeführt.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in einer SQL Datenbank ==&lt;br /&gt;
Seit April 2014 (Fhem-Version 5079) können Definitionen alternativ zur Speicherung in einer einfachen Text-Konfigurationsdatei(en) in einer SQL Datenbank abgelegt werden. Hierzu dienen configDB (Hilfsmodul) und configdb (command), die in der [http://fhem.de/commandref.html#configDB commandref] dokumentiert sind.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzung ===&lt;br /&gt;
==== Datenbank ====&lt;br /&gt;
Unterstützt werden:&lt;br /&gt;
* [http://www.sqlite.org/ Sqlite]&lt;br /&gt;
* [http://www.mysql.de/ MySQL]&lt;br /&gt;
* [http://www.postgresql.org/ PostgreSQL]&lt;br /&gt;
&lt;br /&gt;
==== Perl-Module ====&lt;br /&gt;
* Text::Diff (libtext-diff-perl)&lt;br /&gt;
* DBI (libdbi-perl)&lt;br /&gt;
* Je nach Datenbank:&lt;br /&gt;
** DBD::SQLite (libdbd-sqlite3-perl)&lt;br /&gt;
** DBD::mysql (libdbd-mysql-perl)&lt;br /&gt;
** DBD::Pg (libdbd-pg-perl)&lt;br /&gt;
&lt;br /&gt;
=== configDB.conf ===&lt;br /&gt;
In einer Datei namens &#039;&#039;&#039;configDB.conf&#039;&#039;&#039; werden die Parameter für eine Verbindung zur Datenbank (host, username, password, etc.) hinterlegt. Diese muß im fhem Hauptverzeichnis liegen (z.B. /opt/fhem).&lt;br /&gt;
* Sqlite&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
        connection =&amp;gt; &amp;quot;SQLite:dbname=/opt/fhem/configDB.db&amp;quot;,&lt;br /&gt;
        user =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;
        password =&amp;gt; &amp;quot;&amp;quot;&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* MySQL&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
       connection =&amp;gt; &amp;quot;mysql:database=configDB;host=localhost;port=3306&amp;quot;,&lt;br /&gt;
       user =&amp;gt; &amp;quot;fhemuser&amp;quot;,&lt;br /&gt;
       password =&amp;gt; &amp;quot;fhempassword&amp;quot;,&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* PostgreSQL:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
        connection =&amp;gt; &amp;quot;Pg:database=configDB;host=localhost&amp;quot;,&lt;br /&gt;
        user =&amp;gt; &amp;quot;fhemuser&amp;quot;,&lt;br /&gt;
        password =&amp;gt; &amp;quot;fhempassword&amp;quot;&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Datenbankerstellung ====&lt;br /&gt;
Es muß zuerst eine leere Datenbank erstellt werden. Die Tabellen werden automatisch erstellt.&lt;br /&gt;
* Sqlite&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;pi@raspberrypi ~ $ sqlite3 configDB.db&lt;br /&gt;
&lt;br /&gt;
SQLite version 3.7.13 2012-07-17 17:46:21&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt; pragma auto_vacuum=2;&lt;br /&gt;
sqlite&amp;gt; .quit&amp;lt;/pre&amp;gt;&lt;br /&gt;
* MySQL&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;pi@raspberrypi ~ $ mysql -u root -p&lt;br /&gt;
Enter password:&lt;br /&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 2937&lt;br /&gt;
Server version: 5.5.41-0+wheezy1 (Debian)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.&lt;br /&gt;
&lt;br /&gt;
Oracle is a registered trademark of Oracle Corporation and/or its&lt;br /&gt;
affiliates. Other names may be trademarks of their respective&lt;br /&gt;
owners.&lt;br /&gt;
&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the current input statement.&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; CREATE DATABASE `configDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;&lt;br /&gt;
Query OK, 1 row affected (0.04 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; GRANT CREATE, SELECT, INSERT, DELETE, UPDATE ON `mahowi`.* TO &#039;fhemuser&#039;@&#039;%&#039;;&lt;br /&gt;
Query OK, 0 rows affected (0.04 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt;  \q&lt;br /&gt;
Bye&amp;lt;/pre&amp;gt;&lt;br /&gt;
* PostgreSQL&amp;lt;br /&amp;gt;&#039;&#039;&#039;&#039;&#039;TBD&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Migration der Konfiguration auf configDB ===&lt;br /&gt;
* Im laufenden fhem &amp;lt;code&amp;gt;configdb migrate&amp;lt;/code&amp;gt; eingeben. Das kann eine Weile dauern. Wenn die Migration beendet ist, werden die Datenbank-Statistiken angezeigt. Die Original fhem.cfg wird nicht verändert.&lt;br /&gt;
* fhem herunterfahren (&amp;lt;code&amp;gt;shutdown&amp;lt;/code&amp;gt;)&lt;br /&gt;
* fhem neu starten mit &amp;lt;code&amp;gt;perl fhem.pl configDB&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Eventuell in &#039;&#039;/etc/init.d/fhem&#039;&#039; die Zeile &amp;lt;code&amp;gt;perl fhem.pl fhem.cfg&amp;lt;/code&amp;gt; auskommentieren und das &#039;&#039;#&#039;&#039; vor der Zeile &amp;lt;code&amp;gt;perl fhem.pl configDB&amp;lt;/code&amp;gt; löschen.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Ab jetzt wird die gesamte Konfiguration in einer Datenbank gespeichert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Details zu dieser &amp;quot;Alternative&amp;quot;:&lt;br /&gt;
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20194.0.html Tester gesucht]&lt;br /&gt;
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20117.0.html Vorüberlegungen]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Konfiguration&amp;diff=10059</id>
		<title>Konfiguration</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Konfiguration&amp;diff=10059"/>
		<updated>2015-02-13T14:51:41Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Migration der Konfiguration auf configDB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Konfiguration&#039;&#039;&#039; eines Fhem [[Systemübersicht|Systems]] wird im Normalfall definiert durch Eintragungen in der Konfigurationsdatei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt;, die standardmäßig im Fhem-Installationsverzeichnis abgelegt ist.&lt;br /&gt;
&lt;br /&gt;
Sofern nicht anderweitig erwähnt, beziehen sich alle weiteren Aussagen und Bildschirmfotos auf das [[PGM2|Standard Webinterface]] im Stil &amp;quot;dark&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Grundstruktur ==&lt;br /&gt;
In einer Standardinstallation sind alle Definitionen in der Datei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt; abgelegt; diese Datei befindet sich im Installationsverzeichnis (z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;/opt/fhem&amp;lt;/code&amp;gt;). Soll alternativ eine andere (Start-)Konfigurationsdatei verwendet werden, so ist deren Name beim Start von Fhem mitzugeben.&lt;br /&gt;
&lt;br /&gt;
== Autocreate ==&lt;br /&gt;
Sofern die &amp;quot;Autocreate&amp;quot; Funktion aktiv ist (&amp;lt;code&amp;gt;define autocreate autocreate&amp;lt;/code&amp;gt;), werden unter bestimmten Umständen Objekte automatisch angelegt. Diese Definitionen werden immer in der Start-Konfigurationsdatei abgelegt und abgespeichert. Nach der Erstinstallation von Fhem ist die &amp;quot;Autocreate&amp;quot; Funktion standardmäßig aktiv.&lt;br /&gt;
&lt;br /&gt;
== Bearbeitung der Konfiguration ==&lt;br /&gt;
[[Bild:saveConfig.png|mini|120px|links|&amp;quot;Knopf&amp;quot; zum Speichern der Konfigurationsänderungen]]&lt;br /&gt;
[[Bild:saveConfigChangeList.png|mini|220px|rechts|Beispiel einer Liste der ungesicherten Anderungen der Konfiguration]]&lt;br /&gt;
Die Fhem-Konfiguration kann auf verschiedene Arten bearbeitet werden. Für Einsteiger empfiehlt sich grundsätzlich die Verwendung des &amp;quot;Befehl-Eingabefeld&amp;quot; und der &amp;quot;Objektdetails&amp;quot; mit eingeschalteter Syntaxhervorhebung. Die Methoden &amp;quot;Integrierter Editor&amp;quot; und insbesondere &amp;quot;Externer Editor&amp;quot; sollten als &amp;quot;Expertenmodus&amp;quot; angesehen und nur in begründeten (Ausnahme-)Fällen angewendet werden. Insbesondere beim Mischen der Arten können unerwünschte und/oder unerwartete Effekte auftreten, so beispielsweise, wenn ein benötigtes &amp;quot;Save config&amp;quot; nicht erfolgt ist, bevor ein &amp;quot;rereadcfg&amp;quot; oder Neustart von Fhem durchgeführt wird. &lt;br /&gt;
&lt;br /&gt;
Seit Mitte Januar 2015 ist es, wie im Bild rechts gezeigt, möglich, sich eine Teilliste der ungesicherten Konfigurationsänderungen durch anklicken des roten {{Taste|?}} anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
=== Befehl-Eingabefeld ===&lt;br /&gt;
[[Bild:ConfCommandField.png|thumb|300px|Right|Befehl-Eingabefeld]]&lt;br /&gt;
Eingaben in das Befehl-Eingabefeld (teilweise auch bezeichnet als &amp;quot;Kommando-Eingabefeld&amp;quot; oder kurz &amp;quot;Eingabefeld&amp;quot;), das sich oben auf jeder Seite des Standardinterfaces befindet, stellen einen schnellen und einfachen Weg dar, um z.&amp;amp;nbsp;B. neue Objekte zu definieren (im dargestellten Beispiel die Zuweisung eines (ggf. neuen) Raumes zu einem Objekt). Nach Bestätigung mit der &amp;lt;Enter&amp;gt;-Taste werden die Änderungen unmittelbar wirksam.&lt;br /&gt;
&lt;br /&gt;
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: &amp;quot;Save config&amp;quot; (aus dem Menü in der linken Spalte) anklicken oder den Befehl &amp;quot;save&amp;quot; im Befehl-Eingabefeld eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Objektdetails ===&lt;br /&gt;
Durch Anklicken des Namensfeldes eines Objekts werden die Objektdetails aufgerufen. Je nach Objekttyp stehen auf dieser Seite verschiedene Optionen zur Manipulation von Objekteigenschaften zur Verfügung:&lt;br /&gt;
* [[Bild:ConfModifyDEF.png|300px|right]] &amp;lt;code&amp;gt;DEF&amp;lt;/code&amp;gt; zur Anpassung der Definition &lt;br /&gt;
* [[Bild:ConfAttrDropdown.png|300px|right]] Attribute / Attributwerte aus Auswahllisten (nach Auswahl der Werte ist der &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; Knopf anzuklicken) &lt;br /&gt;
* je nach Objekttyp stehen weitere / andere Aktionen zur &lt;br /&gt;
Nach einem Klick auf &amp;quot;Modify&amp;quot; werden die Änderungen an der Defintion unmittelbar wirksam.&lt;br /&gt;
&lt;br /&gt;
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: &amp;quot;Save config&amp;quot; (aus dem Menü in der linken Spalte) anklicken oder den Befehl &amp;quot;save&amp;quot; im Befehl-Eingabefeld eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Integrierter Editor ===&lt;br /&gt;
[[Bild:ConfEditFiles.png|thumb|300px|links|Aufruf des integrierten Editors]]&lt;br /&gt;
[[Bild:ConfEditSyntaxHighlight.png|mini|300px|rechts|Editfenster (Ausschnitt) mit Syntaxhervorhebung]]&lt;br /&gt;
Sollte ein direktes Editieren der Konfigurationsdatei als nötig erachtet werden, wird der Editor über den entsprechenden Menüeintrag in der linken Spalte erreicht. Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen (&amp;quot;Escapen&amp;quot; von Sonderzeichen, verdoppeln von Semikolon). Mit dem Abspeichern der editierten Datei werden die Änderungen unmittelbar aktiv, korrekte Syntax und Semantik vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
=== Syntaxhervorhebung ===&lt;br /&gt;
[[Bild:ConfEditDEFAutocomplete.png|mini|300px|rechts|Automatische Vervollständigung / Befehlsauswahlfenster (&amp;quot;se&amp;quot; getippt, dann Strg+Leertaste gedrückt)]]&lt;br /&gt;
Seit Anfang April 2014 ist der in Fhem integrierte Editor um Syntaxhervorhebungs-, Befehlsauswahl- und Befehlsvervollständigungsfunktionen erweitert.&lt;br /&gt;
&lt;br /&gt;
Um die Funktionalität zu aktivieren müssen die folgenden zwei Attribute gesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB JavaScripts codemirror/fhem_codemirror.js&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB codemirrorParam { &amp;quot;theme&amp;quot;:&amp;quot;blackboard&amp;quot;, &amp;quot;lineNumbers&amp;quot;:true }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Syntaxhervorhebung / Befehlsvervollständigung, sofern aktiviert, ist wirksam für&lt;br /&gt;
* Bearbeitung der [[Konfiguration#Objektdetails|Objektdetails]]&lt;br /&gt;
* [[Konfiguration#Integrierter Editor|Integrierter Editor]]&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus wird (wie im Bildauschnitt dargestellt) über Strg+Leertaste eine Befehlsauswahl bzw. automatische Befehlsvervollständigung angeboten.&lt;br /&gt;
&lt;br /&gt;
Der Forums-Thread unter der Überschrift [http://forum.fhem.de/index.php/topic,20444.0.html Javascript Editor einbinden] enthält die Diskussion zum Entwicklungsprozess.&lt;br /&gt;
&lt;br /&gt;
=== Externer Editor ===&lt;br /&gt;
Unter bestimmten Umständen kann auch das Editieren der Konfiguration mit einem externen Editor wie z.&amp;amp;nbsp;B.&lt;br /&gt;
* Notepad++ (mit der nppFTP-Erweiterung)&lt;br /&gt;
* nano in einer Telnet Sitzung&lt;br /&gt;
* in wfftp integrierter / integrierbarer Editor&lt;br /&gt;
* ...&lt;br /&gt;
sinnvoll sein (duplizieren von Definitionen, globale Änderungen, umsortieren von Definitionen, etc.). In diesem Fall sollte der Benutzer sich mit der Bedienung des Editors in der gewählten Umgebung hinreichend gut auskennen.&lt;br /&gt;
&lt;br /&gt;
Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen (&amp;quot;Escapen&amp;quot; von Sonderzeichen, verdoppeln von Semikolon). Nach dem Abspeichern der editierten Datei werden die Änderungen erst nach erneutem Einlesen der Konfiguration aktiv, korrekte Syntax und Semantik vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
Notwendige Aktionen nach Durchführung der Änderung: &amp;quot;rereadcfg&amp;quot; oder Neustart von Fhem.&lt;br /&gt;
&lt;br /&gt;
== Auslagerung von Definitionen ==&lt;br /&gt;
Die Methode der Auslagerung von Definitionen gehört zum &amp;quot;Expertenmodus&amp;quot;. Sie sollte nur bei detaillierter Kenntnis der Auswirkungen gewählt werden. Selbst einige Entwickler von Fhem wenden diese Methode nicht an. Sofern Definitionen aus der fhem.cfg ausgelagert werden sollen bzw. wurden, können die Dateien mit den ausgelagerten Anweisungen mithilfe von &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; eingebunden werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;include Zimmer1.cfg&amp;lt;/code&amp;gt; (Datei muss in &amp;lt;code&amp;gt;/opt/fhem/FHEM&amp;lt;/code&amp;gt; liegen)&lt;br /&gt;
:&amp;lt;code&amp;gt;include /opt/fhem/eigene/Zimmer1.cfg&amp;lt;/code&amp;gt; (Datei muss im angegebenen Verzeichnis liegen)&lt;br /&gt;
&lt;br /&gt;
Sämtliche &amp;lt;code&amp;gt;attr global&amp;lt;/code&amp;gt; Definitionen &#039;&#039;&#039;müssen&#039;&#039;&#039; in der fhem.cfg bleiben. &lt;br /&gt;
&lt;br /&gt;
Nur Konfigurationsdateien, die im Verzeichnis &amp;lt;installationsverzeichnis&amp;gt;/FHEM liegen, werden unter &amp;quot;Edit files&amp;quot; zur Bearbeitung mit dem integrierten Editor aufgeführt.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in einer SQL Datenbank ==&lt;br /&gt;
Seit April 2014 (Fhem-Version 5079) können Definitionen alternativ zur Speicherung in einer einfachen Text-Konfigurationsdatei(en) in einer SQL Datenbank abgelegt werden. Hierzu dienen configDB (Hilfsmodul) und configdb (command), die in der [http://fhem.de/commandref.html#configDB commandref] dokumentiert sind.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzung ===&lt;br /&gt;
==== Datenbank ====&lt;br /&gt;
Unterstützt werden:&lt;br /&gt;
* [http://www.sqlite.org/ Sqlite]&lt;br /&gt;
* [http://www.mysql.de/ MySQL]&lt;br /&gt;
* [http://www.postgresql.org/ PostgreSQL]&lt;br /&gt;
&lt;br /&gt;
==== Perl-Module ====&lt;br /&gt;
* Text::Diff (libtext-diff-perl)&lt;br /&gt;
* DBI (libdbi-perl)&lt;br /&gt;
* Je nach Datenbank:&lt;br /&gt;
** DBD::SQLite (libdbd-sqlite3-perl)&lt;br /&gt;
** DBD::mysql (libdbd-mysql-perl)&lt;br /&gt;
** DBD::Pg (libdbd-pg-perl)&lt;br /&gt;
&lt;br /&gt;
==== configDB.conf ====&lt;br /&gt;
In einer Datei namens &#039;&#039;&#039;configDB.conf&#039;&#039;&#039; werden die Parameter für eine Verbindung zur Datenbank (host, username, password, etc.) hinterlegt. Diese muß im fhem Hauptverzeichnis liegen (z.B. /opt/fhem).&lt;br /&gt;
* Sqlite&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
        connection =&amp;gt; &amp;quot;SQLite:dbname=/opt/fhem/configDB.db&amp;quot;,&lt;br /&gt;
        user =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;
        password =&amp;gt; &amp;quot;&amp;quot;&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* MySQL&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
       connection =&amp;gt; &amp;quot;mysql:database=configDB;host=localhost;port=3306&amp;quot;,&lt;br /&gt;
       user =&amp;gt; &amp;quot;fhemuser&amp;quot;,&lt;br /&gt;
       password =&amp;gt; &amp;quot;fhempassword&amp;quot;,&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* PostgreSQL:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
        connection =&amp;gt; &amp;quot;Pg:database=configDB;host=localhost&amp;quot;,&lt;br /&gt;
        user =&amp;gt; &amp;quot;fhemuser&amp;quot;,&lt;br /&gt;
        password =&amp;gt; &amp;quot;fhempassword&amp;quot;&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Datenbankerstellung ====&lt;br /&gt;
Es muß zuerst eine leere Datenbank erstellt werden. Die Tabellen werden automatisch erstellt.&lt;br /&gt;
* Sqlite&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;pi@raspberrypi ~ $ sqlite3 configDB.db&lt;br /&gt;
&lt;br /&gt;
SQLite version 3.7.13 2012-07-17 17:46:21&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt; pragma auto_vacuum=2;&lt;br /&gt;
sqlite&amp;gt; .quit&amp;lt;/pre&amp;gt;&lt;br /&gt;
* MySQL&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;pi@raspberrypi ~ $ mysql -u root -p&lt;br /&gt;
Enter password:&lt;br /&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 2937&lt;br /&gt;
Server version: 5.5.41-0+wheezy1 (Debian)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.&lt;br /&gt;
&lt;br /&gt;
Oracle is a registered trademark of Oracle Corporation and/or its&lt;br /&gt;
affiliates. Other names may be trademarks of their respective&lt;br /&gt;
owners.&lt;br /&gt;
&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the current input statement.&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; CREATE DATABASE `configDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;&lt;br /&gt;
Query OK, 1 row affected (0.04 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; GRANT CREATE, SELECT, INSERT, DELETE, UPDATE ON `mahowi`.* TO &#039;fhemuser&#039;@&#039;%&#039;;&lt;br /&gt;
Query OK, 0 rows affected (0.04 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt;  \q&lt;br /&gt;
Bye&amp;lt;/pre&amp;gt;&lt;br /&gt;
* PostgreSQL&amp;lt;br /&amp;gt;&#039;&#039;&#039;&#039;&#039;TBD&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Migration der Konfiguration auf configDB ===&lt;br /&gt;
* Im laufenden fhem &amp;lt;code&amp;gt;configdb migrate&amp;lt;/code&amp;gt; eingeben. Das kann eine Weile dauern. Wenn die Migration beendet ist, werden die Datenbank-Statistiken angezeigt. Die Original fhem.cfg wird nicht verändert.&lt;br /&gt;
* fhem herunterfahren (&amp;lt;code&amp;gt;shutdown&amp;lt;/code&amp;gt;)&lt;br /&gt;
* fhem neu starten mit &amp;lt;code&amp;gt;perl fhem.pl configDB&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Eventuell in &#039;&#039;/etc/init.d/fhem&#039;&#039; die Zeile &amp;lt;code&amp;gt;perl fhem.pl fhem.cfg&amp;lt;/code&amp;gt; auskommentieren und das &#039;&#039;#&#039;&#039; vor der Zeile &amp;lt;code&amp;gt;perl fhem.pl configDB&amp;lt;/code&amp;gt; löschen.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Ab jetzt wird die gesamte Konfiguration in einer Datenbank gespeichert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Details zu dieser &amp;quot;Alternative&amp;quot;:&lt;br /&gt;
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20194.0.html Tester gesucht]&lt;br /&gt;
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20117.0.html Vorüberlegungen]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Konfiguration&amp;diff=10058</id>
		<title>Konfiguration</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Konfiguration&amp;diff=10058"/>
		<updated>2015-02-13T14:50:45Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Konfiguration in einer SQL Datenbank */ Migration einer bestehenden fhem-Installation auf configDB beschrieben. DB-Erstellung mit PostgreSQL fehlt noch mangels Erfahrung.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Konfiguration&#039;&#039;&#039; eines Fhem [[Systemübersicht|Systems]] wird im Normalfall definiert durch Eintragungen in der Konfigurationsdatei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt;, die standardmäßig im Fhem-Installationsverzeichnis abgelegt ist.&lt;br /&gt;
&lt;br /&gt;
Sofern nicht anderweitig erwähnt, beziehen sich alle weiteren Aussagen und Bildschirmfotos auf das [[PGM2|Standard Webinterface]] im Stil &amp;quot;dark&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Grundstruktur ==&lt;br /&gt;
In einer Standardinstallation sind alle Definitionen in der Datei &amp;lt;code&amp;gt;fhem.cfg&amp;lt;/code&amp;gt; abgelegt; diese Datei befindet sich im Installationsverzeichnis (z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;/opt/fhem&amp;lt;/code&amp;gt;). Soll alternativ eine andere (Start-)Konfigurationsdatei verwendet werden, so ist deren Name beim Start von Fhem mitzugeben.&lt;br /&gt;
&lt;br /&gt;
== Autocreate ==&lt;br /&gt;
Sofern die &amp;quot;Autocreate&amp;quot; Funktion aktiv ist (&amp;lt;code&amp;gt;define autocreate autocreate&amp;lt;/code&amp;gt;), werden unter bestimmten Umständen Objekte automatisch angelegt. Diese Definitionen werden immer in der Start-Konfigurationsdatei abgelegt und abgespeichert. Nach der Erstinstallation von Fhem ist die &amp;quot;Autocreate&amp;quot; Funktion standardmäßig aktiv.&lt;br /&gt;
&lt;br /&gt;
== Bearbeitung der Konfiguration ==&lt;br /&gt;
[[Bild:saveConfig.png|mini|120px|links|&amp;quot;Knopf&amp;quot; zum Speichern der Konfigurationsänderungen]]&lt;br /&gt;
[[Bild:saveConfigChangeList.png|mini|220px|rechts|Beispiel einer Liste der ungesicherten Anderungen der Konfiguration]]&lt;br /&gt;
Die Fhem-Konfiguration kann auf verschiedene Arten bearbeitet werden. Für Einsteiger empfiehlt sich grundsätzlich die Verwendung des &amp;quot;Befehl-Eingabefeld&amp;quot; und der &amp;quot;Objektdetails&amp;quot; mit eingeschalteter Syntaxhervorhebung. Die Methoden &amp;quot;Integrierter Editor&amp;quot; und insbesondere &amp;quot;Externer Editor&amp;quot; sollten als &amp;quot;Expertenmodus&amp;quot; angesehen und nur in begründeten (Ausnahme-)Fällen angewendet werden. Insbesondere beim Mischen der Arten können unerwünschte und/oder unerwartete Effekte auftreten, so beispielsweise, wenn ein benötigtes &amp;quot;Save config&amp;quot; nicht erfolgt ist, bevor ein &amp;quot;rereadcfg&amp;quot; oder Neustart von Fhem durchgeführt wird. &lt;br /&gt;
&lt;br /&gt;
Seit Mitte Januar 2015 ist es, wie im Bild rechts gezeigt, möglich, sich eine Teilliste der ungesicherten Konfigurationsänderungen durch anklicken des roten {{Taste|?}} anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
=== Befehl-Eingabefeld ===&lt;br /&gt;
[[Bild:ConfCommandField.png|thumb|300px|Right|Befehl-Eingabefeld]]&lt;br /&gt;
Eingaben in das Befehl-Eingabefeld (teilweise auch bezeichnet als &amp;quot;Kommando-Eingabefeld&amp;quot; oder kurz &amp;quot;Eingabefeld&amp;quot;), das sich oben auf jeder Seite des Standardinterfaces befindet, stellen einen schnellen und einfachen Weg dar, um z.&amp;amp;nbsp;B. neue Objekte zu definieren (im dargestellten Beispiel die Zuweisung eines (ggf. neuen) Raumes zu einem Objekt). Nach Bestätigung mit der &amp;lt;Enter&amp;gt;-Taste werden die Änderungen unmittelbar wirksam.&lt;br /&gt;
&lt;br /&gt;
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: &amp;quot;Save config&amp;quot; (aus dem Menü in der linken Spalte) anklicken oder den Befehl &amp;quot;save&amp;quot; im Befehl-Eingabefeld eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Objektdetails ===&lt;br /&gt;
Durch Anklicken des Namensfeldes eines Objekts werden die Objektdetails aufgerufen. Je nach Objekttyp stehen auf dieser Seite verschiedene Optionen zur Manipulation von Objekteigenschaften zur Verfügung:&lt;br /&gt;
* [[Bild:ConfModifyDEF.png|300px|right]] &amp;lt;code&amp;gt;DEF&amp;lt;/code&amp;gt; zur Anpassung der Definition &lt;br /&gt;
* [[Bild:ConfAttrDropdown.png|300px|right]] Attribute / Attributwerte aus Auswahllisten (nach Auswahl der Werte ist der &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; Knopf anzuklicken) &lt;br /&gt;
* je nach Objekttyp stehen weitere / andere Aktionen zur &lt;br /&gt;
Nach einem Klick auf &amp;quot;Modify&amp;quot; werden die Änderungen an der Defintion unmittelbar wirksam.&lt;br /&gt;
&lt;br /&gt;
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: &amp;quot;Save config&amp;quot; (aus dem Menü in der linken Spalte) anklicken oder den Befehl &amp;quot;save&amp;quot; im Befehl-Eingabefeld eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Integrierter Editor ===&lt;br /&gt;
[[Bild:ConfEditFiles.png|thumb|300px|links|Aufruf des integrierten Editors]]&lt;br /&gt;
[[Bild:ConfEditSyntaxHighlight.png|mini|300px|rechts|Editfenster (Ausschnitt) mit Syntaxhervorhebung]]&lt;br /&gt;
Sollte ein direktes Editieren der Konfigurationsdatei als nötig erachtet werden, wird der Editor über den entsprechenden Menüeintrag in der linken Spalte erreicht. Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen (&amp;quot;Escapen&amp;quot; von Sonderzeichen, verdoppeln von Semikolon). Mit dem Abspeichern der editierten Datei werden die Änderungen unmittelbar aktiv, korrekte Syntax und Semantik vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
=== Syntaxhervorhebung ===&lt;br /&gt;
[[Bild:ConfEditDEFAutocomplete.png|mini|300px|rechts|Automatische Vervollständigung / Befehlsauswahlfenster (&amp;quot;se&amp;quot; getippt, dann Strg+Leertaste gedrückt)]]&lt;br /&gt;
Seit Anfang April 2014 ist der in Fhem integrierte Editor um Syntaxhervorhebungs-, Befehlsauswahl- und Befehlsvervollständigungsfunktionen erweitert.&lt;br /&gt;
&lt;br /&gt;
Um die Funktionalität zu aktivieren müssen die folgenden zwei Attribute gesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB JavaScripts codemirror/fhem_codemirror.js&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB codemirrorParam { &amp;quot;theme&amp;quot;:&amp;quot;blackboard&amp;quot;, &amp;quot;lineNumbers&amp;quot;:true }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Syntaxhervorhebung / Befehlsvervollständigung, sofern aktiviert, ist wirksam für&lt;br /&gt;
* Bearbeitung der [[Konfiguration#Objektdetails|Objektdetails]]&lt;br /&gt;
* [[Konfiguration#Integrierter Editor|Integrierter Editor]]&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus wird (wie im Bildauschnitt dargestellt) über Strg+Leertaste eine Befehlsauswahl bzw. automatische Befehlsvervollständigung angeboten.&lt;br /&gt;
&lt;br /&gt;
Der Forums-Thread unter der Überschrift [http://forum.fhem.de/index.php/topic,20444.0.html Javascript Editor einbinden] enthält die Diskussion zum Entwicklungsprozess.&lt;br /&gt;
&lt;br /&gt;
=== Externer Editor ===&lt;br /&gt;
Unter bestimmten Umständen kann auch das Editieren der Konfiguration mit einem externen Editor wie z.&amp;amp;nbsp;B.&lt;br /&gt;
* Notepad++ (mit der nppFTP-Erweiterung)&lt;br /&gt;
* nano in einer Telnet Sitzung&lt;br /&gt;
* in wfftp integrierter / integrierbarer Editor&lt;br /&gt;
* ...&lt;br /&gt;
sinnvoll sein (duplizieren von Definitionen, globale Änderungen, umsortieren von Definitionen, etc.). In diesem Fall sollte der Benutzer sich mit der Bedienung des Editors in der gewählten Umgebung hinreichend gut auskennen.&lt;br /&gt;
&lt;br /&gt;
Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen (&amp;quot;Escapen&amp;quot; von Sonderzeichen, verdoppeln von Semikolon). Nach dem Abspeichern der editierten Datei werden die Änderungen erst nach erneutem Einlesen der Konfiguration aktiv, korrekte Syntax und Semantik vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
Notwendige Aktionen nach Durchführung der Änderung: &amp;quot;rereadcfg&amp;quot; oder Neustart von Fhem.&lt;br /&gt;
&lt;br /&gt;
== Auslagerung von Definitionen ==&lt;br /&gt;
Die Methode der Auslagerung von Definitionen gehört zum &amp;quot;Expertenmodus&amp;quot;. Sie sollte nur bei detaillierter Kenntnis der Auswirkungen gewählt werden. Selbst einige Entwickler von Fhem wenden diese Methode nicht an. Sofern Definitionen aus der fhem.cfg ausgelagert werden sollen bzw. wurden, können die Dateien mit den ausgelagerten Anweisungen mithilfe von &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; eingebunden werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;include Zimmer1.cfg&amp;lt;/code&amp;gt; (Datei muss in &amp;lt;code&amp;gt;/opt/fhem/FHEM&amp;lt;/code&amp;gt; liegen)&lt;br /&gt;
:&amp;lt;code&amp;gt;include /opt/fhem/eigene/Zimmer1.cfg&amp;lt;/code&amp;gt; (Datei muss im angegebenen Verzeichnis liegen)&lt;br /&gt;
&lt;br /&gt;
Sämtliche &amp;lt;code&amp;gt;attr global&amp;lt;/code&amp;gt; Definitionen &#039;&#039;&#039;müssen&#039;&#039;&#039; in der fhem.cfg bleiben. &lt;br /&gt;
&lt;br /&gt;
Nur Konfigurationsdateien, die im Verzeichnis &amp;lt;installationsverzeichnis&amp;gt;/FHEM liegen, werden unter &amp;quot;Edit files&amp;quot; zur Bearbeitung mit dem integrierten Editor aufgeführt.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in einer SQL Datenbank ==&lt;br /&gt;
Seit April 2014 (Fhem-Version 5079) können Definitionen alternativ zur Speicherung in einer einfachen Text-Konfigurationsdatei(en) in einer SQL Datenbank abgelegt werden. Hierzu dienen configDB (Hilfsmodul) und configdb (command), die in der [http://fhem.de/commandref.html#configDB commandref] dokumentiert sind.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzung ===&lt;br /&gt;
==== Datenbank ====&lt;br /&gt;
Unterstützt werden:&lt;br /&gt;
* [http://www.sqlite.org/ Sqlite]&lt;br /&gt;
* [http://www.mysql.de/ MySQL]&lt;br /&gt;
* [http://www.postgresql.org/ PostgreSQL]&lt;br /&gt;
&lt;br /&gt;
==== Perl-Module ====&lt;br /&gt;
* Text::Diff (libtext-diff-perl)&lt;br /&gt;
* DBI (libdbi-perl)&lt;br /&gt;
* Je nach Datenbank:&lt;br /&gt;
** DBD::SQLite (libdbd-sqlite3-perl)&lt;br /&gt;
** DBD::mysql (libdbd-mysql-perl)&lt;br /&gt;
** DBD::Pg (libdbd-pg-perl)&lt;br /&gt;
&lt;br /&gt;
==== configDB.conf ====&lt;br /&gt;
In einer Datei namens &#039;&#039;&#039;configDB.conf&#039;&#039;&#039; werden die Parameter für eine Verbindung zur Datenbank (host, username, password, etc.) hinterlegt. Diese muß im fhem Hauptverzeichnis liegen (z.B. /opt/fhem).&lt;br /&gt;
* Sqlite&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
        connection =&amp;gt; &amp;quot;SQLite:dbname=/opt/fhem/configDB.db&amp;quot;,&lt;br /&gt;
        user =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;
        password =&amp;gt; &amp;quot;&amp;quot;&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* MySQL&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
       connection =&amp;gt; &amp;quot;mysql:database=configDB;host=localhost;port=3306&amp;quot;,&lt;br /&gt;
       user =&amp;gt; &amp;quot;fhemuser&amp;quot;,&lt;br /&gt;
       password =&amp;gt; &amp;quot;fhempassword&amp;quot;,&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
* PostgreSQL:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;%dbconfig= (&lt;br /&gt;
        connection =&amp;gt; &amp;quot;Pg:database=configDB;host=localhost&amp;quot;,&lt;br /&gt;
        user =&amp;gt; &amp;quot;fhemuser&amp;quot;,&lt;br /&gt;
        password =&amp;gt; &amp;quot;fhempassword&amp;quot;&lt;br /&gt;
);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Datenbankerstellung ====&lt;br /&gt;
Es muß zuerst eine leere Datenbank erstellt werden. Die Tabellen werden automatisch erstellt.&lt;br /&gt;
* Sqlite&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;pi@raspberrypi ~ $ sqlite3 configDB.db&lt;br /&gt;
&lt;br /&gt;
SQLite version 3.7.13 2012-07-17 17:46:21&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt; pragma auto_vacuum=2;&lt;br /&gt;
sqlite&amp;gt; .quit&amp;lt;/pre&amp;gt;&lt;br /&gt;
* MySQL&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;pi@raspberrypi ~ $ mysql -u root -p&lt;br /&gt;
Enter password:&lt;br /&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 2937&lt;br /&gt;
Server version: 5.5.41-0+wheezy1 (Debian)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.&lt;br /&gt;
&lt;br /&gt;
Oracle is a registered trademark of Oracle Corporation and/or its&lt;br /&gt;
affiliates. Other names may be trademarks of their respective&lt;br /&gt;
owners.&lt;br /&gt;
&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the current input statement.&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; CREATE DATABASE `configDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;&lt;br /&gt;
Query OK, 1 row affected (0.04 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; GRANT CREATE, SELECT, INSERT, DELETE, UPDATE ON `mahowi`.* TO &#039;fhemuser&#039;@&#039;%&#039;;&lt;br /&gt;
Query OK, 0 rows affected (0.04 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt;  \q&lt;br /&gt;
Bye&amp;lt;/pre&amp;gt;&lt;br /&gt;
* PostgreSQL&amp;lt;br /&amp;gt;&#039;&#039;&#039;&#039;&#039;TBD&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Migration der Konfiguration auf configDB ====&lt;br /&gt;
* Im laufenden fhem &amp;lt;code&amp;gt;configdb migrate&amp;lt;/code&amp;gt; eingeben. Das kann eine Weile dauern. Wenn die Migration beendet ist, werden die Datenbank-Statistiken angezeigt. Die Original fhem.cfg wird nicht verändert.&lt;br /&gt;
* fhem herunterfahren (&amp;lt;code&amp;gt;shutdown&amp;lt;/code&amp;gt;)&lt;br /&gt;
* fhem neu starten mit &amp;lt;code&amp;gt;perl fhem.pl configDB&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Eventuell in &#039;&#039;/etc/init.d/fhem&#039;&#039; die Zeile &amp;lt;code&amp;gt;perl fhem.pl fhem.cfg&amp;lt;/code&amp;gt; auskommentieren und das &#039;&#039;#&#039;&#039; vor der Zeile &amp;lt;code&amp;gt;perl fhem.pl configDB&amp;lt;/code&amp;gt; löschen.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Ab jetzt wird die gesamte Konfiguration in einer Datenbank gespeichert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Details zu dieser &amp;quot;Alternative&amp;quot;:&lt;br /&gt;
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20194.0.html Tester gesucht]&lt;br /&gt;
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20117.0.html Vorüberlegungen]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=10027</id>
		<title>MAX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=10027"/>
		<updated>2015-02-11T17:55:40Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* IST-Temperaturwerte */ typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;MAX!&#039;&#039;&#039; ist eine Heizungssteuerung, die die Raumtemperatur durch funkvernetzte Heizkörperthermostate an den Heizkörpern regelt. MAX! stellt eine Alternative zur [[:Kategorie:FHT Components|FHT]] und [[HomeMatic]] Heizungsteuerung dar.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Bidirektionale Kommuniktion (jeder Befehl wird mit ACK quittiert)&lt;br /&gt;
* Heizkörperthermostate übertragen auch die gemessene Temperatur&lt;br /&gt;
&lt;br /&gt;
== FHEM Module ==&lt;br /&gt;
Die MAX Komponenten können über den MAX!Cube per Modul 00_MAXLAN oder über einen [[CUL]] oder [[CUNO]] per 14_CUL_MAX gesteuert werden. In beiden Fällen werden die einzelnen MAX! Geräte vom Modul 10_MAX&lt;br /&gt;
bereitgestellt.&lt;br /&gt;
&lt;br /&gt;
Nachteil vom Cube ist, dass man ein Polling machen muss, um zu sehen ob sich der Status eines Gerätes geändert hat. Z.B. checkt man das alle 30 Sekunden. Dann sieht man aber auch Änderungen möglicherweise erst nach 30 Sekunden. Beim CUL sieht man die Funknachrichten direkt. Es wird aber auch ein Kombimodus unterstützt, in welchem man alles über den MAXLAN steuert, der CUL_MAX aber für zeitnahe Benachrichtigungen sorgt.&lt;br /&gt;
&lt;br /&gt;
== Komponenten ==&lt;br /&gt;
=== Limit ===&lt;br /&gt;
* Auf 8 Thermostate pro Raum beschränkt&lt;br /&gt;
* Limit mit Cube liegt bei ca. 140 Geräten. Durch die [[1% Regel]] dürften es aber in der Praxis weniger sein&lt;br /&gt;
&lt;br /&gt;
=== Heizkörperthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature = auto (Wochenprogramm), manuell (4.5 - 30.5), eco, comfort, boost, until&lt;br /&gt;
** (Besonderheit der Werte: 4.5 = Off und 30.5 = On)&lt;br /&gt;
* ecoTemperature, comfortTemperature, measurementOffset, maximumTemperature, minimumTemperature, windowOpenTemperature, windowOpenDuration&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur. (Hinweis: Wird bei Verwendung des MAX CUBE nicht regelmäßig aktualisiert)&lt;br /&gt;
&lt;br /&gt;
=== Fensterkontakte ===&lt;br /&gt;
Der aktuelle Status (offen/geschlossen) wird (praktisch ohne Verzögerung) angezeigt.&lt;br /&gt;
&lt;br /&gt;
Falls wir nicht mit Ack antworten, wird er mehrmals wiederholt.&lt;br /&gt;
&lt;br /&gt;
Die Fensterkontakte können zusätzlich direkt an mehrere Heizkörperthermostate angelernt werden, und versetzen diese dann automatisch in windowOpenTemperature während sie geöffnet sind.&lt;br /&gt;
&lt;br /&gt;
Wenn der Fensterkontakt an mindestens ein Heizkörperthermostat angelernt ist, dann sendet er zusätzlich stündlich seinen aktuellen Zustand.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Autocreate&#039;&#039;&#039;&lt;br /&gt;
 MAXLAN_Parse: Paired new device, type ShutterContact, addr 1a2b3c, serial JEQ0123456&lt;br /&gt;
 autocreate: define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
 autocreate: define FileLog_MAX_1a2b3c FileLog /fhem/log/MAX_1a2b3c-%Y.log MAX_1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Definition&#039;&#039;&#039;&lt;br /&gt;
 define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Log&#039;&#039;&#039;&lt;br /&gt;
 ==&amp;gt; MAX_1a2b3c-2013.log &amp;lt;==&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c battery: ok&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c onoff: 0&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c closed&lt;br /&gt;
&lt;br /&gt;
=== Wandthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature (siehe Heizkörperthermostate), ecoTemperature, comfortTemperature&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur.&lt;br /&gt;
&lt;br /&gt;
=== Eco-Taster ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Zumindest über MAXLAN lässt sich der Zustand weder auslesen, noch wird man über Veränderungen informiert.&lt;br /&gt;
&lt;br /&gt;
Per CUL_MAX funktioniert der Eco-Taster problemlos.&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Definition ====&lt;br /&gt;
:&amp;lt;code&amp;gt;define BUTTON.EG MAX PushButton 069d33&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Event-Ausgabe ====&lt;br /&gt;
&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG battery: ok&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG onoff: 0&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG closed&lt;br /&gt;
&lt;br /&gt;
Wobei gilt&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! onoff !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Eco&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Auto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anlernen per CUL ==&lt;br /&gt;
Das Anlernen funktioniert nur mit zurückgesetzen (Werksreset, also entweder alle 3 Tasten am Heizkörperthermostate betätigen, Batterien einlegen, Anzeige rES; oder in FHEM set factoryReset) Heizkörperthermostaten. Bereits an einen Cube angelernte Heizungsregler können &#039;&#039;&#039;nicht&#039;&#039;&#039; an ein CUL angemeldet werden, hier ist dann nur das &amp;quot;mitlesen&amp;quot; der Funkbotschaften möglich.&lt;br /&gt;
 &lt;br /&gt;
Info: Durch den Reset geht auch ein evtl. per Cube eingestelltes Automatikprogramm verloren.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Siehe [http://fhem.de/commandref.html#CUL_MAX commandref].&lt;br /&gt;
&lt;br /&gt;
Die Module sind so konzipiert, dass man die offizielle Max! Software nicht benutzen muss. Man kann alles aus FHEM heraus machen. Nachdem das MAXLAN oder CUL_MAX Modul konfiguriert wurden (siehe unten), werden bereits gepairte Geräte automatisch erkannt.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
:&amp;lt;code&amp;gt;define ml MAXLAN 192.168.178.2&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei 192.168.178.2 die IP des MAX! Cube ist. Das MAXLAN-Modul findet selbstständig bereits gepairte Geräte und trägt diese in die Konfigurationsdatei fhem.cfg ein. Diese können dann im WEB-Interface mittels „alias“ einen eindeutigen Namen bekommen.&lt;br /&gt;
&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 attr CUL0 rfmode MAX&lt;br /&gt;
 define cm CUL_MAX 123456&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anlernen ===&lt;br /&gt;
Dazu muss der &amp;quot;pairmode&amp;quot; auf MAXLAN/CUL_MAX per &lt;br /&gt;
:&amp;lt;code&amp;gt;set ml/cm pairmode&amp;lt;/code&amp;gt;&lt;br /&gt;
oder über das Web-Interface aktiviert werden. Falls kein Parameter angegeben wird, ist er standardmäßig für 60 Sekunden aktiviert. In dieser Zeit können MAX! Geräte nach deren Anleitung in den Anlernmodus versetzt werden, um sie mit FHEM zu pairen.&lt;br /&gt;
&lt;br /&gt;
=== Geräte untereinander anlernen ===&lt;br /&gt;
Es gibt einen anderen Befehl, um Devices untereinander anzulernen (in neueren Versionen des MAX Moduls enthalten, heißt &amp;quot;associate&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Wenn man z.B.&lt;br /&gt;
:&amp;lt;code&amp;gt;set MAXFensterKontakt0 associate MaxHeizkörperthermostat3&amp;lt;/code&amp;gt;&lt;br /&gt;
ausführt, dann sendet der MAXFensterKontakt0 jede Änderung zusätzlich (direkt über Funk, ohne Cube oder FHEM) an das MaxHeizkörperthermostat3.&lt;br /&gt;
&lt;br /&gt;
Damit MaxHeizkörperthermostat3 auch auf die Nachrichten vom MAXFensterKontakt0 hört, muss noch ein&lt;br /&gt;
set MaxHeizkörperthermostat3 associate MAXFensterKontakt0 erfolgen.&lt;br /&gt;
&lt;br /&gt;
Dann wechselt MaxHeizkörperthermostat3 immer dann auf die windowOpenTemperature, wenn der AXFensterKontakt0 offen ist. Dabei muss die groupId von beiden Geräte gar nicht gleich sein! (Die Semantik der groupId erschließt sich mir deshalb noch nicht ganz. Ich glaube, man kann damit Befehle (ala set desiredTemperature) an mehrere Thermostate gleichzeitig richten. Im Moment sendet FHEM einfach an jedes Thermostat einen Befehl.)&lt;br /&gt;
&lt;br /&gt;
Wahrscheinlich funktioniert associate genauso zwischen Heizkörper/Wandthermostaten. Das müsste mal jemand ausprobieren und dann hier berichten.&lt;br /&gt;
&lt;br /&gt;
=== Temperatursturzerkennung ===&lt;br /&gt;
Die Heizkörperthermostate verfügen über eine interne &amp;quot;Fenster-offen Erkennung&amp;quot; (Temperatursturzerkennung). Wird diese ausgelöst, regeln sie für die Zeit die unter &amp;quot;windowOpenDuration&amp;quot; festgelegt wurde auf die als &amp;quot;windowOpenTemperature&amp;quot; festgelegt Temperatur herunter und danach wieder auf die zuvor eingestellte Temperatur zurück.&lt;br /&gt;
&lt;br /&gt;
Nachteil: Die Erkennung benötigt etwas Zeit und reagiert nicht sofort wie es beim Fensterkontakt oben der Fall ist&lt;br /&gt;
&lt;br /&gt;
Vorteil: Es ist kein Fensterkontakt erforderlich&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Setzt man die windowOpenTemperature auf &amp;quot;Off&amp;quot; (= 4.5 Grad), dann ist die Fenster-offen-Funktion abgeschaltet. Und auch wenn die desiredTemperature gerade auf &amp;quot;On&amp;quot; (= 30.5 Grad&amp;quot;) steht, geht der Heizkörper nicht in die Fenster-offen-Funktion.&lt;br /&gt;
&lt;br /&gt;
=== Externer Sensor für Fenster-offen-Erkennung ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Wird nur von CUL_MAX unterstützt!&lt;br /&gt;
&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate in und aus dem Fenster-offen Modus zu holen. Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir müssen einmalig den internen Fake-Fensterkontakt mit dem Heizkörper assozieren&lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizung associate fakeShutterContact&amp;lt;/code&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Fensterkontakt akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeSC Heizung 1&amp;lt;/code&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster offen&amp;quot; an die Heizung senden und per&lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeSC Heizung 0&amp;lt;/code&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster zu&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Externer Temperatursensor für Heizkörperregelung ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Wird nur von CUL_MAX unterstützt!&lt;br /&gt;
&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate zu regeln. Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir müssen einmalig das interne Fake-Wandthermostat mit dem Heizkörper assozieren: &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizung associate fakeWallThermostat&amp;lt;/code&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Wandthermostat akzeptiert. Achtung: Dies schaltet im&lt;br /&gt;
Heizkörperthermostat die Regelung mit dem internen Temperaturfühler aus. Ohne die gleich kommenden &amp;quot;fakeWT&amp;quot; Nachrichten wird das Heizkörperthermostat nicht mehr regeln.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeWT Heizung 14.5 12.1&amp;lt;/code&amp;gt;&lt;br /&gt;
die desiredTemperature 14.5 und gemessene Temperatur 12.1 an die Heizung senden. Diese wird dann die Ventile öffnen, bis wir ein &amp;quot;fakeWT&amp;quot; absetzten, dessen gemessene Temperatur höher als die desiredTemperature ist.&lt;br /&gt;
&lt;br /&gt;
Falls man zu lange Zeit (ca. 30 Minuten) kein neues &amp;quot;fakeWT&amp;quot; sendet, wird bei der Heizung das Attribut rferror gleich 1. Es ist nicht klar, ob das neben diesem Attribut auch Auswirkung auf die Funktionalität hat. Es wurde beobachtet, dass dann der interne Temperatursensor bis zum nächsten FakeWT aktiviert wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel eines automatischen Sendens einer externen Temperatur, der externe Temperatursensor heißt &amp;quot;WS300&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define SendExtTemp notify WS300:temperature.* {&lt;br /&gt;
 MaxFakeWallThermostat(&amp;quot;Heizung&amp;quot;,&amp;amp;#160;%EVTPART1);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dazu die Funktion, bitte in 99_MyUtils.pm eintragen:&lt;br /&gt;
&lt;br /&gt;
 sub MaxFakeWallThermostat($$)&lt;br /&gt;
 {&lt;br /&gt;
  my ($heizung, $aktTemp)    = @_;&lt;br /&gt;
  my $CULMAX     = $defs{$heizung}{LASTInputDev};&lt;br /&gt;
  my $desiredTemp   = ReadingsVal($heizung, &amp;quot;desiredTemperature&amp;quot;, undef);&lt;br /&gt;
  my $windowOpenTemp = ReadingsVal($heizung, &amp;quot;windowOpenTemperature&amp;quot;, undef);&lt;br /&gt;
  my $lastTemp    = ReadingsVal($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
  my $lastSet     = ReadingsTimestamp($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
  if($desiredTemp &amp;amp;amp;&amp;amp;amp; $windowOpenTemp &amp;amp;amp;&amp;amp;amp;&lt;br /&gt;
  $desiredTemp&amp;amp;#160;!= $windowOpenTemp &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
  (time()-time_str2num($lastSet) &amp;amp;gt;= 600 || abs($aktTemp-$lastTemp)&amp;amp;gt;=0.2 )) {&lt;br /&gt;
   Log 3, &amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;;&lt;br /&gt;
   readingsSingleUpdate($defs{$heizung}, &amp;quot;LastExtTemperature&amp;quot;, $aktTemp, 0);&lt;br /&gt;
   fhem(&amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel heißt das zu steuernde Thermostat &amp;quot;Heizung&amp;quot;. Die vom externen Sensor gemessene Temperatur wird nur unter den folgenden Voraussetzungen gesendet:&lt;br /&gt;
* das Thermostat befindet sich nicht im &amp;quot;Fenster-offen&amp;quot; Modus, und&lt;br /&gt;
* das letzte Senden liegt mindestens 10min zurück&lt;br /&gt;
* oder die gemessene Temperatur weicht um mindestens 0.2°C von der letzten gesendeten Temperatur ab&lt;br /&gt;
&lt;br /&gt;
=== Wochenheizplan für Wandthermostat/Ventilantriebe erstellen ===&lt;br /&gt;
Ein Heizplan, den das Wandthermostat und auch der Ventilantrieb versteht und speichern kann, sieht folgendermaßen aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;set WZ_Wandthermostat weekProfile Mon 17,17:30,20,23:00,17 Tue 17,17:30,20,23:00,17 Wed 17,17:30,20,23:00,17 Thu 17,17:30,20,23:00,17 Fri 17,15:00,20,23:00,17 Sat 17,11:00,20,23:00,17 Sun 17,11:00,20,23:00,17&amp;lt;/code&amp;gt;&lt;br /&gt;
Genauer erläutert wird die Funktionsweise auch in der [http://fhem.de/commandref.html#MAX commandref].&lt;br /&gt;
&lt;br /&gt;
Der gesamte Block kann kopiert und als FHEM Befehl abgesetzt werden. Unter Umständen benötigt das Speichern bzw. Übertragen wegen der Größe etwas Zeit, bevor die aktuellen, neu gesetzten Werte wieder ausgelesen werden können.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte folgendes beachten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt im Zusammenhang mit dem Wochenprogramm ein Problem mit dem letzten Schaltpunkt des Tages. &lt;br /&gt;
Der Workaround wurde  [http://forum.fhem.de/index.php/topic,17231.msg112738.html#msg112738 hier]&lt;br /&gt;
beschrieben.&lt;br /&gt;
Man muss dafür sorgen, dass man kurz vor Ende des Tages noch einen Schaltpunkt setzt! Bei mir hat sich ein Schaltpunkt (ohne Änderung der Soll-Temperatur) um 23:55 bewährt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set WZ_Wandthermostat weekProfile Mon 17,17:30,20,22:00,17,23:55,17&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Werte Plotten ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
In den Log-Dateien wird regelmäßig der Batteriestatus, die Soll-Temperatur, die Ventilstellung und die Ist-Temperatur (Vorsicht: Wird nicht zuverlässig, möglicherweise nur bei einer Änderung der Ventilstellung übertragen.)&lt;br /&gt;
&lt;br /&gt;
Inhalt der LOG-Datei eines Heizkörperthermostates:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-12-30_08:55:31 MAX_018d3f battery: ok&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f desiredTemperature: 19.5&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f valveposition: 83&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f temperature: 16.4&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgender Plot-Datei (max_temp.gplot) kann der Verlauf der Sensordaten gut angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in Grad Celsius&amp;quot;&lt;br /&gt;
set ylabel &amp;quot;Signal in&amp;amp;#160;%&amp;quot;&lt;br /&gt;
#FileLog 4:desiredTemperature:0:&lt;br /&gt;
#FileLog 4:temperature:0:&lt;br /&gt;
#FileLog 4:valveposition:0:&lt;br /&gt;
plot \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;desiredTemperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Soll-Temperatur (C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;temperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Ist-Temperatur(ungenau)(C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;valveposition&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y1 title &#039;Ventil (%)&#039; with lines lw 2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Einbinden eines Plots in der fhem.cgf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Werte plotten&lt;br /&gt;
define MAX_017840_weblink weblink fileplot FileLog_MAX_017840:max_temp:CURRENT&lt;br /&gt;
attr MAX_017840_weblink label &amp;quot;Kueche Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr MAX_017840_weblink room MAX&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nützliche kleine Erweiterungen ===&lt;br /&gt;
&#039;&#039;&#039;Einen Alias-Namen vergeben für eine bessere Lesbarkeit im Webinterface&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr MAX_018d3f alias Kueche&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Die Anzeigen für die einzelnen File-Logs füllen das Webinterface schnell und machen es unübersichtlich.&#039;&#039;&#039; Die File-Logs können einfach in einen separaten Raum verbannt werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr FileLog_MAX_018d3f room LOG&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Einstellmöglichkeit für die Soll-Temperatur direkt in der „Raum-Seite“ schaffen.&#039;&#039;&#039; Die Temperatur wird dauerhaft auf einen bestimmten Wert gestellt. Das Wochenprogramm in dem Thermostat wird deaktiviert.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soll-Temperatur setzen, ohne das automatische Programm des Thermostates abzuschalten.&#039;&#039;&#039;&lt;br /&gt;
Es besteht die Möglichkeit eine Soll-Temperatur bis zum nächsten Schaltzeitpunkt zu setzen. Zum Beispiel kann das automatische Wochenprogramm in den Thermostaten dazu genutzt werden, nur abends die Soll-Temperatur zu senken. So läuft die Heizung nachts nicht voll durch. Wenn jedoch die Temperatur im Web-Interface von Fhem verändert wird, wird auch der Thermostat auf manuell gesetzt. So greift das Wochenprogramm nicht mehr. Abhilfe schafft der Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;set MAX_04711 desiredTemperature auto 20&amp;lt;/code&amp;gt; &lt;br /&gt;
Damit die Eingabe komfortabel aus Fhem möglich ist, kann ein Dummy-Device erstellt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Dummy für die Schnell-Einstellung der Temperatur bis zum nächsten automatischen Schaltzeitpunkt&lt;br /&gt;
 define HeizkoerperBad dummy&lt;br /&gt;
 attr HeizkoerperBad room MAX,Heizungen&lt;br /&gt;
 attr HeizkoerperBad setList state:eco,auto,14.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0&lt;br /&gt;
 attr HeizkoerperBad webCmd state&lt;br /&gt;
 define HeizkoerperBad.ntfy notify HeizkoerperBad.* {\&lt;br /&gt;
  my $valtemp = &amp;quot;%&amp;quot;;;\&lt;br /&gt;
  my $device = &amp;quot;MAX_04711&amp;quot;;;\&lt;br /&gt;
  my $cmd = &#039;set &#039;.$device.&#039; desiredTemperature auto &#039;.$valtemp;;\&lt;br /&gt;
  fhem($cmd);;\&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dieses Dummy-Device kann alternativ oder ergänzend zu &amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
=== IST-Temperaturwerte ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
Diese Abbildung zeigt, dass die IST-Temperatur nicht regelmäßig dem MAX CUBE mitgeteilt wird. Im Automatikbetrieb wird bei einer Änderung der Ventilstellung die neue Ventilstellung zusammen mit der aktuellen IST-Temperatur gesendet. Bei der Abbildung war die Therme in der Nacht ausgeschaltet. Daraufhin sank die Temperatur soweit ab, dass das Heizungsthermostat das Ventil in Maximalstellung geöffnet hat. Gegen 08:50 wurde die Therme eingeschaltet und die Soll-Temperatur an diesem Heizungsthermostat erhöht. Während dieser ganzen Zeit erfolgt keine Aktualisierung der Ist-Temperatur. So kommt es auch gegen 10:30 zu einem sprunghaften Temperaturanstieg von 13,5°C auf 19°C (siehe Markierung *A).&lt;br /&gt;
&lt;br /&gt;
Die IST-Temperatur wird anscheinend aktualisiert bei einer Änderung der:&lt;br /&gt;
&lt;br /&gt;
* Ventilstellung&lt;br /&gt;
* Soll-Temperatur&lt;br /&gt;
* des Betriebsmodus (Auto/Manuell)&lt;br /&gt;
&lt;br /&gt;
Wer eine detaillierte Kurve wünscht, sollte sich den [[MAX! Temperatur-Scanner]] ansehen.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
The Max devices use a CC1100 chip. For parameters see rf_moritz.c in culfw.&lt;br /&gt;
The thermostats use a Wake-On-Radio, thus one has to send packets at the right time.&lt;br /&gt;
&lt;br /&gt;
CC1100 initialization sequence on one of the max devices (not Cube) (format: addr value, both in hex):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;00 08&lt;br /&gt;
 02 46&lt;br /&gt;
 04 C6&lt;br /&gt;
 05 26&lt;br /&gt;
 0B 06&lt;br /&gt;
 10 C8 //MDMCFG4 DRATE_E=8&lt;br /&gt;
 11 93 //MDMCFG3 DRATE_M=147, data rate = (256+DRATE_M)*2^DRATE_E/2^28*f_xosc = (9992.599) 1kbit/s (at f_xosc=26 Mhz)&lt;br /&gt;
 12 03&lt;br /&gt;
 15 34&lt;br /&gt;
 17 00&lt;br /&gt;
 18 18&lt;br /&gt;
 19 16&lt;br /&gt;
 1B 43&lt;br /&gt;
 21 56&lt;br /&gt;
 25 00&lt;br /&gt;
 26 11&lt;br /&gt;
 0D 21&lt;br /&gt;
 0E 65&lt;br /&gt;
 0F 6A&lt;br /&gt;
 07 4C //PKTCTRL1: ADR_CHK=0 APPEND_STATUS=1 CRC_AUTOFLUSH=1 PQT=2 (preamble must have 8 toggling bits before sync word detection)&lt;br /&gt;
 16 1C //RXTIME=4&lt;br /&gt;
     RX_TIME_QUAL=1 (when rx timeout expires, keep receiving if either sync word is found or PQI is set (see PQT))&lt;br /&gt;
     RX_TIME_RSSI=1 (terminate RX if there is no carrier sense within the first 8 symbol periods)&lt;br /&gt;
 20 78 //WORCTRL, WOR_RES=00 (1.8-1.9 sec), RC_CAL=1, EVENT1=7 (48 ticks), RC_PD=0&lt;br /&gt;
 1E 87 //WOREVT1&lt;br /&gt;
 1F 6B //WOREVT0, i.e. EVENT0 = 34667&lt;br /&gt;
 29 59&lt;br /&gt;
 2C 81&lt;br /&gt;
 2D 35&lt;br /&gt;
 3E C3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Not set, i.e. factory defaults:&lt;br /&gt;
 13 MDMCFG1 NUM_PREAMBLE=2 (4 preamble bytes)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
From the configuration, we see that the&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;RC Oscillator: f_xosc/750 = 34666.66 Hz&lt;br /&gt;
 Event1 = Event1(=48 ticks)/RC Oscillator = 1.385 ms&lt;br /&gt;
 t_Event0 = 750/26Mhz * EVENT0 * 2^(5*WOR_RES) = 1.00 second&lt;br /&gt;
 C(RX_TIME, WOR_RES)= 0.2254&lt;br /&gt;
 rx timeout = EVENT0·C(RX_TIME, WOR_RES) ·26/X(=26) = 34667*0.2254 us = 7.8139 ms&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShutterContact seems to always sleep. Thus it is necessary to trigger it manually (by opening/closing the window) to make it receive messages. Pushing the button may work to. It is also awake just after&lt;br /&gt;
pairing, so one may send messages right then. One can use the WakeUp message to keep it from sleeping for some time. (This is also the reason why in the official MAX software, one must trigger the ShutterContact&lt;br /&gt;
after removing it from the house. The &amp;quot;factoryReset&amp;quot; packet is sent directly after the &amp;quot;ShutterContactState&amp;quot; packet has been acked.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probleme und Lösungen ==&lt;br /&gt;
=== Der Wandthermostat oder Heizthermostat reagieren nicht auf Änderungen über FHEM ===&lt;br /&gt;
Das Autocreate von FHEM erkennt, wenn aktiviert, die Geräte initial und legt auch Einträge an. Es fehlt aber noch das Pairing, da sonst keine Steuerung möglich ist!&lt;br /&gt;
Wenn im Log also Meldungen wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 2: CUL_MAX_SendQueueHandler: Missing ack from 01c9bb for 0b05008212345601c9bb0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
auftauchen (im Verbose Modus 5), dann wurde vermutlich kein oder ein inkorrektes Paring durchgeführt.&lt;br /&gt;
Nach dem Pairing sollten diese Meldungen verschwinden und stattdessen etwas wie&lt;br /&gt;
:&amp;lt;code&amp;gt;2013.03.20 15:21:43 5: Got matching ack&amp;lt;/code&amp;gt;&lt;br /&gt;
auftauchen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:MAX]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=10026</id>
		<title>MAX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=10026"/>
		<updated>2015-02-11T17:54:11Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Nützliche kleine Erweiterungen */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;MAX!&#039;&#039;&#039; ist eine Heizungssteuerung, die die Raumtemperatur durch funkvernetzte Heizkörperthermostate an den Heizkörpern regelt. MAX! stellt eine Alternative zur [[:Kategorie:FHT Components|FHT]] und [[HomeMatic]] Heizungsteuerung dar.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Bidirektionale Kommuniktion (jeder Befehl wird mit ACK quittiert)&lt;br /&gt;
* Heizkörperthermostate übertragen auch die gemessene Temperatur&lt;br /&gt;
&lt;br /&gt;
== FHEM Module ==&lt;br /&gt;
Die MAX Komponenten können über den MAX!Cube per Modul 00_MAXLAN oder über einen [[CUL]] oder [[CUNO]] per 14_CUL_MAX gesteuert werden. In beiden Fällen werden die einzelnen MAX! Geräte vom Modul 10_MAX&lt;br /&gt;
bereitgestellt.&lt;br /&gt;
&lt;br /&gt;
Nachteil vom Cube ist, dass man ein Polling machen muss, um zu sehen ob sich der Status eines Gerätes geändert hat. Z.B. checkt man das alle 30 Sekunden. Dann sieht man aber auch Änderungen möglicherweise erst nach 30 Sekunden. Beim CUL sieht man die Funknachrichten direkt. Es wird aber auch ein Kombimodus unterstützt, in welchem man alles über den MAXLAN steuert, der CUL_MAX aber für zeitnahe Benachrichtigungen sorgt.&lt;br /&gt;
&lt;br /&gt;
== Komponenten ==&lt;br /&gt;
=== Limit ===&lt;br /&gt;
* Auf 8 Thermostate pro Raum beschränkt&lt;br /&gt;
* Limit mit Cube liegt bei ca. 140 Geräten. Durch die [[1% Regel]] dürften es aber in der Praxis weniger sein&lt;br /&gt;
&lt;br /&gt;
=== Heizkörperthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature = auto (Wochenprogramm), manuell (4.5 - 30.5), eco, comfort, boost, until&lt;br /&gt;
** (Besonderheit der Werte: 4.5 = Off und 30.5 = On)&lt;br /&gt;
* ecoTemperature, comfortTemperature, measurementOffset, maximumTemperature, minimumTemperature, windowOpenTemperature, windowOpenDuration&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur. (Hinweis: Wird bei Verwendung des MAX CUBE nicht regelmäßig aktualisiert)&lt;br /&gt;
&lt;br /&gt;
=== Fensterkontakte ===&lt;br /&gt;
Der aktuelle Status (offen/geschlossen) wird (praktisch ohne Verzögerung) angezeigt.&lt;br /&gt;
&lt;br /&gt;
Falls wir nicht mit Ack antworten, wird er mehrmals wiederholt.&lt;br /&gt;
&lt;br /&gt;
Die Fensterkontakte können zusätzlich direkt an mehrere Heizkörperthermostate angelernt werden, und versetzen diese dann automatisch in windowOpenTemperature während sie geöffnet sind.&lt;br /&gt;
&lt;br /&gt;
Wenn der Fensterkontakt an mindestens ein Heizkörperthermostat angelernt ist, dann sendet er zusätzlich stündlich seinen aktuellen Zustand.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Autocreate&#039;&#039;&#039;&lt;br /&gt;
 MAXLAN_Parse: Paired new device, type ShutterContact, addr 1a2b3c, serial JEQ0123456&lt;br /&gt;
 autocreate: define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
 autocreate: define FileLog_MAX_1a2b3c FileLog /fhem/log/MAX_1a2b3c-%Y.log MAX_1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Definition&#039;&#039;&#039;&lt;br /&gt;
 define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Log&#039;&#039;&#039;&lt;br /&gt;
 ==&amp;gt; MAX_1a2b3c-2013.log &amp;lt;==&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c battery: ok&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c onoff: 0&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c closed&lt;br /&gt;
&lt;br /&gt;
=== Wandthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature (siehe Heizkörperthermostate), ecoTemperature, comfortTemperature&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur.&lt;br /&gt;
&lt;br /&gt;
=== Eco-Taster ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Zumindest über MAXLAN lässt sich der Zustand weder auslesen, noch wird man über Veränderungen informiert.&lt;br /&gt;
&lt;br /&gt;
Per CUL_MAX funktioniert der Eco-Taster problemlos.&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Definition ====&lt;br /&gt;
:&amp;lt;code&amp;gt;define BUTTON.EG MAX PushButton 069d33&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Event-Ausgabe ====&lt;br /&gt;
&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG battery: ok&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG onoff: 0&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG closed&lt;br /&gt;
&lt;br /&gt;
Wobei gilt&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! onoff !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Eco&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Auto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anlernen per CUL ==&lt;br /&gt;
Das Anlernen funktioniert nur mit zurückgesetzen (Werksreset, also entweder alle 3 Tasten am Heizkörperthermostate betätigen, Batterien einlegen, Anzeige rES; oder in FHEM set factoryReset) Heizkörperthermostaten. Bereits an einen Cube angelernte Heizungsregler können &#039;&#039;&#039;nicht&#039;&#039;&#039; an ein CUL angemeldet werden, hier ist dann nur das &amp;quot;mitlesen&amp;quot; der Funkbotschaften möglich.&lt;br /&gt;
 &lt;br /&gt;
Info: Durch den Reset geht auch ein evtl. per Cube eingestelltes Automatikprogramm verloren.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Siehe [http://fhem.de/commandref.html#CUL_MAX commandref].&lt;br /&gt;
&lt;br /&gt;
Die Module sind so konzipiert, dass man die offizielle Max! Software nicht benutzen muss. Man kann alles aus FHEM heraus machen. Nachdem das MAXLAN oder CUL_MAX Modul konfiguriert wurden (siehe unten), werden bereits gepairte Geräte automatisch erkannt.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
:&amp;lt;code&amp;gt;define ml MAXLAN 192.168.178.2&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei 192.168.178.2 die IP des MAX! Cube ist. Das MAXLAN-Modul findet selbstständig bereits gepairte Geräte und trägt diese in die Konfigurationsdatei fhem.cfg ein. Diese können dann im WEB-Interface mittels „alias“ einen eindeutigen Namen bekommen.&lt;br /&gt;
&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 attr CUL0 rfmode MAX&lt;br /&gt;
 define cm CUL_MAX 123456&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anlernen ===&lt;br /&gt;
Dazu muss der &amp;quot;pairmode&amp;quot; auf MAXLAN/CUL_MAX per &lt;br /&gt;
:&amp;lt;code&amp;gt;set ml/cm pairmode&amp;lt;/code&amp;gt;&lt;br /&gt;
oder über das Web-Interface aktiviert werden. Falls kein Parameter angegeben wird, ist er standardmäßig für 60 Sekunden aktiviert. In dieser Zeit können MAX! Geräte nach deren Anleitung in den Anlernmodus versetzt werden, um sie mit FHEM zu pairen.&lt;br /&gt;
&lt;br /&gt;
=== Geräte untereinander anlernen ===&lt;br /&gt;
Es gibt einen anderen Befehl, um Devices untereinander anzulernen (in neueren Versionen des MAX Moduls enthalten, heißt &amp;quot;associate&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Wenn man z.B.&lt;br /&gt;
:&amp;lt;code&amp;gt;set MAXFensterKontakt0 associate MaxHeizkörperthermostat3&amp;lt;/code&amp;gt;&lt;br /&gt;
ausführt, dann sendet der MAXFensterKontakt0 jede Änderung zusätzlich (direkt über Funk, ohne Cube oder FHEM) an das MaxHeizkörperthermostat3.&lt;br /&gt;
&lt;br /&gt;
Damit MaxHeizkörperthermostat3 auch auf die Nachrichten vom MAXFensterKontakt0 hört, muss noch ein&lt;br /&gt;
set MaxHeizkörperthermostat3 associate MAXFensterKontakt0 erfolgen.&lt;br /&gt;
&lt;br /&gt;
Dann wechselt MaxHeizkörperthermostat3 immer dann auf die windowOpenTemperature, wenn der AXFensterKontakt0 offen ist. Dabei muss die groupId von beiden Geräte gar nicht gleich sein! (Die Semantik der groupId erschließt sich mir deshalb noch nicht ganz. Ich glaube, man kann damit Befehle (ala set desiredTemperature) an mehrere Thermostate gleichzeitig richten. Im Moment sendet FHEM einfach an jedes Thermostat einen Befehl.)&lt;br /&gt;
&lt;br /&gt;
Wahrscheinlich funktioniert associate genauso zwischen Heizkörper/Wandthermostaten. Das müsste mal jemand ausprobieren und dann hier berichten.&lt;br /&gt;
&lt;br /&gt;
=== Temperatursturzerkennung ===&lt;br /&gt;
Die Heizkörperthermostate verfügen über eine interne &amp;quot;Fenster-offen Erkennung&amp;quot; (Temperatursturzerkennung). Wird diese ausgelöst, regeln sie für die Zeit die unter &amp;quot;windowOpenDuration&amp;quot; festgelegt wurde auf die als &amp;quot;windowOpenTemperature&amp;quot; festgelegt Temperatur herunter und danach wieder auf die zuvor eingestellte Temperatur zurück.&lt;br /&gt;
&lt;br /&gt;
Nachteil: Die Erkennung benötigt etwas Zeit und reagiert nicht sofort wie es beim Fensterkontakt oben der Fall ist&lt;br /&gt;
&lt;br /&gt;
Vorteil: Es ist kein Fensterkontakt erforderlich&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Setzt man die windowOpenTemperature auf &amp;quot;Off&amp;quot; (= 4.5 Grad), dann ist die Fenster-offen-Funktion abgeschaltet. Und auch wenn die desiredTemperature gerade auf &amp;quot;On&amp;quot; (= 30.5 Grad&amp;quot;) steht, geht der Heizkörper nicht in die Fenster-offen-Funktion.&lt;br /&gt;
&lt;br /&gt;
=== Externer Sensor für Fenster-offen-Erkennung ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Wird nur von CUL_MAX unterstützt!&lt;br /&gt;
&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate in und aus dem Fenster-offen Modus zu holen. Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir müssen einmalig den internen Fake-Fensterkontakt mit dem Heizkörper assozieren&lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizung associate fakeShutterContact&amp;lt;/code&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Fensterkontakt akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeSC Heizung 1&amp;lt;/code&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster offen&amp;quot; an die Heizung senden und per&lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeSC Heizung 0&amp;lt;/code&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster zu&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Externer Temperatursensor für Heizkörperregelung ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Wird nur von CUL_MAX unterstützt!&lt;br /&gt;
&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate zu regeln. Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir müssen einmalig das interne Fake-Wandthermostat mit dem Heizkörper assozieren: &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizung associate fakeWallThermostat&amp;lt;/code&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Wandthermostat akzeptiert. Achtung: Dies schaltet im&lt;br /&gt;
Heizkörperthermostat die Regelung mit dem internen Temperaturfühler aus. Ohne die gleich kommenden &amp;quot;fakeWT&amp;quot; Nachrichten wird das Heizkörperthermostat nicht mehr regeln.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeWT Heizung 14.5 12.1&amp;lt;/code&amp;gt;&lt;br /&gt;
die desiredTemperature 14.5 und gemessene Temperatur 12.1 an die Heizung senden. Diese wird dann die Ventile öffnen, bis wir ein &amp;quot;fakeWT&amp;quot; absetzten, dessen gemessene Temperatur höher als die desiredTemperature ist.&lt;br /&gt;
&lt;br /&gt;
Falls man zu lange Zeit (ca. 30 Minuten) kein neues &amp;quot;fakeWT&amp;quot; sendet, wird bei der Heizung das Attribut rferror gleich 1. Es ist nicht klar, ob das neben diesem Attribut auch Auswirkung auf die Funktionalität hat. Es wurde beobachtet, dass dann der interne Temperatursensor bis zum nächsten FakeWT aktiviert wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel eines automatischen Sendens einer externen Temperatur, der externe Temperatursensor heißt &amp;quot;WS300&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define SendExtTemp notify WS300:temperature.* {&lt;br /&gt;
 MaxFakeWallThermostat(&amp;quot;Heizung&amp;quot;,&amp;amp;#160;%EVTPART1);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dazu die Funktion, bitte in 99_MyUtils.pm eintragen:&lt;br /&gt;
&lt;br /&gt;
 sub MaxFakeWallThermostat($$)&lt;br /&gt;
 {&lt;br /&gt;
  my ($heizung, $aktTemp)    = @_;&lt;br /&gt;
  my $CULMAX     = $defs{$heizung}{LASTInputDev};&lt;br /&gt;
  my $desiredTemp   = ReadingsVal($heizung, &amp;quot;desiredTemperature&amp;quot;, undef);&lt;br /&gt;
  my $windowOpenTemp = ReadingsVal($heizung, &amp;quot;windowOpenTemperature&amp;quot;, undef);&lt;br /&gt;
  my $lastTemp    = ReadingsVal($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
  my $lastSet     = ReadingsTimestamp($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
  if($desiredTemp &amp;amp;amp;&amp;amp;amp; $windowOpenTemp &amp;amp;amp;&amp;amp;amp;&lt;br /&gt;
  $desiredTemp&amp;amp;#160;!= $windowOpenTemp &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
  (time()-time_str2num($lastSet) &amp;amp;gt;= 600 || abs($aktTemp-$lastTemp)&amp;amp;gt;=0.2 )) {&lt;br /&gt;
   Log 3, &amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;;&lt;br /&gt;
   readingsSingleUpdate($defs{$heizung}, &amp;quot;LastExtTemperature&amp;quot;, $aktTemp, 0);&lt;br /&gt;
   fhem(&amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel heißt das zu steuernde Thermostat &amp;quot;Heizung&amp;quot;. Die vom externen Sensor gemessene Temperatur wird nur unter den folgenden Voraussetzungen gesendet:&lt;br /&gt;
* das Thermostat befindet sich nicht im &amp;quot;Fenster-offen&amp;quot; Modus, und&lt;br /&gt;
* das letzte Senden liegt mindestens 10min zurück&lt;br /&gt;
* oder die gemessene Temperatur weicht um mindestens 0.2°C von der letzten gesendeten Temperatur ab&lt;br /&gt;
&lt;br /&gt;
=== Wochenheizplan für Wandthermostat/Ventilantriebe erstellen ===&lt;br /&gt;
Ein Heizplan, den das Wandthermostat und auch der Ventilantrieb versteht und speichern kann, sieht folgendermaßen aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;set WZ_Wandthermostat weekProfile Mon 17,17:30,20,23:00,17 Tue 17,17:30,20,23:00,17 Wed 17,17:30,20,23:00,17 Thu 17,17:30,20,23:00,17 Fri 17,15:00,20,23:00,17 Sat 17,11:00,20,23:00,17 Sun 17,11:00,20,23:00,17&amp;lt;/code&amp;gt;&lt;br /&gt;
Genauer erläutert wird die Funktionsweise auch in der [http://fhem.de/commandref.html#MAX commandref].&lt;br /&gt;
&lt;br /&gt;
Der gesamte Block kann kopiert und als FHEM Befehl abgesetzt werden. Unter Umständen benötigt das Speichern bzw. Übertragen wegen der Größe etwas Zeit, bevor die aktuellen, neu gesetzten Werte wieder ausgelesen werden können.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte folgendes beachten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt im Zusammenhang mit dem Wochenprogramm ein Problem mit dem letzten Schaltpunkt des Tages. &lt;br /&gt;
Der Workaround wurde  [http://forum.fhem.de/index.php/topic,17231.msg112738.html#msg112738 hier]&lt;br /&gt;
beschrieben.&lt;br /&gt;
Man muss dafür sorgen, dass man kurz vor Ende des Tages noch einen Schaltpunkt setzt! Bei mir hat sich ein Schaltpunkt (ohne Änderung der Soll-Temperatur) um 23:55 bewährt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set WZ_Wandthermostat weekProfile Mon 17,17:30,20,22:00,17,23:55,17&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Werte Plotten ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
In den Log-Dateien wird regelmäßig der Batteriestatus, die Soll-Temperatur, die Ventilstellung und die Ist-Temperatur (Vorsicht: Wird nicht zuverlässig, möglicherweise nur bei einer Änderung der Ventilstellung übertragen.)&lt;br /&gt;
&lt;br /&gt;
Inhalt der LOG-Datei eines Heizkörperthermostates:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-12-30_08:55:31 MAX_018d3f battery: ok&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f desiredTemperature: 19.5&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f valveposition: 83&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f temperature: 16.4&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgender Plot-Datei (max_temp.gplot) kann der Verlauf der Sensordaten gut angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in Grad Celsius&amp;quot;&lt;br /&gt;
set ylabel &amp;quot;Signal in&amp;amp;#160;%&amp;quot;&lt;br /&gt;
#FileLog 4:desiredTemperature:0:&lt;br /&gt;
#FileLog 4:temperature:0:&lt;br /&gt;
#FileLog 4:valveposition:0:&lt;br /&gt;
plot \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;desiredTemperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Soll-Temperatur (C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;temperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Ist-Temperatur(ungenau)(C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;valveposition&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y1 title &#039;Ventil (%)&#039; with lines lw 2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Einbinden eines Plots in der fhem.cgf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Werte plotten&lt;br /&gt;
define MAX_017840_weblink weblink fileplot FileLog_MAX_017840:max_temp:CURRENT&lt;br /&gt;
attr MAX_017840_weblink label &amp;quot;Kueche Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr MAX_017840_weblink room MAX&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nützliche kleine Erweiterungen ===&lt;br /&gt;
&#039;&#039;&#039;Einen Alias-Namen vergeben für eine bessere Lesbarkeit im Webinterface&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr MAX_018d3f alias Kueche&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Die Anzeigen für die einzelnen File-Logs füllen das Webinterface schnell und machen es unübersichtlich.&#039;&#039;&#039; Die File-Logs können einfach in einen separaten Raum verbannt werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr FileLog_MAX_018d3f room LOG&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Einstellmöglichkeit für die Soll-Temperatur direkt in der „Raum-Seite“ schaffen.&#039;&#039;&#039; Die Temperatur wird dauerhaft auf einen bestimmten Wert gestellt. Das Wochenprogramm in dem Thermostat wird deaktiviert.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soll-Temperatur setzen, ohne das automatische Programm des Thermostates abzuschalten.&#039;&#039;&#039;&lt;br /&gt;
Es besteht die Möglichkeit eine Soll-Temperatur bis zum nächsten Schaltzeitpunkt zu setzen. Zum Beispiel kann das automatische Wochenprogramm in den Thermostaten dazu genutzt werden, nur abends die Soll-Temperatur zu senken. So läuft die Heizung nachts nicht voll durch. Wenn jedoch die Temperatur im Web-Interface von Fhem verändert wird, wird auch der Thermostat auf manuell gesetzt. So greift das Wochenprogramm nicht mehr. Abhilfe schafft der Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;set MAX_04711 desiredTemperature auto 20&amp;lt;/code&amp;gt; &lt;br /&gt;
Damit die Eingabe komfortabel aus Fhem möglich ist, kann ein Dummy-Device erstellt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Dummy für die Schnell-Einstellung der Temperatur bis zum nächsten automatischen Schaltzeitpunkt&lt;br /&gt;
 define HeizkoerperBad dummy&lt;br /&gt;
 attr HeizkoerperBad room MAX,Heizungen&lt;br /&gt;
 attr HeizkoerperBad setList state:eco,auto,14.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0&lt;br /&gt;
 attr HeizkoerperBad webCmd state&lt;br /&gt;
 define HeizkoerperBad.ntfy notify HeizkoerperBad.* {\&lt;br /&gt;
  my $valtemp = &amp;quot;%&amp;quot;;;\&lt;br /&gt;
  my $device = &amp;quot;MAX_04711&amp;quot;;;\&lt;br /&gt;
  my $cmd = &#039;set &#039;.$device.&#039; desiredTemperature auto &#039;.$valtemp;;\&lt;br /&gt;
  fhem($cmd);;\&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dieses Dummy-Device kann alternativ oder ergänzend zu &amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
=== IST-Temperaturwerte ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
Diese Abbildung zeigt, dass die IST-Temperatur nicht regelmäßig dem MAX CUBE mitgeteilt wird. Im Automatikbetrieb wird beim einer Änderung der Ventilstellung die neue Ventilstellung zusammen mit der aktuellen IST-Temperatur gesendet. Bei der Abbildung war die Therme in der Nacht ausgeschaltet. Daraufhin sank die Temperatur soweit ab, dass das Heizungsthermostat das Ventil in Maximalstellung geöffnet hat. Gegen 08:50 wurde die Therme eingeschaltet und die Soll-Temperatur an diesem Heizungsthermostat erhöht. Während dieser ganzen Zeit erfolgt keine Aktualisierung der Ist-Temperatur. So kommt es auch gegen 10:30 zu einem sprunghaften Temperaturanstieg von 13,5°C auf 19°C (siehe Markierung *A).&lt;br /&gt;
&lt;br /&gt;
Die IST-Temperatur wird anscheinend aktualisiert bei einer Änderung der:&lt;br /&gt;
&lt;br /&gt;
* Ventilstellung&lt;br /&gt;
* Soll-Temperatur&lt;br /&gt;
* des Betriebsmodis (Auto/Manuell)&lt;br /&gt;
&lt;br /&gt;
Wer eine detaillierte Kurven wünscht, sollte sich den [[MAX! Temperatur-Scanner]] ansehen.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
The Max devices use a CC1100 chip. For parameters see rf_moritz.c in culfw.&lt;br /&gt;
The thermostats use a Wake-On-Radio, thus one has to send packets at the right time.&lt;br /&gt;
&lt;br /&gt;
CC1100 initialization sequence on one of the max devices (not Cube) (format: addr value, both in hex):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;00 08&lt;br /&gt;
 02 46&lt;br /&gt;
 04 C6&lt;br /&gt;
 05 26&lt;br /&gt;
 0B 06&lt;br /&gt;
 10 C8 //MDMCFG4 DRATE_E=8&lt;br /&gt;
 11 93 //MDMCFG3 DRATE_M=147, data rate = (256+DRATE_M)*2^DRATE_E/2^28*f_xosc = (9992.599) 1kbit/s (at f_xosc=26 Mhz)&lt;br /&gt;
 12 03&lt;br /&gt;
 15 34&lt;br /&gt;
 17 00&lt;br /&gt;
 18 18&lt;br /&gt;
 19 16&lt;br /&gt;
 1B 43&lt;br /&gt;
 21 56&lt;br /&gt;
 25 00&lt;br /&gt;
 26 11&lt;br /&gt;
 0D 21&lt;br /&gt;
 0E 65&lt;br /&gt;
 0F 6A&lt;br /&gt;
 07 4C //PKTCTRL1: ADR_CHK=0 APPEND_STATUS=1 CRC_AUTOFLUSH=1 PQT=2 (preamble must have 8 toggling bits before sync word detection)&lt;br /&gt;
 16 1C //RXTIME=4&lt;br /&gt;
     RX_TIME_QUAL=1 (when rx timeout expires, keep receiving if either sync word is found or PQI is set (see PQT))&lt;br /&gt;
     RX_TIME_RSSI=1 (terminate RX if there is no carrier sense within the first 8 symbol periods)&lt;br /&gt;
 20 78 //WORCTRL, WOR_RES=00 (1.8-1.9 sec), RC_CAL=1, EVENT1=7 (48 ticks), RC_PD=0&lt;br /&gt;
 1E 87 //WOREVT1&lt;br /&gt;
 1F 6B //WOREVT0, i.e. EVENT0 = 34667&lt;br /&gt;
 29 59&lt;br /&gt;
 2C 81&lt;br /&gt;
 2D 35&lt;br /&gt;
 3E C3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Not set, i.e. factory defaults:&lt;br /&gt;
 13 MDMCFG1 NUM_PREAMBLE=2 (4 preamble bytes)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
From the configuration, we see that the&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;RC Oscillator: f_xosc/750 = 34666.66 Hz&lt;br /&gt;
 Event1 = Event1(=48 ticks)/RC Oscillator = 1.385 ms&lt;br /&gt;
 t_Event0 = 750/26Mhz * EVENT0 * 2^(5*WOR_RES) = 1.00 second&lt;br /&gt;
 C(RX_TIME, WOR_RES)= 0.2254&lt;br /&gt;
 rx timeout = EVENT0·C(RX_TIME, WOR_RES) ·26/X(=26) = 34667*0.2254 us = 7.8139 ms&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShutterContact seems to always sleep. Thus it is necessary to trigger it manually (by opening/closing the window) to make it receive messages. Pushing the button may work to. It is also awake just after&lt;br /&gt;
pairing, so one may send messages right then. One can use the WakeUp message to keep it from sleeping for some time. (This is also the reason why in the official MAX software, one must trigger the ShutterContact&lt;br /&gt;
after removing it from the house. The &amp;quot;factoryReset&amp;quot; packet is sent directly after the &amp;quot;ShutterContactState&amp;quot; packet has been acked.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probleme und Lösungen ==&lt;br /&gt;
=== Der Wandthermostat oder Heizthermostat reagieren nicht auf Änderungen über FHEM ===&lt;br /&gt;
Das Autocreate von FHEM erkennt, wenn aktiviert, die Geräte initial und legt auch Einträge an. Es fehlt aber noch das Pairing, da sonst keine Steuerung möglich ist!&lt;br /&gt;
Wenn im Log also Meldungen wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 2: CUL_MAX_SendQueueHandler: Missing ack from 01c9bb for 0b05008212345601c9bb0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
auftauchen (im Verbose Modus 5), dann wurde vermutlich kein oder ein inkorrektes Paring durchgeführt.&lt;br /&gt;
Nach dem Pairing sollten diese Meldungen verschwinden und stattdessen etwas wie&lt;br /&gt;
:&amp;lt;code&amp;gt;2013.03.20 15:21:43 5: Got matching ack&amp;lt;/code&amp;gt;&lt;br /&gt;
auftauchen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:MAX]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=10025</id>
		<title>MAX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=10025"/>
		<updated>2015-02-11T17:50:40Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Externer Temperatursensor für Heizkörperregelung */ wird nur von CUL_MAX unterstützt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;MAX!&#039;&#039;&#039; ist eine Heizungssteuerung, die die Raumtemperatur durch funkvernetzte Heizkörperthermostate an den Heizkörpern regelt. MAX! stellt eine Alternative zur [[:Kategorie:FHT Components|FHT]] und [[HomeMatic]] Heizungsteuerung dar.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Bidirektionale Kommuniktion (jeder Befehl wird mit ACK quittiert)&lt;br /&gt;
* Heizkörperthermostate übertragen auch die gemessene Temperatur&lt;br /&gt;
&lt;br /&gt;
== FHEM Module ==&lt;br /&gt;
Die MAX Komponenten können über den MAX!Cube per Modul 00_MAXLAN oder über einen [[CUL]] oder [[CUNO]] per 14_CUL_MAX gesteuert werden. In beiden Fällen werden die einzelnen MAX! Geräte vom Modul 10_MAX&lt;br /&gt;
bereitgestellt.&lt;br /&gt;
&lt;br /&gt;
Nachteil vom Cube ist, dass man ein Polling machen muss, um zu sehen ob sich der Status eines Gerätes geändert hat. Z.B. checkt man das alle 30 Sekunden. Dann sieht man aber auch Änderungen möglicherweise erst nach 30 Sekunden. Beim CUL sieht man die Funknachrichten direkt. Es wird aber auch ein Kombimodus unterstützt, in welchem man alles über den MAXLAN steuert, der CUL_MAX aber für zeitnahe Benachrichtigungen sorgt.&lt;br /&gt;
&lt;br /&gt;
== Komponenten ==&lt;br /&gt;
=== Limit ===&lt;br /&gt;
* Auf 8 Thermostate pro Raum beschränkt&lt;br /&gt;
* Limit mit Cube liegt bei ca. 140 Geräten. Durch die [[1% Regel]] dürften es aber in der Praxis weniger sein&lt;br /&gt;
&lt;br /&gt;
=== Heizkörperthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature = auto (Wochenprogramm), manuell (4.5 - 30.5), eco, comfort, boost, until&lt;br /&gt;
** (Besonderheit der Werte: 4.5 = Off und 30.5 = On)&lt;br /&gt;
* ecoTemperature, comfortTemperature, measurementOffset, maximumTemperature, minimumTemperature, windowOpenTemperature, windowOpenDuration&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur. (Hinweis: Wird bei Verwendung des MAX CUBE nicht regelmäßig aktualisiert)&lt;br /&gt;
&lt;br /&gt;
=== Fensterkontakte ===&lt;br /&gt;
Der aktuelle Status (offen/geschlossen) wird (praktisch ohne Verzögerung) angezeigt.&lt;br /&gt;
&lt;br /&gt;
Falls wir nicht mit Ack antworten, wird er mehrmals wiederholt.&lt;br /&gt;
&lt;br /&gt;
Die Fensterkontakte können zusätzlich direkt an mehrere Heizkörperthermostate angelernt werden, und versetzen diese dann automatisch in windowOpenTemperature während sie geöffnet sind.&lt;br /&gt;
&lt;br /&gt;
Wenn der Fensterkontakt an mindestens ein Heizkörperthermostat angelernt ist, dann sendet er zusätzlich stündlich seinen aktuellen Zustand.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Autocreate&#039;&#039;&#039;&lt;br /&gt;
 MAXLAN_Parse: Paired new device, type ShutterContact, addr 1a2b3c, serial JEQ0123456&lt;br /&gt;
 autocreate: define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
 autocreate: define FileLog_MAX_1a2b3c FileLog /fhem/log/MAX_1a2b3c-%Y.log MAX_1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Definition&#039;&#039;&#039;&lt;br /&gt;
 define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Log&#039;&#039;&#039;&lt;br /&gt;
 ==&amp;gt; MAX_1a2b3c-2013.log &amp;lt;==&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c battery: ok&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c onoff: 0&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c closed&lt;br /&gt;
&lt;br /&gt;
=== Wandthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature (siehe Heizkörperthermostate), ecoTemperature, comfortTemperature&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur.&lt;br /&gt;
&lt;br /&gt;
=== Eco-Taster ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Zumindest über MAXLAN lässt sich der Zustand weder auslesen, noch wird man über Veränderungen informiert.&lt;br /&gt;
&lt;br /&gt;
Per CUL_MAX funktioniert der Eco-Taster problemlos.&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Definition ====&lt;br /&gt;
:&amp;lt;code&amp;gt;define BUTTON.EG MAX PushButton 069d33&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Event-Ausgabe ====&lt;br /&gt;
&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG battery: ok&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG onoff: 0&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG closed&lt;br /&gt;
&lt;br /&gt;
Wobei gilt&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! onoff !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Eco&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Auto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anlernen per CUL ==&lt;br /&gt;
Das Anlernen funktioniert nur mit zurückgesetzen (Werksreset, also entweder alle 3 Tasten am Heizkörperthermostate betätigen, Batterien einlegen, Anzeige rES; oder in FHEM set factoryReset) Heizkörperthermostaten. Bereits an einen Cube angelernte Heizungsregler können &#039;&#039;&#039;nicht&#039;&#039;&#039; an ein CUL angemeldet werden, hier ist dann nur das &amp;quot;mitlesen&amp;quot; der Funkbotschaften möglich.&lt;br /&gt;
 &lt;br /&gt;
Info: Durch den Reset geht auch ein evtl. per Cube eingestelltes Automatikprogramm verloren.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Siehe [http://fhem.de/commandref.html#CUL_MAX commandref].&lt;br /&gt;
&lt;br /&gt;
Die Module sind so konzipiert, dass man die offizielle Max! Software nicht benutzen muss. Man kann alles aus FHEM heraus machen. Nachdem das MAXLAN oder CUL_MAX Modul konfiguriert wurden (siehe unten), werden bereits gepairte Geräte automatisch erkannt.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
:&amp;lt;code&amp;gt;define ml MAXLAN 192.168.178.2&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei 192.168.178.2 die IP des MAX! Cube ist. Das MAXLAN-Modul findet selbstständig bereits gepairte Geräte und trägt diese in die Konfigurationsdatei fhem.cfg ein. Diese können dann im WEB-Interface mittels „alias“ einen eindeutigen Namen bekommen.&lt;br /&gt;
&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 attr CUL0 rfmode MAX&lt;br /&gt;
 define cm CUL_MAX 123456&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anlernen ===&lt;br /&gt;
Dazu muss der &amp;quot;pairmode&amp;quot; auf MAXLAN/CUL_MAX per &lt;br /&gt;
:&amp;lt;code&amp;gt;set ml/cm pairmode&amp;lt;/code&amp;gt;&lt;br /&gt;
oder über das Web-Interface aktiviert werden. Falls kein Parameter angegeben wird, ist er standardmäßig für 60 Sekunden aktiviert. In dieser Zeit können MAX! Geräte nach deren Anleitung in den Anlernmodus versetzt werden, um sie mit FHEM zu pairen.&lt;br /&gt;
&lt;br /&gt;
=== Geräte untereinander anlernen ===&lt;br /&gt;
Es gibt einen anderen Befehl, um Devices untereinander anzulernen (in neueren Versionen des MAX Moduls enthalten, heißt &amp;quot;associate&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Wenn man z.B.&lt;br /&gt;
:&amp;lt;code&amp;gt;set MAXFensterKontakt0 associate MaxHeizkörperthermostat3&amp;lt;/code&amp;gt;&lt;br /&gt;
ausführt, dann sendet der MAXFensterKontakt0 jede Änderung zusätzlich (direkt über Funk, ohne Cube oder FHEM) an das MaxHeizkörperthermostat3.&lt;br /&gt;
&lt;br /&gt;
Damit MaxHeizkörperthermostat3 auch auf die Nachrichten vom MAXFensterKontakt0 hört, muss noch ein&lt;br /&gt;
set MaxHeizkörperthermostat3 associate MAXFensterKontakt0 erfolgen.&lt;br /&gt;
&lt;br /&gt;
Dann wechselt MaxHeizkörperthermostat3 immer dann auf die windowOpenTemperature, wenn der AXFensterKontakt0 offen ist. Dabei muss die groupId von beiden Geräte gar nicht gleich sein! (Die Semantik der groupId erschließt sich mir deshalb noch nicht ganz. Ich glaube, man kann damit Befehle (ala set desiredTemperature) an mehrere Thermostate gleichzeitig richten. Im Moment sendet FHEM einfach an jedes Thermostat einen Befehl.)&lt;br /&gt;
&lt;br /&gt;
Wahrscheinlich funktioniert associate genauso zwischen Heizkörper/Wandthermostaten. Das müsste mal jemand ausprobieren und dann hier berichten.&lt;br /&gt;
&lt;br /&gt;
=== Temperatursturzerkennung ===&lt;br /&gt;
Die Heizkörperthermostate verfügen über eine interne &amp;quot;Fenster-offen Erkennung&amp;quot; (Temperatursturzerkennung). Wird diese ausgelöst, regeln sie für die Zeit die unter &amp;quot;windowOpenDuration&amp;quot; festgelegt wurde auf die als &amp;quot;windowOpenTemperature&amp;quot; festgelegt Temperatur herunter und danach wieder auf die zuvor eingestellte Temperatur zurück.&lt;br /&gt;
&lt;br /&gt;
Nachteil: Die Erkennung benötigt etwas Zeit und reagiert nicht sofort wie es beim Fensterkontakt oben der Fall ist&lt;br /&gt;
&lt;br /&gt;
Vorteil: Es ist kein Fensterkontakt erforderlich&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Setzt man die windowOpenTemperature auf &amp;quot;Off&amp;quot; (= 4.5 Grad), dann ist die Fenster-offen-Funktion abgeschaltet. Und auch wenn die desiredTemperature gerade auf &amp;quot;On&amp;quot; (= 30.5 Grad&amp;quot;) steht, geht der Heizkörper nicht in die Fenster-offen-Funktion.&lt;br /&gt;
&lt;br /&gt;
=== Externer Sensor für Fenster-offen-Erkennung ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Wird nur von CUL_MAX unterstützt!&lt;br /&gt;
&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate in und aus dem Fenster-offen Modus zu holen. Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir müssen einmalig den internen Fake-Fensterkontakt mit dem Heizkörper assozieren&lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizung associate fakeShutterContact&amp;lt;/code&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Fensterkontakt akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeSC Heizung 1&amp;lt;/code&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster offen&amp;quot; an die Heizung senden und per&lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeSC Heizung 0&amp;lt;/code&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster zu&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Externer Temperatursensor für Heizkörperregelung ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Wird nur von CUL_MAX unterstützt!&lt;br /&gt;
&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate zu regeln. Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir müssen einmalig das interne Fake-Wandthermostat mit dem Heizkörper assozieren: &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizung associate fakeWallThermostat&amp;lt;/code&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Wandthermostat akzeptiert. Achtung: Dies schaltet im&lt;br /&gt;
Heizkörperthermostat die Regelung mit dem internen Temperaturfühler aus. Ohne die gleich kommenden &amp;quot;fakeWT&amp;quot; Nachrichten wird das Heizkörperthermostat nicht mehr regeln.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeWT Heizung 14.5 12.1&amp;lt;/code&amp;gt;&lt;br /&gt;
die desiredTemperature 14.5 und gemessene Temperatur 12.1 an die Heizung senden. Diese wird dann die Ventile öffnen, bis wir ein &amp;quot;fakeWT&amp;quot; absetzten, dessen gemessene Temperatur höher als die desiredTemperature ist.&lt;br /&gt;
&lt;br /&gt;
Falls man zu lange Zeit (ca. 30 Minuten) kein neues &amp;quot;fakeWT&amp;quot; sendet, wird bei der Heizung das Attribut rferror gleich 1. Es ist nicht klar, ob das neben diesem Attribut auch Auswirkung auf die Funktionalität hat. Es wurde beobachtet, dass dann der interne Temperatursensor bis zum nächsten FakeWT aktiviert wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel eines automatischen Sendens einer externen Temperatur, der externe Temperatursensor heißt &amp;quot;WS300&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define SendExtTemp notify WS300:temperature.* {&lt;br /&gt;
 MaxFakeWallThermostat(&amp;quot;Heizung&amp;quot;,&amp;amp;#160;%EVTPART1);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dazu die Funktion, bitte in 99_MyUtils.pm eintragen:&lt;br /&gt;
&lt;br /&gt;
 sub MaxFakeWallThermostat($$)&lt;br /&gt;
 {&lt;br /&gt;
  my ($heizung, $aktTemp)    = @_;&lt;br /&gt;
  my $CULMAX     = $defs{$heizung}{LASTInputDev};&lt;br /&gt;
  my $desiredTemp   = ReadingsVal($heizung, &amp;quot;desiredTemperature&amp;quot;, undef);&lt;br /&gt;
  my $windowOpenTemp = ReadingsVal($heizung, &amp;quot;windowOpenTemperature&amp;quot;, undef);&lt;br /&gt;
  my $lastTemp    = ReadingsVal($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
  my $lastSet     = ReadingsTimestamp($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
  if($desiredTemp &amp;amp;amp;&amp;amp;amp; $windowOpenTemp &amp;amp;amp;&amp;amp;amp;&lt;br /&gt;
  $desiredTemp&amp;amp;#160;!= $windowOpenTemp &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
  (time()-time_str2num($lastSet) &amp;amp;gt;= 600 || abs($aktTemp-$lastTemp)&amp;amp;gt;=0.2 )) {&lt;br /&gt;
   Log 3, &amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;;&lt;br /&gt;
   readingsSingleUpdate($defs{$heizung}, &amp;quot;LastExtTemperature&amp;quot;, $aktTemp, 0);&lt;br /&gt;
   fhem(&amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel heißt das zu steuernde Thermostat &amp;quot;Heizung&amp;quot;. Die vom externen Sensor gemessene Temperatur wird nur unter den folgenden Voraussetzungen gesendet:&lt;br /&gt;
* das Thermostat befindet sich nicht im &amp;quot;Fenster-offen&amp;quot; Modus, und&lt;br /&gt;
* das letzte Senden liegt mindestens 10min zurück&lt;br /&gt;
* oder die gemessene Temperatur weicht um mindestens 0.2°C von der letzten gesendeten Temperatur ab&lt;br /&gt;
&lt;br /&gt;
=== Wochenheizplan für Wandthermostat/Ventilantriebe erstellen ===&lt;br /&gt;
Ein Heizplan, den das Wandthermostat und auch der Ventilantrieb versteht und speichern kann, sieht folgendermaßen aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;set WZ_Wandthermostat weekProfile Mon 17,17:30,20,23:00,17 Tue 17,17:30,20,23:00,17 Wed 17,17:30,20,23:00,17 Thu 17,17:30,20,23:00,17 Fri 17,15:00,20,23:00,17 Sat 17,11:00,20,23:00,17 Sun 17,11:00,20,23:00,17&amp;lt;/code&amp;gt;&lt;br /&gt;
Genauer erläutert wird die Funktionsweise auch in der [http://fhem.de/commandref.html#MAX commandref].&lt;br /&gt;
&lt;br /&gt;
Der gesamte Block kann kopiert und als FHEM Befehl abgesetzt werden. Unter Umständen benötigt das Speichern bzw. Übertragen wegen der Größe etwas Zeit, bevor die aktuellen, neu gesetzten Werte wieder ausgelesen werden können.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte folgendes beachten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt im Zusammenhang mit dem Wochenprogramm ein Problem mit dem letzten Schaltpunkt des Tages. &lt;br /&gt;
Der Workaround wurde  [http://forum.fhem.de/index.php/topic,17231.msg112738.html#msg112738 hier]&lt;br /&gt;
beschrieben.&lt;br /&gt;
Man muss dafür sorgen, dass man kurz vor Ende des Tages noch einen Schaltpunkt setzt! Bei mir hat sich ein Schaltpunkt (ohne Änderung der Soll-Temperatur) um 23:55 bewährt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set WZ_Wandthermostat weekProfile Mon 17,17:30,20,22:00,17,23:55,17&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Werte Plotten ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
In den Log-Dateien wird regelmäßig der Batteriestatus, die Soll-Temperatur, die Ventilstellung und die Ist-Temperatur (Vorsicht: Wird nicht zuverlässig, möglicherweise nur bei einer Änderung der Ventilstellung übertragen.)&lt;br /&gt;
&lt;br /&gt;
Inhalt der LOG-Datei eines Heizkörperthermostates:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-12-30_08:55:31 MAX_018d3f battery: ok&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f desiredTemperature: 19.5&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f valveposition: 83&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f temperature: 16.4&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgender Plot-Datei (max_temp.gplot) kann der Verlauf der Sensordaten gut angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in Grad Celsius&amp;quot;&lt;br /&gt;
set ylabel &amp;quot;Signal in&amp;amp;#160;%&amp;quot;&lt;br /&gt;
#FileLog 4:desiredTemperature:0:&lt;br /&gt;
#FileLog 4:temperature:0:&lt;br /&gt;
#FileLog 4:valveposition:0:&lt;br /&gt;
plot \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;desiredTemperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Soll-Temperatur (C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;temperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Ist-Temperatur(ungenau)(C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;valveposition&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y1 title &#039;Ventil (%)&#039; with lines lw 2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Einbinden eines Plots in der fhem.cgf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Werte plotten&lt;br /&gt;
define MAX_017840_weblink weblink fileplot FileLog_MAX_017840:max_temp:CURRENT&lt;br /&gt;
attr MAX_017840_weblink label &amp;quot;Kueche Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr MAX_017840_weblink room MAX&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nützliche kleine Erweiterungen ===&lt;br /&gt;
&#039;&#039;&#039;Einen Alias-Namen vergeben für eine bessere Lesbarkeit im Webinterface&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr MAX_018d3f alias Kueche&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Die Anzeigen für die einzelnen File-Logs füllen das Webinterface schnell und machen es unübersichtlich.&#039;&#039;&#039; Die File-Logs können einfach in einen separaten Raum verbannt werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr FileLog_MAX_018d3f room LOG&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Einstellmöglichkeit für die Soll-Temperatur direkt in der „Raum-Seite“ schaffen.&#039;&#039;&#039; Die Temperatur wird dauerhaft auf einen bestimmten Wert gestellt. Das Wochenprogramm in dem Thermostat wird deaktiviert.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soll-Temperatur setzen, ohne das automatische Programm des Thermostates abzuschalten.&#039;&#039;&#039;&lt;br /&gt;
Es besteht die Möglichkeit eine Soll-Temperatur bis zum nächsten Schaltzeitpunkt zu setzen. Zum Beispiel kann das automatische Wochenprogramm in den Thermostaten dazu genutzt werden, nur abends die Soll-Temperatur zu senken. So läuft die Heizung nachts nicht voll durch. Wenn jedoch die Temperatur im Web-Interface von Fhem verändert wird, wird auch der Thermostat auf manuell gesetzt. So greift das Wochenprogramm nicht mehr. Abhilfe schafft der Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;set MAX_04711 desiredTemperature auto 20&amp;lt;/code&amp;gt; &lt;br /&gt;
Damit die Eingabe komfortabel aus Fhem möglich ist, kann ein Dummy-Device erstellt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Dummy für die Schnell-Einstellung der Temperatur bis zum nächsten automatischen Schaltzeitpunkt&lt;br /&gt;
 define HeizkoerperBad dummy&lt;br /&gt;
 attr HeizkoerperBad room MAX,Heizungen&lt;br /&gt;
 attr HeizkoerperBad setList state:eco,auto,14.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0&lt;br /&gt;
 attr HeizkoerperBad webCmd state&lt;br /&gt;
 define HeizkoerperBad.ntfy notify HeizkoerperBad.* {\&lt;br /&gt;
  my $valtemp = &amp;quot;%&amp;quot;;;\&lt;br /&gt;
  my $device = &amp;quot;MAX_04711&amp;quot;;;\&lt;br /&gt;
  my $cmd = &#039;set &#039;.$device.&#039; desiredTemperature auto &#039;.$valtemp;;\&lt;br /&gt;
  fhem($cmd);;\&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Diese Dummy-Device kann alternativ oder ergänzend zu &amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
=== IST-Temperaturwerte ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
Diese Abbildung zeigt, dass die IST-Temperatur nicht regelmäßig dem MAX CUBE mitgeteilt wird. Im Automatikbetrieb wird beim einer Änderung der Ventilstellung die neue Ventilstellung zusammen mit der aktuellen IST-Temperatur gesendet. Bei der Abbildung war die Therme in der Nacht ausgeschaltet. Daraufhin sank die Temperatur soweit ab, dass das Heizungsthermostat das Ventil in Maximalstellung geöffnet hat. Gegen 08:50 wurde die Therme eingeschaltet und die Soll-Temperatur an diesem Heizungsthermostat erhöht. Während dieser ganzen Zeit erfolgt keine Aktualisierung der Ist-Temperatur. So kommt es auch gegen 10:30 zu einem sprunghaften Temperaturanstieg von 13,5°C auf 19°C (siehe Markierung *A).&lt;br /&gt;
&lt;br /&gt;
Die IST-Temperatur wird anscheinend aktualisiert bei einer Änderung der:&lt;br /&gt;
&lt;br /&gt;
* Ventilstellung&lt;br /&gt;
* Soll-Temperatur&lt;br /&gt;
* des Betriebsmodis (Auto/Manuell)&lt;br /&gt;
&lt;br /&gt;
Wer eine detaillierte Kurven wünscht, sollte sich den [[MAX! Temperatur-Scanner]] ansehen.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
The Max devices use a CC1100 chip. For parameters see rf_moritz.c in culfw.&lt;br /&gt;
The thermostats use a Wake-On-Radio, thus one has to send packets at the right time.&lt;br /&gt;
&lt;br /&gt;
CC1100 initialization sequence on one of the max devices (not Cube) (format: addr value, both in hex):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;00 08&lt;br /&gt;
 02 46&lt;br /&gt;
 04 C6&lt;br /&gt;
 05 26&lt;br /&gt;
 0B 06&lt;br /&gt;
 10 C8 //MDMCFG4 DRATE_E=8&lt;br /&gt;
 11 93 //MDMCFG3 DRATE_M=147, data rate = (256+DRATE_M)*2^DRATE_E/2^28*f_xosc = (9992.599) 1kbit/s (at f_xosc=26 Mhz)&lt;br /&gt;
 12 03&lt;br /&gt;
 15 34&lt;br /&gt;
 17 00&lt;br /&gt;
 18 18&lt;br /&gt;
 19 16&lt;br /&gt;
 1B 43&lt;br /&gt;
 21 56&lt;br /&gt;
 25 00&lt;br /&gt;
 26 11&lt;br /&gt;
 0D 21&lt;br /&gt;
 0E 65&lt;br /&gt;
 0F 6A&lt;br /&gt;
 07 4C //PKTCTRL1: ADR_CHK=0 APPEND_STATUS=1 CRC_AUTOFLUSH=1 PQT=2 (preamble must have 8 toggling bits before sync word detection)&lt;br /&gt;
 16 1C //RXTIME=4&lt;br /&gt;
     RX_TIME_QUAL=1 (when rx timeout expires, keep receiving if either sync word is found or PQI is set (see PQT))&lt;br /&gt;
     RX_TIME_RSSI=1 (terminate RX if there is no carrier sense within the first 8 symbol periods)&lt;br /&gt;
 20 78 //WORCTRL, WOR_RES=00 (1.8-1.9 sec), RC_CAL=1, EVENT1=7 (48 ticks), RC_PD=0&lt;br /&gt;
 1E 87 //WOREVT1&lt;br /&gt;
 1F 6B //WOREVT0, i.e. EVENT0 = 34667&lt;br /&gt;
 29 59&lt;br /&gt;
 2C 81&lt;br /&gt;
 2D 35&lt;br /&gt;
 3E C3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Not set, i.e. factory defaults:&lt;br /&gt;
 13 MDMCFG1 NUM_PREAMBLE=2 (4 preamble bytes)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
From the configuration, we see that the&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;RC Oscillator: f_xosc/750 = 34666.66 Hz&lt;br /&gt;
 Event1 = Event1(=48 ticks)/RC Oscillator = 1.385 ms&lt;br /&gt;
 t_Event0 = 750/26Mhz * EVENT0 * 2^(5*WOR_RES) = 1.00 second&lt;br /&gt;
 C(RX_TIME, WOR_RES)= 0.2254&lt;br /&gt;
 rx timeout = EVENT0·C(RX_TIME, WOR_RES) ·26/X(=26) = 34667*0.2254 us = 7.8139 ms&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShutterContact seems to always sleep. Thus it is necessary to trigger it manually (by opening/closing the window) to make it receive messages. Pushing the button may work to. It is also awake just after&lt;br /&gt;
pairing, so one may send messages right then. One can use the WakeUp message to keep it from sleeping for some time. (This is also the reason why in the official MAX software, one must trigger the ShutterContact&lt;br /&gt;
after removing it from the house. The &amp;quot;factoryReset&amp;quot; packet is sent directly after the &amp;quot;ShutterContactState&amp;quot; packet has been acked.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probleme und Lösungen ==&lt;br /&gt;
=== Der Wandthermostat oder Heizthermostat reagieren nicht auf Änderungen über FHEM ===&lt;br /&gt;
Das Autocreate von FHEM erkennt, wenn aktiviert, die Geräte initial und legt auch Einträge an. Es fehlt aber noch das Pairing, da sonst keine Steuerung möglich ist!&lt;br /&gt;
Wenn im Log also Meldungen wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 2: CUL_MAX_SendQueueHandler: Missing ack from 01c9bb for 0b05008212345601c9bb0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
auftauchen (im Verbose Modus 5), dann wurde vermutlich kein oder ein inkorrektes Paring durchgeführt.&lt;br /&gt;
Nach dem Pairing sollten diese Meldungen verschwinden und stattdessen etwas wie&lt;br /&gt;
:&amp;lt;code&amp;gt;2013.03.20 15:21:43 5: Got matching ack&amp;lt;/code&amp;gt;&lt;br /&gt;
auftauchen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:MAX]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=10024</id>
		<title>MAX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=10024"/>
		<updated>2015-02-11T17:50:03Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: /* Externer Sensor für Fenster-offen-Erkennung */ geht nur mit CUL_MAX&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;MAX!&#039;&#039;&#039; ist eine Heizungssteuerung, die die Raumtemperatur durch funkvernetzte Heizkörperthermostate an den Heizkörpern regelt. MAX! stellt eine Alternative zur [[:Kategorie:FHT Components|FHT]] und [[HomeMatic]] Heizungsteuerung dar.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Bidirektionale Kommuniktion (jeder Befehl wird mit ACK quittiert)&lt;br /&gt;
* Heizkörperthermostate übertragen auch die gemessene Temperatur&lt;br /&gt;
&lt;br /&gt;
== FHEM Module ==&lt;br /&gt;
Die MAX Komponenten können über den MAX!Cube per Modul 00_MAXLAN oder über einen [[CUL]] oder [[CUNO]] per 14_CUL_MAX gesteuert werden. In beiden Fällen werden die einzelnen MAX! Geräte vom Modul 10_MAX&lt;br /&gt;
bereitgestellt.&lt;br /&gt;
&lt;br /&gt;
Nachteil vom Cube ist, dass man ein Polling machen muss, um zu sehen ob sich der Status eines Gerätes geändert hat. Z.B. checkt man das alle 30 Sekunden. Dann sieht man aber auch Änderungen möglicherweise erst nach 30 Sekunden. Beim CUL sieht man die Funknachrichten direkt. Es wird aber auch ein Kombimodus unterstützt, in welchem man alles über den MAXLAN steuert, der CUL_MAX aber für zeitnahe Benachrichtigungen sorgt.&lt;br /&gt;
&lt;br /&gt;
== Komponenten ==&lt;br /&gt;
=== Limit ===&lt;br /&gt;
* Auf 8 Thermostate pro Raum beschränkt&lt;br /&gt;
* Limit mit Cube liegt bei ca. 140 Geräten. Durch die [[1% Regel]] dürften es aber in der Praxis weniger sein&lt;br /&gt;
&lt;br /&gt;
=== Heizkörperthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature = auto (Wochenprogramm), manuell (4.5 - 30.5), eco, comfort, boost, until&lt;br /&gt;
** (Besonderheit der Werte: 4.5 = Off und 30.5 = On)&lt;br /&gt;
* ecoTemperature, comfortTemperature, measurementOffset, maximumTemperature, minimumTemperature, windowOpenTemperature, windowOpenDuration&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur. (Hinweis: Wird bei Verwendung des MAX CUBE nicht regelmäßig aktualisiert)&lt;br /&gt;
&lt;br /&gt;
=== Fensterkontakte ===&lt;br /&gt;
Der aktuelle Status (offen/geschlossen) wird (praktisch ohne Verzögerung) angezeigt.&lt;br /&gt;
&lt;br /&gt;
Falls wir nicht mit Ack antworten, wird er mehrmals wiederholt.&lt;br /&gt;
&lt;br /&gt;
Die Fensterkontakte können zusätzlich direkt an mehrere Heizkörperthermostate angelernt werden, und versetzen diese dann automatisch in windowOpenTemperature während sie geöffnet sind.&lt;br /&gt;
&lt;br /&gt;
Wenn der Fensterkontakt an mindestens ein Heizkörperthermostat angelernt ist, dann sendet er zusätzlich stündlich seinen aktuellen Zustand.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Autocreate&#039;&#039;&#039;&lt;br /&gt;
 MAXLAN_Parse: Paired new device, type ShutterContact, addr 1a2b3c, serial JEQ0123456&lt;br /&gt;
 autocreate: define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
 autocreate: define FileLog_MAX_1a2b3c FileLog /fhem/log/MAX_1a2b3c-%Y.log MAX_1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Definition&#039;&#039;&#039;&lt;br /&gt;
 define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Log&#039;&#039;&#039;&lt;br /&gt;
 ==&amp;gt; MAX_1a2b3c-2013.log &amp;lt;==&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c battery: ok&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c onoff: 0&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c closed&lt;br /&gt;
&lt;br /&gt;
=== Wandthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature (siehe Heizkörperthermostate), ecoTemperature, comfortTemperature&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur.&lt;br /&gt;
&lt;br /&gt;
=== Eco-Taster ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Zumindest über MAXLAN lässt sich der Zustand weder auslesen, noch wird man über Veränderungen informiert.&lt;br /&gt;
&lt;br /&gt;
Per CUL_MAX funktioniert der Eco-Taster problemlos.&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Definition ====&lt;br /&gt;
:&amp;lt;code&amp;gt;define BUTTON.EG MAX PushButton 069d33&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Event-Ausgabe ====&lt;br /&gt;
&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG battery: ok&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG onoff: 0&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG closed&lt;br /&gt;
&lt;br /&gt;
Wobei gilt&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! onoff !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Eco&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Auto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anlernen per CUL ==&lt;br /&gt;
Das Anlernen funktioniert nur mit zurückgesetzen (Werksreset, also entweder alle 3 Tasten am Heizkörperthermostate betätigen, Batterien einlegen, Anzeige rES; oder in FHEM set factoryReset) Heizkörperthermostaten. Bereits an einen Cube angelernte Heizungsregler können &#039;&#039;&#039;nicht&#039;&#039;&#039; an ein CUL angemeldet werden, hier ist dann nur das &amp;quot;mitlesen&amp;quot; der Funkbotschaften möglich.&lt;br /&gt;
 &lt;br /&gt;
Info: Durch den Reset geht auch ein evtl. per Cube eingestelltes Automatikprogramm verloren.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Siehe [http://fhem.de/commandref.html#CUL_MAX commandref].&lt;br /&gt;
&lt;br /&gt;
Die Module sind so konzipiert, dass man die offizielle Max! Software nicht benutzen muss. Man kann alles aus FHEM heraus machen. Nachdem das MAXLAN oder CUL_MAX Modul konfiguriert wurden (siehe unten), werden bereits gepairte Geräte automatisch erkannt.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
:&amp;lt;code&amp;gt;define ml MAXLAN 192.168.178.2&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei 192.168.178.2 die IP des MAX! Cube ist. Das MAXLAN-Modul findet selbstständig bereits gepairte Geräte und trägt diese in die Konfigurationsdatei fhem.cfg ein. Diese können dann im WEB-Interface mittels „alias“ einen eindeutigen Namen bekommen.&lt;br /&gt;
&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 attr CUL0 rfmode MAX&lt;br /&gt;
 define cm CUL_MAX 123456&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anlernen ===&lt;br /&gt;
Dazu muss der &amp;quot;pairmode&amp;quot; auf MAXLAN/CUL_MAX per &lt;br /&gt;
:&amp;lt;code&amp;gt;set ml/cm pairmode&amp;lt;/code&amp;gt;&lt;br /&gt;
oder über das Web-Interface aktiviert werden. Falls kein Parameter angegeben wird, ist er standardmäßig für 60 Sekunden aktiviert. In dieser Zeit können MAX! Geräte nach deren Anleitung in den Anlernmodus versetzt werden, um sie mit FHEM zu pairen.&lt;br /&gt;
&lt;br /&gt;
=== Geräte untereinander anlernen ===&lt;br /&gt;
Es gibt einen anderen Befehl, um Devices untereinander anzulernen (in neueren Versionen des MAX Moduls enthalten, heißt &amp;quot;associate&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Wenn man z.B.&lt;br /&gt;
:&amp;lt;code&amp;gt;set MAXFensterKontakt0 associate MaxHeizkörperthermostat3&amp;lt;/code&amp;gt;&lt;br /&gt;
ausführt, dann sendet der MAXFensterKontakt0 jede Änderung zusätzlich (direkt über Funk, ohne Cube oder FHEM) an das MaxHeizkörperthermostat3.&lt;br /&gt;
&lt;br /&gt;
Damit MaxHeizkörperthermostat3 auch auf die Nachrichten vom MAXFensterKontakt0 hört, muss noch ein&lt;br /&gt;
set MaxHeizkörperthermostat3 associate MAXFensterKontakt0 erfolgen.&lt;br /&gt;
&lt;br /&gt;
Dann wechselt MaxHeizkörperthermostat3 immer dann auf die windowOpenTemperature, wenn der AXFensterKontakt0 offen ist. Dabei muss die groupId von beiden Geräte gar nicht gleich sein! (Die Semantik der groupId erschließt sich mir deshalb noch nicht ganz. Ich glaube, man kann damit Befehle (ala set desiredTemperature) an mehrere Thermostate gleichzeitig richten. Im Moment sendet FHEM einfach an jedes Thermostat einen Befehl.)&lt;br /&gt;
&lt;br /&gt;
Wahrscheinlich funktioniert associate genauso zwischen Heizkörper/Wandthermostaten. Das müsste mal jemand ausprobieren und dann hier berichten.&lt;br /&gt;
&lt;br /&gt;
=== Temperatursturzerkennung ===&lt;br /&gt;
Die Heizkörperthermostate verfügen über eine interne &amp;quot;Fenster-offen Erkennung&amp;quot; (Temperatursturzerkennung). Wird diese ausgelöst, regeln sie für die Zeit die unter &amp;quot;windowOpenDuration&amp;quot; festgelegt wurde auf die als &amp;quot;windowOpenTemperature&amp;quot; festgelegt Temperatur herunter und danach wieder auf die zuvor eingestellte Temperatur zurück.&lt;br /&gt;
&lt;br /&gt;
Nachteil: Die Erkennung benötigt etwas Zeit und reagiert nicht sofort wie es beim Fensterkontakt oben der Fall ist&lt;br /&gt;
&lt;br /&gt;
Vorteil: Es ist kein Fensterkontakt erforderlich&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Setzt man die windowOpenTemperature auf &amp;quot;Off&amp;quot; (= 4.5 Grad), dann ist die Fenster-offen-Funktion abgeschaltet. Und auch wenn die desiredTemperature gerade auf &amp;quot;On&amp;quot; (= 30.5 Grad&amp;quot;) steht, geht der Heizkörper nicht in die Fenster-offen-Funktion.&lt;br /&gt;
&lt;br /&gt;
=== Externer Sensor für Fenster-offen-Erkennung ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Wird nur von CUL_MAX unterstützt!&lt;br /&gt;
&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate in und aus dem Fenster-offen Modus zu holen. Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir müssen einmalig den internen Fake-Fensterkontakt mit dem Heizkörper assozieren&lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizung associate fakeShutterContact&amp;lt;/code&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Fensterkontakt akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeSC Heizung 1&amp;lt;/code&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster offen&amp;quot; an die Heizung senden und per&lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeSC Heizung 0&amp;lt;/code&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster zu&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Externer Temperatursensor für Heizkörperregelung ===&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate zu regeln. Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir müssen einmalig das interne Fake-Wandthermostat mit dem Heizkörper assozieren: &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizung associate fakeWallThermostat&amp;lt;/code&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Wandthermostat akzeptiert. Achtung: Dies schaltet im&lt;br /&gt;
Heizkörperthermostat die Regelung mit dem internen Temperaturfühler aus. Ohne die gleich kommenden &amp;quot;fakeWT&amp;quot; Nachrichten wird das Heizkörperthermostat nicht mehr regeln.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeWT Heizung 14.5 12.1&amp;lt;/code&amp;gt;&lt;br /&gt;
die desiredTemperature 14.5 und gemessene Temperatur 12.1 an die Heizung senden. Diese wird dann die Ventile öffnen, bis wir ein &amp;quot;fakeWT&amp;quot; absetzten, dessen gemessene Temperatur höher als die desiredTemperature ist.&lt;br /&gt;
&lt;br /&gt;
Falls man zu lange Zeit (ca. 30 Minuten) kein neues &amp;quot;fakeWT&amp;quot; sendet, wird bei der Heizung das Attribut rferror gleich 1. Es ist nicht klar, ob das neben diesem Attribut auch Auswirkung auf die Funktionalität hat. Es wurde beobachtet, dass dann der interne Temperatursensor bis zum nächsten FakeWT aktiviert wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel eines automatischen Sendens einer externen Temperatur, der externe Temperatursensor heißt &amp;quot;WS300&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define SendExtTemp notify WS300:temperature.* {&lt;br /&gt;
 MaxFakeWallThermostat(&amp;quot;Heizung&amp;quot;,&amp;amp;#160;%EVTPART1);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dazu die Funktion, bitte in 99_MyUtils.pm eintragen:&lt;br /&gt;
&lt;br /&gt;
 sub MaxFakeWallThermostat($$)&lt;br /&gt;
 {&lt;br /&gt;
  my ($heizung, $aktTemp)    = @_;&lt;br /&gt;
  my $CULMAX     = $defs{$heizung}{LASTInputDev};&lt;br /&gt;
  my $desiredTemp   = ReadingsVal($heizung, &amp;quot;desiredTemperature&amp;quot;, undef);&lt;br /&gt;
  my $windowOpenTemp = ReadingsVal($heizung, &amp;quot;windowOpenTemperature&amp;quot;, undef);&lt;br /&gt;
  my $lastTemp    = ReadingsVal($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
  my $lastSet     = ReadingsTimestamp($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
  if($desiredTemp &amp;amp;amp;&amp;amp;amp; $windowOpenTemp &amp;amp;amp;&amp;amp;amp;&lt;br /&gt;
  $desiredTemp&amp;amp;#160;!= $windowOpenTemp &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
  (time()-time_str2num($lastSet) &amp;amp;gt;= 600 || abs($aktTemp-$lastTemp)&amp;amp;gt;=0.2 )) {&lt;br /&gt;
   Log 3, &amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;;&lt;br /&gt;
   readingsSingleUpdate($defs{$heizung}, &amp;quot;LastExtTemperature&amp;quot;, $aktTemp, 0);&lt;br /&gt;
   fhem(&amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel heißt das zu steuernde Thermostat &amp;quot;Heizung&amp;quot;. Die vom externen Sensor gemessene Temperatur wird nur unter den folgenden Voraussetzungen gesendet:&lt;br /&gt;
* das Thermostat befindet sich nicht im &amp;quot;Fenster-offen&amp;quot; Modus, und&lt;br /&gt;
* das letzte Senden liegt mindestens 10min zurück&lt;br /&gt;
* oder die gemessene Temperatur weicht um mindestens 0.2°C von der letzten gesendeten Temperatur ab&lt;br /&gt;
&lt;br /&gt;
=== Wochenheizplan für Wandthermostat/Ventilantriebe erstellen ===&lt;br /&gt;
Ein Heizplan, den das Wandthermostat und auch der Ventilantrieb versteht und speichern kann, sieht folgendermaßen aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;set WZ_Wandthermostat weekProfile Mon 17,17:30,20,23:00,17 Tue 17,17:30,20,23:00,17 Wed 17,17:30,20,23:00,17 Thu 17,17:30,20,23:00,17 Fri 17,15:00,20,23:00,17 Sat 17,11:00,20,23:00,17 Sun 17,11:00,20,23:00,17&amp;lt;/code&amp;gt;&lt;br /&gt;
Genauer erläutert wird die Funktionsweise auch in der [http://fhem.de/commandref.html#MAX commandref].&lt;br /&gt;
&lt;br /&gt;
Der gesamte Block kann kopiert und als FHEM Befehl abgesetzt werden. Unter Umständen benötigt das Speichern bzw. Übertragen wegen der Größe etwas Zeit, bevor die aktuellen, neu gesetzten Werte wieder ausgelesen werden können.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte folgendes beachten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt im Zusammenhang mit dem Wochenprogramm ein Problem mit dem letzten Schaltpunkt des Tages. &lt;br /&gt;
Der Workaround wurde  [http://forum.fhem.de/index.php/topic,17231.msg112738.html#msg112738 hier]&lt;br /&gt;
beschrieben.&lt;br /&gt;
Man muss dafür sorgen, dass man kurz vor Ende des Tages noch einen Schaltpunkt setzt! Bei mir hat sich ein Schaltpunkt (ohne Änderung der Soll-Temperatur) um 23:55 bewährt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set WZ_Wandthermostat weekProfile Mon 17,17:30,20,22:00,17,23:55,17&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Werte Plotten ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
In den Log-Dateien wird regelmäßig der Batteriestatus, die Soll-Temperatur, die Ventilstellung und die Ist-Temperatur (Vorsicht: Wird nicht zuverlässig, möglicherweise nur bei einer Änderung der Ventilstellung übertragen.)&lt;br /&gt;
&lt;br /&gt;
Inhalt der LOG-Datei eines Heizkörperthermostates:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-12-30_08:55:31 MAX_018d3f battery: ok&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f desiredTemperature: 19.5&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f valveposition: 83&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f temperature: 16.4&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgender Plot-Datei (max_temp.gplot) kann der Verlauf der Sensordaten gut angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in Grad Celsius&amp;quot;&lt;br /&gt;
set ylabel &amp;quot;Signal in&amp;amp;#160;%&amp;quot;&lt;br /&gt;
#FileLog 4:desiredTemperature:0:&lt;br /&gt;
#FileLog 4:temperature:0:&lt;br /&gt;
#FileLog 4:valveposition:0:&lt;br /&gt;
plot \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;desiredTemperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Soll-Temperatur (C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;temperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Ist-Temperatur(ungenau)(C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;valveposition&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y1 title &#039;Ventil (%)&#039; with lines lw 2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Einbinden eines Plots in der fhem.cgf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Werte plotten&lt;br /&gt;
define MAX_017840_weblink weblink fileplot FileLog_MAX_017840:max_temp:CURRENT&lt;br /&gt;
attr MAX_017840_weblink label &amp;quot;Kueche Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr MAX_017840_weblink room MAX&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nützliche kleine Erweiterungen ===&lt;br /&gt;
&#039;&#039;&#039;Einen Alias-Namen vergeben für eine bessere Lesbarkeit im Webinterface&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr MAX_018d3f alias Kueche&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Die Anzeigen für die einzelnen File-Logs füllen das Webinterface schnell und machen es unübersichtlich.&#039;&#039;&#039; Die File-Logs können einfach in einen separaten Raum verbannt werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr FileLog_MAX_018d3f room LOG&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Einstellmöglichkeit für die Soll-Temperatur direkt in der „Raum-Seite“ schaffen.&#039;&#039;&#039; Die Temperatur wird dauerhaft auf einen bestimmten Wert gestellt. Das Wochenprogramm in dem Thermostat wird deaktiviert.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soll-Temperatur setzen, ohne das automatische Programm des Thermostates abzuschalten.&#039;&#039;&#039;&lt;br /&gt;
Es besteht die Möglichkeit eine Soll-Temperatur bis zum nächsten Schaltzeitpunkt zu setzen. Zum Beispiel kann das automatische Wochenprogramm in den Thermostaten dazu genutzt werden, nur abends die Soll-Temperatur zu senken. So läuft die Heizung nachts nicht voll durch. Wenn jedoch die Temperatur im Web-Interface von Fhem verändert wird, wird auch der Thermostat auf manuell gesetzt. So greift das Wochenprogramm nicht mehr. Abhilfe schafft der Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;set MAX_04711 desiredTemperature auto 20&amp;lt;/code&amp;gt; &lt;br /&gt;
Damit die Eingabe komfortabel aus Fhem möglich ist, kann ein Dummy-Device erstellt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Dummy für die Schnell-Einstellung der Temperatur bis zum nächsten automatischen Schaltzeitpunkt&lt;br /&gt;
 define HeizkoerperBad dummy&lt;br /&gt;
 attr HeizkoerperBad room MAX,Heizungen&lt;br /&gt;
 attr HeizkoerperBad setList state:eco,auto,14.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0&lt;br /&gt;
 attr HeizkoerperBad webCmd state&lt;br /&gt;
 define HeizkoerperBad.ntfy notify HeizkoerperBad.* {\&lt;br /&gt;
  my $valtemp = &amp;quot;%&amp;quot;;;\&lt;br /&gt;
  my $device = &amp;quot;MAX_04711&amp;quot;;;\&lt;br /&gt;
  my $cmd = &#039;set &#039;.$device.&#039; desiredTemperature auto &#039;.$valtemp;;\&lt;br /&gt;
  fhem($cmd);;\&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Diese Dummy-Device kann alternativ oder ergänzend zu &amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
=== IST-Temperaturwerte ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
Diese Abbildung zeigt, dass die IST-Temperatur nicht regelmäßig dem MAX CUBE mitgeteilt wird. Im Automatikbetrieb wird beim einer Änderung der Ventilstellung die neue Ventilstellung zusammen mit der aktuellen IST-Temperatur gesendet. Bei der Abbildung war die Therme in der Nacht ausgeschaltet. Daraufhin sank die Temperatur soweit ab, dass das Heizungsthermostat das Ventil in Maximalstellung geöffnet hat. Gegen 08:50 wurde die Therme eingeschaltet und die Soll-Temperatur an diesem Heizungsthermostat erhöht. Während dieser ganzen Zeit erfolgt keine Aktualisierung der Ist-Temperatur. So kommt es auch gegen 10:30 zu einem sprunghaften Temperaturanstieg von 13,5°C auf 19°C (siehe Markierung *A).&lt;br /&gt;
&lt;br /&gt;
Die IST-Temperatur wird anscheinend aktualisiert bei einer Änderung der:&lt;br /&gt;
&lt;br /&gt;
* Ventilstellung&lt;br /&gt;
* Soll-Temperatur&lt;br /&gt;
* des Betriebsmodis (Auto/Manuell)&lt;br /&gt;
&lt;br /&gt;
Wer eine detaillierte Kurven wünscht, sollte sich den [[MAX! Temperatur-Scanner]] ansehen.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
The Max devices use a CC1100 chip. For parameters see rf_moritz.c in culfw.&lt;br /&gt;
The thermostats use a Wake-On-Radio, thus one has to send packets at the right time.&lt;br /&gt;
&lt;br /&gt;
CC1100 initialization sequence on one of the max devices (not Cube) (format: addr value, both in hex):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;00 08&lt;br /&gt;
 02 46&lt;br /&gt;
 04 C6&lt;br /&gt;
 05 26&lt;br /&gt;
 0B 06&lt;br /&gt;
 10 C8 //MDMCFG4 DRATE_E=8&lt;br /&gt;
 11 93 //MDMCFG3 DRATE_M=147, data rate = (256+DRATE_M)*2^DRATE_E/2^28*f_xosc = (9992.599) 1kbit/s (at f_xosc=26 Mhz)&lt;br /&gt;
 12 03&lt;br /&gt;
 15 34&lt;br /&gt;
 17 00&lt;br /&gt;
 18 18&lt;br /&gt;
 19 16&lt;br /&gt;
 1B 43&lt;br /&gt;
 21 56&lt;br /&gt;
 25 00&lt;br /&gt;
 26 11&lt;br /&gt;
 0D 21&lt;br /&gt;
 0E 65&lt;br /&gt;
 0F 6A&lt;br /&gt;
 07 4C //PKTCTRL1: ADR_CHK=0 APPEND_STATUS=1 CRC_AUTOFLUSH=1 PQT=2 (preamble must have 8 toggling bits before sync word detection)&lt;br /&gt;
 16 1C //RXTIME=4&lt;br /&gt;
     RX_TIME_QUAL=1 (when rx timeout expires, keep receiving if either sync word is found or PQI is set (see PQT))&lt;br /&gt;
     RX_TIME_RSSI=1 (terminate RX if there is no carrier sense within the first 8 symbol periods)&lt;br /&gt;
 20 78 //WORCTRL, WOR_RES=00 (1.8-1.9 sec), RC_CAL=1, EVENT1=7 (48 ticks), RC_PD=0&lt;br /&gt;
 1E 87 //WOREVT1&lt;br /&gt;
 1F 6B //WOREVT0, i.e. EVENT0 = 34667&lt;br /&gt;
 29 59&lt;br /&gt;
 2C 81&lt;br /&gt;
 2D 35&lt;br /&gt;
 3E C3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Not set, i.e. factory defaults:&lt;br /&gt;
 13 MDMCFG1 NUM_PREAMBLE=2 (4 preamble bytes)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
From the configuration, we see that the&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;RC Oscillator: f_xosc/750 = 34666.66 Hz&lt;br /&gt;
 Event1 = Event1(=48 ticks)/RC Oscillator = 1.385 ms&lt;br /&gt;
 t_Event0 = 750/26Mhz * EVENT0 * 2^(5*WOR_RES) = 1.00 second&lt;br /&gt;
 C(RX_TIME, WOR_RES)= 0.2254&lt;br /&gt;
 rx timeout = EVENT0·C(RX_TIME, WOR_RES) ·26/X(=26) = 34667*0.2254 us = 7.8139 ms&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShutterContact seems to always sleep. Thus it is necessary to trigger it manually (by opening/closing the window) to make it receive messages. Pushing the button may work to. It is also awake just after&lt;br /&gt;
pairing, so one may send messages right then. One can use the WakeUp message to keep it from sleeping for some time. (This is also the reason why in the official MAX software, one must trigger the ShutterContact&lt;br /&gt;
after removing it from the house. The &amp;quot;factoryReset&amp;quot; packet is sent directly after the &amp;quot;ShutterContactState&amp;quot; packet has been acked.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probleme und Lösungen ==&lt;br /&gt;
=== Der Wandthermostat oder Heizthermostat reagieren nicht auf Änderungen über FHEM ===&lt;br /&gt;
Das Autocreate von FHEM erkennt, wenn aktiviert, die Geräte initial und legt auch Einträge an. Es fehlt aber noch das Pairing, da sonst keine Steuerung möglich ist!&lt;br /&gt;
Wenn im Log also Meldungen wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 2: CUL_MAX_SendQueueHandler: Missing ack from 01c9bb for 0b05008212345601c9bb0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
auftauchen (im Verbose Modus 5), dann wurde vermutlich kein oder ein inkorrektes Paring durchgeführt.&lt;br /&gt;
Nach dem Pairing sollten diese Meldungen verschwinden und stattdessen etwas wie&lt;br /&gt;
:&amp;lt;code&amp;gt;2013.03.20 15:21:43 5: Got matching ack&amp;lt;/code&amp;gt;&lt;br /&gt;
auftauchen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:MAX]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=10023</id>
		<title>MAX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=10023"/>
		<updated>2015-02-11T17:44:02Z</updated>

		<summary type="html">&lt;p&gt;Mahowi: Status wird auch bei MAXLAN angezeigt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;MAX!&#039;&#039;&#039; ist eine Heizungssteuerung, die die Raumtemperatur durch funkvernetzte Heizkörperthermostate an den Heizkörpern regelt. MAX! stellt eine Alternative zur [[:Kategorie:FHT Components|FHT]] und [[HomeMatic]] Heizungsteuerung dar.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Bidirektionale Kommuniktion (jeder Befehl wird mit ACK quittiert)&lt;br /&gt;
* Heizkörperthermostate übertragen auch die gemessene Temperatur&lt;br /&gt;
&lt;br /&gt;
== FHEM Module ==&lt;br /&gt;
Die MAX Komponenten können über den MAX!Cube per Modul 00_MAXLAN oder über einen [[CUL]] oder [[CUNO]] per 14_CUL_MAX gesteuert werden. In beiden Fällen werden die einzelnen MAX! Geräte vom Modul 10_MAX&lt;br /&gt;
bereitgestellt.&lt;br /&gt;
&lt;br /&gt;
Nachteil vom Cube ist, dass man ein Polling machen muss, um zu sehen ob sich der Status eines Gerätes geändert hat. Z.B. checkt man das alle 30 Sekunden. Dann sieht man aber auch Änderungen möglicherweise erst nach 30 Sekunden. Beim CUL sieht man die Funknachrichten direkt. Es wird aber auch ein Kombimodus unterstützt, in welchem man alles über den MAXLAN steuert, der CUL_MAX aber für zeitnahe Benachrichtigungen sorgt.&lt;br /&gt;
&lt;br /&gt;
== Komponenten ==&lt;br /&gt;
=== Limit ===&lt;br /&gt;
* Auf 8 Thermostate pro Raum beschränkt&lt;br /&gt;
* Limit mit Cube liegt bei ca. 140 Geräten. Durch die [[1% Regel]] dürften es aber in der Praxis weniger sein&lt;br /&gt;
&lt;br /&gt;
=== Heizkörperthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature = auto (Wochenprogramm), manuell (4.5 - 30.5), eco, comfort, boost, until&lt;br /&gt;
** (Besonderheit der Werte: 4.5 = Off und 30.5 = On)&lt;br /&gt;
* ecoTemperature, comfortTemperature, measurementOffset, maximumTemperature, minimumTemperature, windowOpenTemperature, windowOpenDuration&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur. (Hinweis: Wird bei Verwendung des MAX CUBE nicht regelmäßig aktualisiert)&lt;br /&gt;
&lt;br /&gt;
=== Fensterkontakte ===&lt;br /&gt;
Der aktuelle Status (offen/geschlossen) wird (praktisch ohne Verzögerung) angezeigt.&lt;br /&gt;
&lt;br /&gt;
Falls wir nicht mit Ack antworten, wird er mehrmals wiederholt.&lt;br /&gt;
&lt;br /&gt;
Die Fensterkontakte können zusätzlich direkt an mehrere Heizkörperthermostate angelernt werden, und versetzen diese dann automatisch in windowOpenTemperature während sie geöffnet sind.&lt;br /&gt;
&lt;br /&gt;
Wenn der Fensterkontakt an mindestens ein Heizkörperthermostat angelernt ist, dann sendet er zusätzlich stündlich seinen aktuellen Zustand.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Autocreate&#039;&#039;&#039;&lt;br /&gt;
 MAXLAN_Parse: Paired new device, type ShutterContact, addr 1a2b3c, serial JEQ0123456&lt;br /&gt;
 autocreate: define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
 autocreate: define FileLog_MAX_1a2b3c FileLog /fhem/log/MAX_1a2b3c-%Y.log MAX_1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Definition&#039;&#039;&#039;&lt;br /&gt;
 define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Log&#039;&#039;&#039;&lt;br /&gt;
 ==&amp;gt; MAX_1a2b3c-2013.log &amp;lt;==&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c battery: ok&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c onoff: 0&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c closed&lt;br /&gt;
&lt;br /&gt;
=== Wandthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature (siehe Heizkörperthermostate), ecoTemperature, comfortTemperature&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur.&lt;br /&gt;
&lt;br /&gt;
=== Eco-Taster ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Zumindest über MAXLAN lässt sich der Zustand weder auslesen, noch wird man über Veränderungen informiert.&lt;br /&gt;
&lt;br /&gt;
Per CUL_MAX funktioniert der Eco-Taster problemlos.&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Definition ====&lt;br /&gt;
:&amp;lt;code&amp;gt;define BUTTON.EG MAX PushButton 069d33&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Event-Ausgabe ====&lt;br /&gt;
&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG battery: ok&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG onoff: 0&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG closed&lt;br /&gt;
&lt;br /&gt;
Wobei gilt&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! onoff !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Eco&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Auto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anlernen per CUL ==&lt;br /&gt;
Das Anlernen funktioniert nur mit zurückgesetzen (Werksreset, also entweder alle 3 Tasten am Heizkörperthermostate betätigen, Batterien einlegen, Anzeige rES; oder in FHEM set factoryReset) Heizkörperthermostaten. Bereits an einen Cube angelernte Heizungsregler können &#039;&#039;&#039;nicht&#039;&#039;&#039; an ein CUL angemeldet werden, hier ist dann nur das &amp;quot;mitlesen&amp;quot; der Funkbotschaften möglich.&lt;br /&gt;
 &lt;br /&gt;
Info: Durch den Reset geht auch ein evtl. per Cube eingestelltes Automatikprogramm verloren.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Siehe [http://fhem.de/commandref.html#CUL_MAX commandref].&lt;br /&gt;
&lt;br /&gt;
Die Module sind so konzipiert, dass man die offizielle Max! Software nicht benutzen muss. Man kann alles aus FHEM heraus machen. Nachdem das MAXLAN oder CUL_MAX Modul konfiguriert wurden (siehe unten), werden bereits gepairte Geräte automatisch erkannt.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
:&amp;lt;code&amp;gt;define ml MAXLAN 192.168.178.2&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei 192.168.178.2 die IP des MAX! Cube ist. Das MAXLAN-Modul findet selbstständig bereits gepairte Geräte und trägt diese in die Konfigurationsdatei fhem.cfg ein. Diese können dann im WEB-Interface mittels „alias“ einen eindeutigen Namen bekommen.&lt;br /&gt;
&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 attr CUL0 rfmode MAX&lt;br /&gt;
 define cm CUL_MAX 123456&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anlernen ===&lt;br /&gt;
Dazu muss der &amp;quot;pairmode&amp;quot; auf MAXLAN/CUL_MAX per &lt;br /&gt;
:&amp;lt;code&amp;gt;set ml/cm pairmode&amp;lt;/code&amp;gt;&lt;br /&gt;
oder über das Web-Interface aktiviert werden. Falls kein Parameter angegeben wird, ist er standardmäßig für 60 Sekunden aktiviert. In dieser Zeit können MAX! Geräte nach deren Anleitung in den Anlernmodus versetzt werden, um sie mit FHEM zu pairen.&lt;br /&gt;
&lt;br /&gt;
=== Geräte untereinander anlernen ===&lt;br /&gt;
Es gibt einen anderen Befehl, um Devices untereinander anzulernen (in neueren Versionen des MAX Moduls enthalten, heißt &amp;quot;associate&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Wenn man z.B.&lt;br /&gt;
:&amp;lt;code&amp;gt;set MAXFensterKontakt0 associate MaxHeizkörperthermostat3&amp;lt;/code&amp;gt;&lt;br /&gt;
ausführt, dann sendet der MAXFensterKontakt0 jede Änderung zusätzlich (direkt über Funk, ohne Cube oder FHEM) an das MaxHeizkörperthermostat3.&lt;br /&gt;
&lt;br /&gt;
Damit MaxHeizkörperthermostat3 auch auf die Nachrichten vom MAXFensterKontakt0 hört, muss noch ein&lt;br /&gt;
set MaxHeizkörperthermostat3 associate MAXFensterKontakt0 erfolgen.&lt;br /&gt;
&lt;br /&gt;
Dann wechselt MaxHeizkörperthermostat3 immer dann auf die windowOpenTemperature, wenn der AXFensterKontakt0 offen ist. Dabei muss die groupId von beiden Geräte gar nicht gleich sein! (Die Semantik der groupId erschließt sich mir deshalb noch nicht ganz. Ich glaube, man kann damit Befehle (ala set desiredTemperature) an mehrere Thermostate gleichzeitig richten. Im Moment sendet FHEM einfach an jedes Thermostat einen Befehl.)&lt;br /&gt;
&lt;br /&gt;
Wahrscheinlich funktioniert associate genauso zwischen Heizkörper/Wandthermostaten. Das müsste mal jemand ausprobieren und dann hier berichten.&lt;br /&gt;
&lt;br /&gt;
=== Temperatursturzerkennung ===&lt;br /&gt;
Die Heizkörperthermostate verfügen über eine interne &amp;quot;Fenster-offen Erkennung&amp;quot; (Temperatursturzerkennung). Wird diese ausgelöst, regeln sie für die Zeit die unter &amp;quot;windowOpenDuration&amp;quot; festgelegt wurde auf die als &amp;quot;windowOpenTemperature&amp;quot; festgelegt Temperatur herunter und danach wieder auf die zuvor eingestellte Temperatur zurück.&lt;br /&gt;
&lt;br /&gt;
Nachteil: Die Erkennung benötigt etwas Zeit und reagiert nicht sofort wie es beim Fensterkontakt oben der Fall ist&lt;br /&gt;
&lt;br /&gt;
Vorteil: Es ist kein Fensterkontakt erforderlich&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Setzt man die windowOpenTemperature auf &amp;quot;Off&amp;quot; (= 4.5 Grad), dann ist die Fenster-offen-Funktion abgeschaltet. Und auch wenn die desiredTemperature gerade auf &amp;quot;On&amp;quot; (= 30.5 Grad&amp;quot;) steht, geht der Heizkörper nicht in die Fenster-offen-Funktion.&lt;br /&gt;
&lt;br /&gt;
=== Externer Sensor für Fenster-offen-Erkennung ===&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate in und aus dem Fenster-offen Modus zu holen. Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir müssen einmalig den internen Fake-Fensterkontakt mit dem Heizkörper assozieren&lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizung associate fakeShutterContact&amp;lt;/code&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Fensterkontakt akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeSC Heizung 1&amp;lt;/code&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster offen&amp;quot; an die Heizung senden und per&lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeSC Heizung 0&amp;lt;/code&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster zu&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Externer Temperatursensor für Heizkörperregelung ===&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate zu regeln. Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir müssen einmalig das interne Fake-Wandthermostat mit dem Heizkörper assozieren: &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizung associate fakeWallThermostat&amp;lt;/code&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Wandthermostat akzeptiert. Achtung: Dies schaltet im&lt;br /&gt;
Heizkörperthermostat die Regelung mit dem internen Temperaturfühler aus. Ohne die gleich kommenden &amp;quot;fakeWT&amp;quot; Nachrichten wird das Heizkörperthermostat nicht mehr regeln.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
:&amp;lt;code&amp;gt;set cm fakeWT Heizung 14.5 12.1&amp;lt;/code&amp;gt;&lt;br /&gt;
die desiredTemperature 14.5 und gemessene Temperatur 12.1 an die Heizung senden. Diese wird dann die Ventile öffnen, bis wir ein &amp;quot;fakeWT&amp;quot; absetzten, dessen gemessene Temperatur höher als die desiredTemperature ist.&lt;br /&gt;
&lt;br /&gt;
Falls man zu lange Zeit (ca. 30 Minuten) kein neues &amp;quot;fakeWT&amp;quot; sendet, wird bei der Heizung das Attribut rferror gleich 1. Es ist nicht klar, ob das neben diesem Attribut auch Auswirkung auf die Funktionalität hat. Es wurde beobachtet, dass dann der interne Temperatursensor bis zum nächsten FakeWT aktiviert wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel eines automatischen Sendens einer externen Temperatur, der externe Temperatursensor heißt &amp;quot;WS300&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define SendExtTemp notify WS300:temperature.* {&lt;br /&gt;
 MaxFakeWallThermostat(&amp;quot;Heizung&amp;quot;,&amp;amp;#160;%EVTPART1);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dazu die Funktion, bitte in 99_MyUtils.pm eintragen:&lt;br /&gt;
&lt;br /&gt;
 sub MaxFakeWallThermostat($$)&lt;br /&gt;
 {&lt;br /&gt;
  my ($heizung, $aktTemp)    = @_;&lt;br /&gt;
  my $CULMAX     = $defs{$heizung}{LASTInputDev};&lt;br /&gt;
  my $desiredTemp   = ReadingsVal($heizung, &amp;quot;desiredTemperature&amp;quot;, undef);&lt;br /&gt;
  my $windowOpenTemp = ReadingsVal($heizung, &amp;quot;windowOpenTemperature&amp;quot;, undef);&lt;br /&gt;
  my $lastTemp    = ReadingsVal($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
  my $lastSet     = ReadingsTimestamp($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
  if($desiredTemp &amp;amp;amp;&amp;amp;amp; $windowOpenTemp &amp;amp;amp;&amp;amp;amp;&lt;br /&gt;
  $desiredTemp&amp;amp;#160;!= $windowOpenTemp &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
  (time()-time_str2num($lastSet) &amp;amp;gt;= 600 || abs($aktTemp-$lastTemp)&amp;amp;gt;=0.2 )) {&lt;br /&gt;
   Log 3, &amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;;&lt;br /&gt;
   readingsSingleUpdate($defs{$heizung}, &amp;quot;LastExtTemperature&amp;quot;, $aktTemp, 0);&lt;br /&gt;
   fhem(&amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel heißt das zu steuernde Thermostat &amp;quot;Heizung&amp;quot;. Die vom externen Sensor gemessene Temperatur wird nur unter den folgenden Voraussetzungen gesendet:&lt;br /&gt;
* das Thermostat befindet sich nicht im &amp;quot;Fenster-offen&amp;quot; Modus, und&lt;br /&gt;
* das letzte Senden liegt mindestens 10min zurück&lt;br /&gt;
* oder die gemessene Temperatur weicht um mindestens 0.2°C von der letzten gesendeten Temperatur ab&lt;br /&gt;
&lt;br /&gt;
=== Wochenheizplan für Wandthermostat/Ventilantriebe erstellen ===&lt;br /&gt;
Ein Heizplan, den das Wandthermostat und auch der Ventilantrieb versteht und speichern kann, sieht folgendermaßen aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;set WZ_Wandthermostat weekProfile Mon 17,17:30,20,23:00,17 Tue 17,17:30,20,23:00,17 Wed 17,17:30,20,23:00,17 Thu 17,17:30,20,23:00,17 Fri 17,15:00,20,23:00,17 Sat 17,11:00,20,23:00,17 Sun 17,11:00,20,23:00,17&amp;lt;/code&amp;gt;&lt;br /&gt;
Genauer erläutert wird die Funktionsweise auch in der [http://fhem.de/commandref.html#MAX commandref].&lt;br /&gt;
&lt;br /&gt;
Der gesamte Block kann kopiert und als FHEM Befehl abgesetzt werden. Unter Umständen benötigt das Speichern bzw. Übertragen wegen der Größe etwas Zeit, bevor die aktuellen, neu gesetzten Werte wieder ausgelesen werden können.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte folgendes beachten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt im Zusammenhang mit dem Wochenprogramm ein Problem mit dem letzten Schaltpunkt des Tages. &lt;br /&gt;
Der Workaround wurde  [http://forum.fhem.de/index.php/topic,17231.msg112738.html#msg112738 hier]&lt;br /&gt;
beschrieben.&lt;br /&gt;
Man muss dafür sorgen, dass man kurz vor Ende des Tages noch einen Schaltpunkt setzt! Bei mir hat sich ein Schaltpunkt (ohne Änderung der Soll-Temperatur) um 23:55 bewährt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set WZ_Wandthermostat weekProfile Mon 17,17:30,20,22:00,17,23:55,17&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Werte Plotten ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
In den Log-Dateien wird regelmäßig der Batteriestatus, die Soll-Temperatur, die Ventilstellung und die Ist-Temperatur (Vorsicht: Wird nicht zuverlässig, möglicherweise nur bei einer Änderung der Ventilstellung übertragen.)&lt;br /&gt;
&lt;br /&gt;
Inhalt der LOG-Datei eines Heizkörperthermostates:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-12-30_08:55:31 MAX_018d3f battery: ok&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f desiredTemperature: 19.5&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f valveposition: 83&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f temperature: 16.4&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgender Plot-Datei (max_temp.gplot) kann der Verlauf der Sensordaten gut angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in Grad Celsius&amp;quot;&lt;br /&gt;
set ylabel &amp;quot;Signal in&amp;amp;#160;%&amp;quot;&lt;br /&gt;
#FileLog 4:desiredTemperature:0:&lt;br /&gt;
#FileLog 4:temperature:0:&lt;br /&gt;
#FileLog 4:valveposition:0:&lt;br /&gt;
plot \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;desiredTemperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Soll-Temperatur (C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;temperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Ist-Temperatur(ungenau)(C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;valveposition&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y1 title &#039;Ventil (%)&#039; with lines lw 2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Einbinden eines Plots in der fhem.cgf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Werte plotten&lt;br /&gt;
define MAX_017840_weblink weblink fileplot FileLog_MAX_017840:max_temp:CURRENT&lt;br /&gt;
attr MAX_017840_weblink label &amp;quot;Kueche Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr MAX_017840_weblink room MAX&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nützliche kleine Erweiterungen ===&lt;br /&gt;
&#039;&#039;&#039;Einen Alias-Namen vergeben für eine bessere Lesbarkeit im Webinterface&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr MAX_018d3f alias Kueche&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Die Anzeigen für die einzelnen File-Logs füllen das Webinterface schnell und machen es unübersichtlich.&#039;&#039;&#039; Die File-Logs können einfach in einen separaten Raum verbannt werden.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr FileLog_MAX_018d3f room LOG&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Einstellmöglichkeit für die Soll-Temperatur direkt in der „Raum-Seite“ schaffen.&#039;&#039;&#039; Die Temperatur wird dauerhaft auf einen bestimmten Wert gestellt. Das Wochenprogramm in dem Thermostat wird deaktiviert.&lt;br /&gt;
:&amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soll-Temperatur setzen, ohne das automatische Programm des Thermostates abzuschalten.&#039;&#039;&#039;&lt;br /&gt;
Es besteht die Möglichkeit eine Soll-Temperatur bis zum nächsten Schaltzeitpunkt zu setzen. Zum Beispiel kann das automatische Wochenprogramm in den Thermostaten dazu genutzt werden, nur abends die Soll-Temperatur zu senken. So läuft die Heizung nachts nicht voll durch. Wenn jedoch die Temperatur im Web-Interface von Fhem verändert wird, wird auch der Thermostat auf manuell gesetzt. So greift das Wochenprogramm nicht mehr. Abhilfe schafft der Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;set MAX_04711 desiredTemperature auto 20&amp;lt;/code&amp;gt; &lt;br /&gt;
Damit die Eingabe komfortabel aus Fhem möglich ist, kann ein Dummy-Device erstellt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Dummy für die Schnell-Einstellung der Temperatur bis zum nächsten automatischen Schaltzeitpunkt&lt;br /&gt;
 define HeizkoerperBad dummy&lt;br /&gt;
 attr HeizkoerperBad room MAX,Heizungen&lt;br /&gt;
 attr HeizkoerperBad setList state:eco,auto,14.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0&lt;br /&gt;
 attr HeizkoerperBad webCmd state&lt;br /&gt;
 define HeizkoerperBad.ntfy notify HeizkoerperBad.* {\&lt;br /&gt;
  my $valtemp = &amp;quot;%&amp;quot;;;\&lt;br /&gt;
  my $device = &amp;quot;MAX_04711&amp;quot;;;\&lt;br /&gt;
  my $cmd = &#039;set &#039;.$device.&#039; desiredTemperature auto &#039;.$valtemp;;\&lt;br /&gt;
  fhem($cmd);;\&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Diese Dummy-Device kann alternativ oder ergänzend zu &amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
=== IST-Temperaturwerte ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
Diese Abbildung zeigt, dass die IST-Temperatur nicht regelmäßig dem MAX CUBE mitgeteilt wird. Im Automatikbetrieb wird beim einer Änderung der Ventilstellung die neue Ventilstellung zusammen mit der aktuellen IST-Temperatur gesendet. Bei der Abbildung war die Therme in der Nacht ausgeschaltet. Daraufhin sank die Temperatur soweit ab, dass das Heizungsthermostat das Ventil in Maximalstellung geöffnet hat. Gegen 08:50 wurde die Therme eingeschaltet und die Soll-Temperatur an diesem Heizungsthermostat erhöht. Während dieser ganzen Zeit erfolgt keine Aktualisierung der Ist-Temperatur. So kommt es auch gegen 10:30 zu einem sprunghaften Temperaturanstieg von 13,5°C auf 19°C (siehe Markierung *A).&lt;br /&gt;
&lt;br /&gt;
Die IST-Temperatur wird anscheinend aktualisiert bei einer Änderung der:&lt;br /&gt;
&lt;br /&gt;
* Ventilstellung&lt;br /&gt;
* Soll-Temperatur&lt;br /&gt;
* des Betriebsmodis (Auto/Manuell)&lt;br /&gt;
&lt;br /&gt;
Wer eine detaillierte Kurven wünscht, sollte sich den [[MAX! Temperatur-Scanner]] ansehen.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
The Max devices use a CC1100 chip. For parameters see rf_moritz.c in culfw.&lt;br /&gt;
The thermostats use a Wake-On-Radio, thus one has to send packets at the right time.&lt;br /&gt;
&lt;br /&gt;
CC1100 initialization sequence on one of the max devices (not Cube) (format: addr value, both in hex):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;00 08&lt;br /&gt;
 02 46&lt;br /&gt;
 04 C6&lt;br /&gt;
 05 26&lt;br /&gt;
 0B 06&lt;br /&gt;
 10 C8 //MDMCFG4 DRATE_E=8&lt;br /&gt;
 11 93 //MDMCFG3 DRATE_M=147, data rate = (256+DRATE_M)*2^DRATE_E/2^28*f_xosc = (9992.599) 1kbit/s (at f_xosc=26 Mhz)&lt;br /&gt;
 12 03&lt;br /&gt;
 15 34&lt;br /&gt;
 17 00&lt;br /&gt;
 18 18&lt;br /&gt;
 19 16&lt;br /&gt;
 1B 43&lt;br /&gt;
 21 56&lt;br /&gt;
 25 00&lt;br /&gt;
 26 11&lt;br /&gt;
 0D 21&lt;br /&gt;
 0E 65&lt;br /&gt;
 0F 6A&lt;br /&gt;
 07 4C //PKTCTRL1: ADR_CHK=0 APPEND_STATUS=1 CRC_AUTOFLUSH=1 PQT=2 (preamble must have 8 toggling bits before sync word detection)&lt;br /&gt;
 16 1C //RXTIME=4&lt;br /&gt;
     RX_TIME_QUAL=1 (when rx timeout expires, keep receiving if either sync word is found or PQI is set (see PQT))&lt;br /&gt;
     RX_TIME_RSSI=1 (terminate RX if there is no carrier sense within the first 8 symbol periods)&lt;br /&gt;
 20 78 //WORCTRL, WOR_RES=00 (1.8-1.9 sec), RC_CAL=1, EVENT1=7 (48 ticks), RC_PD=0&lt;br /&gt;
 1E 87 //WOREVT1&lt;br /&gt;
 1F 6B //WOREVT0, i.e. EVENT0 = 34667&lt;br /&gt;
 29 59&lt;br /&gt;
 2C 81&lt;br /&gt;
 2D 35&lt;br /&gt;
 3E C3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Not set, i.e. factory defaults:&lt;br /&gt;
 13 MDMCFG1 NUM_PREAMBLE=2 (4 preamble bytes)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
From the configuration, we see that the&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;RC Oscillator: f_xosc/750 = 34666.66 Hz&lt;br /&gt;
 Event1 = Event1(=48 ticks)/RC Oscillator = 1.385 ms&lt;br /&gt;
 t_Event0 = 750/26Mhz * EVENT0 * 2^(5*WOR_RES) = 1.00 second&lt;br /&gt;
 C(RX_TIME, WOR_RES)= 0.2254&lt;br /&gt;
 rx timeout = EVENT0·C(RX_TIME, WOR_RES) ·26/X(=26) = 34667*0.2254 us = 7.8139 ms&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShutterContact seems to always sleep. Thus it is necessary to trigger it manually (by opening/closing the window) to make it receive messages. Pushing the button may work to. It is also awake just after&lt;br /&gt;
pairing, so one may send messages right then. One can use the WakeUp message to keep it from sleeping for some time. (This is also the reason why in the official MAX software, one must trigger the ShutterContact&lt;br /&gt;
after removing it from the house. The &amp;quot;factoryReset&amp;quot; packet is sent directly after the &amp;quot;ShutterContactState&amp;quot; packet has been acked.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probleme und Lösungen ==&lt;br /&gt;
=== Der Wandthermostat oder Heizthermostat reagieren nicht auf Änderungen über FHEM ===&lt;br /&gt;
Das Autocreate von FHEM erkennt, wenn aktiviert, die Geräte initial und legt auch Einträge an. Es fehlt aber noch das Pairing, da sonst keine Steuerung möglich ist!&lt;br /&gt;
Wenn im Log also Meldungen wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 2: CUL_MAX_SendQueueHandler: Missing ack from 01c9bb for 0b05008212345601c9bb0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
auftauchen (im Verbose Modus 5), dann wurde vermutlich kein oder ein inkorrektes Paring durchgeführt.&lt;br /&gt;
Nach dem Pairing sollten diese Meldungen verschwinden und stattdessen etwas wie&lt;br /&gt;
:&amp;lt;code&amp;gt;2013.03.20 15:21:43 5: Got matching ack&amp;lt;/code&amp;gt;&lt;br /&gt;
auftauchen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:MAX]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Mahowi</name></author>
	</entry>
</feed>