<?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=Maddinthebrain</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=Maddinthebrain"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Maddinthebrain"/>
	<updated>2026-04-27T01:26:37Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HomeConnect&amp;diff=33516</id>
		<title>HomeConnect</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HomeConnect&amp;diff=33516"/>
		<updated>2020-07-16T19:25:05Z</updated>

		<summary type="html">&lt;p&gt;Maddinthebrain: /* Modul-Installation */Nötiges Perlmodul Switch ergänzt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Anbindung von Hausgeräten mit Home Connect Schnittstelle&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=Home Connect&lt;br /&gt;
|ModTechName=48_HomeConnectConnection.pm 48_HomeConnect.pm&lt;br /&gt;
|ModOwner=swhome&lt;br /&gt;
}}&lt;br /&gt;
==Übersicht==&lt;br /&gt;
Mit den beiden Modulen HomeConnectConnection und HomeConnect können in FHEM Devices für [http://www.home-connect.com/de/de/ Home Connect Hausgeräte] angelegt werden, die an einem Home Connect Account angemeldet sind. Mögliche Hausgeräte sind aktuell Backöfen, Spülmaschinen, Kühlschränke, Waschmaschinen, Wäschetrockner und Kaffeemaschinen der Marken Bosch, Siemens und Neff.&lt;br /&gt;
&lt;br /&gt;
Wann verwendet man HomeConnectConnection, wann HomeConnect?&lt;br /&gt;
&lt;br /&gt;
Das Modul HomeConnectConnection verwaltet die Verbindung zwischen FHEM und einem Home Connect Account. Es legt die HomeConnect Devices für die einzelnen Hausgeräte an.&lt;br /&gt;
&lt;br /&gt;
==Aktueller Status des Moduls==&lt;br /&gt;
Die beiden Module befinden sich aktuell im Betatest. Jeder Tester muss sich bei Home Connect als Entwickler anmelden und den Login-Namen seines Home Connect App Accounts hinterlegen. Was jeder auch ohne eigene Geräte probieren kann ist der Hausgeräte-Simulator. Allerdings kann man damit in der Praxis nicht viel anfangen...&lt;br /&gt;
&lt;br /&gt;
==Definition von FHEM Devices==&lt;br /&gt;
===Modul-Installation===&lt;br /&gt;
Zur Installation (oder zum Update) einfach diesen Befehl in der FHEM Kommandozeile eingeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update all https://raw.githubusercontent.com/sw-home/FHEM-HomeConnect/master/controls_homeconnect.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ggf. ist das Perlmodul &#039;&#039;Switch&#039;&#039; erforderlich. Dieses mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install libswitch-perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
installieren. &lt;br /&gt;
&lt;br /&gt;
Danach FHEM neu starten.&lt;br /&gt;
&lt;br /&gt;
Damit das Modul auch bei einem normale &amp;quot;update check&amp;quot; mit geprüft wird, muss folgendes ergänzt werden&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update add https://raw.githubusercontent.com/sw-home/FHEM-HomeConnect/master/controls_homeconnect.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Basisdefinition===&lt;br /&gt;
Um mit dem Simulator zu testen, braucht Ihr einen [https://developer.home-connect.com/ Entwickleraccount bei HomeConnect]&lt;br /&gt;
&lt;br /&gt;
Man braucht zwingend einen Advanced Account um Geräte fernstarten zu dürfen. Das kostet nichts, es wird jedoch eine Namensverifikation durchgeführt.&lt;br /&gt;
&lt;br /&gt;
Im Entwickleraccount muss eine Applikation generiert werden, als „Company Name“ im Home Connect Developer Portal bitte “FHEM Betatester“ angeben. Die wichtigste Einstellung der Applikation ist die Redirect URL. Diese URL muss den Host enthalten, den Ihr in Eurer Umgebung für den Zugriff auf FHEM verwendet, also localhost oder 192.168.x.y, und sie muss ein Kommando in dem definierten HomeConnectConnection Modul aufrufen. Die URL sieht dann z.B. so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8083/fhem?cmd.Test=set%20hcconn%20auth%20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die identische URL muss sowohl auf der Home Connect Seite in der Applikation angegeben werden, als auch bei der Definition in FHEM. Dazu kommen noch der generierte API Key und das Client Secret:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define hcconn HomeConnectConnection API-KEY REDIRECT-URL simulator CLIENT-SECRET&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also zum Beispiel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define hcconn HomeConnectConnection D239EBCABC99994D239EBCABC999B3D2393204 &lt;br /&gt;
http://localhost:8083/fhem?cmd.Test=set%20hcconn%20auth%20 simulator 994D239EBCABCBCABC999B3D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach findet Ihr in dem neuen Device hcconn einen Link namens Home Connect Login. Diesen klicken und die Anmeldung wird durchgeführt. Danach im hcconn-Device noch scanDevices ausführen und Ihr solltet eine stattliche Anzahl Hausgeräte finden.&lt;br /&gt;
&lt;br /&gt;
Um mit echten Geräten zu arbeiten, muss das Wort simulator in der Definition entfernt werden.&lt;br /&gt;
&lt;br /&gt;
====Fehler während der Installation====&lt;br /&gt;
&lt;br /&gt;
Kam es beim vorangegangenen define zu folgender Fehlermeldung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Cannot load module HomeConnectConnection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dann ist die Perl-Bibliothek &amp;quot;libswitch-perl&amp;quot; zu installieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install libswitch-perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sicherheitsfunktion csrfToken in FHEM==&lt;br /&gt;
Neueste Versionen von FHEM verwenden eine [[csrfToken-HowTo|XSRF Schutzfunktion]]. Wer diese benutzen möchte, muss ein statisches Token definieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr WEB csrfToken myToken123&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
und muss dann an seine redirectURL noch diesen Teil anhängen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;fwcsrf=myToken123&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define hcconn HomeConnectConnection D239EBCABC99994D239EBCABC999B3D2393204 &lt;br /&gt;
http://localhost:8083/fhem?cmd.Test=set%20hcconn%20auth%20&amp;amp;fwcsrf=myToken123 simulator&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig wie immer: Die Redirect URL muss sowohl im Home Connect Developer Program als auch in der Definition des FHEM HomeConnectConnection devices geändert werden.&lt;br /&gt;
&lt;br /&gt;
==Problembehandlung==&lt;br /&gt;
Frage: Wenn ich Zuhause bin, erreiche ich meinen FHEM-Server unter: https:// 192.168.x.x:8083/fhem. &lt;br /&gt;
Aus dem Internet erreiche ich FHEM  über eine statische IP und Port-forwarding. Funktioniert das dann auch?&lt;br /&gt;
&lt;br /&gt;
Antwort: Es muss kein Zugriff aus dem Internet auf den lokalen Server freigeschaltet werden, der Redirect passiert im eigenen Browser. &lt;br /&gt;
Aktuell ist nur eine redirect URL möglich, daher müsstest Du dich beim Home Connect Login für eine Variante entscheiden. Man muss sich ja nicht ständig neu einloggen. Ich habe aber gehört dass zukünftig mal eine Liste von URL&#039;s hinterlegt werden kann.&lt;br /&gt;
&lt;br /&gt;
Frage: Ich bekomme &#039;&#039;&#039;vor&#039;&#039;&#039; dem Home Connect Login eine Fehlermeldung, sofort nach dem Klick auf &amp;quot;Home Connect Login&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Antwort: Entweder ist der API Key falsch oder die Redirect URL. Letztere muss den korrekten Hostnamen und Port enthalten, und auch den Namen des HomeConnectConnection device in der FHEM Installation. Diese URL muss identisch in der Home Connect App Definition und in der FHEM Definition eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Frage: Ich bekomme &#039;&#039;&#039;nach&#039;&#039;&#039; dem Home Connect Login &amp;quot;Error&amp;quot; als Meldung in FHEM&lt;br /&gt;
&lt;br /&gt;
Antwort: Dann hat Deine Redirect URL gestimmt und es ist was faul mit dem Api Key. &lt;br /&gt;
&lt;br /&gt;
- Inspiziere mal genau die URL der Seite wo &amp;quot;Error&amp;quot; steht, vielleicht findest Du dort noch eine Fehlermeldung. &lt;br /&gt;
&lt;br /&gt;
- Hast Du das Wort simulator in der Definition mit angegeben? Nur freigeschaltete Betatester können echte Hausgeräte steuern.&lt;br /&gt;
&lt;br /&gt;
- Hast Du einen Advanced Account? Wenn nicht, können die Rechte von FHEM so eingeschränkt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr hcconn accessScope IdentifyAppliance Monitor &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frage: Die Geräte werden angelegt, aber das einzige, was ich angeboten bekomme ist: StartProgram RemoteProgramNotEnabled&lt;br /&gt;
&lt;br /&gt;
Antwort: Du musst den Fernstart der Spülmaschine aktivieren, erst danach darf FHEM sie starten.&lt;br /&gt;
&lt;br /&gt;
Frage: Nach dem Erlauben des Zugriffs bei HomeConnect erscheint nur ein weißer Bildschirm.&lt;br /&gt;
&lt;br /&gt;
Antwort: Du musst das Attribut csrfToken deines FHEMWEB auf none setzen (oder wie oben beschrieben ein statisches Token installieren)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr WEB csrfToken none&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Unterstützte Geräte==&lt;br /&gt;
Grundsätzlich funktionieren alle Home Connect Geräte, d.h. sie werden zumindest in FHEM angelegt und ihr Status wird sichtbar. Steuern kann man sie aktuell jedoch noch nicht alle.&lt;br /&gt;
===Backofen===&lt;br /&gt;
Steuerung aktuell nicht möglich, aber der Status wird angezeigt&lt;br /&gt;
===Geschirrspüler===&lt;br /&gt;
Steuerung möglich, Status wird angezeigt. Die Programmoption BSH.Common.Option.StartInRelative kann vor dem Programmstart auf eine Anzahl Sekunden gesetzt werden, um die der Start verzögert werden soll.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Maddinthebrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DWD_OpenData&amp;diff=33515</id>
		<title>DWD OpenData</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DWD_OpenData&amp;diff=33515"/>
		<updated>2020-07-16T19:22:12Z</updated>

		<summary type="html">&lt;p&gt;Maddinthebrain: /* Vorbereitung */Nötiges Perlmodul DateTime ergänzt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Versionsänderung: Die Vorhersagedaten wurden Mitte September 2018 von CSV auf KML umgestellt. Diese Umstellung ist inkompatibel: das DWD_OpenData-Modul muss aktualisiert werden, einige Reading-Namen haben sich geändert und der Weblink muss deinstalliert und neu installiert werden (siehe diesen {{Link2Forum|Topic=83097|Message=840270|Linktext=Beitrag im Forum}}).}}&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
Infobox Modul&lt;br /&gt;
|ModPurpose=Daten vom DWD OpenData Server abrufen&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=DWD_OpenData&lt;br /&gt;
|ModForumArea=Unterstützende Dienste/Wettermodule&lt;br /&gt;
|ModTechName=55_DWD_OpenData.pm&lt;br /&gt;
|ModOwner=JensB ({{Link2FU|14024|Forum}}/[[Benutzer Diskussion:JensB|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Der Deutsche Wetterdienst (DWD) stellt Wetterdaten über den [https://www.dwd.de/DE/leistungen/opendata/opendata.html Open Data Server] zur Verfügung. Die Verwendung dieses Dienstes und der vom DWD zur Verfügung gestellten Daten unterliegt den auf der OpenData Webseite beschriebenen Bedingungen. Einen Überblick über die verfügbaren Daten findet man in der Tabelle [https://www.dwd.de/DE/leistungen/opendata/help/inhalt_allgemein/opendata_content_de_en_xls.xls OpenData_weather_content.xls].&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Aufgrund der unterschiedlichen vom DWD bereitgestellten Datenformate benötigt das Modul zur Dekodierung je nach gewünschtem Funktionsumfang zusätzliche Perl-Module, die nicht standardmäßig vorinstalliert sind und je nach Systemkonfiguration nachinstalliert werden müssen. Außerdem unterstützt das Modul Zeitzonen, um z.B. die Wettervorhersage internationaler Stationen in Ortszeit darstellen zu können. Hierfür sind je nach Systemkonfiguration weitere Einstellungen erforderlich. Auch die Sprache der Wochentage für die Wettervorhersage ist frei wählbar. Je nach Systemkonfiguration ist aber die Standardsprache u.U. auf Englisch eingestellt, was weitere Anpassungen der Systemkonfiguration erforderlich macht.&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Im folgenden wird z.T. von einem System mit Rasbian oder Debian mit System-V Startsystem ausgegangen. Auf anderen Betriebssystemen und auf Systemen mit System-D müssen die Installationsschritte ggf. angepasst werden.&lt;br /&gt;
&lt;br /&gt;
1. Für die Wettervorhersage und die Wetterwarnungen:&lt;br /&gt;
Installation des Perl-Moduls &#039;&#039;XML::LibXML&#039;&#039; über die System-Kommandozeile mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libxml-libxml-perl&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
oder mit CPAN.&lt;br /&gt;
&lt;br /&gt;
2. Weiterhin ist das Perl-Modul &#039;&#039; DateTime&#039;&#039; erforderlich. Dieses lässt sich mit &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install libdatetime-perl&amp;lt;/source&amp;gt; installieren.&lt;br /&gt;
&lt;br /&gt;
3. Falls man einen eigenen Internet-Proxy nutzt:&lt;br /&gt;
Die Konfiguration des Proxies für FHEM erfolgt z.B. durch Eintrag von&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 attr global proxy &amp;lt;myProxyHost&amp;gt;:&amp;lt;myProxyPort&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
in die [[Konfiguration]], wobei &#039;&#039;myProxyHost&#039;&#039; durch den Namen oder die IP-Adresse des Proxy-Servers ersetzt werden muss und für &#039;&#039;myProxyPort&#039;&#039; der Port des Proxy-Servers eingetragen werden muss (oft 3128).&lt;br /&gt;
&lt;br /&gt;
3. FHEM Uhrzeit und Zeitzone:&lt;br /&gt;
Durch Eingabe von &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 {localtime()}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
in die FHEM-Kommandozeile überprüfen, ob die FHEM-Uhrzeit plausibel ist. Ist dies nicht der Fall sollten die Uhrzeit auf Systemebene überprüft werden und ggf. die Systemeinstellungen angepasst werden.&lt;br /&gt;
Ermitteln der Bezeichnung der eigenen Zeitzone über die System-Kommandozeile mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tzselect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
und diese Bezeichnung in die Datei &#039;&#039;/etc/timezone&#039;&#039; eintragen und &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 export TZ=`cat /etc/timezone`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
der Datei &#039;&#039;/etc/profile&#039;&#039; hinzufügen und dann das System neu starten. Nun muss die Zeitanzeige in FHEM korrekt sein.&lt;br /&gt;
&lt;br /&gt;
4. FHEM Sprache:&lt;br /&gt;
Durch Eingabe von &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 {localtime()}&lt;br /&gt;
&amp;lt;/pre&amp;gt; in die FHEM-Kommandozeile überprüfen, in welcher Sprache der Wochentag angezeigt wird. Stimmt die Sprache nicht, dann auf der System-Kommandozeile&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/pre&amp;gt; eingeben und aus der Liste z.B. &#039;&#039;de_DE.UTF-8&#039;&#039; zusätzlich auswählen. Dieser Befehl gilt für Debian-basierte Betriebssysteme - für andere Betriebssysteme ist eine analoge Funktion zu verwenden. Mit Eingabe von &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 locale -a&lt;br /&gt;
&amp;lt;/pre&amp;gt; auf der System-Kommandozeile überprüfen, ob die ausgewählte Sprache nun zur Verfügung steht. Sollte FHEM nach einem Neustart noch immer nicht die gewünschte Sprache verwenden, kann man auf einem System V Linux durch Hinzufügen von z.B.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 export LANG=de_DE.UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt; in die Datei &#039;&#039;/etc/init.d/fhem&#039;&#039; (irgendwo zwischen &#039;&#039;start&#039;&#039; und &#039;&#039;perl&#039;&#039;) und erneutem Neustart von FHEM die Sprache für FHEM erzwingen. Bei einem Systemd Linux kann man die Einstellungen mit &#039;&#039;systemctl edit --full fhem.service&#039;&#039; bearbeiten. Spätestes jetzt muss die Wochentagsanzeige in FHEM korrekt sein.&lt;br /&gt;
&lt;br /&gt;
5. Nur für den Weblink erforderlich:&lt;br /&gt;
Installation des Perl-Moduls &#039;&#039;DateTime&#039;&#039; über die System-Kommandozeile mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 sudo apt-get install libdatetime-perl&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
oder mit CPAN.&lt;br /&gt;
&lt;br /&gt;
=== Define ===&lt;br /&gt;
Siehe {{Link2CmdRef|Anker=DWD_OpenDatadefine|Label=Commandref}}.&lt;br /&gt;
&lt;br /&gt;
=== Attributes ===&lt;br /&gt;
Siehe {{Link2CmdRef|Anker=DWD_OpenDataattr|Label=Commandref}}.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
=== Beispiel zur Modul-Einrichtung ===&lt;br /&gt;
&lt;br /&gt;
* Wettervorhersage&lt;br /&gt;
Für die Wettervorhersage muss der Stationscode ermittelt werden. Dazu den [https://www.dwd.de/DE/leistungen/met_verfahren_mosmix/mosmix_stationskatalog.pdf MOSMIX Stationskatalog] herunterladen, öffnen und die gewünschte Station heraussuchen (Spalte &#039;&#039;id&#039;&#039;). Einen Teil der deutschen Stationen kann man auch der [https://www.dwd.de/DE/derdwd/messnetz/bodenbeobachtung/messnetzkarte_boden.pdf Bodenmessnetzkarte] entnehmen. Den ermittelten Stationscode kann man dann entweder für eine Einzelabfrage als Parameter für das Kommando &#039;&#039;get forecast&#039;&#039; verwenden oder für die automatische Aktualisierung als Attribut &#039;&#039;forecastStation&#039;&#039; hinterlegen. Insgesamt werden vom DWD mehr als 70 Merkmale zur Verfügung gestellt. Eine Auflistung findet sich im Dokument [https://opendata.dwd.de/weather/lib/MetElementDefinition.xml MetElementDefinition]. Nur ein kleiner Teil der Merkmale wird in der Standardeinstellung des Moduls als Reading zur Verfügung gestellt. Wer andere Merkmale benötigt muss sie mit Komma getrennt dem Attribut &#039;&#039;forecastProperties&#039;&#039; zuweisen. Es empfiehlt sich zur Performance-Optimierung sowohl das Attribut &#039;&#039;forecastDays&#039;&#039; als auch das Attribut &#039;&#039;forecastProperties&#039;&#039; auf den tatsächlichen Bedarf einzustellen.&lt;br /&gt;
&lt;br /&gt;
* Wetterwarnungen&lt;br /&gt;
Für die Wetterwarnungen muss die Warnzelle ermittelt werden. Dazu [https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv Warnzellen-ID Katalog] herunterladen, öffnen und die gewünschte Warnzelle heraussuchen. Unterstützt werden Gemeinden (beginnen mit 8), Landkreise (beginnen mit 1 oder 9) oder Küste (beginnen mit 5). Die Warnzellen-ID kann man dann entweder für eine Einzelabfrage als Parameter für das Kommando &#039;&#039;get alerts&#039;&#039; verwenden oder für die automatische Aktualisierung als Attribut &#039;&#039;alertArea&#039;&#039; hinterlegen. Die Warnzellen-ID ist ab der 2. Stelle identisch mit den ersten Ziffern des amtlichen Gemeindeschlüssels. Man kann z.B. den Namen von Gemeinde oder Landkreis bei den [https://www.statistik-bw.de/Statistik-Portal/gemeindeverz.asp Statistischen Ämtern des Bundes und der Länder] eingeben, den amtlichen Gemeindeschlüssel ermitteln und dann mit vorangestellter 1, 8 oder 9 im Warnzellen-ID Katalog des DWD nach einem Eintrag mit exakter oder weitgehender Übereinstimmung suchen. Wem das zu kompliziert vorkommt, der kann bei mehrdeutigen Gemeinde- bzw. Landkreisbezeichnungen auch versuchen auszuprobieren, welche die richtige Warnzellen-ID ist.&lt;br /&gt;
&lt;br /&gt;
Um das Modul mit automatisch Aktualisierung von Vorhersage und Wetterwarnungen zu nutzen, kann z.B. folgendes in die [[Konfiguration]] eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 define DWD DWD_OpenData&lt;br /&gt;
 attr DWD alertArea 111000000&lt;br /&gt;
 attr DWD forecastStation 99810&lt;br /&gt;
 attr DWD forecastDays 3&lt;br /&gt;
 attr DWD forecastWW2Text 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Performance&lt;br /&gt;
Das DWD_OpenData-Modul ist ein Datenmodul mit relativ vielen Readings. In der Standardkonfiguration wird, wie bei jedem anderen FHEM Modul, bei jeder Änderung jedes Readings ein FHEM internes Ereignis erzeugt, damit andere FHEM Devices auf diese Änderungen reagieren können. Diese Ereignisse sorgen auch dafür, dass man Änderungen in der Weboberfläche sofort angezeigt bekommt, ohne die Webseite neu aufzurufen. Interessiert sich aber kein FHEM Device für die Änderungsbenachrichtigung bestimmter Readings, entsteht unnötiger Verarbeitungs-Overhead, der je nach FHEM Konfiguration und verfügbarer CPU-Leistung auch mehrere Sekunden benötigen kann und in dieser Zeit andere Abläufe blockiert. Um die Performance zu optimieren, empfiehlt es sich,  mit [[event-on-update-reading]] für eine angepasste und dadurch effizientere Verarbeitung zu sorgen, indem man nur für jene Readings Ereignisse zulässt, welche man für die Weiterverarbeitung braucht. Der DWD_OpenData_Weblink braucht z.B. gar keine Ereignisse, um zu funktionieren. Hier eine minimalistische Beispielkonfiguration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 attr DWD event-on-update-reading state,fc_state,a_state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Details zur Installation und Konfiguration des Moduls finden sich in der&lt;br /&gt;
{{Link2CmdRef|Anker=DWD_OpenData|Label=Commandref}}.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel für die Einrichtung eines Meteogramms ===&lt;br /&gt;
Um den vorhergesagten Wetterverlauf als Meteogramm in Kurvenform mit [[SVG]] darzustellen, kann man wie folgt vorgehen:&lt;br /&gt;
&lt;br /&gt;
1. 99_myUtils.pm&lt;br /&gt;
&lt;br /&gt;
Für die Bestimmung der Werte für den SVG-Plot wird eine Perl-Funktion benötigt, die in die Datei 99_myUtils.pm vor dem Ende eingefügt wird. Wer diese FHEM-Datei noch nicht nutzt, legt sie einfach an (siehe [[99_myUtils_anlegen]]).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
package main;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
 &lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# (c) mumpitzstuff 19.12.2018&lt;br /&gt;
#&lt;br /&gt;
# see https://forum.fhem.de/index.php/topic,83097.msg874150.html#msg874150&lt;br /&gt;
#&lt;br /&gt;
sub logProxy_dwd2Plot($$$$;$$$)&lt;br /&gt;
{&lt;br /&gt;
  my ($device, $fcValue, $from, $to, $fcHour, $expMode, $shiftTime) = @_;&lt;br /&gt;
  my $regex;&lt;br /&gt;
  my @rl;&lt;br /&gt;
&lt;br /&gt;
  return undef if(!$device);&lt;br /&gt;
&lt;br /&gt;
  if ($fcValue =~ s/_$//)&lt;br /&gt;
  {&lt;br /&gt;
    $regex = &amp;quot;^fc[\\d]+_[\\d]+_&amp;quot;.$fcValue.&amp;quot;\$&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    $regex = &amp;quot;^fc[\\d]+_&amp;quot;.$fcValue.&amp;quot;\$&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $fcHour = 12 if(!defined($fcHour));&lt;br /&gt;
  $expMode = &amp;quot;point&amp;quot; if(!defined($expMode));&lt;br /&gt;
  #Log3 undef,2, &amp;quot;Regex: &amp;quot;.$regex;&lt;br /&gt;
&lt;br /&gt;
  # ermitteln aller relevanten Readings&lt;br /&gt;
  if ( defined($defs{$device}) )&lt;br /&gt;
  {&lt;br /&gt;
    if ( $defs{$device}{TYPE} eq &amp;quot;DWD_OpenData&amp;quot; )&lt;br /&gt;
    {&lt;br /&gt;
      @rl = sort&lt;br /&gt;
      {&lt;br /&gt;
        my ($an) = ($a =~ m/fc(\d+)_.*/);&lt;br /&gt;
        my ($bn) = ($b =~ m/fc(\d+)_.*/);&lt;br /&gt;
        my ($ao) = ($a =~ m/fc\d+_(\d+).*/);&lt;br /&gt;
        my ($bo) = ($b =~ m/fc\d+_(\d+).*/);&lt;br /&gt;
        $an &amp;lt;=&amp;gt; $bn or $ao &amp;lt;=&amp;gt; $bo or $a cmp $b;&lt;br /&gt;
      } ( grep /${regex}/,keys %{$defs{$device}{READINGS}} );&lt;br /&gt;
      return undef if ( !@rl );&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Log3 undef, 2, &amp;quot;logProxy_dwd2Plot: $device is not a DWD_OpenData device&amp;quot;;&lt;br /&gt;
      return undef;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my $fromsec = SVG_time_to_sec($from);&lt;br /&gt;
  my $tosec   = SVG_time_to_sec($to);&lt;br /&gt;
  my $sec = $fromsec;&lt;br /&gt;
  my ($h, $hp, $fcDay, $mday, $mon, $year);&lt;br /&gt;
  my $timestamp;&lt;br /&gt;
&lt;br /&gt;
  my $reading;&lt;br /&gt;
  my $value;&lt;br /&gt;
  my $prev_value;&lt;br /&gt;
  my $min = 999999;&lt;br /&gt;
  my $max = -999999;&lt;br /&gt;
  my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  # while not end of plot range reached&lt;br /&gt;
  while (($sec &amp;lt; $tosec) &amp;amp;&amp;amp; @rl)&lt;br /&gt;
  {&lt;br /&gt;
    #remember previous value for start of plot range&lt;br /&gt;
    $prev_value = $value;&lt;br /&gt;
&lt;br /&gt;
    $reading = shift @rl;&lt;br /&gt;
    ($fcDay) = $reading =~ m/^fc(\d+).*/;&lt;br /&gt;
    ($hp) = $reading =~ m/^fc\d+_(\d+).*/;&lt;br /&gt;
    #Log 1, &amp;quot;hp: &amp;quot;.$hp;&lt;br /&gt;
&lt;br /&gt;
    if ($hp)&lt;br /&gt;
    {&lt;br /&gt;
      $h = ReadingsVal($device, &amp;quot;fc&amp;quot;.$fcDay.&amp;quot;_&amp;quot;.$hp.&amp;quot;_time&amp;quot;, $fcHour);&lt;br /&gt;
      if ($h =~ m/^(\d+):\d+/)&lt;br /&gt;
      {&lt;br /&gt;
        $h = $1;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      $h = $fcHour;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $value = ReadingsVal($device, $reading, undef);&lt;br /&gt;
&lt;br /&gt;
    # calculate minutes of sunshine per hour&lt;br /&gt;
    if ($fcValue =~ /^SunD(\d+)/)&lt;br /&gt;
    {&lt;br /&gt;
      if (defined($1))&lt;br /&gt;
      {&lt;br /&gt;
        $value = $value / ($1 * 36);&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        $value = $value / (12 * 36);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # calculate amount of rain per hour&lt;br /&gt;
    if ($fcValue =~ /^RR(\d+)c$/)&lt;br /&gt;
    {&lt;br /&gt;
      if (defined($1))&lt;br /&gt;
      {&lt;br /&gt;
        $value /= $1;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ($year, $mon, $mday) = split(&#039;\-&#039;,ReadingsVal($device, &amp;quot;fc&amp;quot;.$fcDay.&amp;quot;_date&amp;quot;,undef));&lt;br /&gt;
    $timestamp = sprintf(&amp;quot;%04d-%02d-%02d_%02d:%02d:%02d&amp;quot;, $year, $mon, $mday, $h, 0, 0);&lt;br /&gt;
    $sec = SVG_time_to_sec($timestamp);&lt;br /&gt;
    if (defined($shiftTime))&lt;br /&gt;
    {&lt;br /&gt;
      $sec += $shiftTime;&lt;br /&gt;
      $timestamp = logProxy_shiftTime($timestamp, $shiftTime);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # skip all values before start of plot range&lt;br /&gt;
    next if ( $sec &amp;lt; $fromsec );&lt;br /&gt;
&lt;br /&gt;
    # add first value at start of plot range&lt;br /&gt;
    if ( !$ret &amp;amp;&amp;amp; $prev_value )&lt;br /&gt;
    {&lt;br /&gt;
      $min = $prev_value if ( $prev_value &amp;lt; $min );&lt;br /&gt;
      $max = $prev_value if ( $prev_value &amp;gt; $max );&lt;br /&gt;
      $ret .= &amp;quot;$from $prev_value\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # done if after end of plot range&lt;br /&gt;
    last if ($sec &amp;gt; $tosec);&lt;br /&gt;
&lt;br /&gt;
    $min = $value if ( $value &amp;lt; $min );&lt;br /&gt;
    $max = $value if ( $value &amp;gt; $max );&lt;br /&gt;
&lt;br /&gt;
    # add actual control point&lt;br /&gt;
    $ret .= &amp;quot;$timestamp $value\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (($sec &amp;lt; $tosec) &amp;amp;&amp;amp; !@rl &amp;amp;&amp;amp; ($expMode eq &amp;quot;day&amp;quot;))&lt;br /&gt;
  {&lt;br /&gt;
    $timestamp = sprintf(&amp;quot;%04d-%02d-%02d_%02d:%02d:%02d&amp;quot;, $year, $mon, $mday, 23, 59, 59);&lt;br /&gt;
    $_ = SVG_time_to_sec($timestamp);&lt;br /&gt;
    if (defined($shiftTime))&lt;br /&gt;
    {&lt;br /&gt;
      $_ += $shiftTime;&lt;br /&gt;
      $timestamp = logProxy_shiftTime($timestamp, $shiftTime);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($_ &amp;lt; $tosec)&lt;br /&gt;
    {&lt;br /&gt;
      $ret .= &amp;quot;$timestamp $value\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      $ret .= &amp;quot;$to $value\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  elsif (($sec &amp;gt; $tosec) &amp;amp;&amp;amp; ($expMode eq &amp;quot;day&amp;quot;))&lt;br /&gt;
  {&lt;br /&gt;
    $value = $prev_value + ($value - $prev_value) * (86400 + ($tosec - $sec)) / 86400;&lt;br /&gt;
    $ret .= &amp;quot;$to $value\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return ($ret, $min, $max, $prev_value);&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. LogProxy&lt;br /&gt;
&lt;br /&gt;
Wer bereits ein [[logProxy]]-Device hat, muss den Namen seines logProxy-Devices in die weiter unter aufgeführte GPlot-Konfiguration eintragen. Ansonsten wird es wie folgt neu erstellt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define LogProxy logProxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. FileLog&lt;br /&gt;
&lt;br /&gt;
Das Meteogramm kennt anders als andere FHEM-Plots keine Vergangenheit außer heute. Trotzdem wird aus formalen Gründen ein [[FileLog]]-Device benötigt. Dazu kann ein beliebiges vorhandenes FileLog-Device verwendet werden. Wer will, kann hierfür aber auch ein neues FileLog Device für das DWD_OpenData-Device anlegen (Achtung: wird schnell umfangreich):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define FileLog_DWD FileLog ./log/DWD-%Y-%m.log DWD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird für das FileLog-Device der Platzhalter &#039;&#039;FileLog_Dummy&#039;&#039; verwendet, der mit dem Namen des gewählten FileLog-Devices zu ersetzen ist.&lt;br /&gt;
&lt;br /&gt;
4. SVG Plot&lt;br /&gt;
&lt;br /&gt;
Das eigentliche Meteogramm ist ein SVG-Device. Will man mehrere Tage darstellen bietet sich die folgende Definition an:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define SVG_DWD SVG FileLog_Dummy:SVG_DWD:CURRENT&lt;br /&gt;
attr SVG_DWD fixedoffset 6&lt;br /&gt;
attr SVG_DWD fixedrange 7days&lt;br /&gt;
attr SVG_DWD nrAxis 1,2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei muss das SVG-Attribut &#039;&#039;fixedoffset&#039;&#039; entweder gleich oder kleiner als die Einstellung des DWD_OpenData-Attributs &#039;&#039;forecastDays&#039;&#039; (Standardwert: 6 Tage) gewählt werden und das SVG-Attribut &#039;&#039;fixedrange&#039;&#039; um eins größer als &#039;&#039;fixedoffset&#039;&#039; eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Will man stattdessen nur die nächsten 24 Stunden anzeigen, nimmt man folgende Einstellungen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define SVG_DWD SVG FileLog_Dummy:SVG_DWD:CURRENT&lt;br /&gt;
attr SVG_DWD endPlotNow 1&lt;br /&gt;
attr SVG_DWD fixedoffset 1&lt;br /&gt;
attr SVG_FileLog_WETTER_DWD_3 label &amp;quot;Tmin: $data{max1} °C, Tmax: $data{min1} °C&amp;quot;&lt;br /&gt;
attr SVG_DWD nrAxis 1,2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die DWD_OpenData-Readings mit dem Plot zu verknüpfen, muss man nun die GPlot-Konfigurationsdatei des SVG-Plots manuell bearbeiten. Dazu auf den Link klicken, der im SVG_DWD-Device am Internal &#039;&#039;GPLOTFILE&#039;&#039; steht. Die y-Wertebereiche für die Regenmenge und die Temperaturen sind im Beispiel auskommentiert (Autorange). Das kann man so lassen oder man stellt sie nach den eigenen Wetter-Gegebenheiten ein. Je nach Konfiguration des DWD_OpenData-Attributs &#039;&#039;forecastResolution&#039;&#039; sind aber noch einige weitere Einstellungen anzupassen. Das folgende Beispiel ist für die 3h-Auflösung:&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;Wettervorhersage&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Regen [mm]&amp;quot;&lt;br /&gt;
#set yrange [0:4]&lt;br /&gt;
set y2label &amp;quot;Temperatur [°C]&amp;quot;&lt;br /&gt;
#set y2range [-5:35]&lt;br /&gt;
set y3label &amp;quot;Wolken/Regen/Sonne [%]&amp;quot;&lt;br /&gt;
set y3range [0:100]&lt;br /&gt;
&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;TTT_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Tx&amp;quot;,$from,$to,18,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Tn&amp;quot;,$from,$to,6,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;SunD3_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-3*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;RR3c_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-3*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;FX1_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;R600_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-3*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Neff_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy ConstX:TimeNow(),0,100&lt;br /&gt;
#LogProxy ConstY:0&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;T&#039; ls l0 lw 2 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tmax&#039; ls l0dot lw 2 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tmin&#039; ls l0dot lw 2 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Sonne&#039; ls l4fill lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Regenmenge&#039; ls l2fill lw 1 with steps,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Wind&#039; ls l1 lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Regen&#039; ls l5fill lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Wolken&#039; ls l6fill lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 notitle ls l5 lw 4 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 notitle ls l5 lw 1 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendet man dagegen eine Auflösung von 1 Stunde, sind folgende LogProxy-Einträge erforderlich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;TTT_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Tx&amp;quot;,$from,$to,18,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Tn&amp;quot;,$from,$to,6,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;SunD1_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-1*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;RR1c_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-1*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;FX1_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;R101_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-0.5*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Neff_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy ConstX:TimeNow(),0,100&lt;br /&gt;
#LogProxy ConstY:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Darstellung der nächsten 24 Stunden mit einer Auflösung von 1 Stunde nimmt man folgende GPlot-Konfiguration:&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 ytics&lt;br /&gt;
set y2tics&lt;br /&gt;
set y3tics&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set ylabel &amp;quot;Regen [mm]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Temperatur [°C]&amp;quot;&lt;br /&gt;
set y3label &amp;quot;Wolken/Regen/Sonne [%]&amp;quot;&lt;br /&gt;
set y3range [0:100]&lt;br /&gt;
&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;TTT_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;SunD1_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-1*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;RR1c_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-1*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;FX1_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;R101_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-0.5*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Neff_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy ConstY:0&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;T&#039; ls l0 lw 2 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Sonne&#039; ls l4fill lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Regenmenge&#039; ls l2fill lw 1 with steps,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Wind&#039; ls l1 lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Regen&#039; ls l5fill lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Wolken&#039; ls l6fill lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 notitle ls l2 lw 2 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Je nachdem, welche Auflösung man verwendet, werden unterschiedliche Readings des DWD_OpenData-Devices benötigt. Diese sind in den LogProxy-Zeilen in der GPlot-Konfigurationsdatei zu finden und müssen auf jeden Fall dem Attribut &#039;&#039;forecastProperties&#039;&#039; des DWD_OpenData-Device hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
Viele Detaileinstellungen des Meteogramms lassen sich individualisieren. Man kann z.B. mehr oder weniger Daten anzeigen und zumindest für &#039;&#039;heute&#039;&#039; auch aktuelle Messwerte hinzufügen.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel für ein Meteogramm über 4 Tage mit 3 Stunden Auflösung:&lt;br /&gt;
&lt;br /&gt;
[[File:DWDODmeteogram4d3h.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiel für die Einrichtung eines Weblinks ===&lt;br /&gt;
Zur graphischen Darstellung der Vorhersage und der Wetterwarnungen mit [[FHEMWEB]] steht das Modul [https://raw.githubusercontent.com/jnsbyr/fhem/master/FHEM/99_DWD_OpenData_Weblink.pm 99_DWD_OpenData_Weblink.pm] zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Zunächst die Moduldatei herunterladen und in das Modulverzeichnis &#039;&#039;fhem/FHEM&#039;&#039; kopieren. Entweder die Datei direkt auf den FHEM-Server herunterladen (z.B. mit &#039;&#039;wget&#039;&#039;) oder beim indirekten Herunterladen darauf achten, dass dabei das Encoding nicht verändert wird (also z.B. bei WinSCP den Binär-Modus und nicht den Text-Modus verwenden). Ansonsten werden später z.B. Sonderzeichen wie &#039;&#039;°C&#039;&#039; falsch angezeigt. &lt;br /&gt;
&lt;br /&gt;
Anschließend kann in die [[Konfiguration]] z.B. folgendes eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 define DWD_Weblink_Generator DWD_OpenData_Weblink&lt;br /&gt;
 attr DWD_Weblink_Generator IODev DWD&lt;br /&gt;
 attr DWD_Weblink_Generator forecastDays 4&lt;br /&gt;
 # refreshRate nur dann setzten, wenn der Browser Java-Script beherrscht:&lt;br /&gt;
 attr DWD_Weblink_Generator refreshRate 900&lt;br /&gt;
 &lt;br /&gt;
 define DWD_Weblink weblink htmlCode { DWD_OpenData_Weblink::AsHtmlH(&amp;quot;DWD_Weblink_Generator&amp;quot;) } &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit legt man das Weblink-Generator-Device an und verknüpft es mit dem DWD_OpenData-Device. Außerdem wird der [[weblink ]] selbst angelegt, der seinerseits mit dem Weblink-Generator-Device verknüpft wird. Der Weblink benötigt für seine Funktion eine bestimmte Auswahl der Vorhersage-Merkmale. Wer das Attribut &#039;&#039;forecastProperties&#039;&#039; des DWD_OpenData-Moduls anpassen will, muss diese Merkmale auf jeden Fall mit berücksichtigen. &lt;br /&gt;
&lt;br /&gt;
Wenn vom Weblink nichts im Browser zu sehen ist, kann das daran liegen, dass der Browser kein aktuelles JavaScript verwendet oder JavaScript deaktiviert ist. Dann sollte das Attribut &#039;&#039;refreshRate&#039;&#039; auf 0 Sekunden eingestellt oder gelöscht werden. Mit aktiviertem Refresh werden die Daten auch ohne Seitenneuaufbau regelmäßig und bei Tab-Wechsel aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Die Liste der erforderlichen Vorhersage-Merkmale finden sich zusammen mit allen weiteren Details zur Installation und Konfiguration in der Modulhilfe von &#039;&#039;99_DWD_OpenData_Weblink.pm&#039;&#039;, die man z.B. nach dem Anlegen des Weblink-Generator-Devices über die Weboberfläche abrufen kann.&lt;br /&gt;
&lt;br /&gt;
Hier ein Ausschnitt aus der Darstellung des Weblinks mit [[FHEMWEB]]:&lt;br /&gt;
&lt;br /&gt;
[[File:DWDODweblink.png|500px]]&lt;/div&gt;</summary>
		<author><name>Maddinthebrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DWD_OpenData&amp;diff=33514</id>
		<title>DWD OpenData</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DWD_OpenData&amp;diff=33514"/>
		<updated>2020-07-16T19:20:58Z</updated>

		<summary type="html">&lt;p&gt;Maddinthebrain: /* Vorbereitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Versionsänderung: Die Vorhersagedaten wurden Mitte September 2018 von CSV auf KML umgestellt. Diese Umstellung ist inkompatibel: das DWD_OpenData-Modul muss aktualisiert werden, einige Reading-Namen haben sich geändert und der Weblink muss deinstalliert und neu installiert werden (siehe diesen {{Link2Forum|Topic=83097|Message=840270|Linktext=Beitrag im Forum}}).}}&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
Infobox Modul&lt;br /&gt;
|ModPurpose=Daten vom DWD OpenData Server abrufen&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=DWD_OpenData&lt;br /&gt;
|ModForumArea=Unterstützende Dienste/Wettermodule&lt;br /&gt;
|ModTechName=55_DWD_OpenData.pm&lt;br /&gt;
|ModOwner=JensB ({{Link2FU|14024|Forum}}/[[Benutzer Diskussion:JensB|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Der Deutsche Wetterdienst (DWD) stellt Wetterdaten über den [https://www.dwd.de/DE/leistungen/opendata/opendata.html Open Data Server] zur Verfügung. Die Verwendung dieses Dienstes und der vom DWD zur Verfügung gestellten Daten unterliegt den auf der OpenData Webseite beschriebenen Bedingungen. Einen Überblick über die verfügbaren Daten findet man in der Tabelle [https://www.dwd.de/DE/leistungen/opendata/help/inhalt_allgemein/opendata_content_de_en_xls.xls OpenData_weather_content.xls].&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Aufgrund der unterschiedlichen vom DWD bereitgestellten Datenformate benötigt das Modul zur Dekodierung je nach gewünschtem Funktionsumfang zusätzliche Perl-Module, die nicht standardmäßig vorinstalliert sind und je nach Systemkonfiguration nachinstalliert werden müssen. Außerdem unterstützt das Modul Zeitzonen, um z.B. die Wettervorhersage internationaler Stationen in Ortszeit darstellen zu können. Hierfür sind je nach Systemkonfiguration weitere Einstellungen erforderlich. Auch die Sprache der Wochentage für die Wettervorhersage ist frei wählbar. Je nach Systemkonfiguration ist aber die Standardsprache u.U. auf Englisch eingestellt, was weitere Anpassungen der Systemkonfiguration erforderlich macht.&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Im folgenden wird z.T. von einem System mit Rasbian oder Debian mit System-V Startsystem ausgegangen. Auf anderen Betriebssystemen und auf Systemen mit System-D müssen die Installationsschritte ggf. angepasst werden.&lt;br /&gt;
&lt;br /&gt;
1. Für die Wettervorhersage und die Wetterwarnungen:&lt;br /&gt;
Installation des Perl-Moduls &#039;&#039;XML::LibXML&#039;&#039; über die System-Kommandozeile mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libxml-libxml-perl&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
oder mit CPAN.&lt;br /&gt;
&lt;br /&gt;
2. Weiterhin ist das Perl-Modul &#039;&#039; DateTime&#039;&#039; erforderlich. Dieses lässt sich mit &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install libdatetime-perl&amp;lt;/source&amp;gt; installieren. &lt;br /&gt;
&lt;br /&gt;
3. Falls man einen eigenen Internet-Proxy nutzt:&lt;br /&gt;
Die Konfiguration des Proxies für FHEM erfolgt z.B. durch Eintrag von&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 attr global proxy &amp;lt;myProxyHost&amp;gt;:&amp;lt;myProxyPort&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
in die [[Konfiguration]], wobei &#039;&#039;myProxyHost&#039;&#039; durch den Namen oder die IP-Adresse des Proxy-Servers ersetzt werden muss und für &#039;&#039;myProxyPort&#039;&#039; der Port des Proxy-Servers eingetragen werden muss (oft 3128).&lt;br /&gt;
&lt;br /&gt;
3. FHEM Uhrzeit und Zeitzone:&lt;br /&gt;
Durch Eingabe von &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 {localtime()}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
in die FHEM-Kommandozeile überprüfen, ob die FHEM-Uhrzeit plausibel ist. Ist dies nicht der Fall sollten die Uhrzeit auf Systemebene überprüft werden und ggf. die Systemeinstellungen angepasst werden.&lt;br /&gt;
Ermitteln der Bezeichnung der eigenen Zeitzone über die System-Kommandozeile mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tzselect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
und diese Bezeichnung in die Datei &#039;&#039;/etc/timezone&#039;&#039; eintragen und &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 export TZ=`cat /etc/timezone`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
der Datei &#039;&#039;/etc/profile&#039;&#039; hinzufügen und dann das System neu starten. Nun muss die Zeitanzeige in FHEM korrekt sein.&lt;br /&gt;
&lt;br /&gt;
4. FHEM Sprache:&lt;br /&gt;
Durch Eingabe von &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 {localtime()}&lt;br /&gt;
&amp;lt;/pre&amp;gt; in die FHEM-Kommandozeile überprüfen, in welcher Sprache der Wochentag angezeigt wird. Stimmt die Sprache nicht, dann auf der System-Kommandozeile&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/pre&amp;gt; eingeben und aus der Liste z.B. &#039;&#039;de_DE.UTF-8&#039;&#039; zusätzlich auswählen. Dieser Befehl gilt für Debian-basierte Betriebssysteme - für andere Betriebssysteme ist eine analoge Funktion zu verwenden. Mit Eingabe von &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 locale -a&lt;br /&gt;
&amp;lt;/pre&amp;gt; auf der System-Kommandozeile überprüfen, ob die ausgewählte Sprache nun zur Verfügung steht. Sollte FHEM nach einem Neustart noch immer nicht die gewünschte Sprache verwenden, kann man auf einem System V Linux durch Hinzufügen von z.B.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 export LANG=de_DE.UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt; in die Datei &#039;&#039;/etc/init.d/fhem&#039;&#039; (irgendwo zwischen &#039;&#039;start&#039;&#039; und &#039;&#039;perl&#039;&#039;) und erneutem Neustart von FHEM die Sprache für FHEM erzwingen. Bei einem Systemd Linux kann man die Einstellungen mit &#039;&#039;systemctl edit --full fhem.service&#039;&#039; bearbeiten. Spätestes jetzt muss die Wochentagsanzeige in FHEM korrekt sein.&lt;br /&gt;
&lt;br /&gt;
5. Nur für den Weblink erforderlich:&lt;br /&gt;
Installation des Perl-Moduls &#039;&#039;DateTime&#039;&#039; über die System-Kommandozeile mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 sudo apt-get install libdatetime-perl&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
oder mit CPAN.&lt;br /&gt;
&lt;br /&gt;
=== Define ===&lt;br /&gt;
Siehe {{Link2CmdRef|Anker=DWD_OpenDatadefine|Label=Commandref}}.&lt;br /&gt;
&lt;br /&gt;
=== Attributes ===&lt;br /&gt;
Siehe {{Link2CmdRef|Anker=DWD_OpenDataattr|Label=Commandref}}.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
=== Beispiel zur Modul-Einrichtung ===&lt;br /&gt;
&lt;br /&gt;
* Wettervorhersage&lt;br /&gt;
Für die Wettervorhersage muss der Stationscode ermittelt werden. Dazu den [https://www.dwd.de/DE/leistungen/met_verfahren_mosmix/mosmix_stationskatalog.pdf MOSMIX Stationskatalog] herunterladen, öffnen und die gewünschte Station heraussuchen (Spalte &#039;&#039;id&#039;&#039;). Einen Teil der deutschen Stationen kann man auch der [https://www.dwd.de/DE/derdwd/messnetz/bodenbeobachtung/messnetzkarte_boden.pdf Bodenmessnetzkarte] entnehmen. Den ermittelten Stationscode kann man dann entweder für eine Einzelabfrage als Parameter für das Kommando &#039;&#039;get forecast&#039;&#039; verwenden oder für die automatische Aktualisierung als Attribut &#039;&#039;forecastStation&#039;&#039; hinterlegen. Insgesamt werden vom DWD mehr als 70 Merkmale zur Verfügung gestellt. Eine Auflistung findet sich im Dokument [https://opendata.dwd.de/weather/lib/MetElementDefinition.xml MetElementDefinition]. Nur ein kleiner Teil der Merkmale wird in der Standardeinstellung des Moduls als Reading zur Verfügung gestellt. Wer andere Merkmale benötigt muss sie mit Komma getrennt dem Attribut &#039;&#039;forecastProperties&#039;&#039; zuweisen. Es empfiehlt sich zur Performance-Optimierung sowohl das Attribut &#039;&#039;forecastDays&#039;&#039; als auch das Attribut &#039;&#039;forecastProperties&#039;&#039; auf den tatsächlichen Bedarf einzustellen.&lt;br /&gt;
&lt;br /&gt;
* Wetterwarnungen&lt;br /&gt;
Für die Wetterwarnungen muss die Warnzelle ermittelt werden. Dazu [https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv Warnzellen-ID Katalog] herunterladen, öffnen und die gewünschte Warnzelle heraussuchen. Unterstützt werden Gemeinden (beginnen mit 8), Landkreise (beginnen mit 1 oder 9) oder Küste (beginnen mit 5). Die Warnzellen-ID kann man dann entweder für eine Einzelabfrage als Parameter für das Kommando &#039;&#039;get alerts&#039;&#039; verwenden oder für die automatische Aktualisierung als Attribut &#039;&#039;alertArea&#039;&#039; hinterlegen. Die Warnzellen-ID ist ab der 2. Stelle identisch mit den ersten Ziffern des amtlichen Gemeindeschlüssels. Man kann z.B. den Namen von Gemeinde oder Landkreis bei den [https://www.statistik-bw.de/Statistik-Portal/gemeindeverz.asp Statistischen Ämtern des Bundes und der Länder] eingeben, den amtlichen Gemeindeschlüssel ermitteln und dann mit vorangestellter 1, 8 oder 9 im Warnzellen-ID Katalog des DWD nach einem Eintrag mit exakter oder weitgehender Übereinstimmung suchen. Wem das zu kompliziert vorkommt, der kann bei mehrdeutigen Gemeinde- bzw. Landkreisbezeichnungen auch versuchen auszuprobieren, welche die richtige Warnzellen-ID ist.&lt;br /&gt;
&lt;br /&gt;
Um das Modul mit automatisch Aktualisierung von Vorhersage und Wetterwarnungen zu nutzen, kann z.B. folgendes in die [[Konfiguration]] eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 define DWD DWD_OpenData&lt;br /&gt;
 attr DWD alertArea 111000000&lt;br /&gt;
 attr DWD forecastStation 99810&lt;br /&gt;
 attr DWD forecastDays 3&lt;br /&gt;
 attr DWD forecastWW2Text 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Performance&lt;br /&gt;
Das DWD_OpenData-Modul ist ein Datenmodul mit relativ vielen Readings. In der Standardkonfiguration wird, wie bei jedem anderen FHEM Modul, bei jeder Änderung jedes Readings ein FHEM internes Ereignis erzeugt, damit andere FHEM Devices auf diese Änderungen reagieren können. Diese Ereignisse sorgen auch dafür, dass man Änderungen in der Weboberfläche sofort angezeigt bekommt, ohne die Webseite neu aufzurufen. Interessiert sich aber kein FHEM Device für die Änderungsbenachrichtigung bestimmter Readings, entsteht unnötiger Verarbeitungs-Overhead, der je nach FHEM Konfiguration und verfügbarer CPU-Leistung auch mehrere Sekunden benötigen kann und in dieser Zeit andere Abläufe blockiert. Um die Performance zu optimieren, empfiehlt es sich,  mit [[event-on-update-reading]] für eine angepasste und dadurch effizientere Verarbeitung zu sorgen, indem man nur für jene Readings Ereignisse zulässt, welche man für die Weiterverarbeitung braucht. Der DWD_OpenData_Weblink braucht z.B. gar keine Ereignisse, um zu funktionieren. Hier eine minimalistische Beispielkonfiguration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 attr DWD event-on-update-reading state,fc_state,a_state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Details zur Installation und Konfiguration des Moduls finden sich in der&lt;br /&gt;
{{Link2CmdRef|Anker=DWD_OpenData|Label=Commandref}}.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel für die Einrichtung eines Meteogramms ===&lt;br /&gt;
Um den vorhergesagten Wetterverlauf als Meteogramm in Kurvenform mit [[SVG]] darzustellen, kann man wie folgt vorgehen:&lt;br /&gt;
&lt;br /&gt;
1. 99_myUtils.pm&lt;br /&gt;
&lt;br /&gt;
Für die Bestimmung der Werte für den SVG-Plot wird eine Perl-Funktion benötigt, die in die Datei 99_myUtils.pm vor dem Ende eingefügt wird. Wer diese FHEM-Datei noch nicht nutzt, legt sie einfach an (siehe [[99_myUtils_anlegen]]).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
package main;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
 &lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# (c) mumpitzstuff 19.12.2018&lt;br /&gt;
#&lt;br /&gt;
# see https://forum.fhem.de/index.php/topic,83097.msg874150.html#msg874150&lt;br /&gt;
#&lt;br /&gt;
sub logProxy_dwd2Plot($$$$;$$$)&lt;br /&gt;
{&lt;br /&gt;
  my ($device, $fcValue, $from, $to, $fcHour, $expMode, $shiftTime) = @_;&lt;br /&gt;
  my $regex;&lt;br /&gt;
  my @rl;&lt;br /&gt;
&lt;br /&gt;
  return undef if(!$device);&lt;br /&gt;
&lt;br /&gt;
  if ($fcValue =~ s/_$//)&lt;br /&gt;
  {&lt;br /&gt;
    $regex = &amp;quot;^fc[\\d]+_[\\d]+_&amp;quot;.$fcValue.&amp;quot;\$&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    $regex = &amp;quot;^fc[\\d]+_&amp;quot;.$fcValue.&amp;quot;\$&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $fcHour = 12 if(!defined($fcHour));&lt;br /&gt;
  $expMode = &amp;quot;point&amp;quot; if(!defined($expMode));&lt;br /&gt;
  #Log3 undef,2, &amp;quot;Regex: &amp;quot;.$regex;&lt;br /&gt;
&lt;br /&gt;
  # ermitteln aller relevanten Readings&lt;br /&gt;
  if ( defined($defs{$device}) )&lt;br /&gt;
  {&lt;br /&gt;
    if ( $defs{$device}{TYPE} eq &amp;quot;DWD_OpenData&amp;quot; )&lt;br /&gt;
    {&lt;br /&gt;
      @rl = sort&lt;br /&gt;
      {&lt;br /&gt;
        my ($an) = ($a =~ m/fc(\d+)_.*/);&lt;br /&gt;
        my ($bn) = ($b =~ m/fc(\d+)_.*/);&lt;br /&gt;
        my ($ao) = ($a =~ m/fc\d+_(\d+).*/);&lt;br /&gt;
        my ($bo) = ($b =~ m/fc\d+_(\d+).*/);&lt;br /&gt;
        $an &amp;lt;=&amp;gt; $bn or $ao &amp;lt;=&amp;gt; $bo or $a cmp $b;&lt;br /&gt;
      } ( grep /${regex}/,keys %{$defs{$device}{READINGS}} );&lt;br /&gt;
      return undef if ( !@rl );&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Log3 undef, 2, &amp;quot;logProxy_dwd2Plot: $device is not a DWD_OpenData device&amp;quot;;&lt;br /&gt;
      return undef;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my $fromsec = SVG_time_to_sec($from);&lt;br /&gt;
  my $tosec   = SVG_time_to_sec($to);&lt;br /&gt;
  my $sec = $fromsec;&lt;br /&gt;
  my ($h, $hp, $fcDay, $mday, $mon, $year);&lt;br /&gt;
  my $timestamp;&lt;br /&gt;
&lt;br /&gt;
  my $reading;&lt;br /&gt;
  my $value;&lt;br /&gt;
  my $prev_value;&lt;br /&gt;
  my $min = 999999;&lt;br /&gt;
  my $max = -999999;&lt;br /&gt;
  my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  # while not end of plot range reached&lt;br /&gt;
  while (($sec &amp;lt; $tosec) &amp;amp;&amp;amp; @rl)&lt;br /&gt;
  {&lt;br /&gt;
    #remember previous value for start of plot range&lt;br /&gt;
    $prev_value = $value;&lt;br /&gt;
&lt;br /&gt;
    $reading = shift @rl;&lt;br /&gt;
    ($fcDay) = $reading =~ m/^fc(\d+).*/;&lt;br /&gt;
    ($hp) = $reading =~ m/^fc\d+_(\d+).*/;&lt;br /&gt;
    #Log 1, &amp;quot;hp: &amp;quot;.$hp;&lt;br /&gt;
&lt;br /&gt;
    if ($hp)&lt;br /&gt;
    {&lt;br /&gt;
      $h = ReadingsVal($device, &amp;quot;fc&amp;quot;.$fcDay.&amp;quot;_&amp;quot;.$hp.&amp;quot;_time&amp;quot;, $fcHour);&lt;br /&gt;
      if ($h =~ m/^(\d+):\d+/)&lt;br /&gt;
      {&lt;br /&gt;
        $h = $1;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      $h = $fcHour;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $value = ReadingsVal($device, $reading, undef);&lt;br /&gt;
&lt;br /&gt;
    # calculate minutes of sunshine per hour&lt;br /&gt;
    if ($fcValue =~ /^SunD(\d+)/)&lt;br /&gt;
    {&lt;br /&gt;
      if (defined($1))&lt;br /&gt;
      {&lt;br /&gt;
        $value = $value / ($1 * 36);&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        $value = $value / (12 * 36);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # calculate amount of rain per hour&lt;br /&gt;
    if ($fcValue =~ /^RR(\d+)c$/)&lt;br /&gt;
    {&lt;br /&gt;
      if (defined($1))&lt;br /&gt;
      {&lt;br /&gt;
        $value /= $1;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ($year, $mon, $mday) = split(&#039;\-&#039;,ReadingsVal($device, &amp;quot;fc&amp;quot;.$fcDay.&amp;quot;_date&amp;quot;,undef));&lt;br /&gt;
    $timestamp = sprintf(&amp;quot;%04d-%02d-%02d_%02d:%02d:%02d&amp;quot;, $year, $mon, $mday, $h, 0, 0);&lt;br /&gt;
    $sec = SVG_time_to_sec($timestamp);&lt;br /&gt;
    if (defined($shiftTime))&lt;br /&gt;
    {&lt;br /&gt;
      $sec += $shiftTime;&lt;br /&gt;
      $timestamp = logProxy_shiftTime($timestamp, $shiftTime);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # skip all values before start of plot range&lt;br /&gt;
    next if ( $sec &amp;lt; $fromsec );&lt;br /&gt;
&lt;br /&gt;
    # add first value at start of plot range&lt;br /&gt;
    if ( !$ret &amp;amp;&amp;amp; $prev_value )&lt;br /&gt;
    {&lt;br /&gt;
      $min = $prev_value if ( $prev_value &amp;lt; $min );&lt;br /&gt;
      $max = $prev_value if ( $prev_value &amp;gt; $max );&lt;br /&gt;
      $ret .= &amp;quot;$from $prev_value\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # done if after end of plot range&lt;br /&gt;
    last if ($sec &amp;gt; $tosec);&lt;br /&gt;
&lt;br /&gt;
    $min = $value if ( $value &amp;lt; $min );&lt;br /&gt;
    $max = $value if ( $value &amp;gt; $max );&lt;br /&gt;
&lt;br /&gt;
    # add actual control point&lt;br /&gt;
    $ret .= &amp;quot;$timestamp $value\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (($sec &amp;lt; $tosec) &amp;amp;&amp;amp; !@rl &amp;amp;&amp;amp; ($expMode eq &amp;quot;day&amp;quot;))&lt;br /&gt;
  {&lt;br /&gt;
    $timestamp = sprintf(&amp;quot;%04d-%02d-%02d_%02d:%02d:%02d&amp;quot;, $year, $mon, $mday, 23, 59, 59);&lt;br /&gt;
    $_ = SVG_time_to_sec($timestamp);&lt;br /&gt;
    if (defined($shiftTime))&lt;br /&gt;
    {&lt;br /&gt;
      $_ += $shiftTime;&lt;br /&gt;
      $timestamp = logProxy_shiftTime($timestamp, $shiftTime);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($_ &amp;lt; $tosec)&lt;br /&gt;
    {&lt;br /&gt;
      $ret .= &amp;quot;$timestamp $value\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      $ret .= &amp;quot;$to $value\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  elsif (($sec &amp;gt; $tosec) &amp;amp;&amp;amp; ($expMode eq &amp;quot;day&amp;quot;))&lt;br /&gt;
  {&lt;br /&gt;
    $value = $prev_value + ($value - $prev_value) * (86400 + ($tosec - $sec)) / 86400;&lt;br /&gt;
    $ret .= &amp;quot;$to $value\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return ($ret, $min, $max, $prev_value);&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. LogProxy&lt;br /&gt;
&lt;br /&gt;
Wer bereits ein [[logProxy]]-Device hat, muss den Namen seines logProxy-Devices in die weiter unter aufgeführte GPlot-Konfiguration eintragen. Ansonsten wird es wie folgt neu erstellt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define LogProxy logProxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. FileLog&lt;br /&gt;
&lt;br /&gt;
Das Meteogramm kennt anders als andere FHEM-Plots keine Vergangenheit außer heute. Trotzdem wird aus formalen Gründen ein [[FileLog]]-Device benötigt. Dazu kann ein beliebiges vorhandenes FileLog-Device verwendet werden. Wer will, kann hierfür aber auch ein neues FileLog Device für das DWD_OpenData-Device anlegen (Achtung: wird schnell umfangreich):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define FileLog_DWD FileLog ./log/DWD-%Y-%m.log DWD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird für das FileLog-Device der Platzhalter &#039;&#039;FileLog_Dummy&#039;&#039; verwendet, der mit dem Namen des gewählten FileLog-Devices zu ersetzen ist.&lt;br /&gt;
&lt;br /&gt;
4. SVG Plot&lt;br /&gt;
&lt;br /&gt;
Das eigentliche Meteogramm ist ein SVG-Device. Will man mehrere Tage darstellen bietet sich die folgende Definition an:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define SVG_DWD SVG FileLog_Dummy:SVG_DWD:CURRENT&lt;br /&gt;
attr SVG_DWD fixedoffset 6&lt;br /&gt;
attr SVG_DWD fixedrange 7days&lt;br /&gt;
attr SVG_DWD nrAxis 1,2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei muss das SVG-Attribut &#039;&#039;fixedoffset&#039;&#039; entweder gleich oder kleiner als die Einstellung des DWD_OpenData-Attributs &#039;&#039;forecastDays&#039;&#039; (Standardwert: 6 Tage) gewählt werden und das SVG-Attribut &#039;&#039;fixedrange&#039;&#039; um eins größer als &#039;&#039;fixedoffset&#039;&#039; eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Will man stattdessen nur die nächsten 24 Stunden anzeigen, nimmt man folgende Einstellungen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define SVG_DWD SVG FileLog_Dummy:SVG_DWD:CURRENT&lt;br /&gt;
attr SVG_DWD endPlotNow 1&lt;br /&gt;
attr SVG_DWD fixedoffset 1&lt;br /&gt;
attr SVG_FileLog_WETTER_DWD_3 label &amp;quot;Tmin: $data{max1} °C, Tmax: $data{min1} °C&amp;quot;&lt;br /&gt;
attr SVG_DWD nrAxis 1,2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die DWD_OpenData-Readings mit dem Plot zu verknüpfen, muss man nun die GPlot-Konfigurationsdatei des SVG-Plots manuell bearbeiten. Dazu auf den Link klicken, der im SVG_DWD-Device am Internal &#039;&#039;GPLOTFILE&#039;&#039; steht. Die y-Wertebereiche für die Regenmenge und die Temperaturen sind im Beispiel auskommentiert (Autorange). Das kann man so lassen oder man stellt sie nach den eigenen Wetter-Gegebenheiten ein. Je nach Konfiguration des DWD_OpenData-Attributs &#039;&#039;forecastResolution&#039;&#039; sind aber noch einige weitere Einstellungen anzupassen. Das folgende Beispiel ist für die 3h-Auflösung:&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;Wettervorhersage&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Regen [mm]&amp;quot;&lt;br /&gt;
#set yrange [0:4]&lt;br /&gt;
set y2label &amp;quot;Temperatur [°C]&amp;quot;&lt;br /&gt;
#set y2range [-5:35]&lt;br /&gt;
set y3label &amp;quot;Wolken/Regen/Sonne [%]&amp;quot;&lt;br /&gt;
set y3range [0:100]&lt;br /&gt;
&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;TTT_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Tx&amp;quot;,$from,$to,18,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Tn&amp;quot;,$from,$to,6,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;SunD3_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-3*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;RR3c_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-3*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;FX1_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;R600_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-3*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Neff_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy ConstX:TimeNow(),0,100&lt;br /&gt;
#LogProxy ConstY:0&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;T&#039; ls l0 lw 2 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tmax&#039; ls l0dot lw 2 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Tmin&#039; ls l0dot lw 2 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Sonne&#039; ls l4fill lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Regenmenge&#039; ls l2fill lw 1 with steps,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Wind&#039; ls l1 lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Regen&#039; ls l5fill lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Wolken&#039; ls l6fill lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 notitle ls l5 lw 4 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 notitle ls l5 lw 1 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendet man dagegen eine Auflösung von 1 Stunde, sind folgende LogProxy-Einträge erforderlich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;TTT_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Tx&amp;quot;,$from,$to,18,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Tn&amp;quot;,$from,$to,6,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;SunD1_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-1*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;RR1c_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-1*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;FX1_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;R101_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-0.5*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Neff_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy ConstX:TimeNow(),0,100&lt;br /&gt;
#LogProxy ConstY:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Darstellung der nächsten 24 Stunden mit einer Auflösung von 1 Stunde nimmt man folgende GPlot-Konfiguration:&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 ytics&lt;br /&gt;
set y2tics&lt;br /&gt;
set y3tics&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set ylabel &amp;quot;Regen [mm]&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Temperatur [°C]&amp;quot;&lt;br /&gt;
set y3label &amp;quot;Wolken/Regen/Sonne [%]&amp;quot;&lt;br /&gt;
set y3range [0:100]&lt;br /&gt;
&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;TTT_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;SunD1_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-1*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;RR1c_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-1*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;FX1_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;R101_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;,(-0.5*3600))&lt;br /&gt;
#LogProxy Func:logProxy_dwd2Plot(&amp;quot;DWD&amp;quot;,&amp;quot;Neff_&amp;quot;,$from,$to,0,&amp;quot;day&amp;quot;)&lt;br /&gt;
#LogProxy ConstY:0&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;T&#039; ls l0 lw 2 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Sonne&#039; ls l4fill lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Regenmenge&#039; ls l2fill lw 1 with steps,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Wind&#039; ls l1 lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Regen&#039; ls l5fill lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y3 title &#039;Wolken&#039; ls l6fill lw 1 with quadraticSmooth,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 notitle ls l2 lw 2 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Je nachdem, welche Auflösung man verwendet, werden unterschiedliche Readings des DWD_OpenData-Devices benötigt. Diese sind in den LogProxy-Zeilen in der GPlot-Konfigurationsdatei zu finden und müssen auf jeden Fall dem Attribut &#039;&#039;forecastProperties&#039;&#039; des DWD_OpenData-Device hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
Viele Detaileinstellungen des Meteogramms lassen sich individualisieren. Man kann z.B. mehr oder weniger Daten anzeigen und zumindest für &#039;&#039;heute&#039;&#039; auch aktuelle Messwerte hinzufügen.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel für ein Meteogramm über 4 Tage mit 3 Stunden Auflösung:&lt;br /&gt;
&lt;br /&gt;
[[File:DWDODmeteogram4d3h.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiel für die Einrichtung eines Weblinks ===&lt;br /&gt;
Zur graphischen Darstellung der Vorhersage und der Wetterwarnungen mit [[FHEMWEB]] steht das Modul [https://raw.githubusercontent.com/jnsbyr/fhem/master/FHEM/99_DWD_OpenData_Weblink.pm 99_DWD_OpenData_Weblink.pm] zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Zunächst die Moduldatei herunterladen und in das Modulverzeichnis &#039;&#039;fhem/FHEM&#039;&#039; kopieren. Entweder die Datei direkt auf den FHEM-Server herunterladen (z.B. mit &#039;&#039;wget&#039;&#039;) oder beim indirekten Herunterladen darauf achten, dass dabei das Encoding nicht verändert wird (also z.B. bei WinSCP den Binär-Modus und nicht den Text-Modus verwenden). Ansonsten werden später z.B. Sonderzeichen wie &#039;&#039;°C&#039;&#039; falsch angezeigt. &lt;br /&gt;
&lt;br /&gt;
Anschließend kann in die [[Konfiguration]] z.B. folgendes eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 define DWD_Weblink_Generator DWD_OpenData_Weblink&lt;br /&gt;
 attr DWD_Weblink_Generator IODev DWD&lt;br /&gt;
 attr DWD_Weblink_Generator forecastDays 4&lt;br /&gt;
 # refreshRate nur dann setzten, wenn der Browser Java-Script beherrscht:&lt;br /&gt;
 attr DWD_Weblink_Generator refreshRate 900&lt;br /&gt;
 &lt;br /&gt;
 define DWD_Weblink weblink htmlCode { DWD_OpenData_Weblink::AsHtmlH(&amp;quot;DWD_Weblink_Generator&amp;quot;) } &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit legt man das Weblink-Generator-Device an und verknüpft es mit dem DWD_OpenData-Device. Außerdem wird der [[weblink ]] selbst angelegt, der seinerseits mit dem Weblink-Generator-Device verknüpft wird. Der Weblink benötigt für seine Funktion eine bestimmte Auswahl der Vorhersage-Merkmale. Wer das Attribut &#039;&#039;forecastProperties&#039;&#039; des DWD_OpenData-Moduls anpassen will, muss diese Merkmale auf jeden Fall mit berücksichtigen. &lt;br /&gt;
&lt;br /&gt;
Wenn vom Weblink nichts im Browser zu sehen ist, kann das daran liegen, dass der Browser kein aktuelles JavaScript verwendet oder JavaScript deaktiviert ist. Dann sollte das Attribut &#039;&#039;refreshRate&#039;&#039; auf 0 Sekunden eingestellt oder gelöscht werden. Mit aktiviertem Refresh werden die Daten auch ohne Seitenneuaufbau regelmäßig und bei Tab-Wechsel aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Die Liste der erforderlichen Vorhersage-Merkmale finden sich zusammen mit allen weiteren Details zur Installation und Konfiguration in der Modulhilfe von &#039;&#039;99_DWD_OpenData_Weblink.pm&#039;&#039;, die man z.B. nach dem Anlegen des Weblink-Generator-Devices über die Weboberfläche abrufen kann.&lt;br /&gt;
&lt;br /&gt;
Hier ein Ausschnitt aus der Darstellung des Weblinks mit [[FHEMWEB]]:&lt;br /&gt;
&lt;br /&gt;
[[File:DWDODweblink.png|500px]]&lt;/div&gt;</summary>
		<author><name>Maddinthebrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hue&amp;diff=28938</id>
		<title>Hue</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hue&amp;diff=28938"/>
		<updated>2019-01-04T10:18:07Z</updated>

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

		<summary type="html">&lt;p&gt;Maddinthebrain: /* .gplot-Editor */ Richtige Mehrzahl von Status ist Stati!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Plots erzeugen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== .gplot-Editor ==&lt;br /&gt;
&lt;br /&gt;
FHEM verfügt über einen &amp;quot;.gplot-Editor&amp;quot; (auch als Ploteditor bezeichnet), um die .gplot-Datei zur Erstellung eines Plots menügeführt zu generieren. Ein manuelles Anlegen der .gplot-Datei ist für Spezialisten und normalerweise nicht notwendig. Der .gplot-Editor sollte für Standardfälle grundsätzlich verwendet werden. &lt;br /&gt;
&lt;br /&gt;
Details zum .gplot-Editor können im Ankündigungshinweis im {{Link2Forum|Topic=11275|Message=75594|LinkText=FHEM-Forum}} nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
Zur Einarbeitung in die Funktionsweise des .gplot-Editor existieren ausführliche, bebilderte Beispiele:&lt;br /&gt;
&lt;br /&gt;
*Grundlegendes Beispiel zur Erzeugung von Plots:&lt;br /&gt;
:* [[Buderus_Web_Gateway#Mit_FileLog|Schrittweises Beispiel für Temperaturkurven]]&lt;br /&gt;
&lt;br /&gt;
*Spezielle Erläuterungen/Hinweise zur Erzeugung von Plots mit Status: &lt;br /&gt;
:* [[EnOcean-STM-250-Fenster-Türkontakt#Türstatus in einem Plot darstellen|Schrittweises Beispiel bei Kontakten]], &lt;br /&gt;
:* [[EnOcean-D-452-FU-EBIM-Aktor-2fach#Aktorstatus_in_einem_Plot_darstellen|Schrittweises Beispiel zum Aktorstatus]]&lt;br /&gt;
:* {{Link2Forum|Topic=12945|Message=78887|LinkText=FHEM-Forum}}&lt;br /&gt;
:* {{Link2Forum|Topic=43563|Message=354955|LinkText=Plots mit mehr als 2 Stati}}&lt;br /&gt;
&lt;br /&gt;
Verhinderung von Perl-Warnungen bei LogFiles mit unterschiedlicher Spaltenanzahl in Log-Zeilen: {{Link2Forum|Topic=27835}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;Achtung&#039;&#039;&#039;&amp;lt;/big&amp;gt;:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Das in diesem Abschnitt &amp;quot;Achtung&amp;quot; beschriebene Problem ist seit dem FHEM-Update vom 06.04.2015 nicht mehr relevant. Der Befehl &amp;lt;code&amp;gt;copyGplotFile&amp;lt;/code&amp;gt; ist seitdem nicht mehr notwendig, da FHEM ihn automatisch ausführt (Siehe {{Link2Forum|Topic=35764|Message=282728|LinkText=FHEM-Forum}}). }}&lt;br /&gt;
Verwenden Sie diesen Editor nicht, wenn das FHEM-Device bereits angelegt ist und Sie für dieses Device ein bestehendes, allgemeines gplot-File verwenden, das auch für andere Devices benutzt wird. Beim Abspeichern wird ein Filter im gplot-File gesetzt, das das gplot-File nur für genau dieses Device verwendbar macht. &lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
aus &lt;br /&gt;
&lt;br /&gt;
 #FileLog 4:::&lt;br /&gt;
&lt;br /&gt;
wird&lt;br /&gt;
&lt;br /&gt;
 #FileLog 4:DS2423.energy_a\x3a::&lt;br /&gt;
&lt;br /&gt;
in dem entsprechenden gplot-File.&lt;br /&gt;
&lt;br /&gt;
Die anderen Devices, die evtl. dieses gplot-File verwenden, haben danach keine funktionierende Plot-Anzeige mehr. Bevor also etwas geändert wird, sollte mit &lt;br /&gt;
&lt;br /&gt;
 set weblink_irgendwas copyGplotFile&lt;br /&gt;
&lt;br /&gt;
ein Duplikat angelegt werden, das ausschließlich für diesen Plot verwendet wird. Der Befehl kann unterhalb des ersten Kasten per Dropdown ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
== Individuell / Manuell ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorbemerkungen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* FHEM bediente sich früher für die Erstellung der Plots des Programms &#039;&#039;Gnuplot&#039;&#039; [http://www.gnuplot.info/]. Hierbei reichen die &amp;quot;einfacheren&amp;quot; Funktionalitäten dieses Programms aus (&#039;&#039;Gnuplot&#039;&#039; kann noch viel mehr). &lt;br /&gt;
* aktuelle FHEM-Versionen haben die Plot-Funktionen (angelehnt an die Plot-File-Syntax von Gnuplot) integriert.&lt;br /&gt;
* die Beispieldateien für die in FHEM integrierten Plots finden Sie in Ihrem FHEM-Programmordner unter &#039;&#039;www/gplot&#039;&#039;.&lt;br /&gt;
* Angaben wie &amp;lt;SIZE&amp;gt;, &amp;lt;OUT&amp;gt;, &amp;lt;L1&amp;gt;, &amp;lt;IN&amp;gt; usw. im Plot-File sind Platzhalter bzw. Feldbezeichner für Fhem. Diese sind case-sensitive (Groß-/Kleinschreibung beachten).&lt;br /&gt;
* Weitere Möglichkeiten Plots anzupassen und zu ergänzen bietet das FHEM-Hilfsmodul [[LogProxy|logProxy]].&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel (&#039;&#039;temp4hum4.gplot&#039;&#039;) aus diesem Verzeichnis: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;gnuplot&amp;quot; style=&amp;quot;width:500px;&amp;quot;&amp;gt;&lt;br /&gt;
 # Attribute &#039;small&#039; is useful for gnuplot/-scroll only,&lt;br /&gt;
 # if plotsize is less than 800,400&lt;br /&gt;
 #set terminal png transparent small size &amp;lt;SIZE&amp;gt; crop&lt;br /&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;
 set ytics nomirror&lt;br /&gt;
 set y2tics&lt;br /&gt;
 #set ytics&lt;br /&gt;
 set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
 set grid xtics y2tics&lt;br /&gt;
 &lt;br /&gt;
 set y2label &amp;quot;Temperature in C&amp;quot;&lt;br /&gt;
 set ylabel &amp;quot;Humidity (%)&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 4:temperature:10:&lt;br /&gt;
 #FileLog 4:humidity:50:&lt;br /&gt;
 &lt;br /&gt;
 plot \&lt;br /&gt;
   &amp;quot;&amp;lt; egrep &#039;temperature&#039; &amp;lt;IN&amp;gt;&amp;quot;\&lt;br /&gt;
          using 1:4 axes x1y2 title &#039;Measured temperature&#039; with lines,\&lt;br /&gt;
   &amp;quot;&amp;lt; egrep &#039;humidity&#039; &amp;lt;IN&amp;gt;&amp;quot;\&lt;br /&gt;
         using 1:4 axes x1y1 title &#039;Humidity (%)&#039; with lines\&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Die Zeilen, die mit &#039;&#039;set&#039;&#039; beginnen, beeinflussen wesentlich das Erscheinungsbild und Aussehen Ihrer Plots (Achsenbeschriftungen, Skalen usw.). Dabei sollten Sie die Zeilen, die eine Angabe zwischen &amp;quot;&amp;lt;&amp;quot; und &amp;quot;&amp;gt;&amp;quot; enthalten, zunächst unverändert lassen. Weitere (ausführliche) Hinweise (zu Gnuplot!) finden Sie in einer [http://www.home.uni-osnabrueck.de/elsner/Skripte/gnuplot.pdf PDF-Datei]. Eingeschränktere, aber für die meisten Belange von FHEM ausreichende Infos finden Sie auf [http://www.aurbacher.net/gnuplot/gnuplot.html dieser Web-Seite].&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
!  Variable &lt;br /&gt;
!  Nutzung in gplot-File&lt;br /&gt;
!  Füllung mit inhalt in fhem.cfg&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;TL&amp;gt; &lt;br /&gt;
| set title &#039;&amp;lt;TL&amp;gt;&#039; &lt;br /&gt;
| attr weblink title &amp;quot;Dies füllt den Platzhalter &amp;lt;TL&amp;gt;&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;L1&amp;gt; &lt;br /&gt;
| set xlabel &#039;&amp;lt;L1&amp;gt;&#039; &lt;br /&gt;
| attr weblink label &amp;quot;Dies füllt das Label &amp;lt;L1&amp;gt;&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;L2&amp;gt; &lt;br /&gt;
| set title &#039;&amp;lt;L2&amp;gt;&#039; &lt;br /&gt;
| attr weblink label &amp;quot;Dies füllt das Label &amp;lt;L1&amp;gt;&amp;quot;::&amp;quot;Dies füllt das Label &amp;lt;L2&amp;gt;&amp;quot; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Welche Daten werden dargestellt ===&lt;br /&gt;
&lt;br /&gt;
Die Zeilen&lt;br /&gt;
&lt;br /&gt;
 #FileLog 5::0:&lt;br /&gt;
 #FileLog 14::0:&lt;br /&gt;
&lt;br /&gt;
in einer gplot-Datei tragen zwar zu Beginn das Kommentarzeichen &amp;quot;#&amp;quot;, jedoch handelt es sich durchaus nicht um solche. Vielmehr trifft man mit den Werten hinter &#039;&#039;FileLog&#039;&#039; Vorgaben, welche Werte wie von FHEM an &#039;&#039;gnuplot&#039;&#039; zwecks grafischer Darstellung übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Im o.a. Beispiel werden das 5. und das 14. Wertfeld (voneinander getrennt durch ein Leerzeichen (Blank)) an gnuplot weiter gegeben.&lt;br /&gt;
&lt;br /&gt;
Eine dazu passende Log-Dateizeile könnte beispielsweise so aussehen&lt;br /&gt;
&lt;br /&gt;
 2013-11-14_17:32:00 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200&lt;br /&gt;
 ----1. Feld-------- --2. Feld-- --3.---- -4.- -5. -6. 7. 8. -9. 10. 11 12 --13.- --14.---&lt;br /&gt;
 &lt;br /&gt;
                                                ^                                    ^&lt;br /&gt;
 werden ausgewertet                           --|                                  --|&lt;br /&gt;
&lt;br /&gt;
Diese Parameter können auch als Attribut übergeben werden:&lt;br /&gt;
&lt;br /&gt;
 attr weblink plotfunction &amp;quot;FileLog 5::0:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Anhand der Anmerkungen wird hoffentlich die Wirkungsweise deutlich. Zu den restlichen - optionalen - Parametern hinter &#039;&#039;FileLog&#039;&#039; wird zunächst auf die [http://fhem.de/commandref.html#FileLogget commandref] verwiesen.&lt;br /&gt;
&lt;br /&gt;
=== Datum und Zeit ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkungen / Hinweise:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
FHEM erwartet das Datum &#039;&#039;&#039;und&#039;&#039;&#039; die Uhrzeit der Log-Dateieinträge &#039;&#039;&#039;zwingend&#039;&#039;&#039; an &amp;lt;ins&amp;gt;erster Stelle&amp;lt;/ins&amp;gt; der Datenzeile und zwar im Format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;JJJJ-MM-TT_SS:mm:ss&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei&lt;br /&gt;
&lt;br /&gt;
* JJJJ die 4-stellige Jahreszahl&lt;br /&gt;
* MM der 2-stellige Monat (ggfls. mit Vornull)&lt;br /&gt;
* TT der 2-stellige Tag (ggfls. mit Vornull)&lt;br /&gt;
* SS die 2-stellige Stunde (ggfls. mit Vornull)&lt;br /&gt;
* mm die 2-stellige Minute (ggfls. mit Vornull)&lt;br /&gt;
* ss die 2-stellige Sekunde (ggfls. mit Vornull)&lt;br /&gt;
&lt;br /&gt;
bedeutet. Bitte beachten Sie auch die Stelle der Zeichen &amp;quot;-&amp;quot;, &amp;quot;_&amp;quot; und &amp;quot;:&amp;quot;. Stehen diese nicht an den angegebenen Stellen, wird die entsprechende Zeile beim Erzeugen des Plots nicht beachtet. Ggfls. wird gar kein Plot angezeigt.&lt;br /&gt;
&lt;br /&gt;
Eine Änderung/Anpassung der *.gplot-Datei in der Zeile&lt;br /&gt;
&lt;br /&gt;
 set timefmt &amp;quot;...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
hat auf dieses Verhalten von FHEM &#039;&#039;&#039;keine&#039;&#039;&#039; Auswirkungen, sondern nur auf die Darstellung von Datum und Zeit durch &#039;&#039;Gnuplot&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Dazu ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
&lt;br /&gt;
 2013-11-14_17:32:00 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200 &lt;br /&gt;
&lt;br /&gt;
kann FHEM etwas anfangen. Mit &lt;br /&gt;
&lt;br /&gt;
 20131114173200 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200 &lt;br /&gt;
&lt;br /&gt;
oder &lt;br /&gt;
&lt;br /&gt;
 14.11.2013 17:32 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200 &lt;br /&gt;
&lt;br /&gt;
dagegen nicht.&lt;br /&gt;
&lt;br /&gt;
Im ersten Fehler-Beispiel fehlen die notwendigen Trennzeichen, im zweiten Fehler-Beispiel ist die Reihenfolge im Datum verkehrt, außerdem werden die falschen Trenner verwendet. Zudem fehlen die Sekunden.&lt;br /&gt;
&lt;br /&gt;
=== Plot der letzten 24 Stunden statt des aktuellen Tages ===&lt;br /&gt;
&lt;br /&gt;
Hierzu kann man in der &#039;&#039;Fhem.cfg&#039;&#039; für die Einträge &lt;br /&gt;
&lt;br /&gt;
 define WEB FHEMWEB 8083 global&lt;br /&gt;
&lt;br /&gt;
das Attribut&lt;br /&gt;
&lt;br /&gt;
 attr WEB endPlotNow 1&lt;br /&gt;
&lt;br /&gt;
setzen. Gleiches geht auch für &#039;&#039;WEBphone&#039;&#039; und &#039;&#039;WEBtablet&#039;&#039;. Da muss es dann lauten&lt;br /&gt;
&lt;br /&gt;
 attr WEBphone endPlotNow 1&lt;br /&gt;
&lt;br /&gt;
bzw.&lt;br /&gt;
&lt;br /&gt;
 attr WEBtablet endPlotNow 1&lt;br /&gt;
&lt;br /&gt;
Das Attribut gilt dann aber für &#039;&#039;&#039;alle&#039;&#039;&#039; Plots der jeweiligen Ansichten. Wenn man wieder zurück zu den Plots ab jeweils 00:00 Uhr des aktuellen Tages möchte, löscht man dieses Attribut wieder bzw. setzt es auf den Wert &amp;quot;0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Legende links platzieren ===&lt;br /&gt;
&lt;br /&gt;
Gerade im Verbund mit dem Attribut &#039;&#039;endPlotNow&#039;&#039; macht das seit dem 11.01.2015 neue Attribut &#039;&#039;captionLeft&#039;&#039; Sinn, da dann die Legende nicht mehr rechts oben, sondern links oben im Plot erscheint. Dadurch wird die Sichtbarkeit der aktuellen Werte verbessert.&lt;br /&gt;
&lt;br /&gt;
== Links / Beispiele ==&lt;br /&gt;
Hier finden sich weitere Beispiele zur Plot-Erstellung:&lt;br /&gt;
* [[Creating Plots]]&lt;br /&gt;
* [[Buderus Web Gateway#Beispiel für Plot]]&lt;br /&gt;
* [[Wetter und Wettervorhersagen#Erstellen passender gplot-Dateien]]&lt;br /&gt;
* [http://lowrank.net/gnuplot/intro/style-e.html Erklärung für die Linetypes]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FAQ]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Maddinthebrain</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SIGNALduino&amp;diff=21808</id>
		<title>SIGNALduino</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SIGNALduino&amp;diff=21808"/>
		<updated>2017-07-14T13:07:22Z</updated>

		<summary type="html">&lt;p&gt;Maddinthebrain: /* FHEM-Modul laden */ Fehlender Slash in der Definition ergänzt. SignalDuino wird sonst nicht erkannt.&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 erkennt Signale anhand von Mustern und gibt sie an FHEM zur Auswertung (Dekodierung) weiter. Auch nicht erkannte Signale werden an FHEM übergeben. &lt;br /&gt;
&lt;br /&gt;
=== Vorteil gegenüber einem CUL/FHEMduino ===&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;
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. Änderungen am Arduino-Code sind normalerweise nicht notwendig.&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;
== Hardware: Verkabelung ==&lt;br /&gt;
[[Datei:Fhemduino_schematic.png|200px|thumb|right|Beispielschaltplan SIGNAL(FHEM)duino]]  &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 ein fertig konfektionierte 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.&lt;br /&gt;
&lt;br /&gt;
Es gibt auch eine Variante des SIGNALduino, die auf einem [[ESP8266]] nativ läuft, diese funktioniert derzeit aber noch nicht zufiedenstellend. Das Modul wird derzeit (2017) stetig weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
== Software: Modul ==&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) angeschlossen 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. &lt;br /&gt;
&lt;br /&gt;
Die in der Entwicklung befindliche Version 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 und Firmware aktualisieren: &amp;lt;code&amp;gt;update all &amp;lt;nowiki&amp;gt;https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/dev-r33/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. Außerdem wird auch die Firmware geladen, im Log-File sieht man, wo diese hinkopiert wurden: z.B. nach FHEM/firmware/SIGNALduino_nano328.hex&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;
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-r33/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 Ardunio 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 Transreceiver 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;
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;/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 eines radino Boards mit ATmega32U4 ====&lt;br /&gt;
&lt;br /&gt;
Diese Funktion steht nur in der Entwicklungsversion dev-r33 zur Verfügung:&lt;br /&gt;
Das Radino Board muss derzeit noch mit Angabe des Dateinamens geflasht werden:&lt;br /&gt;
&amp;lt;code&amp;gt;set sduino flash FHEM/firmware/SIGNALDuino_radinoCC1101.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch sind berichte bekannt, dass der Radino beim Neustart von FHEM nicht korrekt initalisiert wird.&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;
{|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;
|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;
|Eurochon 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;
|Einhel HS 434/6||E || || none || 21&lt;br /&gt;
|-&lt;br /&gt;
|FA21RF||E || || none || 13&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 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 Funksteckdose 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;
Alternativ könnt ihr auch im Forum posten. Um einzelne Erweiterungen besser im Überblick zu behalten, eignet sich das github jedoch besser.&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 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;
&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;
&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;
=== Der 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;
&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, 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;
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, empfangen werden sollen, mit ihrer Protokollnummer in die WhitelistID aufgenommen. Die Protokollnummer kann der obigen Tabelle 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;
&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;
Die Protokolle 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 mit 395 Mikrosekunden high (die Zeitdauer ergibt sich aufgrund der Mitteilung &amp;quot;P1=395&amp;quot;) und anschließend ein Signal 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;
Dennoch 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;
Das Attribut &#039;&#039;whitelistIDs&#039;&#039; erlaubt es, anzugeben, welche Protokolle vom FHEM Modul berücksichtigt werden. 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. 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;
== 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.nemcon.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;/div&gt;</summary>
		<author><name>Maddinthebrain</name></author>
	</entry>
</feed>